基于纯verilogFPGA的双线性差值视频缩放 功能:利用双线性差值算法,pc端HDMI输入...
基于纯verilogFPGA的双线性差值视频缩放 功能:利用双线性差值算法,pc端HDMI输入视频缩小或放大,然后再通过HDMI输出显示,可以任意缩放。 缩放模块仅含有ddr ip,手写了 ram,fifo 代码,可以较为轻松地移植到其他平台。 硬件平台:易灵思 ti60f225 EDA平台:efinity
引言
在现代嵌入式图像处理系统中,实时视频缩放是一项基础且关键的功能。本文基于一套完整的 FPGA 视频缩放系统设计,深入剖析其整体架构、关键模块实现逻辑与数据流控制机制。该系统以易灵思(Efinix)FPGA 为核心平台,采用双线性插值算法实现任意比例的图像缩放,并结合伽马校正提升输出画质,最终通过 HDMI 接口输出流畅视频。整套系统具备高实时性、良好的图像质量以及良好的可扩展性,适用于机器视觉、医疗影像、智能显示等多种应用场景。
系统架构概览
整个视频缩放系统采用典型的“输入—处理—输出”流水线架构,其核心处理流程如下:
- 视频输入:通过 HDMI 接收来自 PC 的视频流,经 HDMI 解码器转换为 RGB 并行数据。
- 色彩空间转换与缓存:RGB 数据转换为 YUV_422 格式后,写入 DDR3 SDRAM 进行帧缓存。
- 缩放处理:从 DDR 中读取原始图像,送入缩放模块,利用双线性插值算法生成目标分辨率图像。
- 图像增强:对缩放后的图像进行伽马校正(Gamma = 2.2),使其更符合人眼视觉特性。
- 跨时钟域输出:通过自定义双口 RAM 模块完成跨时钟域数据传输,确保输出时序稳定。
- 视频输出:最终图像经 HDMI 编码器输出至显示器。
此外,系统还集成了基于 RISC-V 的串口通信模块,用于在 PC 端实时显示当前输出视频的分辨率信息,便于调试与监控。
关键模块功能详解
1. 双线性插值缩放引擎
双线性插值是本系统的核心算法。其基本思想是:对于目标图像中的每一个像素点,根据其在原始图像中的对应坐标(通常为浮点数),找出其周围最近的四个整数坐标像素点,通过加权平均计算出目标像素值。
基于纯verilogFPGA的双线性差值视频缩放 功能:利用双线性差值算法,pc端HDMI输入视频缩小或放大,然后再通过HDMI输出显示,可以任意缩放。 缩放模块仅含有ddr ip,手写了 ram,fifo 代码,可以较为轻松地移植到其他平台。 硬件平台:易灵思 ti60f225 EDA平台:efinity
系统通过三个协同工作的子模块实现该算法:
- 坐标映射模块 (
calbilinearsrcxy)
该模块接收目标像素的整数坐标(destx, desty)和预设的缩放比例因子,计算出其在原始图像中的浮点坐标。为提升精度,系统采用 12 位定点小数格式表示坐标的小数部分。模块还支持“调整模式”(adjust mode),通过对坐标进行 0.5 像素的偏移补偿,有效避免了传统插值在图像边界处可能出现的锯齿或模糊问题。 - 权重计算模块 (
calbilinearweight)
利用上一步得到的浮点坐标的小数部分,该模块计算出四个邻近像素点的插值权重。权重计算基于距离反比原则,并通过定点数乘法与舍入操作保证计算效率和精度。 - 插值数据合成模块 (
calbilineardata)
该模块接收来自 DDR 缓存的四个邻近像素数据和对应的权重,执行定点乘加运算,最终输出插值后的目标像素值。模块内部采用多级流水线结构,确保在一个时钟周期内完成一次完整的插值计算,满足高帧率视频处理的实时性要求。
2. 数据流控制与缓存管理
为确保缩放引擎能高效、有序地访问 DDR 中的图像数据,系统设计了专门的数据流控制模块 (datastreamctr)。该模块承担了以下关键职责:
- 地址生成:根据当前目标像素的位置,动态计算出需要从 DDR 中读取的四个邻近像素的地址。
- 读写调度:协调 DDR 的读写操作,确保在缩放处理开始前,相关行的图像数据已成功写入 DDR。
- 跨行处理:巧妙地处理图像边界情况,当目标像素位于图像边缘时,能正确地访问相邻行的数据,避免越界读取。
该模块与缩放引擎紧密耦合,构成了整个系统稳定运行的基石。
3. 伽马校正与图像增强
人眼对亮度的感知是非线性的,而大多数图像传感器和显示器的响应是线性的。为了使输出图像看起来更自然、对比度更佳,系统在缩放后加入了伽马校正环节。
伽马校正模块 (CurveGamma2P2) 采用查找表(LUT)实现。设计者预先使用 MATLAB 计算出 Gamma=2.2 时,0~255 输入灰度值对应的输出值,并将结果硬编码为一个组合逻辑电路。这种实现方式无需实时计算复杂的幂函数,极大地节省了 FPGA 资源并提升了处理速度。
4. HDMI 编解码与 DDR 控制
- HDMI 编解码:系统集成了完整的 HDMI RX/TX 模块,遵循 VESA 协议标准,能够可靠地接收和发送高清视频信号。
- DDR 控制:利用易灵思提供的软核 IP 配置 DDR3 控制器,并通过 AXI 总线与用户逻辑进行交互。代码中包含详细的 DDR 读写测试与调试模块 (
DdrControllerDebug),用于验证 DDR 接口的稳定性和带宽性能,确保大规模图像数据的可靠传输。
系统优势与可扩展性
本设计不仅实现了基础的视频缩放功能,还展现出良好的工程实践和前瞻性:
- 多尺度支持:系统可灵活配置缩放比例,支持任意分辨率的输入与输出。
- 高质量输出:双线性插值结合伽马校正,在保证实时性的同时,有效提升了图像的视觉质量。
- 平台可移植性:核心算法模块采用纯 Verilog 编写,不依赖特定厂商的硬核,便于在不同 FPGA 平台上移植。
- 未来可扩展:设计报告中明确指出了未来的优化方向,如引入基于深度学习的超分辨率算法、支持跨模态(2D/3D)图像处理等,为系统的持续演进奠定了基础。
总结
该基于 FPGA 的视频缩放系统是一个集成了图像处理、高速接口、存储控制和嵌入式通信的综合性设计。通过对双线性插值算法的高效硬件实现、严谨的数据流控制以及对人眼视觉特性的考量,系统成功地在资源受限的 FPGA 平台上实现了高质量、低延迟的实时视频缩放功能。其清晰的模块划分、稳健的工程实现和明确的可扩展路径,使其不仅是一个优秀的竞赛作品,也为实际工业应用提供了有价值的参考。
