(本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!)
图像的插值在上个系列有非常详细的讲解,本篇只要实现图像插值的FPGA实现。
其实有了上篇设计的data_cache模块,图像插值的实现就非常的简单了,我们直接上代码。
在src的interpolation文件夹下,新建interpolation.sv文件,首先例化data_cache模块,输入RAW图像及其控制信号,输出奇偶指示位,3x3的缓存数据和控制信号。
由于我们使用的插值算法很简单,拿到缓存数据后,先进行插值相关的计算。
根据RAW图像的格式和奇偶指示位。完成G通道数据的计算,这个除法直接用移位实现。
同理计算出G通道的数据。
B通道的数据也是同理。
数据完成缓存后,插值算法只需要一个时钟周期就可以完成,所以把场同步,行同步,数据有效信号延时一拍即可。
所以成工说,有了data_cache模块,插值算法的FPGA实现就非常的简单了。
在顶层top文件中,例化obtain_raw模块获取RAW数据,例化interpolation模块对RAW数据进行插值。
在tb_image_sim文件中的第二个initial块中,将图像测试平台和FPGA硬件仿真的结果保存。
最后双击sim文件夹下的top_tb.bat文件,完成系统的自动化仿真。
打开img文件夹,看到图像测试平台和FPGA硬件仿真的结果是一致的(no_seq*是图像测试平台处理后的图片,seq*是FPGA硬件仿真处理后的结果)。