GE IS220YAICS1A
USB(通用串行总线)安装过程简单,不必考虑资源分配,不必关掉计算机电源,易扩展(可扩充至127个外部设备)。随着USB升级到2.0标准,USB2.0总线的传输速度理论上可高达480 Mbit/s,不仅使USB总线完全能满足需要大批量数据交换的外设的要求,而且使USB总线可应用于实时信号处理系统。
USB总线有以下4种数据传输方式:
a)控制传输:主要用于主机把命令传给没备及设备把状态返回给主机。任何一个USB设备都必须支持一个与控制传输类型相对应的端点0。
b)中断传输:用来支持那些偶然需要少量数据通信、但服务时间受限制的设备。
c)
批量传输:用来传输大量数据而没有周期和传输速率严格要求的设备上。
d)同步传输:要求恒定速率,发送方和接收方都必须保证传输速率的匹配,不然会造成数据的丢失。
本系统中需要传输的数据量较大,且传输时机受设备控制。因此采用中断传输+批量传输的设计方法,即PC主机起始使用中断传输端点,采用中断传输方式轮询设备,如果发现设备有数据需要传输,立即转到批量传输端点,在真正的数据传输过程中,采用批量传输方式传输数据。
2 ISP1581简介
ISP1581是Philips公司推出的一种价格低、功能强大的USB设备接口芯片,完全符合USB2.0规范。ISP1581需外接微控制器或微处理器对它进行控制,它支持与大多数MCU和DSP的连接。ISP1581的外部接口有通用处理器模式和断开总线模式(由引脚BUS_CONF控制)。在断开总线模式下,处理器接口使用多路复用的8位地址/数据总线AD[7..0]和单独的DMA(直接存储器存取)总线DATA[15..0]。本系统采用断开总线模式、16位数据总线的***(主机DMA)方式。
3 硬件设计
系统的总体结构框图如图1所示。其中USB接口芯片选用ISP1581,EPLD选用EPM7128S,MCU选用的是Cygnal的c8051f120单片机。
系统设计思路如下:ISP1581和MCU的连接采用断开总线模式,数据传输使用***模式,ISP1581的16位DMA总线与FIFO的输出端相连,A/D模块的16位数据输出总线与FIFO的输入端相连。FIFO的写信号由定时芯片8254根据A/D采样频率产生,FIFO的读信号直接由ISP1581的DIOR给出(***模式下),***开始传输信号也由8254产生,连接到MCU的一个中断引脚,用于启动***。ISP1581和8254的片选信号以及8254的地址、数据、控制等信号均在EPLD内产生。通过8254和EPLD的设置,可以保证FIFO读和***写时序的配合。在本系统中,c8051f02x需要大量访问ISP1581的内部寄存器,因为c8051f系列采用数据空间和I/O空间统一寻址方式,必须采用full memory模式,即将ISP1581作为一个普通外设映射到c8051f02x外部存储空间的I/O空间。综上,***后的接口电路见图2。图中mode0、model、bus_conf等信号需要外接上拉下拉电阻。
4 固件程序设计
本系统的固件程序包括单片机固件编程和EPLD方程设计两部分。单片机固件编程用于完成对ISP1581控制,处理主机发送来的一切请求,启动MD-MA开始传输命令等;EPLD方程设计用于产生各种外设的片选等,控制***传输及FIFO、8254等外围芯片的时序配合。
4.1 单片机固件编程
单片机程序处理一切由主机发送来的USB请求(包括标准请求和自定义的厂商请求),并进行相应的数据接收和发送。本系统使用cygnal的e8051f系列单片机,所以相应使用该单片机配套的silieon Labora-tories IDE集成开发环境,采用C51语言编程,使用该系列单片机配套的U-EC3仿真器,可以设断点、在线编程、即时仿真、在线查看单片机内部寄存器的值。因为c8051f系列采用数据空间和I/O空间统一寻址方式,对ISP1581所有寄存器的访问均与单片机对普遍外设的访问方式相同。需要指出的是,C8051f12x系列单片机速度很快(***快可以达到100 MHz),且指令较传统ISP8051系列有很大优化,大多数指令为单指令周期,这对提高DMA传输速度很有帮助,因为每次DMA传输有很多地方需要单片机的参与,具体参见下面"处理DMA请求"部分。下面***论述使用***部分的固件程序设计。
1)***传输初始化
功能包括:
a)设置DMA配置寄存器,指定DMA传输的数据总线位数(本系统用16位数据总线)。
b)设置DMA硬件寄存器,指定DMA传输方式(***还是GDMA)以及设置DACK、DIOW、DIOR、DREQ信号的极性。本系统使用***方式,设置这些信号为低有效。
c)设置DMA中断使能寄存器,***指定中断源。我们设置可以产生DMA中断的源有内部EOT信号和DMA传输结束(即DMA传输计数器值变为0)。需要注意的是,此处DMA中断使能寄存器不同于ISP1581的中断寄存器,两者的设置方法不同。
d)设置选通时间寄存器,指定MDAMA方式下DIOW或DIOR的周期。应在满足ISF1581***小读写周期的前提下,使该周期尽可能小,这可以显著提高DMA传输速度。经测试,应设置该寄存器的值为001。这部分代码可以放在程序的起始部分,需要注意的是,在初始化ISP1581的各寄存器时,应首先设置DMA命令寄存器为Ox11,使其处于上电复位状态。