基于FPGA的高速多路视频数据采集系统
SOPC系统以NiosII处理器为核心,通过AvaIon总线作为控制信号和数据传输中枢,NiosII软核CPU及各类外设均挂载在Avalon总线上,本文SOPC系统中包括NiosII处理器、SSRAM、片上内存、JTAG控制接口、I2C总线控制接口、自定义FIFO接口、2个SDRAM控制器、DMA等。
2.2 视频解码模块设计
视频采集扩展板以TVP5150低功耗视频A/D芯片为核心,采集模拟摄像头信号,经A/D采样后量化编码成8位ITU-RBT.656视频编码格式输出,输出图像分辨率为720x 480,像素时钟为27 MHz。
视频解码模块具有两个功能:
①根据ITU-RBT.656并行接口规则,将TVP5150芯片输出的数据流转换成YUV422的图像RAW DATA。
②对视频分辨率进行调整,调整为640×480的分辨率,当数据为有效区域像素时发出数据有效信号,即对自定义FIFO的写请求信号。
ITU-RBT.656协议中规定的信号中主要有3类:有效视频区域数据信号、视频定时基准信号、辅助信号。视频解码模块第一部分任务关键是如何快速检测ITU-RBT.656视频数据流中视频定时基准信号SAV/EAV。定时基准信号由4个字节的序列组成,其格式为FF0000XY,前3个字节FF0000为标志序列,最后一个字节XY表示该定时基准信号前后的数据行位于整个数据帧的位置及该定时基准信号类型。最后一字节XY每一位的含义如表1所列。本文引用地址://m.amcfsurvey.com/article/190015.htm
H,P2=FH,P1=FV,P0=FVH。
传统序列检测通常使用状态机来实现。本设计创新的使用滑动窗法来快速检测定时基准信号,这种设计程序结构清晰,在很大程度上减少了代码量。根据ITU-RBT.656协议中定时基准信号的定义,声明变量SAV=(Window==24’hFF0000)&(iData[4]==1’b0)。其中Window声明24位寄存器,iData[7:0]是8位输入信号,这里只取第4位。滑动窗更新时每次左移8位,低8位用输入信号补齐。
解码模块的第二个功能在调整分辨率的时候引入Skip信号,当Skip信号有效时,该像素点数据跳过。本设计通过除法器控制Skip信号,将行像素计算器的输出值作为除法器的分子,分母为9,skip信号由除法器余数控制,当余数为0时Skip信号有效。采用这种方案将行像素点由720转换为640。
2.3 SOPC自定义FIFO接口
由于视频输入部分工作在27 MHz的时钟频率下,而NiosII软核CPU为了获取较高的系统处理能力,整个SOPC系统工作在100 MHz的时钟频率下。数据从外部进入SOPC系统的过程中由于时钟的不匹配,极易造成数据重复或丢失,而异步FIFO正是解决这个问题的关键。采用异步FI FO作为数据缓冲接口,低速时钟域接收来自视频解码模块的Raw Data图像数据,完成写FIFO操作;高速时钟域响应DMA控制器的读请求,由DMA控制器完成读FIFO操作。
多路视频数据存储接口模块通过SOPC的自定义外设实现,本设计针对多路视频数据采集,可根据每路视频数据的不同格式单独为每路视频数据定制存储接口。这种设计一方面降低了系统硬件结构的复杂度,另一方面保证每路数据独立并行传输,提高数据采集的效率。自定义外设接口遵循Avalon总线协议,根据发起数据操作的方式不同,分为Master和Slave两种,本系统的多路数据存储接口模块采用Salve模式。
自定义存储接口模块以FIFO IP Core为核心,通过与Avalon总线协议匹配,接收NiosII处理器的控制信号。该模块利用QuartusII中Mega Wizard Plug-In Manager实例化FIFO IP Core,根据数据格式和系统资源综合考虑,FIFO的数据宽度为8位,FIFO深度为1024。在这里保留FI FO IP Core的读时钟信号readclk、读请求信号readrequest、8位读取数据接口q[7:0]、8位写入数据接口 data[7:0]、写时钟信号writec lk、写请求信号writerequest以及FIFO空状态信号rdempty。实例化后的FIFO模块如图2所示。
评论