首页> 中国专利> 基于FPGA技术的USB接口驱动装置

基于FPGA技术的USB接口驱动装置

摘要

一种基于FPGA技术的USB接口驱动装置,设置全局的复位端reset和外部时钟,外部时钟包括两个时钟域;USB接口驱动装置包括:数据产生模块,CRC检验模块,数据和CRC校验码的排序模块,并串转换模块,位填充模块,NRZI编码模块,数据输出模块。本发明提供一种高速数据传输、适用于实时数据采集场合的基于FPGA技术的USB接口驱动装置。

著录项

  • 公开/公告号CN101145146A

    专利类型发明专利

  • 公开/公告日2008-03-19

    原文格式PDF

  • 申请/专利号CN200710071514.6

  • 发明设计人 孟利民;罗佳波;周凯;

    申请日2007-09-21

  • 分类号G06F13/42(20060101);G06F17/50(20060101);H04N5/765(20060101);

  • 代理机构33201 杭州天正专利事务所有限公司;

  • 代理人王兵;王利强

  • 地址 310014 浙江省杭州市下城区朝晖六区

  • 入库时间 2023-12-17 19:54:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-12

    未缴年费专利权终止 IPC(主分类):G06F13/42 授权公告日:20090311 终止日期:20130921 申请日:20070921

    专利权的终止

  • 2009-03-11

    授权

    授权

  • 2008-05-14

    实质审查的生效

    实质审查的生效

  • 2008-03-19

    公开

    公开

说明书

技术领域

本发明属于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复位键,再看逻辑分析仪的观察窗口,这时就会看到打完包的整个包结构。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号