当前位置:首页 > 智能硬件 > 智能硬件
[导读]摘要:为解决PC与FPAG的高速数据传输,通过USB实现了PC和FPGA的通信。介绍了USB接口芯片CY7C68013的基本工作原理;编写了USB固件程序和应用程序;利用从属FIFO方式,实现了数据的快速读写。测试结果表明,利用FPGA控

摘要:为解决PC与FPAG的高速数据传输,通过USB实现了PC和FPGA的通信。介绍了USB接口芯片CY7C68013的基本工作原理;编写了USB固件程序和应用程序;利用从属FIFO方式,实现了数据的快速读写。测试结果表明,利用FPGA控制USB器件CY7C68013可实现高速数据传输,传输数据可靠性高。该方案完全可满足各种高速数据采集系统、移动硬盘、ATA和DSL调制解调器等接口的需要。
关键词:USB;CY7C68013;FPGA;固件;应用程序

0 引言
     1994年,Compaq、Intel、Microsoft、NEC等7家世界著名的计算机和通讯公司成立了USB论坛。1995年11月正式制订了USB通用串行总线(universal serial Bus)规范。USBl.1主要应用在中低速外部设备上,它支持的传输速率有低速1.5 Mbps和全速12 Mbps。1999年初在Intel的开发者论坛大会上,介绍了USB2.0规范。最新的USB2.0支持3种速率:低速1.5 Mbps、全速12 Mbps和高速480 Mbps。这3种速率可以满足目前大部分外设接口的需要。本文介绍了目前使用较多的USB2.0控制器CY7C68013与FPGA接口的VHDL实现。本系统可扩展,完全可用于其他高速数据采集、高速数据通信系统中,可以支持宽带数字摄像设备及下一代扫描仪、打印机及存储设备等。

1 CY7C68013简介
    CYPRESS半导体公司的EZ-USB FX2系列芯片是最早符合USB2.0协议的微控制器之一,以其良好的性能和独特的设计在USB接口开发领域占有重要的地位。CY7C68013是EZ-USB FX2系列芯片中的一款高性能USB2.0微控制器,它提供了全面的USB2.0外围设备解决方案。
    CY7C68013将USB外围接口设备所需的各种功能集成在一个单片电路上,通过集成的USB收发器连接到USB总线的D+和D一端;串行接口引擎(SIE)进行译码、编码、错误纠正和位填充,变换USB所需的信号电平;最终,从USB接口SIE发送和接收数据。USB2.0控制器CY7C68013数据传输速率快,可支持移动硬盘、ATA、FPGA和DSL调制解调器等接口。CY7C68013主要具有如下特性:
    (1)芯片内有480 Mb/s的收发器(PLL和智能SIE),包含全部USB2.O物理层(PHY);
    (2)2、3、4倍增缓冲端点FIFO,以适应480 Mb/s的USB2.O传输速率;
    (3)内部嵌入可运行在48 MHz频率的增强型8051内核;
    (4)4个接口FIFO:它们都可以由外部和内部来提供时钟,端点FIFO与接口FIFO两者相结合可以实现缩短USB和外部逻辑电路数据传输的时间;
    (5)通用可编程接口(CPIF)作为一种编码状态设备,可实现时序管理,使得CY7C68013 FIFO达到无缝连接。CY7C68013集成了很多功能,设计时无需考虑外部物理层(PHY),从而大大降低了成本,并减少了芯片间高速信号布线的困难。

2 系统的设计实现
    系统结构如图l所示,本设计中,应用程序是用户界面;USB驱动用于连接用户和底层硬件;USB2.O控制器68013用于FPGA和PC间的数据交互。


2.1 硬件结构
    本系统硬件连接主要是由FPGA和USB2.0控制器,如图2所示。同时也可以根据实际系统的需要,用FPGA实现预定功能,硬件接口模式有Slave FIFO和GPIF两种接口模式。本方案采用Slave FIFO模式,当EZ-USB FX2工作于Slave FIFO时,外围电路可像普通FIFO一样对FX2中的端点2、端点4、端点6、端点8的数据缓冲区进行读写。图2展示了这种模式下FX2和外围电路的典型连接,其中,IFCLK为接口时钟,可由芯片CY7C68013产生(30 MHz/40 MHz),也可由外部输入(5MHz/48 MHz);FLAGA-FLAGD为FIFO标志管脚,用于映射FIFO的当前状态;SLCS#为从属FIFO的片选信号,低电平有效;FD[15∶O]为16位双向数据总线;FIFOADDR[1∶O]用于选择和FD连接的端点缓冲区;SLOE用于使能数据总线FD的输出;SLRD和SLRWR可分别作为FIFO的读写选通信号;外围电路可通过使能PKTEND管脚向USB发送一个IN数据包,而不用考虑该包的长度。


2.2 系统软件
    系统软件设计主要包括3部分:VHDI代码、USB固件程序(Firmware)以及应用程序。
