码电路的张同学
做过类似项目,分享点经验。目标是在有限资源下达到4K@30fps,意味着每秒要处理约2.49亿像素(3840216030)。首先得算清理论计算量,然后匹配硬件能力。架构上,强烈建议采用混合并行结构:在图像层面,可以将一帧图像划分成多个Tile(瓦片),每个Tile独立编码,这是最直接的并行度提升,但会牺牲一些编码效率(边界效应)。在CTU层面,流水线设计是关键,但要注意帧内预测的依赖关系(上方和左侧像素),这限制了纯粹的CTU级流水,可能需要设计一些行缓冲和预取机制。变换量化模块,可以设计一个支持多种尺寸(4x4, 8x8, 16x16, 32x32)的可配置流水线,内部用多个一维变换单元并行展开二维变换。熵编码是难点,CABAC的二进制化、上下文建模、算术编码环环相扣,很难深度流水。一个折中方案是:将算术编码部分单独流水,前面用多个上下文模型引擎并行产生二进制位流。资源优化方面,片上存储器(URAM/BRAM)尽量用于存储当前处理块及周边参考数据,减少片外带宽。DSP单元用于密集计算(如变换、量化、预测)。一定要做精细的资源预估和时序收敛分析,中端FPGA的资源很紧张,算法优化(比如简化率失真优化决策过程)和硬件优化必须同步进行。
