最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

FPGA的USB2.0通信接口的开发

IT圈 admin 22浏览 0评论

2024年5月16日发(作者:缪衍)

2014年第12期 

文章编号:1009—2552(2014)12—0081—04 中图分类号:TN97 .1 文献标识码:A 

FPGA的USB2.0通信接口的开发 

骆晓祥,郭建强,高晓蓉,王泽勇,赵全轲,郑 彪 

(西南交通大学物理科学与技术学院光电工程研究所,成都610031) 

摘要:为了实现FPGA与USB之间的数据传输,介绍了USB2.0通信接1:2的硬件设计,USB固 

件程序的编写以及利用MFC编写上位机程序。通过把FPGA存储的数据用USB接口传输给上位 

机并保存,采用了USB的同步Slave FIFO的接口模式和Bulk的传输模式来传输数据。实验结果 

表明基于FPGA开发的USB2.0接口工作正常,满足USB2.0接口规范和设计要求。 

关键词:计算机接口;固件程序;USB2.0;FPGA;CY7C68013 

Design 0f FPGA.based USB2.0 communication interface hardware 

LUO Xiao—xiang,GUO Jian—qiang,GAO Xiao-rong, 

WANC Ze.yong.ZHA0 Quan.ke。ZHENG Biao 

(Photoelectric Engineering Insittute,School of Physical Science and Technology, 

Southwest Jiaotong UIIiversity,Chengdu 61 ̄31,China) 

Abstract:To achieve the data transfer between the FPGA and USB,this paper introduces a USB2.0 

communication hardware interface design,programing of USB firmware and writing Windows programs 

using MFC.Data stored in the FPGA is transferred with USB interface to the host computer and saved, 

using the synchronous Slave FIFO interface mode and Bulk transfer mode.The experimental results show 

htat it can work properly and it can meet the USB specification and design requirements. 

Key words:computer interface;firmware program;USB2.0;FPGA;CY7C68013 

0 引言 

1 总体设计方案 

数据采集主要发展的两个方向是高速大数据量和 

USB2.0接口设计的总体方案是将存储在FP. 

高采样精度。而在这个过程中对传输的接口提出了更 

GA的RAM中的数据通过USB2.0芯片 

高的要求,除了要有较高的传输速度之外还提出实时 (CY7C68013)传给电脑,电脑再通过上位机把数据 

处理的能力,同时接口要简单易用。USB具有较高的 

接收后保存。硬件系统的示意图如图1所示,其中 

速度,支持热拔插,扩展容易,而USB2.0最高传输速度 

包括USB2.0芯片CY7C68013的硬件设计、FPGA 

达380M/s。此外,为了方便设备之间的通信,USB OTG 

的接口编程和PC机的内核编程三大部分。 

能够支持端对端传输模式,无需主机参与 1 J。由于这 

些特点,USB广泛应用于高速数据采集中的接口。 

FPGA 

l瞎 § CY7C68013 =:> 

Pc 

FPGA在通信工程、图像及数字信号处理等领域 

得到了长足的发展,它不仅具备了通用性强和高集成 

网 

度的特点,而且还能够进行可编程。另外,FPGA的特 

图I USB硬件系统示意图 

点是结构非常灵活,很多设计中能够通用,利用模块 

化设计易于移植,算法的效率高,这样就能够缩短开 

收稿日期:2014一Ol一20 

基金项目:科技部重大项目(2013YQ23057504) 

发周期,使得产品占据优势 。本文探索FPGA的 

作者简介:骆晓祥(1991一),男,在读研究生,研究方向为光电检测。 

usB2.0接口的硬件设计和内核编程的方法。 

通讯作者:郭建强。 

8l一 

2 EZ—USB FX2 

在USB2.0的FPGA端面,使用为Ahera公司的 

CY7C68013是由Cypress推出的FX2解决方 

案,是世界上最早的完整的USB2.0控制器。在 

CY7C68013上拥有智能串行接口引擎(SIE)、 

USB2.0收发器、可编程的外围接口和增强型的 

8051的MCU。这是一个高效低成本的解决方案。 

FX2独特的结构体系使在仅为56SSOP的空间里, 

