首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» USB2.0接口传输的FPGA控制与实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
USB2.0接口传输的FPGA控制与实现
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2015-7-28 20:35
|
只看该作者
USB2.0接口传输的FPGA控制与实现
调制解调器
,
Microsoft
,
移动硬盘
,
数据采集
,
应用程序
摘要:为解决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,完全可以应用于高速数据采集、高速数据通信、数字摄像设备及存储设备等。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议