基于FPGA的线阵CCD子图像提取模块的设计与仿真( 二 )


基于FPGA的线阵CCD子图像提取模块的设计与仿真

文章插图

子图像提取模块输出的子图像有256 个像素 , 在FPGA 内部通过寄存器暂存上一个输出的子图像;当更新RAM 区的某个像素时 , 把16X16 的滑动窗口向右移动一列像素的位置 , 把滑动窗口内的数据作为输出 , 就可以得到新的子图像 。
2 设计仿真
在本文的设计仿真中 , 由于用到图像文件的解析和图像显示 , 因此借助MATLAB 和Modelsim 软件 , 通过文件读写的方式实现的联合仿真 , 可使仿真处理更加便捷和直观 。 其中 , MATLAB 用来把图像文件转换为输入的像素 , 以及显示输出的子图像;Modelsim 用来仿真和验证FPGA 设计是否正确 。
本文使用MATLAB 和Modelsim 进行联合仿真 , 主要有以下三个步骤 。 第一步 , 在MATLAB 中编写m 文件 , 读取bmp 位图文件并把像素数据写入文件datain.txt 中 , 作为ModelSim仿真的输入激励信号 。 第二步 , 在ModelSim 中 , 用VHDL 编写Testbench 测试文件 , 读取datain.txt 文件 , 产生与CCD_CLK 同步的像素信号;编写DO 文件进行自动化仿真 , 再把仿真输出的子图像数据保存在dataout.txt 文件中 。 第三步 , 在MATLAB 中编写m 文件 , 解析dataout.txt 文件 , 依次显示为16×16 的黑白图片序列 , 确定仿真结果是否正确 。 本设计仿真输入的图像及输出的子图像序列 , 如图5 所示 。 从仿真结果可知 , 设计方法是正确的 , 仿真结果符合设计功能的要求 。
基于FPGA的线阵CCD子图像提取模块的设计与仿真

文章插图

3 结束语
应用线阵CCD 图像传感器进行产品检测时 , 连续、高速地输出子图像序列是必不可少的重要环节 , 采用FPGA 实现子图像序列的提取和输出 , 有多种不同的设计方法 。 本文采用“图像转置缓冲区”和状态机的方式 , 来实现系统所要求的子图像提取和输出的功能 , 并用MATLAB 和ModelSim 工具软件对设计进行了联合仿真 , 该方法具有FPGA 资源占用少、结构简单、高速处理 , 以及便捷和直观的特点 , 对其他类似的FPGA 设计项目有很好的参考作用 。