达到了USB2.0能达到的最大带宽56Mbyte/s。此 

外,在CY7C68013上还集成了成本低廉的8051的 

MCU。CY7C68013利用智能串行接口引擎能够很 

Cyclone II EP2C5Q208,并使用Verilog HDL来设计 

同步Slave FIFO接口模式下Bulk传输模式的程序。 

3 USB2.0通信接口的硬件设计 

图2所示为CY7C68013的外围电路和接口 。 

图中Jl为USB接口,把设备连接到主机。RE— 

SERVED管脚接到地,如果悬空会使芯片进人测试 

模式。SCL、SDA接口需要有上拉电阻,一般使用 

2.2kn。不管EEPROM使用与否都要将连接上拉 

电阻,在系统中没有使用外部的ROM,因此,把EA 

好地觎决USBI.1、USB2.0协议,控制器就不需要过 

于关心协议部分,进而缩短了开发周期,同时还保证 

了USB的兼容性。利用主端点FIFO/从端点FIFO 

和可编程接口(GPIF)能够与外部设备进行无缝连 

接,因而该解决方案非常有优势 “ 。CY7C68013 

功能强大,提供三种接口模式,满足了各类需求。下 

面对这三种接口模式做简单介绍。 

(1)I/O模式 

CY7C68013的PA至PE五组端口总计40个引 

脚。所有的管教都可以通过固件程序方便地控制输 

入输出。只需要通过特殊功能寄存器OEx和IOx 

来控制管教。这种接口模式要通过CPU控制,因而 

它的速度不高,适合于低速的传输场合。 

(2)Slave FIFO模式 

Slave FIFO即从机模式,把FX2当作从机, 

DSP/FPGA等能像控制一般的FIFO来对FX2的 

FIFO进行读写操作。具体的工作方式可以为同步, 

也可以为异步。这种方式可以不需要CPU的参与, 

因此他的数据传输率可以很高,适合高速的传输 

场合。 

(3)GPIF模式 

GPIF即可编程接口,为主机模式。可以通过软 

件编程来实现读写波形进行控制,对普通的8/16位 

的接口都可以实现控制,而且它的数据传输率也比 

较高。GPIF波形可以利用官方提供的GPIF工具来 

生成。使用这个工具不需要了解复杂的波形描述 

符,就能够很好地使用GPIF端口。可以说这种方 

式的灵活性非常高。 

USB协议把端点缓冲区定义为一个数据接收区 

或者数据来源。端点缓冲区其实就是一个FIFO,传 

输数据的时候,主机利用4位地址及方向来选择某 

个端点来进行传输数据。其实一个USB设备具有 

32个端点即16个IN端点和16个OUT端点。它有 

三个64字节的端点缓冲区,此外还有4k可配置的 

缓冲区。 

82一 

连接到地。芯片的时钟接到24M的晶振;RESET为 

复位引脚,使用复位芯片或者复位电路来进行复位。 

WAKEUP管脚不可以悬空,如果不使用挂起模式可 

以把管脚接地。 

图2 CY7C68013的外围电路和接口 

4 FPGA硬件设计 

FPGA采用了逻辑单元阵列LCA(Logic Cell Ar- 

ray),内部包括可配置模块CLB(Configurable Logic 

Block)、输入输出模块(Input Output Block)和内部 

连线(Interconnect)三部分。FPGA的逻辑是通过内 

部静态存储单元加载编程数据实现的,存储在存储 

器单元的值决定了逻辑单元的逻辑功能和各个模块 

之间或者模块与11'O间的连接方式,并最终决定了 

具体功能。 

FPGA的硬件框图如图3所示。主要有电源模 

块、时钟模块、JTAG、USB接口模块等。FPGA通过 

配置电路完成配置数据的加载,就能够运行相应的 

程序。典型FPGA开发流程如图4所示。遵循规范 

的开发流程能够有效地缩短开发周期。 

5 固件程序及上位机设计 

固件程序主要是用来处理PC申请的各类USB 

设备请求,并与外设进行数据传输。由于FX2有多 

种工作模式,在进行固件的设计之前要选择合适的 

工作模式,这样可以减小设计的难度并提高效率。 

