概述
本文基于提供的工程代码与参考资料,深入剖析一个典型的 FPGA 图像处理系统架构。该系统以 SDRAM 作为帧缓存核心,配合 UART 通信、TFT/VGA 显示接口,并集成了多种图像处理算法(如 RGB 转灰度、直方图均衡化、JPEG 压缩等)。系统采用 Altera(现 Intel FPGA)Cyclone 系列器件实现,具备良好的模块化设计和可扩展性。
系统整体架构
整个系统围绕 SDRAM 控制器顶层模块 sdram_top 构建,其主要职责是:
- 管理 SDRAM 的初始化、刷新、读写时序;
- 提供异步 FIFO 接口,隔离用户逻辑与 SDRAM 物理时序;
- 支持乒乓操作,实现图像帧的无缝切换。
系统顶层(如 top.v)负责协调以下子模块:
- 时钟管理:通过 PLL(如
altpll)生成多个相位/频率的时钟,满足 SDRAM、显示、串口等不同模块的时序要求; - 数据输入:通过 UART 接收外部图像数据,写入 SDRAM;
- 数据输出:从 SDRAM 读取图像数据,驱动 TFT 或 VGA 显示;
- 图像处理单元(可选):在读写路径中插入处理逻辑,如色彩空间转换、直方图拉伸等。
SDRAM 控制器核心机制
1. 异步 FIFO 桥接
为解决用户逻辑(如 50MHz UART 写入)与 SDRAM 控制器(如 100MHz 参考时钟)之间的时钟域差异,系统采用 双时钟 FIFO(dcfifo) 实现跨时钟域数据传递:
- 写 FIFO(
wrfifo):用户写时钟域写入,SDRAM 控制器时钟域读出; - 读 FIFO(
rdfifo):SDRAM 控制器时钟域写入,用户读时钟域读出。
FIFO 配置关键参数如下:
- 深度:1024 words;
- 数据宽度:16 bits(适配 16 位 SDRAM);
- 启用溢出/下溢检查;
- 使用嵌入式存储块(EAB)优化资源;
- 读写同步延迟管道为 3 级,确保跨时钟域稳定性。
2. 突发读写与地址管理
控制器支持突发传输模式,用户只需指定起始地址、结束地址和突发长度(如 512 words),控制器自动完成连续地址的读写操作,极大提升带宽利用率。

乒乓操作(sdram_pingpang_en)使能后,系统可在一帧图像写入的同时,读取上一帧进行显示,避免画面撕裂。
图像处理功能集成
系统支持多种图像处理算法,主要基于 冈萨雷斯《数字图像处理(MATLAB 版)》 中的参考实现(如 imnoise3.m, intrans.m, princomp.m 等)。这些算法在 FPGA 中被重构为硬件逻辑,典型流程如下:
- RGB → YCbCr / Gray:在显示前将彩色图像转为灰度,节省带宽;
- 直方图均衡化/拉伸:动态调整图像对比度;
- JPEG 压缩/解压:利用 DCT、量化、Huffman 编码实现图像压缩(参考 逻辑);




