首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的异步USB数据传输系统

基于FPGA的异步USB数据传输系统

内容摘要:设计实现了以FPGA为主控制单元,采用EZ-USB FX2微处理器为接口芯片的快速数据传输系统。文章给出了FPGA和CY7C68013之间数据传输的软硬件设计方案,着重介绍了FPGA内部建构的FIFO原理及程序实现方法,并以FLASH存储模块为例,通过FX2与FLASH握手过程的设计,实现了数据存储器与计算机之间的数据高速传输。应用结果表明,此数据传输系统可靠有效,具有一定的通用性,可用于其他使用USB进行数据传输的系统中。


    引言
    现代电子技术的进步使得外设的种类日益繁多,接入数量急剧增加,传统的安装数据采集卡的方式,由于存在安装不便、扩展困难、传输质量不高等诸多缺点,渐渐满足不了数据采集过程中对复杂外设和数据传输速率的要求。此外,在需要移动数据采集的场合,普通笔记本电脑以及绝大部分便携式数据采集设备都不再提供PCI插槽。因此采用统一、便捷的数据传输接口来替代原有方式,其紧迫性日益凸显。通用串行总线(USB)作为一个接口规范把不同类型的接口统一起来,且其外接设备具有热插拔、易扩展、传输速度快等优点,已经成为各类笔记本和便携设备数据传输的主流接口。
    本设计使用支持USB2.0协议的CY7C68013芯片,作为上位机与FPGA之间的传输接口,以FPGA为主控制单元,实现了数据的高速传输。文章给出了此数据传输系统的硬件设计方案,着重介绍了FPGA控制模块中内部集成FIFO的结构原理和关键程序模块的实现方式。本系统设计方案结构简单、传输速度快、具有一定的可扩展性。
    1 系统硬件设计
    数据传输系统硬件原理框图如图1所示,主要由USB传输控制器EZ-USB FX2、FPGA主控制单元、外设模块构成。数据采集模块在中心控制单元的控制下对信号、数据等进行采集,并把数据最终转入数据外设中进行存储。上位机经传输控制模块(FX2)发送控制指令到主控制单元(FPGA)内部后,经过串并转换进行指令解码,解码后按照相应的指令要求从数据外设(FLASH)中进行数据读取。从而实现将外设存储系统中的数据快速上传到上位机中保存处理。
    1.1 USB传输控制器
    本系统USB传输接口芯片选择Cypress公司的CY7C68013,它是Cypress公司推出的EZ-USB FX2系列产品之一,集成USB2.0的微处理器,具有增强型8051内核性能,智能串行引擎(SIE),通用可编程接口(GPIF),8.5KB的RAM和FIFO存储器,支持12Mb/s的全速速率和1480 Mb/s的高速传输速率,最大限度地满足了USB 2.0的总线带宽。其内部结
    构如图2所示。
    CY7C68013由于其内部集成有独立于微处理器的USB核,其可被配置成GPIF(可编程接口)和SlaveFIFO(主从)等多种接口模式,使数据传输通过执行USB本身的协议来完成。在此过程中CPU可不参与数据传输,从而使数据的传输速率大大提高,同时也简化了固件代码的编写。本设计采用FX2的GPIF数据传输方式,时序简单、编程灵活,可以很容易地从RAM中读取数据。
    1.2 FPGA主控制单元
    本设计采用ALTEra公司的EP1K30QC208作为主控芯片,实现对数据传输过程的控制。它包括1728个逻辑单元,成本较低,适用于小系统编程。在此硬件系统中FPGA的作用主要有二个:一是实现对所传输数据的控制。上位机经USB传输控制模块(FX2)发送控制指令到FPGA主控制单元后,经过其内部串并转换,实现指令解码。解码后按照要求从数据外设(FLASH)中进行数据读取,并根据FIFO状态进行数据传输控制;二是内部建构一个FIFO存储器。由于本设计是对FLASH存储器进行读数操作,其数据传输是以页为单位,读数时页与页之间有一小段时间间隔,数据输出不是连续的。为实现FX2读取FLASH中的数据,需要在FPGA建构FIFO作为数据过渡,先将FLASH中的数据读到FIFO中,CY7C68013传输控制器再从FIFO中读取数据。
    2 主控单元软件设计
    根据本系统主控制单元的作用,FPGA要实现上文所述的主要功能,其关键在于FX2与FLASH的握手过程的设计,满足此过程的内部FIFO的建构和相关标志信号的产生。
    2.1 FX2与FLASH的握手过程
    FPGA主控单元先将数据存储到内部的FIFO中,然后CY7C68013再从FIFO中读取数据。由于读取和写入的速度是不同的,可能读比写快,也可能写比读快。为防止传输时数据丢失,设计如下的握手过程:FPGA内部的“读数控制”模块不断进行判断,只要FIFO不满它就一直向FIFO中写入数据。对于外部FX2,只要判断FIFO不空它就从FIFO中读取数据。这样FIFO的读写就组成了一个闭环,保证了读数的完整准确。在数据传输握手方式确定以后可能出现两种情况:1)FIFO的写入速度大于读取速度,这样写地址慢慢就追上读地址,此时总的传输速度就取决于读取速度。2)FIFO的读取速度大于写入速度,这样读地址慢慢就追上写地址,此时总的传输速度就由写入速度决定。在FPGA中编写“标志位
    产生”程序模块,产生满、空信号作为FX2与FLASH传输过程中的握手信号,是保证数据传输稳定可靠的关键。
    2.2 内部建构的FIFO原理及关键程序的流程
    FIFO的本质是一种特殊的双口RAM,大部分FPGA内部就有双口RAM资源。FIFO结构的特点是先进先出,对外它是一种没有地址控制的特殊缓存。在程序编写过程中,内部FIFO要求只要接收RD、WR使能信号,就能进行读写工作。在此过程中,整个FIFO模块对外不显示地址,只需要给出表现内部状态的满、半满和空信号即可。FX2和FPGA内部的“读数控制”模块根据这些信号对FIFO进行数据传输控制。FPGA内部建构的FIFO原理图如图3所示。
    FIFO产生满、空状态标志信号由“标志位产生”程序模块产生,满、空状态信号均采用写地址和读地址相减(或读地址和写地址相减)的结果来判断双口RAM此时的状态。此外,还可以据此得到FIFO的半满状态信号,以此可容易地标示FIFO满空深度。FIFO满、空、半满标志信号的程序流程基本一致,只不过判断比较的差值存在不同。FIFO满时地址差值为1023,空时为1,半满是差值大于512。以半满信号产生为例,标志位产生程序流程如图4所示。
继承事业,薪火相传
返回列表