`
本章节主要搭建一个视频流Modelsim仿真,在基于FPGA视频图像算法开发过程中,最终目的是为了把摄像头实时视频数据经过一系列的图像算法,通过显示设备显示出来;在开发过程中,我们不能总是在FPGA板子上在线调试,一个是耗时时间长;另一个是不容易找出错误,因此,有必要模拟一个视频时序,用来验证算法,并有效的利用matlab工具把静态图片“打散”保存到txt文本里,供Modesim读取,然后通过Matalb“复现”处理后的文本。 一、视频时序
如图1所示,是一个0v775摄像头VAG Frame 时序,有效显示的分辨率为640*480;在这里,需要关注的时序参数有1:场总数(v_total)、3:场同步(sync_v)5:场前肩(torch_f)、6:场后肩(torch_b);7:行总数(h_total)、4:行同步(sync_h),其他可以不关注。使用Verlog通过计数器模拟时序,根据不同的摄像头时序,只修改参数即可;此外,各个参数可以同比例缩小加快仿真。
图1VGA frame 时序
图 2 视频时序接口
二、Matlab与Modelsim仿真
2.1 图像产生
如下图3所示,使用matlb将分辨率为640*480的len.bmp图像的R、G、B各个分量的二维图像数据,如图4所示,转换成一维数据存到img_r_data.txt、img_g_data.txt、img_b_data.txt文本里供Modelsim读取。
图3 matlabgen 代码
图4 Imagesrc
2.1 图像处理
采用rgbtoyuv格式的颜色空间的转换图像算法为例,转换公式如下,
在编写完RTL代码后加入视频流仿真平台,处理的后的结果如图6所示,其中图像的复现的matlab代码如图5所示:
图5 matlabshow 代码
图 6 rgbtoyuv转换结果
`