在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2301|回复: 4

[原创] 基于Xilinx FPGA求三数之最大值/中位数/最小值

[复制链接]
发表于 2022-11-2 17:38:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

一个小设计,分享给大家(本来有.svg的矢量图格式,但eetop似乎不支持)。
“RTL代码只是手段,电路才是目的。Verilog?VHDL更是浮云!”,与诸君共勉。

基于Xilinx FPGA求三数之最值.jpg
 楼主| 发表于 2022-11-3 20:10:25 | 显示全部楼层
缘起,做这个整理源自:
1)自己之前一个项目中需要从三个温度传感器(Pt100)的采集数据中求取最大值,并根据最大值计算一个合适的占空比值,生成一个PWM脉冲信号控制风机调速。
2)本坛一个讨论:撕代码,找出三个8bit数中的中位数,并且想要在一拍内输出结果

在分享到CSDN时,页面相关内容推荐中有“中值滤波”的推荐文章,心想,这是啥,点开一看,嗯,,对一个3*3的图像数据进行中值滤波,要使用7个对三数排序、或求最大值、最小值、中位数的模块,于是想看看大家都是咋个设计的?收集部分CSDN有代码,勿须VIP,勿须关注的博客,有时间再来分析/评测其中对三数排序的代码:
1、[图像处理]3×3中值滤波的verilog实现
2、FPGA丨中值滤波算法实现
3、FPGA的中值滤波器实现
4、FPGA中值滤波实现并Modelsim仿真,与MATLAB中值滤波进行对比
5、FPGA图像处理-中值滤波
6、FPGA学习笔记_图像处理3_FPGA实现中值滤波算法
7、FPGA图像处理——中值滤波
发表于 2022-11-3 20:17:28 | 显示全部楼层
谢谢大佬
 楼主| 发表于 2022-11-13 18:21:14 | 显示全部楼层
本帖最后由 innovation 于 2022-12-13 14:48 编辑

一、用于8-bits位宽图像数据中值滤波的排序模块的资源消耗评估如下(基于Xilinx LUT6架构的FPGA系列):
1、一个8-bits位宽的(大于等于)比较器消耗:
    1.1) 4个LUT4;
    1.2) 1个高度为4的进位链;
    1.3) 1个FFs(图像中值滤波时,通常以数据流的形式进行,流水线敏感,本级FFs不使用)。

2、输出级:8*LUT6 + 8*FFs

二、一个典型的3*3中值滤波模块分为三个无反馈的流水线级:
    1)第一步,对输入的3*3的数据按行(或列)分别对行(或列)中的三个数排序,需要三个三输入排序模块,消耗:3*(36*LUTs + 24*FFs) = 108*LUTs + 72*FFs
    2)第二步,对上一步经排序后的行(或列)数据分别求取最大值、中值、最小值,需要三个三输入单输出排序模块,消耗:3*(20*LUTs + 8*FFs) = 60*LUTs + 24*FFs
    3)第三步,对上一步的结果(三个值)求中值,结果即原3*3矩阵的中值,需要一个三输入单输出排序模块,消耗:1*(20*LUTs + 8*FFs) = 20*LUTs + 8*FFs

最终,一个典型的8-bits位宽,3*3中值滤波模块,资源消耗:188*LUTs + 104FFs,共计3*clk流水线延迟。
 楼主| 发表于 2022-11-13 19:47:16 | 显示全部楼层
本帖最后由 innovation 于 2022-12-13 14:50 编辑

如果我们需要对4k(3840 * 2160)分辨率,60Hz帧率的图像的灰度数据进行中值滤波,怎么预算中值滤波的结构?

全并行的结构,资源消耗:(3840 * 2160) * (188*LUTs + 104FFs),很显然不可能的了!

60Hz的帧率,帧周期16.667ms,给中值滤波分配10ms的预算,设计的系统时钟按100MHz预算,那么,中值滤波允许的流水线串行深度:10ms/10ns = 1,000,000 clk,4k分辨率的图像,1帧数据共(3840 * 2160 = 8,294,400)个数据点,即8个并行的中值滤波模块,以100MHz的时钟运行,可以10.4ms以内完成1帧4k分辨率的灰度图像数据的中值滤波。8个并行的中值滤波模块共计消耗的FPGA逻辑资源:8 *  (188*LUTs + 104FFs) = 1504*LUTs + 932*FFs。

看来,对图像数据进行中值滤波处理,中值滤波算法本身无论是资源消耗还是运行时钟的要求,对大多数Xilinx FPGA而言,都不应成为设计的瓶颈

PS:要完成中值滤波,原3840*2160的矩阵数据如何按照中值滤波的要求,以3*3邻域矩阵的结构,并以串行数据流的形式送入中值滤波模块,以及中值滤波后的数据再以串行数据流的方式按照原图像行、列数据结构写回数据缓存单元,必然是整个中值滤波设计的另一重点,没有研究,此处无法评估。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 19:56 , Processed in 0.026954 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表