一种基于USB3.0的SpaceWire视频采集卡的制作方法

文档序号:16735843发布日期:2019-01-28 12:37阅读:424来源:国知局
一种基于USB3.0的SpaceWire视频采集卡的制作方法

本发明属于数据传输技术领域,特别涉及一种基于usb3.0的spacewire视频采集卡。



背景技术:

spacewire总线技术是欧空局为解决星上数据传输问题而提出的一种新的高速(2mb/s~400mb/s)、点对点、全双工的串行总线技术。spacewire不仅具有较高的数据传输速率,而且具有很好的emc特性,同时加强了在错误检测与恢复、故障处理和保护以及系统时间广播等方面的功能,使之更加适应航天器的空间运行环境。除此以外,spacewire还致力于各个设备间数据链路接口的兼容性和复用性,使航天器研究的成本大大下降。

目前,spacewire总线在空间任务中还处于试验研究阶段,是未来星载数据总线的首选。由于spacewire总线带宽较高,除用于指令、控制数据的传输外,常被用来传输视频、图像等大容量数据。现阶段主要集中为对spacewire总线的可靠性、稳定性等测试,为空间组网打好基础。因此,出于测试与数据获取的需要,地面设备与spacewire设备的交互也就愈加重要。

usb(universalserialbus)是连接计算机系统与外部设备的一种串口总线标准,目前已成熟稳定应用的usb3.0理论速度达到5gbps,通用设备一般都集成有usb3.0接口,支持热插拔、即插即用、使用方便。因此,通过usb3.0技术采集spacewire视频数据,速率快,实时性高,为spacewire视频采集、传输带来了极大的便利。



技术实现要素:

针对上述问题,本发明公开一种基于usb3.0的spacewire视频采集卡,为通用设备提供采集spacewire视频设备的能力。

本发明数据缓存模块采用两片sram独立与fpga进行连接,设计乒乓缓存状态机使数据读写可以同时进行,克服sram不支持读写同时进行的问题,提高采集卡的工作效率。

本发明基于usb3.0的spacewire视频采集卡,输入端连接spacewire视频设备,输出端连接带有usb接口的通用设备,为通用设备提供采集spacewire视频设备的能力。

采集卡以fpga为控制核心,采用spacewire应用层协议实现与spacewire视频设备的通信;usb3.0总线通信由usb3.0控制器实现,并采用双sram缓存模块通过fpga中设计的乒乓缓存状态机进行乒乓读写,完成图像数据帧的缓存。

上述fpga用于实现spacewire视频数据的采集与传输,包括spacewire视频数据打包模块,用于完成数据封装;spacewire接口fifo,用于缓存封装好的数据;数据缓存模块,用于驱动sram缓存模块实现视频帧的缓存;usb3.0接口fifo,用于从sram缓存模块中读取数据的缓存;usb3.0传输模块,用于实现usb3.0数据传输。

上述usb3.0控制器端点配置为输入输出双向,usb3.0控制器缓存buffer配置为12个,每个bufffer大小为16kbytes,传输方式为slavefifo模式以适应块数据传输。

本发明的优点在于:

1、本发明基于usb3.0的spacewire视频采集卡,采用高速的usb3.0作为通用设备的采集通道,速率快,即插即用,方便地面通用设备快速对spacewire总线设备的数据采集;

2、本发明基于usb3.0的spacewire视频采集卡,针对不同的视频格式,可对其进行相应的数据封装使采集卡传输速率达到最优效果,具体格式可通过usb进行动态配置,方便灵活,可实现多种视频格式数据采集。

3、本发明基于usb3.0的spacewire视频采集卡,采用两片sram乒乓操作的办法实现了spacewire视频数据的整帧缓存,保证了传输速率的要求,同时克服了fpga内部存储资源有限的问题,保证视频数据完整性,防止出现帧错乱的情况。

附图说明

