2026年FPGA大赛做实时视频去雾,暗通道先验算法在安路FPGA上BRAM不够用,怎么用行缓冲和流水线优化硬塞进去?

开放4 回答 3 浏览

我准备用安路FPGA做电赛,选题是实时视频去雾,用暗通道先验算法。现在遇到的问题是PL端BRAM不够放完整图像帧,我知道要用行缓冲,但具体怎么设计行缓冲深度和流水线结构才能保证1080P 30帧不丢帧?还有透射率计算那个最小值滤波怎么硬件化?求大佬给个具体优化方案,最好有伪代码或模块划分图。

分享:
  • EE学生一枚

    你这种情况BRAM不够是必然的,1080P全帧存就是自杀。行缓冲只存N行就够算局部最小值了,暗通道窗口大小如果是15×15,行缓冲深度设15行,流水线一帧只延迟十几行,30帧轻松跑,透射率最小值滤波直接用滑窗比较器阵列,别去搞排序。

  • Git新手

    兄弟,安路FPGA的BRAM总量本来就偏紧,你非要存整帧1080P那肯定爆。核心思路就是只缓存计算窗口需要的行数,比如暗通道窗口15×15,那你行缓冲深度就是15行,每来一个像素就把这15行里对应列的数据滑窗做最小值比较。透射率的最小值滤波同理,窗口大小可以跟暗通道一致,或者单独设个局部块,用移位寄存器加比较树实现,不要用排序,排序逻辑资源炸裂。流水线方面:输入像素流先进行缓冲,同时做暗通道最小值提取,再并行算大气光值(这个可以用全局统计,不用等整帧),然后算透射率,最后复原。注意行缓冲的读写地址要错开一拍,防止冲突。伪代码大概就是:always块里维护一个二维reg数组做行缓存,每个时钟读当前窗口内所有像素,用组合逻辑比较出最小值。大气光值建议取暗通道图前0.1%亮度的像素平均值,这个可以用累加器在帧间更新,避免存整帧。另外安路IP核的FIFO深度注意配成窗口宽度,别浪费。还有一个坑:RGB三通道的暗通道需要分别算最小值,再取三通道最小值,这个比较器资源可以复用,别傻傻每个通道单独做一套。你现阶估下逻辑资源够不够,不够就缩小窗口到11×11,效果差不太多。

  • 单片机菜鸟

    其实你可以换个思路:暗通道先验那个最小值滤波不一定要用纯组合逻辑比较树,用二维移位寄存器加流水线比较器,每个时钟只做一行内窗口的比较,然后纵向再做一次比较,这样行缓冲深度就是窗口高度,BRAM占用从存整帧降到十几行,安路的片子完全扛得住。透射率计算部分直接用查找表把公式里那个减法和除法硬化成查表,省乘法器。你1080P 30帧,像素时钟大概148.5M,安路中端片子主频够用,关键是流水线级数别超过10级,否则延迟超标。你具体用安路哪个型号?不同系列BRAM块大小不一样,Arora跟Phoenix的配置差别挺大的,说下型号我帮你估下具体能塞多少行缓冲。

  • 芯片小白

    其实你这个问题在安路片子上做,有个容易被忽略的坑是时钟域和BRAM端口宽度的匹配。1080P 30帧,像素时钟148.5M,如果你的暗通道窗口是15×15,行缓冲需要15行,每行1920像素,每个像素用8位灰度的话,一行就15Kb,15行总共225Kb,安路中端片子的BRAM单块一般是18K或36K,块数够用,但问题在于你读写端口宽度。如果你用单端口BRAM做行缓冲,读和写共用一个端口,那每个时钟只能要么读要么写,但你这个流水线里每来一个新像素,需要同时写入当前行并读出之前N行的对应列数据,单端口必然冲突,你得用双端口BRAM,而且读端口和写端口要各自独立地址。安路的BRAM有些系列支持真双口,有些只是简单双口,你得查手册确认。如果BRAM类型不支持,那就得用分布式RAM或者寄存器阵列搭行缓冲,但寄存器阵列吃逻辑资源,LUT和FF会爆。所以建议你先定型号,比如Arora V系列的BRAM是真双口,就可以直接用;如果是老一点的EG4系列,双口模式有限,那就得把行缓冲拆成两个单口BRAM乒乓操作,或者把读写错开两拍,牺牲一点延迟。另外透射率的最小值滤波,别用排序网络,直接用比较树,窗口内像素并行比较,级数控制在log2(窗口像素数)以内,比如15×15窗口225个像素,8级比较就够了,组合逻辑延迟大约3-4ns,148.5M时钟周期6.7ns,完全能打进一拍里。你目前选的是安路哪个具体型号?不同系列的BRAM配置和双口支持差别很大,这个直接决定你行缓冲的写法。

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

提问者

FPGA学员2查看主页

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

浏览「其他」

相关问题

同分类问答

提问建议

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

技术问答

问完之后的闭环

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

探索全站