引言
usb接口(universal serial bus)是一种通用的高速串行接口。它最主要的特点是它的高速传输特性。usb1.1理论速度极限可以达到12mb/s,usb2.0可达到480mb/s。这样,它可以很好解决大数据量的数据在嵌入式系统与pc机之间的互传问题;同时,它支持热插拔,并且最多同时支持127个外设,非常适合嵌入式系统的应用。
本次设计是在一个已有的dsp图像采集嵌入式系统的基础上,为它配接上一个usb1.1的接口,以达到dsp图像采集系统高速地将图像数据回传到pc机中的目的。
设计的要求主要有:
①在原有平台提供的接口基础上,加入一个低成本、高速度的usb接口;
②通过usb接口,实现pc机对dsp图像采集系统的操作与控制;
③实现图像数据在dsp摄像系统与pc机之间高速的双向传输。
基于以上几点可以看出,本方案最主要的特点是成本低廉且传输速度高。
1 硬件方案选择与设计
1.1 方案选择
对于基于dsp平台的usb接口设计,经过综合考虑了几种方案之后决定,采用一个不带mcu内核的usb接口芯片pdiusbd12(成本非常低,一片pdiusbd12的价格仅为20元),再加上简单的外围电路和时序调整电路。
这种芯片仅仅完成usb底层的数据链路级交换,并提供给本地微控制器一个并行的接口,但是它并不完成协议层的工作。协议层的工作需要对微控制器编程,控制usb接口芯片来实现usb协议。所以,开发难度相对来说大一些,要做的编程工作也多一点。但是这套方案的成本非常低,而且由于直接用dsp作为微控制器,没有原单片机的瓶颈限制,所以可以实现很高的数据传输速率。该系统的原理框图如图1所示。
由于pdiusbd12的并行接口时序较慢,只能达到2mb/s。这个速度相对于dsp来说比较低,而且有些地方不是简单地在程序中加入延时就可以调整,所以需要一个时序调整电路来完成它们之间的配合。
1.2 pdiusbd12芯片
pdiusbd12芯片是由philips公司推出的一种usb1.1接口芯片。它可以工作在5v或者3.3v的工作电压下;具有8位数据总线,且有完全自治的dma传输操作。它还具有可控制的软件连接(softconnect)功能,可以保证在微控制器可靠完成初始化之后再连接上usb总线。另外,它还有一个led驱动脚,可以外接led来监测usb的枚举过程和数据传输过程。当usb接口枚举完成,并且成功配置以后,led将会一直点亮;而在枚举过程以及usb数据通信过程中,led只是有节奏地闪烁。
pdiusbd12只占用微控制器的两个地址资源。也就是说,它只有一根地址线。其中一个地址用来向芯片中写命令,另外一个地址用来向燕片中写数据或者从芯片中读取数据。
pdiusbd12一共有三组端点:端点0完成控制传输;端点1可以配置成中断传输;端点2是主要的数据传输端点。它有64b的缓冲区,如果加上它的双缓冲机制,就有128b的缓冲区;它可以配置成批量传输模式,或者同步传输模式。
总的来说,pdiusbd12是一款性能优异,价格相对软低的usb接口芯片。
1.3 时序芯片
为了降低成本、简化电路,本方案不使用dma传输方式,而以ti公司的tms320c2xx作为微控制器(使用20mhz晶振)。它的并口速度非常高,远远高于pdiusbd12所要求的最高限制2mb/s。此处是硬件设计最关键的地方。
经过详细的时序分析发现,大部分问题可以通过在dsp固件设计的加入延时,或者设置dsp的wsgr寄存器来解决。但是有一个问题,必须在硬件上加以解决。图2是dsp(tms320c2xx)的写时序。
图2中,参数th(w-d)是指在we信号变高(无效)以后,所写的数据将仍然保持有效的时间。这个值最小为3ns,最大为14ns,所以所写的数据在we信号无效以后还会维持有效,大约3~14ns(实际的延时介于这两个值之间)。
图3是pdiusbd12所要求的写时序。图中,参量twdh是与dsp(tms320c2xx)参量th(w-d)相对应的另外一个参量。这个参量反映了pdiusbd12要求微控制器在向其中写数据时,所写的数据在wr信号无效之后,要继续保持有效的时间。这个参量最小值为10ns。也就是说,pdiusbd12要求所写的数据最少要保持有效10ns(在wr无效之后)。
由此可以看出,dsp(tms320c2xx)的写时序不能可靠地保证满足pdiusbd12的要求,而且这个问题无法通过软件加延时的方法来解决,必须通过硬件来处理。经过分析对比,最后决定采用一个很简单但是后来事实证明非常有效的方法来调整它们之间的时序。那就是在dsp(tms320c2xx)与pdiusbd12的总线之间加一个双向缓冲器-74ls245。这个芯片可以在它们的时序之间引入一个延时。虽然这个延时并不可靠、但是由于dsp(tms320c2xx)本身会在wr无效后,继续保持数据有效一段时间(前面已讲过),这要仅仅需要将延时适当延长一点就可以了。74ls245所造成的延时典型值为15ns,最小也为8ns。这样,加上原来dsp写时序的延时,就可以满足pdiusbd12所要求的写时序了。











