CN100468383C - 基于fpga技术的usb接口驱动装置 - Google Patents
基于fpga技术的usb接口驱动装置 Download PDFInfo
- Publication number
- CN100468383C CN100468383C CNB2007100715146A CN200710071514A CN100468383C CN 100468383 C CN100468383 C CN 100468383C CN B2007100715146 A CNB2007100715146 A CN B2007100715146A CN 200710071514 A CN200710071514 A CN 200710071514A CN 100468383 C CN100468383 C CN 100468383C
- Authority
- CN
- China
- Prior art keywords
- data
- module
- clock
- output
- usb interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
一种基于FPGA技术的USB接口驱动装置,设置全局的复位端reset和外部时钟,外部时钟包括两个时钟域;USB接口驱动装置包括:数据产生模块,CRC检验模块,数据和CRC校验码的排序模块,并串转换模块,位填充模块,NRZI编码模块,数据输出模块。本发明提供一种高速数据传输、适用于实时数据采集场合的基于FPGA技术的USB接口驱动装置。
Description
技术领域
本发明属于USB接口驱动装置。
背景技术
年来,随着互联网和通信技术的飞跃发展,人们也不再满足于只用简单的文字、声音进行交流,而更加倾向于使用图、文、声并茂的动画和多媒体进行交流,如视频会议、电子商务、远程医疗和远程监控等都是视频图像应用的一个热点。可以预见,二十一世纪将是视频图像广泛应用的世纪。但是由于视频图像本身具有庞大的数据量,给传输和存储带来了困难,从而极大的制约了视频图像应用的发展速度。例如,按CCIR 601建议,普通质量的电视信号数字视频的码率约为216Mb/s,而高清晰度电视HDTV则在1.2Gb/s以上,如果没有高效率的压缩技术,真是难以传输和存储。
鉴于以上原因,高效视频采集系统应用而生。视频采集是解决视频信息的获取问题,由于数字化信号的诸多优点,我们更愿意得到的是数字信号。数据采集主要包括模拟信号的获取,模拟信号的数字化,以及数字信号的必要处理。
当前市场上虽然出现了各种各样的视频采集板卡、视频采集系统,但均因其处理功能过于简单,工作环境要求度高,或系统性能不高,有些甚至由于硬件组件造型不当,导致系统总体配合差,出现瓶颈等原因,不能满足本系统的特殊需求。因此,必须自行设计新的视频采集系统。
本发明的目的就是设计一个基于FPGA(现场可编程门阵列)技术的视频信息采集系统,实现视频信息的采集、存储、显示和发送。基于FPGA的设计技术是发展迅速的一项技术。使用FPGA作为视频采集系统的核心控制处理部分,可以充分利用FPGA所具有的可编程、控制逻辑实现方式灵活的特点,使设计出的视频采集系统具有很强的通用性、灵活性和使用性.
对FPGA在视频采集系统硬件流程控制中的使用进行研究与实践,并且开发出具有自主知识产权的IP控制核,无疑会使我国逐渐摆脱对国外类似核心控制芯片的依赖,具有良好的经济核社会效益。
基于FPGA的视频采集系统的设计和实现,可以广泛地应用于视频监控、信息家电、智能小区、远程抄表等领域,而且经过进一步开发和完善,还可以应用于更广阔地领域。
视频采集系统对数据的处理是基于FPGA芯片来完成的,从FPGA芯片出来的数据是高速的,但是经过选用USB芯片之后出来的数据传输率就严重地降低了,这是非常可惜的。现阶段对于USB接口驱动的设计的实现,一般都是通过采用现成的USB芯片,根据芯片的特性来进行驱动程序设计。USB接口驱动采用现成的芯片进行设计,结构使FPGA控制芯片输出的高速数据再经过USB芯片之后,它的速度就明显变慢,无法满足实时的数据采集系统。
发明内容
为了克服的USB接口驱动装置的数据传输速度慢、不能适用于实时数据采集场合的不足,本发明提供一种高速数据传输、适用于实时数据采集场合的基于FPGA技术的USB接口驱动装置。
本发明解决其技术问题所采用的技术方案是:
一种基于FPGA技术的USB接口驱动装置,USB接口驱动装置设置全局的复位端reset和外部时钟,所述的外部时钟包括两个时钟域;所述的USB接口驱动装置包括:数据产生模块,用于当采集到reset的低电平时,产生1到20的20个数据;CRC(循环冗余码校验)检验模块,用于根据移位寄存器来实现,在一个时钟周期内,对对进来的8位并行数据进行了8次移位得到16位比特的CRC校验值;每一次移位进来8位中的一位数据,数据进来的顺序是从高位到低位;数据和CRC校验码的排序模块,用于把数据和CRC校验码同时输入到这个模块,进行排序后输出;添加同步字段和PID字段模块,用于在数据到来前,在数据前面加上80H,C3H两个8bit的头;并串转换模块,用于以输出时钟作为触发时钟,设置一个3bit取数计数器i,来一个时钟加1,当i计到7时自动回到0;当为0时从输入端取数据进行寄存,然后在每个时钟上升沿触发下,从低位到高位的顺序依次输出8个bit;位填充模块,用于将串行的数据存到RAM(随机存取存储器)中,当RAM中有数据放置时,开始对RAM中的数据输出,同时设置一个计数器对数据中的1进行计数,当读到的数据是1时,计数器加1;否则清零;NRZI编码模块,用于对输出的数据进行编码,当输出数据为1时,保持前一个数据的值一个时钟;当输出数据为0时,输出值跳变;数据输出模块,用于将编码后的数据输出。
所述的两个时钟域为1.5M和12M。
本发明的技术构思为:本发明设计的USB接口驱动是视频信息采集系统中的一部分,目的是实现基于FPGA技术的USB接口驱动,提高传输数据经过USB接口之后的传输速度。
对本视频采集系统中经过FPGA芯片处理完的视频数据进行了打包处理,把这些视频数据打成符合USB2.0协议的帧结构。
FPGA芯片处理完的视频数据DATA0包的打包过程,设置了一个全局的复位端和外部时钟,为了下载到FPGA芯片需要,在整个框架中自己添加了一个数据产生模块,用来代替数据输入端以供下载测试需要。整个框架包括CRC检验模块、数据和CRC校验码的排序模块、添加同步字段和PID字段模块、并串转换模块、位填充模块等。
本结构具有两个时钟域,1.5M和12M,因为NRZI编码后的数据是输出到USB总线上的,根据USB协议,视频数据在总线上传输用全速12M的就可以了,并串模块前的模块是1.5M时钟控制的,通过8倍频的关系正好将并串前后的数据同步。1.5M和12M时钟是通过外部24M频率的晶振分频得到的。
安排了一个全局复位端reset,用来告诉各个模块数据的到来,并开始对数据做相应的处理。数据产生模块、CRC检验模块和数据和CRC的排序模块是用1.5M的时钟控制的,都是用时钟的上升沿触发的。后面并串模块、位填充模块和编码模块是用12M时钟控制的,也是通过时钟的上升沿触发的。
在时钟的控制的,当采到reset的低电平,依次产生从1到20的20个数据,产生的数据经过CRC产生器模块进行CRC检验,同时产生的数据和产生的16位CRC校验码输入到数据和CRC帧排序模块,目的是把20个数据的CRC检验码放到第二十个数据后面;然后再经过帧产生模块,在数据之前加上同步和PID字段,这样一个包就完成。
为了下载调试的需要,所以编写了一个有规律输出20个数据的程序。在每一个时钟的上升沿的时刻,采到reset为的电平的时候,把寄存器都清零,将寄存器start拉高,表明要开始输出数据了。当reset的电平结束,算他人体为高时,依次输出1到20的数。当输出为20时,将输出端清零,并把start清零表示数据输出结束。
CRC检验是一个关键部分。由数据包结构可知,数据包采用16位的CRC校验位来验证发送的有效数据正确性。它验证的部分不包括同步字段和PID字段。16位的CRC字段的生成多项式为:G(X)=X16+X15+X2+1,这个为模式代表多项式为1000000000000101b。
根据移位寄存器来实现CRC校验的,相当于在一个时钟的周期内,对进来的8位并行数据进行了8次移位得到16位比特的CRC校验值;每一次移位进来8位中的一位数据,数据进来的顺序是从高位到低位的。要产生一个并行8位数据的16位CRC校验值,必须进行8次移位。
数据与CRC排序模块的功能是实现把二十个有效数据的CRC校验码放到第二十个数据后面,把数据和CRC校验码同时输入到这个模块,进行排序后输出。复位低电平后的一个时钟,数据到来,校验码比数据晚一个时钟到来,输出端先输出从2到21的数据,然后,输出校验位的第9位到第16位作为一个字节,再输出校验位的第1位到第8位作为一个字节。将CRC校验码这样输出,是因为在数据包中,在总线上数据是先输低位,再输高位,而校验码是从高位到低位地输出(参照数据包格式)。在下面介绍的并串转换模块中,是通过先输出低位,再输出高位而实现的,这样,校验位先在这里输出第9位到第16位作为一个字节,再输出校验位的第1位到第8位作为一个字节,从顶层来将,校验位是保持从高位到低位的输出的,是符合包格式的。
在数据包加同步头和PID字段模块中,实现在数据到来前,在数据前面加上80H,C3H两个8bit的头。
因为在USB总线上数据是串行的,所以要把模块中的8位并行数据转化成串行输出。串并模块实现:因为是8转1输出,所以输出时钟要比输入快8倍,在这里,以输出时钟作为触发时钟,设置一个3bit取数计数器i,来一个时钟加1,当i计到7时自动回到0;当为0时从输入端取数据进行寄存,然后在每个时钟上升沿触发下,从低位到高位的顺序依次输出8个bit;结合上面所述的CRC校验码,从并串模块输出后的CRC校验码,已经调整位高位到低位依次输出了。
串行数据包进行位填充和NRZI(倒转非归零)码编码模块完成的功能比较多,在这个模块中设置了一个8192bit的RAM,刚好存下一个数据包1024个字节,这里为了调试观察方便,如前所述,数据只取了20个,所以只用到24*8bit的存储空间。进行位填充会使输入跟输出的数据不等,造成速率不匹配问题,这也使这里设置一个RAM的目的。
在位填充功能模块中,先将串行的数据存到RAM中,当RAM中有数据放置时,开始对RAM中的数据输出,同时设置一个计数器对数据中的1进行计数,当读到的数据是1时,计数器加1;否则清零;当计数器计到6,说明当前输出的数据已经有6个连1了,之后在六个1后面插入一个零,同时计数器清零重新计数。
对RAM中输出的数据进行编码,当输出数据为1时,保持前一个数据的值一个时钟;当输出数据为0时,输出值跳变。
本发明的有益效果主要表现在:高速数据传输、适用于实时数据采集场合。
附图说明
图1是DATA0数据包打包整体框图。
图2是CRC校验逻辑图。
图3是模块的编译和测试过程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图3,一种基于FPGA技术的USB接口驱动装置,USB接口驱动装置设置全局的复位端reset和外部时钟,所述的外部时钟包括两个时钟域;所述的USB接口驱动装置包括:数据产生模块,用于当采集到reset的低电平时,产生1到20的20个数据;CRC检验模块,用于根据移位寄存器来实现,在一个时钟周期内,对对进来的8位并行数据进行了8次移位得到16位比特的CRC校验值;每一次移位进来8位中的一位数据,数据进来的顺序是从高位到低位;数据和CRC校验码的排序模块,用于把数据和CRC校验码同时输入到这个模块,进行排序后输出;添加同步字段和PID字段模块,用于在数据到来前,在数据前面加上80H,C3H两个8bit的头;并串转换模块,用于以输出时钟作为触发时钟,设置一个3bit取数计数器i,来一个时钟加1,当i计到7时自动回到0;当为0时从输入端取数据进行寄存,然后在每个时钟上升沿触发下,从低位到高位的顺序依次输出8个bit;位填充模块,用于将串行的数据存到RAM中,当RAM中有数据放置时,开始对RAM中的数据输出,同时设置一个计数器对数据中的1进行计数,当读到的数据是1时,计数器加1;否则清零;NRZI编码模块,用于对输出的数据进行编码,当输出数据为1时,保持前一个数据的值一个时钟;当输出数据为0时,输出值跳变;数据输出模块,用于将编码后的数据输出。
所述的两个时钟域为1.5M和12M。
本实施例在通信系统实验板上下载、调试,并在逻辑分析仪上观看打包情况的,本人主要运用了通信替系统实验板上的Altera公司研发的FPGA芯片EP1K30TC144—3及其它元器件组成的硬件电路板。该硬件电路平面图如图3所示,在电路板的上端是电路板的电源部分,中间近似正方形的是FPGA芯片——EP1K30TC144—3,左端为一个连接电脑主机并口的下载调试口,右端插着白色管子的是连接到逻辑分析仪的管脚,下面一排pin8到pin17是可编程输入输出引脚,可供自己选择锁定管脚进行测试;pin46到pin49是键盘输入端,可供复位信号的输入。
调试工具:电路板、逻辑分析仪、下载线、直流稳压电源、QuartusII软件
调试步骤:
1.在右边口接上逻辑分析仪的输入管脚、用下载线连接板子和主机箱的并口。
2.接上直流稳压电源,这里用的电压是8V。
3.选择芯片。打开QuartusII中的项目,在菜单“Assignments”中打开“Device”,接下来跳出的对话框,在“Family”中选择“ACEX1K”,并在下面的芯片选择项中选择“EP1K30TC144-3”芯片,点“OK”就行。
4.引脚锁定。程序在下载之前首先要进行引脚锁定。打开QuartusII中的项目,在菜单“Assignments”中选择“Pins”项,会跳出一个对话框,在“Edit”下面会有信号名称可供选择,从中选择要锁定的信号管脚(如clk),根据程序调试需要锁定管脚,最后存盘。引脚锁定后,必须再编译一次,将引脚锁定信息编译进下载文件中。
5.选择编程模式和配置。为了将编译产生的下载文件(.sof)文件配置进FPGA中,在菜单“Tool”中,选择“Programmer”,弹出的编程窗口。在“Mode”栏中有三种编程模式,JTAG、Passive Serial、Active Serial,这里选择Passive Serial方式,选择配置文件,最后单击“Start”按钮。当“Progress”显示出100%时,表示编程成功。
6.设置编程器。单击图所示的编程窗上的“Hardware”按钮,弹出“Hardware Setup”对话框;选择此框的“Hardware setting”页,再双击此页中的选项“Byte BlasterII”,关闭对话框即可。
7.在逻辑分析仪上,要把从电路板上连接的管脚进行设定,就是在配置对话框里将用到的信号,打勾,不用的去掉勾就行了。
注意事项:
(1)上电后再开始下载。没上电就点击“Start”按钮,下载会出现Unableto reset device before configuration的错误。
(2)不能带电插拔,否则容易引起元器件的损环。
(3)引脚锁定后,必须再编译一次,才能将引脚锁定信息编译进下载文件中。锁引脚的时候时钟和复位信号的引脚也要锁定,时钟是55脚,复位是46脚。
(4)连到逻辑分析仪上的管脚也要锁定,把打完包8位并行的输出锁到以下几个输出口,连到分析仪上的信号除了自己要观察的信号以外,千万注意不要忘了时钟信号也要连接,把一个时钟信号锁到了17脚供逻辑分析仪使用。
调试结果:程序下载成功,实验板上的二极管指示灯亮,在逻辑分析仪的观察窗口上设定信号值为“C3”,这样窗口运行完后就会停在“C3”开头这一段,有利于捕捉帧头;然后按下运行按钮,在电路板上按一下46复位键,再看逻辑分析仪的观察窗口,这时就会看到打完包的整个包结构。
Claims (2)
1、一种基于FPGA技术的USB接口驱动装置,其特征在于:所述的USB接口驱动装置设置全局的复位端reset和外部时钟,所述的外部时钟包括两个时钟域;所述的USB接口驱动装置包括:
数据产生模块,用于当采集到reset的低电平时,产生1到20的20个数据;
CRC检验模块,用于根据移位寄存器来实现,在一个时钟周期内,对对进来的8位并行数据进行了8次移位得到16位比特的CRC校验值;每一次移位进来8位中的一位数据,数据进来的顺序是从高位到低位;数据和CRC校验码的排序模块,用于把二十个有效数据的CRC校验码放到第二十个数据后面,把数据和CRC校验码同时输入到这个模块,进行排序后输出;
添加同步字段和PID字段模块,用于在数据到来前,在数据前面加上80H,C3H两个8bit的头;
并串转换模块,用于以输出时钟作为触发时钟,设置一个3bit取数计数器i,来一个时钟加1,当i计到7时自动回到0;当为0时从输入端取数据进行寄存,然后在每个时钟上升沿触发下,从低位到高位的顺序依次输出8个bit;
位填充模块,用于将串行的数据存到RAM中,当RAM中有数据放置时,开始对RAM中的数据输出,同时设置一个计数器对数据中的1进行计数,当读到的数据是1时,计数器加1;否则清零;当计数器计到6,说明当前输出的数据已经有6个连1了,之后在六个1后面插入一个零,同时计数器清零重新计数;
NRZI编码模块,用于对输出的数据进行编码,当输出数据为1时,保持前一个数据的值一个时钟;当输出数据为0时,输出值跳变;
数据输出模块,用于将编码后的数据输出。
2、如权利要求1所述的基于FPGA技术的USB接口驱动装置,其特征在于:所述的两个时钟域为1.5M和12M。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100715146A CN100468383C (zh) | 2007-09-21 | 2007-09-21 | 基于fpga技术的usb接口驱动装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100715146A CN100468383C (zh) | 2007-09-21 | 2007-09-21 | 基于fpga技术的usb接口驱动装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101145146A CN101145146A (zh) | 2008-03-19 |
CN100468383C true CN100468383C (zh) | 2009-03-11 |
Family
ID=39207675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100715146A Expired - Fee Related CN100468383C (zh) | 2007-09-21 | 2007-09-21 | 基于fpga技术的usb接口驱动装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100468383C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101754005B (zh) * | 2008-12-15 | 2013-03-06 | 康佳集团股份有限公司 | 一种数字视频信号转换装置及数字视频信号传输系统 |
CN102904578B (zh) * | 2011-07-28 | 2017-03-15 | 上海华虹集成电路有限责任公司 | 一种高速时钟域内的nrzi解码电路 |
CN103838691B (zh) * | 2012-11-27 | 2018-08-14 | 中兴通讯股份有限公司 | 实现高速数据传输的方法及通用接口芯片 |
CN103281154B (zh) * | 2012-12-24 | 2016-08-03 | 珠海拓普智能电气股份有限公司 | 并行处理数据采集与数据传输的数据采集卡系统 |
EP3637798A1 (en) * | 2018-10-09 | 2020-04-15 | Infineon Technologies AG | Mems microphone |
CN112612638A (zh) * | 2020-12-29 | 2021-04-06 | 芯启源电子科技有限公司 | 基于usb3.2协议16比特循环冗余校验的硬件实现方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2700946Y (zh) * | 2003-11-25 | 2005-05-18 | 浙江大学 | 实时信号处理的高速usb通讯接口装置 |
-
2007
- 2007-09-21 CN CNB2007100715146A patent/CN100468383C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2700946Y (zh) * | 2003-11-25 | 2005-05-18 | 浙江大学 | 实时信号处理的高速usb通讯接口装置 |
Non-Patent Citations (3)
Title |
---|
USB在FPGA控制的高速数据采集系统中的应用. 倪明辉,周军,杨庚.计算机测量与控制,第14卷第2期. 2006 * |
基于FPGA和USB2.0的高速数据采集系统. 吴振宇,常玉保,冯林.仪器仪表学报,第27卷第6期. 2006 * |
基于USB总线的FPGA与PC机接口通信的实现. 张树春,刘成安.微计算机信息,第21卷第4期. 2005 * |
Also Published As
Publication number | Publication date |
---|---|
CN101145146A (zh) | 2008-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100468383C (zh) | 基于fpga技术的usb接口驱动装置 | |
CN101504692B (zh) | 一种验证和测试片上系统的系统及方法 | |
US7861070B2 (en) | Trace compression method for debug and trace interface wherein differences of register contents between logically adjacent registers are packed and increases of program counter addresses are categorized | |
CN100337212C (zh) | 逻辑验证系统及方法 | |
CN104200846B (zh) | 一种嵌入式prom测试系统及实现方法 | |
CN105162437A (zh) | 一种波形发生装置及方法 | |
CN109891843A (zh) | 用于可编程逻辑器件的时钟恢复和数据恢复 | |
CN101373493A (zh) | 一种多媒体存储网关专用soc芯片逻辑验证方法 | |
CN202838306U (zh) | 一种基于微处理器的fpga配置系统 | |
CN103268299A (zh) | 一种应用于PXI Express总线测试系统的通用数据压缩IP核 | |
CN104298827A (zh) | 一种基于Petri网的异步电路建模和VHDL实现方法 | |
CN101329702A (zh) | 一种满足SystemC语法的多核处理器的先进先出队列单元组 | |
US7093224B2 (en) | Model-based logic design | |
Sokolov et al. | Clockless circuits and system synthesis | |
CN103607207B (zh) | 一种即插即用的多接口数据压缩设备 | |
CN109637312A (zh) | 一种片上数字电子技术实验系统 | |
Jusoh et al. | An FPGA implementation of shift converter block technique on FIFO for RS232 to universal serial bus converter | |
CN101377794A (zh) | 一种金融税控soc芯片逻辑验证系统 | |
CN111710357B (zh) | Mcu的mtp单元读写控制电路 | |
Liao et al. | FVP: A formal verification platform for SoC | |
Guo et al. | A SPI interface module verification method based on UVM | |
CA2450627A1 (en) | Method for generating electronic circuits | |
CN101354730B (zh) | 一种仿真器芯片的仿真方法 | |
Abbes et al. | IP integration methodology for SoC design | |
CN109885850A (zh) | 一种局部寄存器的生成方法及生成系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090311 Termination date: 20130921 |