微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Avalon-ST接口帧读取IP核的设计和应用

基于Avalon-ST接口帧读取IP核的设计和应用

时间:06-05 来源:互联网 点击:

成16位的帧宽,记号5~8的低4位组成16的帧高,记号9的低4位为隔行标志位(Interlacing 4位)。

2 帧读取IP核的硬件设计

2.1 总体设计方案

利用SoPC技术进行视频数据处理时,待处理的原始视频数据可以是由外部设备输出的视频信号,也可以是存放在外部存储器中的视频数据。当视频数据存放在存储器中时,SoPC系统需要使用Avalon-MM接口从外部存储器中读取视频数据,然后通过Avalon-ST接口将原来的视频数据转为满足Avalon-ST视频处理协议的视频流,以方便之后使用Altera视频及图像处理套件对视频进行处理。因此系统中需要一个帧读取IP核来完成这种转换。

一帧完整的图像其像素数据在存储器中有多种组织形式,按颜色空间可以分为RGB型和YUV(YCbCr)型。如果是YUV模型,又可以按组织方式分为平面型和紧缩型,按采样比可分为4:4:4、4:2:2和4:2:0等。一般RGB模型均为紧缩型,按像素值的位数不同可分为RGB24、RGB32等。总的说来,常用的数据格式有RGB24、RGB32、YV12、I420等几种。

现有的Altera公司提供的视频及图像处理套件中Frame Reader模块可以将存储器中视频数据转为满足Avalon-ST视频处理协议的视频流,但该IP核只支持紧缩格式,原始数据在存储器中必须按像素扫描顺序连续存放。而实际中有多种帧格式,例如I420是平面格式,这种情况就无法使用Frame Reader了。
在实际应用中,由于Altera的Frame Reader使用限制,作者自行研发了帧读取IP核(Frame Reader),除了实现紧缩格式的视频数据转为满足Avalon-ST视频处理协议的视频流,还能实现I420到RGB24的平面格式的转换。

该IP核应包含Avalon总线读取模块,帧格式转换模块、视频流输出模块,以及控制器和控制寄存器组。如图4所示。Avalon总线读取模块用于访问Avalon总线,从而读取外部存储器中的视频数据。帧格式转换模块完成YUV向RGB的转换,视频流输出模块用来产生满足Avalon-ST视频处理协议的视频流。

图中实线为数据流向,虚线为控制信号流向。双向箭头同时表示了主控制器的控制信号,以及被控模块的反馈信号。

2.2 Avalon总线读取模块

Avalon总线读取模块使用基于地址读写的Avalon-MM接口,这种接口包含主端口和从端口。主端口能主动发起传输信号,从端口对传输信号进行响应,两种接口在数据传输过程中通过Avalon交换结构相连接。Avalon总线读取模块需要读取视频数据,并能够主动对Avalon总线发起读取信号,因此应使用Avalon-MM主端口。

当总线读取模块工作时,主控制器传入地址和读入字节数目等参数后启动该模块,该模块对总线发起数据读取操作。由于外部存储器中的视频数据为I420格式,即采样比为4:2:0,因此每读取一行视频数据,要读取两次Y分量、一次U、V分量,这样就完成了采样比4:2:0到4:4:4的转化。该模块内部包含一个FIFO作为输入缓存,当模块从总线上读取数据后,直接将数据按读入的顺序输入FIFO,以便后续模块处理。

2.3 颜色空间转换模块

RGB和YUV两种颜色模型之间的转换可按下式计算[5]:


RGB24格式是紧缩型格式,在存储器中是按扫描顺序连续存放的,每个像素分量占8位,共24位。I420格式是颜色模型为YUV,采样比为4:2:0的平面格式。Y、U、V三个分量在存储器中分别占用单独的一片存储区域,Y分量的数目与原始帧的像素个数一致,U、V分量只是原始像素个数的1/4。把Y分量平面按2×2进行划分,相邻构成正方形的4个Y分量划为一组,每组共用一个U、V分量。例如:Y_0,0、Y_0,1、Y_1,0、Y_1,1四个分量共用U_0,0和V_0,0。

RGB24和I420转换公式需要浮点运算,而Verilog-HDL语言无法直接处理浮点数[6],因此设计中将原公式放大2n倍后再进行处理,然后再缩小相应的倍数。颜色空间转换模块时序如图5所示。当iDVAL信号为1时,表示输入数据Y、Cb、Cr有效,模块处理完后,oDVAL信号置1,此时输出数据Red、Green、Blue有效。

2.4 视频流输出模块

经过颜色空间转换模块处理后的数据,按顺序写入作为输出缓存的FIFO。从图6中可以看出,当dout_ready信号有效时,视频流输出模块首先发送控制数据包。输出的数据流为并行传输模式,每个周期同时传输3个记号(symbol),每个记号占8位。将dout_data信号改写为并行8位模式,可以看出视频流为176×144的逐行扫描数据。

startofpacket和endofpacket分别标记了数据包的开始和结尾。控制数据包发送结束后,第二个周期开始发送视频数据;一帧视频数据完全发送完后,开始等待发送下一帧数据。

3 帧读取IP核的测试

测试平台是以Altera公司Cyclone II EP2C35F 672C8 FPGA芯片为核心的SoPC开发平台,该平台同时配备了16 MB的Flash、2 MB的SSRAM以及16 MB的SDRAM等。搭建出使用Nios II软核处理器的SoPC系统,然后将帧读取模块作为组件接入该SoPC Builder系统。

本设计使用Quartus II 9.1进行综合与仿真,综合后的结果如表1所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top