新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 拉普拉斯算子的FPGA实现方法

拉普拉斯算子的FPGA实现方法

作者:时间:2009-09-22来源:网络收藏

图2(b)中的行缓冲器分别是由256个8位移位寄存器构成的寄存器链。当图像的第N行数据在像素时钟同步下输入到行缓冲器1后,随着第N+1行图像数据输入到行缓冲器2中,第N行的图像数据依次存入,而当第N+2行图像数据存入行缓冲器1后,行缓冲器2和行缓冲器3中分别存放的是第N+1行和第N行的图像数据,从而实现缓冲图像数据的功能。这样在像素时钟的同步下,第N,N+1,N+2行的同一列数据分别从taps0x,taps1x,taps2x端输出,为构造3×3模块提供了数据准备。

本文引用地址:http://www.eepw.com.cn/article/188608.htm

2.2 卷积计算模块
图3是3×3图像卷积运算的原理图。可以看出,为了实现卷积运算需要做乘法和加法运算,如果直接采用分立的D触发器和加法器以及乘法器来完成卷积运算,结构会很复杂。在此,采用宏功能模块中的可编程乘加器模块和可编程多路并行加法器模块Parallel_add实现卷积运算,大大简化了设计。

使用可编程多路并行加法器Parallel_add宏功能模块时,可以自由设计输入数据位宽,累加数据个数,定义累加输入数据类型,定义时钟控制端口,增加异步清零端口等,能快速便捷地生成所需的加法器模块。为了实现卷积运算中的加权和运算,宏功能模块生成的3个乘加器,每个乘加器包含3个乘法器和1个加法器,如图4所示。图像数据从dataa依次输入,数据分别与固定的模板系数datab_0,datab_1,datab_2相乘。在该实验中,使用Verilog HDL语言为各datab设值,各值分别对应模板中的权值,并将结果送给加法器完成加法运算。
当采用3个这样类似的Altmult_add模块并联时,便可实现Laplacian算子的运算。

完成图像卷积后需要对结果进行处理,以防止结果出现负值或超过255范围。使用QuartusⅡ提供的Lpm_abs宏功能模块计算绝对值,可以解决出现负值问题,而对超过255的值则均设定为255。
另外,自定义模块如图5所示,将它存于自定义宏功能库中,在以后的设计时,只需修改相关参数即可方便的调用。

2.3 实验结果
图6(a)为一幅256×256的原始图像,(b)为采用Matlab的Laplacian算子进行滤波的结果,(c)为采用本文设计的Laplacian算子得到的结果。比较图6(b)和(c)可以看出,该硬件算法取得了较好的效果。

3 结 语
这里利用QuartusⅡ软件提供的宏功能模块,通过配置调用的宏功能模块来实现Laplacian算子,该方法既避免了自己编写大量程序代码的繁琐,又获得较好的实现结果。最后通过与Matlab仿真结果相比较,证明了该设计的有效性。该设计方法方便、快捷,可以推广到其他类型的模板设计中。

电源滤波器相关文章:电源滤波器原理


高通滤波器相关文章:高通滤波器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