ISP FPGA 图像处理卷积的FPGA设计

图像处理卷积的FPGA设计

在FPGA上实现图像处理,根据处理图像数据的粒度,基本的可以分为以下三类:

  • 基于像素点
    基于单个像素点的操作最常见的就是黑电平校正、白平衡、色彩空间装换、全局gamma

  • 基于图像块
    基于图像块的操作多用于滤波,例如3x3、5x5、7x7的模板,例如边缘提取、去噪等

  • 基于帧
    在图像实时处理过程中,基于帧处理的有3A统计中的亮度统计、以及基于全局的直方图均衡、基于全局及前后帧的BM3D降噪

上述三种大类型的算法在FPGA上实现,也是从易到难。最近在工作中交流中,旁边的朋友在以往的设计中喜欢采用XIlinx的shift ram IP实现行缓存line buffer,用于实现块操作。在我看来,XIlinx的line buffer本质上是对SDPRAM的加了一层封装。

  • 根据line长度,设定BRAM的深度
  • A端口写入数据后
  • B端口在A端口写满之前1-2个时钟开始预读,防止写覆盖

这种用法在数字信号处理中,实现信号延迟相关比较常见,下面讲讲自己是如何实现line buffer的。
首先,在实现3x3的矩阵时,在不考虑边缘的情况下,资源最优的方式是缓存2行即可,但是这里为了在设计中产生一定的裕量,开辟4行的缓存空间,然后根据输入的行顺序,从RAM1写入到RAM4,往复循环。
然后,每次读RAM1到RAM4的数据,从4行中选择3行输出,形成3行。
其次,根据3行RAM的输出数据,通过移位寄存器,形成3x3的矩阵,送至运算单元。

在上述过程中,对输入及输出的像素点按照行列计数。对输入的数据计数,是为了从4行中抽取3行,同时,可以确定只有存满期望的行数以后开始进行处理。对输出的数据计数,是为了确定统计当前模块处理的没有问题,同时,可以形成有SOF(start of frame)、EOL(end of line)、VAL(valid)信号。

FPGA设计过程中,核心是数据通路状态机的设计以及对应数据的运算。理清对数据的控制,编写模块的时候才是设计时序,才是你在描述电路HDL(hardware description language)。

最后,向在抗击新冠疫情中牺牲的烈士致敬!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值