您的位置 首页 编程

根据FPGA的线阵CCD子图画提取模块的规划与仿真

在工业生产自动化系统中,通过计算机视觉和图像处理技术来实现产品的质量监测和控制,已逐渐成为一种有效的应用技术。线阵CCD图像传感器广泛地应用于产品尺寸测量和分类、非接触尺寸测量、条形码、形态识别等众多

在工业生产自动化体系中,经过计算机视觉和图画处理技能来完成产品的质量监测和操控,已逐步成为一种有用的使用技能。线阵CCD 图画传感器广泛地使用于产品尺度丈量和分类、非触摸尺度丈量、条形码、形状辨认等很多范畴。在图画检测体系中,应具有一个高速的子图画提取和输出模块,本文选用FPGA 器材EP3C25F256C8 和CCD 线阵图画传感器RL1024P,完成线阵CCD 图画检测体系中的子图画提取和输出功用。

1 子图画提取模块的规划

子图画提取模块的功用可描绘为:选用FPGA 器材完成,依据串行输入的是非图画和同步信号,提取该图画中设定尺度巨细的子图画。假定输入图画巨细为i * j,某一像素点的坐标方位为(X,Y),要取出子图画的巨细为m * n,则用c 代码描绘为:for(b=0;b

依据体系规划的要求,线阵CCD 图画收集模块选用串行的办法输出1×1024 像素的一行图画,子图画提取模块接纳该图画数据、缓冲、再输出16×16 像素的子图画。子图画提取模块的外部端口,如图1 所示。首要信号有:像素同步时钟信号CCD_CLK、像素数据CCD_DATA、当时输入像素的坐标CCD_ADDR[90] ;别的,N_RST 和SYS_CLK 为体系供给的复位信号和处理时钟信号。其间,每个CCD_CLK 的上升沿出现时CCD_DATA 像素有用,且该像素地点的方位为CCD_ADDR[90] 值。

为了完成每个CCD_CLK 周期内均输出一个子图画,SYS_CLK应该为CCD_CLK 的10 倍左右。

本文选用“图画转置缓冲区”的办法来完成子图画提取模块。“图画转置缓冲区”是一个按行写入(更新)、按列读出的一个RAM 缓冲区。在FPGA 内部设置一个1024 个单元的RAM 缓冲区,每个单元的位宽为16bits.线阵CCD 收集模块输出的线阵图画与子图画的联系,如图2 所示。其间,第0 行表明图画的当时行,第N 行为前史行,每行有1024 个像素,依照p0 至p1023 的像素次序输出。假定当时CCD_CLK 输入的像素为第0行的p16 像素,则其对应的16X16 子图画为图中的暗影部分。

“图画转置缓冲区”RAM 块存储图画的结构,如图3 所示。

RAM 块共有1024 个单元,每个单元为16 位的宽度,可寄存最近的16 行图画数据。比照图2 和图3,能够发现,RAM 块的地址编号相当于线阵CCD 图画的某一行像素的方位,某个RAM单元的位D15 ~ D0 对应某一列的最近16 个像素,相当于对线阵图画转置后再寄存到RAM 块中。对RAM 缓冲区进行写操作时,因为线阵CCD 图画的数据是按行逐位输入的,每个CCD_CLK 时钟上升沿出现时,仅需更新RAM 缓冲区中当时像素对应的比特,因而在逻辑上是依据图画按行写入RAM 区的。在FPGA器材中,可规划一个状态机来完成“图画转置缓冲区”的读写操作,如图4 所示。

子图画提取模块输出的子图画有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 所示。从仿真成果可知,规划办法是正确的,仿真成果契合规划功用的要求。

3 结束语

使用线阵CCD 图画传感器进行产品检测时,接连、高速地输出子图画序列是必不可少的重要环节,选用FPGA 完成子图画序列的提取和输出,有多种不同的规划办法。本文选用“图画转置缓冲区”和状态机的办法,来完成体系所要求的子图画提取和输出的功用,并用MATLAB 和ModelSim 工具软件对规划进行了联合仿真,该办法具有FPGA 资源占用少、结构简略、高速处理,以及快捷和直观的特色,对其他相似的FPGA 规划项目有很好的参阅效果。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/240163.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部