图1为本发明一种基于usb3.0的spacewire视频采集卡整体结构示意图;

图2为控制核心fpga内部主要模块组成示意图;

图3为本发明一种基于usb3.0的spacewire视频采集卡中设计的乒乓缓存状态机状态转移图。

具体实施方式

下面将结合附图对本发明进行详细说明。

本发明一种基于usb3.0的spacewire视频采集卡,为通用设备提供采集spacewire视频设备的能力,输入端连接spacewire视频设备,输出端连接带有usb3.0接口的通用设备,为通用设备采集spacewire视频流数据提供接口。

如图1所示,本发明一种基于usb3.0的spacewire视频采集卡,由外围电路与fpga构成,外围电路主要包括电源模块、配置电路、sram缓存模块、时钟电路、spacewire接口电路与usb3.0控制器。

所述电源模块为采集卡各模块及电路提供电源。采集卡通过usb3.0接口接入标准的5v电压电源,通过电源模块转换为各模块所需电压,包括将5v输入电压转换为3.3v电压输出为fpga、sram缓存模块、usb3.0控制器、时钟电路等提供电源,将5v输入电压转换为2.5v电压输出为fpga提供所需电压,将5v输入电压转换为1.2v电压输出为fpga、usb3.0控制器提供所需电压。

配置电路主要用于程序的存储。fpga程序与usb3.0控制器固件程序分别存储在配置电路的两块eeprom中,上电自动运行,无需再次下载。

sram缓存模块为视频帧数据提供缓存空间,采集卡采用两片sram分别独立与fpga进行连接,方便读写控制,提高效率。

时钟电路为fpga与usb3.0控制器提供主时钟,采用外部时钟为20mhz的有源晶振为fpga提供时钟,然后通过fpga内部pll实现时钟倍频输出100mhz和200mhz的时钟信号作为系统时钟使用。采用外部时钟为19.2mhz的无源晶振为usb3.0控制器提供时钟;

spacewire接口电路实现与spacewire视频设备的物理连接。spacewire视频设备信号电平为lvds信号,spacewire接口电路采集lvds信号,经过电平变换芯片将电平转换为ttl电平输入到fpga中。

usb3.0控制器实现采集卡与通用设备数据的交互,通过编写usb3.0控制器的固件程序,实现usb3.0总线协议。固件程序中端点方向配置为输入输出双向,缓存区buffer配置为12个,每个bufffer大小为16kbytes,传输方式为slavefifo模式,这样配置使得usb3.0控制器能以最大缓存空间进行数据的缓存以适应于块传输要求。

fpga为采集卡的控制核心,主要完成spacewire视频数据的采集、封装、缓存与传输,如图2所示,包括spacewire视频数据打包模块、spacewire接口fifo、数据缓存模块、usb3.0接口fifo与usb3.0传输模块。

spacewire视频数据打包模块用来根据usb3.0控制器buffer缓存容量以及所采集的spacewire视频格式,确定usb数据包大小以使传输速率最快。在buffer缓存容量范围之内,所缓存的数据量越大,传输速率也就越快,采集卡采集到sapcewire视频数据后,将数据进行封装以使传输速率最快。本发明通过usb接口可进行采集配置,实现多种视频格式数据的传输,可通过以下方法确定所封装的usb数据包的大小,首先确定采集的视频图像格式,以及采集视频的行数以及列数;通过图像格式可确定每个像素点所占字节数,而行数和列数可确定一帧图像所含像素点个数,其中列数与每个像素点所占字节数的乘积即为一行数据的数据量,usb3.0控制器的每个bufffer的缓存量(即16kbytes)除以一行数据的数据量得到的整数结果即为需要打包成一个usb数据包的行数。为每一帧视频数据封装帧头、帧尾,在每一帧数据中按照上述方法进行usb数据包的封装,使采集卡传输速率达到最优效果。