2.2.1 VHDL程序设计
    FPGA是通过Slave FIFO的方式和USB控制器CY7C68013相连的。FPGA读取数据,通过查询CY7C68013中FIFO的状态来判断是否可以进行读数据,主要是查询状态标志位FLAGC。读数据程序状态转移图如图3所示。


    状态1:在空闲时,接到命令,发起传输,使地址指向用于下传数据的FIFO。进入状态2;
    状态2:查询读状态的FIFO标志FLAGC,如果为FIFO为空,则继续等待,如果有数据则进入状态3;
    状态3:使读数据信号线有效,接收数据,接收完数据后进入状态4;
    状态4:如果FIFO中还有数据需要接收,则进如状态2,否则进入空闲状态。
    FPGA在上传数据时,原理基本相同,方向相反,采用不同的FIFO和查询状态标志位。
2.2.2 固件编程
    固件编程就是对USB设备的各类寄存器进行配置的过程。固件程序是指运行在设备CPU中的程序,只有在固件程序运行时,外设才称之为具有给定功能的外部设备。固件要完成以下主要工作:
    (1)初始化工作;
    (2)对设备进行重新列举(ReNumeration);
    (3)响应中断,并对中断作相应的处理;
    (4)数据的接收与发送;
    (5)外围电路的控制。
    为了简化固件编程,CYPRESS提供了开发固件库和固件编程框架,只需在此基础上添加少量代码就可以完成固件编程。USB建立固件编程框架的文件见表1,在实际编程过程中,根据自定义,只需要修改Periph.c和Dscr.a51两个文件。固件代码固化到一片EEPROM中,设备加电后由FX2通过I2C总线自动加载到片内RAM后自动执行。设备功能、工作方式等均可以通过改写固件程序,重新配置。


2.2.3 应用程序
    应用程序是系统与用户的接口,设备驱动程序提供应用程序访问底层硬件的接口。驱动程序采用了CyPress公司的通用驱动程序ezusb.-sys,完全能够满足本系统设计的要求。在驱动程序被系统加载后,它的许多进程处于Idle状态,需要应用程序去调用激活。应用程序利用Win32 API直接调用驱动程序,实现应用程序和驱动程序的信息交互。
    应用程序实现了数据下载和数据上传两个功能,在Windows操作系统中,只需要通过调用几条简单的文件操作API函数,就可以实现与驱动程序中USB设备通信。 Win32应用程序调用WDM驱动程序的Win32 API函数有5个:CreateFile(创建设备)函数;CloseFile(关闭设备)函数;ReadFile(从设备读取数据)函数;WriteFile(对设备写入数据)函数;DeviceContronl(设备控制)函数。对于DeviceloControl()函数的调用,驱动程序根据I/O控制命令来决定该如何获取应用程序的缓冲区地址。
    本设计就采用DeviceloControl函数来进行应用程序和WDM设备驱动程序间的通信。以下是DevicelIoControl的声明:
    DeviceIoControl(
    HANDLE hDevice;设备返回的句柄
    DWORD dwIoControlCode;驱动程序的控制命令
    LPVOID lpInBuffer;应用程序发给驱动程序的缓冲区地址
    DWORD nInBufferSize;应用程序发给驱动程序的缓冲区大小
    LPVOID lpOutBuffer;驱动发给应用程序的缓冲区地址
    DWORD lpOutBuffer;驱动发给应用程序的缓冲区大小
    LPDWORD lpBytesReturned;存放驱动程序实际返回字节数
    LPOVERLAPPED lpOverlapped;同步时置为NULL)

3 测试结果
3.1 PC下传数据
    FPGA采用系统时钟为50 M,为便于计算传输效率和传输可靠性,在应用程序中加载计时函数,下传数据每次发送100M,发送数据为位宽8 b的循环递增数列,结果显示下传数据最大速率为42.1 MB/s,在FPGA中用嵌入式逻辑分析仪查看接收的数据,如图4所示。每个u_slrd读脉冲,FPGA读取一个16 b数据,由于发送时是按照8 b发送,接收数据是16 b,所以每次接收到的16位数据,是2个8位数的组合。从图4中可以看出FPGA接收数据准确,无丢失数据的情况。


3.2 PC接收数据
    在接收数据时,同理,应用程序每次接收100 M,将读取的数据以文件bin的形式存储在应用程序工程目录下,结果显示bin文件中数据准确。测得最大传输结果为 38.4MB/s,利用FPGA嵌入式逻辑分析仪分析结果如图5所示,每个u_slwr读脉冲,FPGA发送一个16 b数据。


4 结束语
    本系统通过FPGA控制USB2.O控制器CY7C68013达到高速数据传输的目的,具有硬件结构简单、软件扩展性强、传输数据准确性高等特点,目前下传和上传速度分别为42.1MB/s和38.4 MB/s,完全可以应用于高速数据采集、高速数据通信、数字摄像设备及存储设备等。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