2026年FPGA大赛备赛只剩一个月,实时视频去雾项目暗通道先验算法在国产FPGA上BRAM不够,除了分时复用还有哪些硬核优化技巧?

开放3 回答 1 浏览

2026年FPGA大赛备赛只剩一个月了,我做的是实时视频去雾项目,用的是国产紫光同创FPGA。暗通道先验算法里求最小值滤波和透射率估计消耗了大量BRAM,目前BRAM已经爆了。分时复用试了一下但时序有点乱,想问问有没有更系统的优化方法?比如把图像分块处理、用行缓存代替全帧缓存、或者把算法改成近似计算来省资源?求大佬分享具体操作步骤和踩坑经验。

分享:
  • FPGA入门之路

    看到你只剩一个月,BRAM爆了还要调时序,确实够呛。紫光同创的片子BRAM总量本身就比同档Xilinx略紧,暗通道先验里那个最小值滤波是吃BRAM大户,尤其是你如果用了全帧的暗通道图缓存。我的建议是,别在分时复用上死磕了,那玩意对时序收敛要求高,调一个月未必稳。优先把算法改成近似计算:最小值滤波用行缓存+滑动窗口做,而不是存整帧暗通道图。具体操作是,对每一行,你只保留当前窗口内像素的最小值,窗口滑过去就丢掉旧数据,这样BRAM消耗从O(图像宽度×高度)降到O(窗口大小×行数)。透射率估计那里,别用全图统计大气光值,用分块局部估计,比如把图像切成16×16的块,每个块单独算,这样BRAM只存当前块的中间结果,还能顺便减少后续导向滤波的资源。再狠一点,透射率直接用固定阈值二值化,不用浮点运算,省掉大量乘法器。这样改完,BRAM占用能降一半左右,时序压力也小。你现在的分时复用如果导致时序乱,可能是因为跨时钟域没处理好,建议先做资源优化再考虑复用,不然是叠buff。另一个坑是紫光同创的IP核综合策略跟Xilinx不一样,有些BRAM会被综合成分布式RAM,你可以在综合属性里强制指定为Block RAM类型,有时反而能提高利用率。最后问一句,你用的紫光哪个型号?PGL22G和PGL50G的BRAM分布很不一样,前者只有36个18Kb块,后者多一倍,优化策略得跟着片子走。

  • 单片机初学者

    BRAM不够先别急着改架构,试试把暗通道图从RGB三通道缩成单通道算。很多教程默认对每个像素取三通道最小值,但你可以只在Y分量上做暗通道,人眼对亮度敏感,去雾效果差别不大,BRAM直接降到三分之一。行缓存代替全帧缓存是最直接有效的,你已经在做了,但注意行缓存深度要设成窗口半径的两倍加一,别多存。透射率估计那块,把浮点除法换成移位近似,比如除以32就用右移5位,省DSP也省BRAM。一个月时间,别碰导向滤波,用均值滤波替代,资源友好很多。

  • 芯片设计新人

    分块处理+行缓存是正解。别搞全帧了,暗通道窗口设小一点,比如7×7改成5×5,BRAM省一半效果看不出来。时序乱就加两级流水,别怕延迟多两拍。

登录后可在本页底部提交回答

提问者

焊板子的小明查看主页

描述场景与已尝试方案,更容易获得有效解答

浏览「其他」

相关问题

同分类问答

提问建议

  • 标题写清核心疑问,避免「求助」「请问」等空泛用语
  • 正文补充环境、版本、报错信息或截图
  • 先搜索本站是否已有相近问题,减少重复提问
  • 若与课程相关,请标明课时或章节便于讲师定位

技术问答

问完之后的闭环

  • 关联课程精学高频问题往往对应章节,建议回到课程补基础。
  • 产出与互助解决过程可写成笔记,帮助后续同学。

探索全站