下面以视频格式为rgb565的bmp格式为例进行数据封装说明,rgb565即{r[4:0],g[5:0],b[4:0]},共分为红、绿、蓝三种颜色分量,每个像素由16位数据组成,行数为480,列数为640,即每一行数据量为1280bytes。usb3.0控制器的每个bufffer的缓存量(即16kbytes)除以1280bytes结果为12,即为使传输速率最快,每12行视频数据打成一个usb数据包,最接近于每个bufffer的容量。一帧图像数据共计480行,这样每一帧数据可分为40包数据依次通过usb3.0进行发送,具体格式如下:

spacewire接口fifo为异步fifo,功能为实现跨时钟域数据的传输,为spacewire视频数据打包模块与数据缓存模块提供稳定可靠的连接,实现数据的可靠平稳传输。

数据缓存模块功能为缓存spacewire视频数据帧,在外部增加sram缓存模块作为高速采集时视频帧的缓存,并在fpga中设计乒乓缓存状态机控制sram实现缓存功能,使得视频数据读写同时进行,提高采集效率。

所述乒乓缓存状态机状态转移过程如图3所示,各状态所完成功能以及状态转移过程具体如下:

状态机的初始状态idle:系统上电初始化状态,sram信号全部复位;

状态转移条件:复位完成后自动跳转到step1状态;

step1:fpga将spacewire接口fifo中数据读出并检测,数据为帧头时把spacewire接口fifo中的数据写入sram缓存模块中的其中一片sram中,另其为sram-a,另一片为sram-b;

状态转移条件:fpga检测到spacewire接口fifo中数据为帧尾时,表示sram-a中缓存完一帧图像数据,跳转进入step2状态;

step2:fpga把spacewire接口fifo中数据读出并检测,数据为帧头时把spacewire接口fifo中的数据写入sram-b中,与此同时,将sram-a中已经缓存的一帧图像数据读出,输出到usb3.0接口fifo中;

状态转移条件:当sram-a中数据帧读完并且sram-b中缓存完一帧图像数据后进入step3状态;

step3:完成sram-a与sram-b的读写切换;

状态转移条件:读写切换完成跳转进入step4状态;

step4:fpga把spacewire接口fifo中数据读出并检测,数据为帧头时把spacewire接口fifo中的数据写入sram-a中,与此同时,将sram-b中已经缓存的一帧图像数据读出,输出到usb3.0接口fifo中;

状态转移条件:当sram-b中数据帧读完并且sram-a中缓存完一帧图像数据后进入step5状态;

step5:完成sram-a与sram-b的读写切换;

状态转移条件:读写切换完成跳转进入step2状态;

usb3.0接口fifo为异步fifo,功能为实现跨时钟域数据的传输,为数据缓存模块与usb3.0传输模块提供稳定可靠的连接,实现数据的可靠平稳传输。

usb3.0传输模块功能为驱动usb3.0控制器实现usb3.0数据传输。当usb3.0接口fifo中有数据待读时usb3.0传输模块把usb3.0接口fifo中数据写入usb3.0控制器,当usb3.0接口fifo中读出数据为包尾时,usb3.0传输模块写入短包结束标志,实现一包数据的传输。

本发明基于usb3.0的spacewire视频采集卡,工作具体步骤为:

步骤一、fpga把接收到spacewire视频数据通过打包模块进行打包封装;

步骤二、fpga把封装好的spacewire数据包写入spacewire接口fifo中;

步骤三、fpga检测到spacewire接口fifo中有数据写入时,把spacewire接口fifo中数据读出并检测,数据为帧头时,通过缓存模块把数据写入sram中;

步骤四、fpga检测到spacewire接口fifo中数据为帧尾,一帧图像数据缓存完毕,把sram中缓存的数据读出并写入usb3.0接口fifo中;

步骤五、fpga通过usb3.0传输模块把usb3.0接口fifo中的数据通过usb3.0传输到通用设备。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1