1 引 言
现代信号处理系统通常涉及到上位机与信号处理机之间的数据通讯,如何建立信号处理机与上位机的通讯接口成为系统设计中必须解决的一个问题。通常情况下,对于数据传输速度要求不太高的应用,可以使用普通串行口作为通讯链路。在本系统中,由于采用多片高性能浮点数字信号处理器ADSP-TS101作为处理器,产生了大量的处理结果,并且要求实时传输处理结果,传输速度必须达到1 MB/s,因此普通的串行通讯口已经不能满足要求。若采用PCI接口,虽然在速度上可以满足要求,但需要单独在上位机占用一个PCI插槽,另外由于系统还有其他模块需要与信号处理机进行高速数据传输,因此在供电设计、系统中模块间的连接布线、开发调试中都存在一定的困难,在使用中也会因为其不具备热插拔功能而相对繁琐。考虑到这些因素,选择USB 2.0接口作为通讯链路,因为其具有传输速度高、使用简单、成本低廉的优点。
USB(Universal Serial Bus)是一种通用串行总线,由COMPAQ,InteI,Microsoft和NEC等公司共同开发,并成为标准,现今已广泛运用于各种数字系统中。USB总线具有用户使用方便、成本低廉、易于与PC接口、支持热插拔、传输速度高、易于升级等优点。USB 2.0的最高传输速率可达480 Mb/s,比一般的串口快1 000倍以上。
USB总线主要包括主机和设备、物理构成、逻辑构成以及客户软件与设备功能接口的关系4个部分,图1展示了USB总线组成关系。
2 系统设计
2.1 系统结构
图2为本文所论及的信号处理系统的结构框图。在本系统中,上位机将设置好的参数发送给信号处理机,由信号处理机将参数转发给系统其他模块,并根据此参数进行相应的信号处理,最后再将处理结果传回上位机。
2.2 ISP1581简介
ISP1581是Philips公司的一款高性价比的USB 2.0接口芯片。他完全遵循USB 2.0规范,支持7个IN端点,7个OUT端点和一个固定控制IN/OUT端点。ISP1581支持USB 2.0的自检工作模式和USB 1.1的返回工作模式,可以在高速或全速条件下正常运行。内部集成有串行接口引擎(SIE),PIE,8 kB的FIFO存储器,数据收发器,PLL的12 MHz晶体振荡器和3.3 V的电压调整器。同时,可通过软件控制与USB总线的连接。
由ADSP-TS101和ISP1581构成的USB 2.0接口电路如图3所示。其中ADSP-TS101在系统中同时完成信号处理和充当微控制器完成对ISP1581的控制。ADSP-TS101和ISP1581以通用总线的方式连接,即数据总线和地址总线分离的方式。ISP1581的片选信号连接到ADSP-TS101的MS0,映射到ADSP-TS101的地址空间为0X8000000~0X80000FF,TS101通过对这些地址上的寄存器进行读写来控制ISP1581,完成与上位机的USB传输。ISP1581的中断输出引脚连接到ADSP-TS101的中断请求输入引脚IRQ2,通过中断方式与DSP通讯。ISP1581的复位可通过硬件和软件触发,硬件复位引脚连接到系统复位信号,系统上电复位或热复位时同时复位ISP1581。
3 固件程序设计
由于ISP158l本身没有集成的微控器,固件程序将在TS101中运行。固件程序在结构上采用中断驱动方式,TS101通常情况下在自身的运算任务下运行,当上位机有通讯请求时,通过中断方式通知TSl01。在TSl01的中断服务程序中,通过读ISPl581的内部寄存器判断具体的请求类型,然后设置相应的标志。从程序的实现方式来说,固件程序主要就是一系列请求函数的集合,主要包括实现设备枚举的标准请求和与具体应用相关的厂商请求,不同的请求根据建立包中的数据来区分,固件程序的主要流程图如图4所示。
3.1 ISPl581的初始化
为兼容USB 1.1接口,器件初始配置为全速模式,若上位机支持USB 2.0接口,可在设备枚举的过程中更改为高速模式。器件支持7个IN和7个OUT端点,分别可以配置成为中断方式、同步方式和批量方式,其中批量方式适合高速的数据传输要求,中断方式可以用于命令数据的传输。在此雷达系统中,为满足应用要求,共配置2个批量输出端点用于处理结果传输、1个中断输出端点用于命令响应和1个中断输入端点用于接收命令,其他的端点保留不用。
3.2 设备枚举
USB设备的枚举至关重要,直接影响到设计的成功与否,这需要严格依据USB 2.0协议规范来设计。这部分程序主要由一系列标准请求函数构成,在USB任务处理中被调用,主要包括获取设备描述符、设置设备地址、配置设备、配置端点等。USB设备的枚举一般按照如下步骤进行:
(1)设备连接,总线复位,ISP1581将发送高速(HS)模式检测信号,若接收到一个高速(HS)握手信号,则将转换到高速(HS)状态,否则仍工作在全速(FS)状态;
(2)通过默认地址0获取设备描述符;
(3)给设备分配惟一的地址;
(4)通过分配的地址重新获取设备描述符;
(5)获取配置描述符;
(6)获取设备描述符集合,包括配置描述符、接口描述符、端点描述符;
(7)若为第一次连接则提示找到新硬件,要求安装驱动程序,否则根据设备描述符加载设备驱动程序;
(8)配置设备,至此设备枚举完成。
3.3 厂商请求
本应用中的厂商请求主要包括发送控制命令和读取处理结果。由于控制命令的数据量很小,故采用中断方式进行传输,而处理结果数据量较大,为提高传输速度,采用批量传输方式传输。为防止数据异常更新,数据缓冲区采用乒乓缓冲方式,USB发送完成某个缓冲区的数据前,信号处理的结果只能存放在另一缓冲区中。图5为控制命令-设置模式字的厂商请求处理流程图。
4 驱动程序
驱动程序用于处理底层通信细节,实现具体的通信协议,为应用程序提供透明的传输接口。USB设备驱动程序的设计是基于WDM(Windows Driver Model,Windows驱动模型)的。WDM采用分层驱动程序模型,对于USB设备来说,可以分为USB总线驱动程序和USB功能驱动程序。USB总线驱动程序是由操作系统提供,USB功能驱动程序是由设备开发者编写的,他位于USB总线驱动程序的上面,通过向USB总线驱动程序发送IRP(I/O Re-quest Packet,I/O请求包),来实现对USB设备信息的发送与接收。
USB设备驱动程序的开发工具有Windows DDK,KRFTech公司的WinDriver,Compuware公司的DriverWorks等。其中WinDriver使用简单,开发者几乎不需要编写任何代码即可为开发的设备生成可用的驱动程序。为缩短开发周期,设备驱动程序用WinDriver开发,并用InstallShield为驱动程序制作了单一的安装包,以方便用户安装使用。
5 设备调试中遇到的问题及解决办法
在USB设备的开发过程中,设备的调试工作一个重点和难点,下面针对ISP1581,对在调试过程中可能遇到的问题做出简要的说明。
(1)处理器不能正常读写ISP1581内部的寄存器。
出现此问题的可能原因主要有两个:第一,ISP1581的时钟信号不稳定,ISP1581需要稳定的12 MHz时钟频率;第二,ISPl581上电复位不正常,可以在程序起始位置,重新复位ISPl581,延时20 ms后再对ISP1581进行操作。
(2)连接设备后,上位机提示“不可识别的USB设备”。
出现此提示,说明ISP1581已经设置好软连接,真正与上位机连接,但是由于没有正确响应上位机的请求,导致枚举失败,上位机不能正确识别USB设备。要解决此问题,最好使用调试工具来辅助,例如bushound等。运行该软件,分析USB总线上传输的数据流,观察USB设备与上位机的请求与响应状态以及响应的具体内容,与标准的USB枚举过程进行比对,从而查出问题所在。
(3)设备枚举成功,且正常加载驱动,但是无法对USB设备进行读写操作。
导致此问题可能是固件程序、驱动程序以及应用程序的问题。应先排除应用程序和驱动程序的问题,使用WinDriver重新生成设备的驱动程序,并根据WinDriver提供的例程和API函数手册,仔细检查应用程序。固件程序故障的排除相对复杂,可利用WinDriver提供的端点测试工具,结合合理的固件程序断点设置,按照USB数据传输的流程,逐级检查。
USB设备的调试是一个复杂的过程,需要清楚地了解USB设备的枚举过程和USB数据传输过程,通过细心的检查找出问题所在,才能将问题根本解决。
6 结 语
本设计通过为ADSP-TSl01扩展USB接口,实现了信号处理机与上位机的USB 2.0接口,并在实际使用中取得了良好的效果,实际传输速度大于1.2 MB/s。设计中,ISP1581通过通用总线方式与TS101连接,如果希望取得更高的传输速度,可以考虑采用ISP1581的DMA模式。USB 2.0接口性能优越,使用简单,成本低廉,在计算机与外设的互联中得到了广泛的应用,并逐渐成为计算机与外设的标准结构,因此USB接口的设计在实际应用中具有重要的地位和意义。
责任编辑:gt
-
处理器
+关注
关注
68文章
19076浏览量
228680 -
芯片
+关注
关注
452文章
50117浏览量
420322 -
接口
+关注
关注
33文章
8422浏览量
150664
发布评论请先 登录
相关推荐
评论