本论文开发环境为uVision2,使用的是KEIL的C51 

编译器,并基于Visual C++6.0进行上位机的编 

写 一 。 

图3 FPGA硬件框图 

图4典型FPGA开发流程 

本文使用Cypress提供的固件库来编写固件程 

序 J。固件框架的流程图如图5所示。 

利用Cypress官方提供的CYStream固件程序来 

测试本次设计的USB2.0实验板的实际接口速度。 

该例程主要使用同步传输和块传输来测试数据的吞 

吐率。而且由于Cypress公司还提供了相应的上位 

机,使得用户无需再自己编写相应的上位机程序,简 

化了用户的工作量。将固件程序下载到实验板后会 

提示安装驱动,用户需手动安装对应的驱动程序。 

此外,特别要注意的是由于官方使用了其开发板上 

的数码管,并利用I C对其写数据。如果实验板上 

没有数码管显示或者数码管的驱动芯片不同则需要 

将固件程序中关于数码管显示部分的程序注释或者 

根据芯片更改12C从机的地址。 

固件程序关键代码如下所示。 

void TD

Init(void)//Called once at startup 

{ 

CPUCS=0x12; 

//48 MHz CLKOUT ENALBE 

IFCONFIG=0x43: 

图5固件框架流程 

//外部时钟,IFCLK输入不反向,同步模式,// 

选择slave FIFO接口 

SYNCDEIAY: 

EP2CFG=0x20;//四缓冲,每个缓冲区大//小 

为512字节,端口方向OUT,Bulk模式 

SYNCDELAY: 

EP4CFG=0x20;//端口4不使用 

SYNCDELAY: 

EP6CFG=OxE2;//使用,IN,Bulk模 

//式,512字节,四缓冲。 

SYNCDELAY: 

EP8CFG=Ox20;//端口8不使用。 

SYNCDELAY: 

FIFORESET=0x80;//activate 

//NAK—ALL to avoid race conditions 

SYNCDELAY;//see TRM section 15.14 

FIFORESET=Ox02;//reset.FIFO 2 

SYNCDELAY: 

83— 

2024年5月16日发(作者:缪衍)

2014年第12期 

文章编号:1009—2552(2014)12—0081—04 中图分类号:TN97 .1 文献标识码:A 

FPGA的USB2.0通信接口的开发 

骆晓祥,郭建强,高晓蓉,王泽勇,赵全轲,郑 彪 

(西南交通大学物理科学与技术学院光电工程研究所,成都610031) 

摘要:为了实现FPGA与USB之间的数据传输,介绍了USB2.0通信接1:2的硬件设计,USB固 

件程序的编写以及利用MFC编写上位机程序。通过把FPGA存储的数据用USB接口传输给上位 

机并保存,采用了USB的同步Slave FIFO的接口模式和Bulk的传输模式来传输数据。实验结果 

表明基于FPGA开发的USB2.0接口工作正常,满足USB2.0接口规范和设计要求。 

关键词:计算机接口;固件程序;USB2.0;FPGA;CY7C68013 

Design 0f FPGA.based USB2.0 communication interface hardware 

LUO Xiao—xiang,GUO Jian—qiang,GAO Xiao-rong, 

WANC Ze.yong.ZHA0 Quan.ke。ZHENG Biao 

(Photoelectric Engineering Insittute,School of Physical Science and Technology, 

Southwest Jiaotong UIIiversity,Chengdu 61 ̄31,China) 

Abstract:To achieve the data transfer between the FPGA and USB,this paper introduces a USB2.0 

communication hardware interface design,programing of USB firmware and writing Windows programs 

using MFC.Data stored in the FPGA is transferred with USB interface to the host computer and saved, 

using the synchronous Slave FIFO interface mode and Bulk transfer mode.The experimental results show 

htat it can work properly and it can meet the USB specification and design requirements. 

Key words:computer interface;firmware program;USB2.0;FPGA;CY7C68013 

0 引言 

1 总体设计方案 

数据采集主要发展的两个方向是高速大数据量和 

USB2.0接口设计的总体方案是将存储在FP. 

高采样精度。而在这个过程中对传输的接口提出了更 

GA的RAM中的数据通过USB2.0芯片 

高的要求,除了要有较高的传输速度之外还提出实时 (CY7C68013)传给电脑,电脑再通过上位机把数据 

处理的能力,同时接口要简单易用。USB具有较高的 

接收后保存。硬件系统的示意图如图1所示,其中 

速度,支持热拔插,扩展容易,而USB2.0最高传输速度 

包括USB2.0芯片CY7C68013的硬件设计、FPGA 

达380M/s。此外,为了方便设备之间的通信,USB OTG 

的接口编程和PC机的内核编程三大部分。 

能够支持端对端传输模式,无需主机参与 1 J。由于这 

些特点,USB广泛应用于高速数据采集中的接口。 

FPGA 

l瞎 § CY7C68013 =:> 

Pc 

FPGA在通信工程、图像及数字信号处理等领域 

得到了长足的发展,它不仅具备了通用性强和高集成 

网 

度的特点,而且还能够进行可编程。另外,FPGA的特 

图I USB硬件系统示意图 

点是结构非常灵活,很多设计中能够通用,利用模块 

化设计易于移植,算法的效率高,这样就能够缩短开 

收稿日期:2014一Ol一20 

基金项目:科技部重大项目(2013YQ23057504) 

发周期,使得产品占据优势 。本文探索FPGA的 

作者简介:骆晓祥(1991一),男,在读研究生,研究方向为光电检测。 

usB2.0接口的硬件设计和内核编程的方法。 

通讯作者:郭建强。 

8l一 

2 EZ—USB FX2 

在USB2.0的FPGA端面,使用为Ahera公司的 

CY7C68013是由Cypress推出的FX2解决方 

案,是世界上最早的完整的USB2.0控制器。在 

CY7C68013上拥有智能串行接口引擎(SIE)、 

USB2.0收发器、可编程的外围接口和增强型的 

8051的MCU。这是一个高效低成本的解决方案。 

FX2独特的结构体系使在仅为56SSOP的空间里, 

达到了USB2.0能达到的最大带宽56Mbyte/s。此 

外,在CY7C68013上还集成了成本低廉的8051的 

MCU。CY7C68013利用智能串行接口引擎能够很 

Cyclone II EP2C5Q208,并使用Verilog HDL来设计 

同步Slave FIFO接口模式下Bulk传输模式的程序。 

3 USB2.0通信接口的硬件设计 

图2所示为CY7C68013的外围电路和接口 。 

图中Jl为USB接口,把设备连接到主机。RE— 

SERVED管脚接到地,如果悬空会使芯片进人测试 

模式。SCL、SDA接口需要有上拉电阻,一般使用 

2.2kn。不管EEPROM使用与否都要将连接上拉 

电阻,在系统中没有使用外部的ROM,因此,把EA 

好地觎决USBI.1、USB2.0协议,控制器就不需要过 

于关心协议部分,进而缩短了开发周期,同时还保证 

了USB的兼容性。利用主端点FIFO/从端点FIFO 

和可编程接口(GPIF)能够与外部设备进行无缝连 

接,因而该解决方案非常有优势 “ 。CY7C68013 

功能强大,提供三种接口模式,满足了各类需求。下 

面对这三种接口模式做简单介绍。 

(1)I/O模式 

CY7C68013的PA至PE五组端口总计40个引 

脚。所有的管教都可以通过固件程序方便地控制输 

入输出。只需要通过特殊功能寄存器OEx和IOx 

来控制管教。这种接口模式要通过CPU控制,因而 

它的速度不高,适合于低速的传输场合。 

(2)Slave FIFO模式 

Slave FIFO即从机模式,把FX2当作从机, 

DSP/FPGA等能像控制一般的FIFO来对FX2的 

FIFO进行读写操作。具体的工作方式可以为同步, 

也可以为异步。这种方式可以不需要CPU的参与, 

因此他的数据传输率可以很高,适合高速的传输 

场合。 

(3)GPIF模式 

GPIF即可编程接口,为主机模式。可以通过软 

件编程来实现读写波形进行控制,对普通的8/16位 

的接口都可以实现控制,而且它的数据传输率也比 

较高。GPIF波形可以利用官方提供的GPIF工具来 

生成。使用这个工具不需要了解复杂的波形描述 

符,就能够很好地使用GPIF端口。可以说这种方 

式的灵活性非常高。 

USB协议把端点缓冲区定义为一个数据接收区 

或者数据来源。端点缓冲区其实就是一个FIFO,传 

输数据的时候,主机利用4位地址及方向来选择某 

个端点来进行传输数据。其实一个USB设备具有 

32个端点即16个IN端点和16个OUT端点。它有 

三个64字节的端点缓冲区,此外还有4k可配置的 

缓冲区。 

82一 

连接到地。芯片的时钟接到24M的晶振;RESET为 

复位引脚,使用复位芯片或者复位电路来进行复位。 

WAKEUP管脚不可以悬空,如果不使用挂起模式可 

以把管脚接地。 

图2 CY7C68013的外围电路和接口 

4 FPGA硬件设计 

FPGA采用了逻辑单元阵列LCA(Logic Cell Ar- 

ray),内部包括可配置模块CLB(Configurable Logic 

Block)、输入输出模块(Input Output Block)和内部 

连线(Interconnect)三部分。FPGA的逻辑是通过内 

部静态存储单元加载编程数据实现的,存储在存储 

器单元的值决定了逻辑单元的逻辑功能和各个模块 

之间或者模块与11'O间的连接方式,并最终决定了 

具体功能。 

FPGA的硬件框图如图3所示。主要有电源模 

块、时钟模块、JTAG、USB接口模块等。FPGA通过 

配置电路完成配置数据的加载,就能够运行相应的 

程序。典型FPGA开发流程如图4所示。遵循规范 

的开发流程能够有效地缩短开发周期。 

5 固件程序及上位机设计 

固件程序主要是用来处理PC申请的各类USB 

设备请求,并与外设进行数据传输。由于FX2有多 

种工作模式,在进行固件的设计之前要选择合适的 

工作模式,这样可以减小设计的难度并提高效率。 

本论文开发环境为uVision2,使用的是KEIL的C51 

编译器,并基于Visual C++6.0进行上位机的编 

写 一 。 

图3 FPGA硬件框图 

图4典型FPGA开发流程 

本文使用Cypress提供的固件库来编写固件程 

序 J。固件框架的流程图如图5所示。 

利用Cypress官方提供的CYStream固件程序来 

测试本次设计的USB2.0实验板的实际接口速度。 

该例程主要使用同步传输和块传输来测试数据的吞 

吐率。而且由于Cypress公司还提供了相应的上位 

机,使得用户无需再自己编写相应的上位机程序,简 

化了用户的工作量。将固件程序下载到实验板后会 

提示安装驱动,用户需手动安装对应的驱动程序。 

此外,特别要注意的是由于官方使用了其开发板上 

的数码管,并利用I C对其写数据。如果实验板上 

没有数码管显示或者数码管的驱动芯片不同则需要 

将固件程序中关于数码管显示部分的程序注释或者 

根据芯片更改12C从机的地址。 

固件程序关键代码如下所示。 

void TD

Init(void)//Called once at startup 

{ 

CPUCS=0x12; 

//48 MHz CLKOUT ENALBE 

IFCONFIG=0x43: 

图5固件框架流程 

//外部时钟,IFCLK输入不反向,同步模式,// 

选择slave FIFO接口 

SYNCDEIAY: 

EP2CFG=0x20;//四缓冲,每个缓冲区大//小 

为512字节,端口方向OUT,Bulk模式 

SYNCDELAY: 

EP4CFG=0x20;//端口4不使用 

SYNCDELAY: 

EP6CFG=OxE2;//使用,IN,Bulk模 

//式,512字节,四缓冲。 

SYNCDELAY: 

EP8CFG=Ox20;//端口8不使用。 

SYNCDELAY: 

FIFORESET=0x80;//activate 

//NAK—ALL to avoid race conditions 

SYNCDELAY;//see TRM section 15.14 

FIFORESET=Ox02;//reset.FIFO 2 

SYNCDELAY: 

83— 

发布评论

评论列表 (0)

  1. 暂无评论