《FPGA为什么需要外部存储器?—— 漫谈内存架构与数据瓶颈》
摘要: 当你开始一个FPGA项目时,是否曾认为片内资源就是一切?本文将带你跳出FPGA芯片本身,探讨当面临海量数据时,片内存储如何成为系统瓶颈,并阐述外部存储器如何成为FPGA释放算力的关键。这是理解整个系列价值的基础。
1. 引言:从“够用”到“瓶颈”的必然
- 开场白: 设想一个简单的FPGA设计,比如一个状态机控制一些LED,或者处理少量传感器数据。这时,片内的Block RAM和寄存器似乎取之不尽用之不竭。
- 转折点: 但当我们要处理一幅1080P的图像(1920x1080x24bpp ≈ 6MB)、一帧高速ADC采集的数据流(每秒吉比特),或者运行一个复杂的算法(如矩阵运算、深度学习推理)时,情况截然不同。
- 核心论点: FPGA的强大在于其并行计算能力,但如果数据供给跟不上,再多的计算单元也会“饥饿”,导致性能瓶颈。这时,一个高效、大容量的“后勤仓库”——外部存储器,就变得至关重要。
2. FPAG片内存储资源的甜蜜与局限
首先,我们必须肯定片内存储的价值,但更要清晰地认识到它的边界。
- 2.1 片内存储是什么?
- Block RAM: FPGA内部专用的、大块的、双端口RAM资源。是进行数据缓存的主力。
- Distributed RAM: 由逻辑单元(LUT)配置而成的小型、分布式RAM。
- UltraRAM: 在一些高端FPGA中存在的,更大块的存储资源。
- 2.2 优势(为什么我们首先会想到用它)
- 极致延迟: 与逻辑单元紧密集成,访问延迟极低,通常为1到几个时钟周期。
- 高带宽: 拥有巨大的并行访问能力,尤其是当使用多个BRAM端口时。
- 确定性: 时序是固定的,非常适用于对实时性要求极高的控制。
- 2.3 局限性(为什么它不够用)
- 容量有限: 这是最核心的短板。一颗中端FPGA的BRAM总量可能在几Mb到几十Mb之间。对比一下:
- 一幅4K图像(3840x2160x24bpp)≈ 24MB。
- 一秒钟的1080P@60fps视频流 ≈ 6MB * 60 = 360MB。
- 这些数据量远远超过了大多数FPGA片内BRAM的总容量。
- 成本高昂: 增加BRAM容量意味着要选择更昂贵、更高端的FPGA芯片。用外部几美元甚至几十美元的DRAM芯片来扩展几个GB的容量,是极具性价比的方案。
- 功能单一: BRAM是静态RAM,需要持续供电来保持数据。而外部DRAM利用电容存储,密度极高,但需要定时刷新。
- 容量有限: 这是最核心的短板。一颗中端FPGA的BRAM总量可能在几Mb到几十Mb之间。对比一下:
3. 典型应用场景:没有外部存储,这些设计无法实现
让我们用具体的例子来形象化说明外部存储器的必要性。
- 场景一:视频处理与显示
- 需求: 视频帧缓存。显示器需要以固定的频率(如60Hz)逐行扫描显示数据。但视频源(如摄像头)的输出速率可能不稳定或与显示频率不同步。
- 解决方案: 将至少一帧(甚至多帧)图像写入外部DDR。显示控制器再从DDR中稳定地读取数据送显。这实现了 “速率匹配” 和 “帧率转换” 。
- 场景二:高速数据采集系统
- 需求: 高速ADC以每秒数Gsps的速率采样,产生海量数据。但后续的数据处理(如滤波、FFT)或上传到PC的速度可能跟不上采集速度。
- 解决方案: 将ADC的实时数据流持续写入外部DDR,作为一个 “海量缓冲区” 。处理单元或CPU(如Zynq的PS端)可以从容地从DDR中读取数据进行处理或传输。
- 场景三:嵌入式系统运行空间
- 需求: 在集成了硬核处理器(如Xilinx Zynq, Intel SoC FPGA)的芯片上,处理器需要运行操作系统(如Linux)和复杂的应用程序。
- 解决方案: 外部DDR作为系统的 “主内存” ,用于存放程序代码、堆栈、堆以及各种数据。没有它,处理器无法运行复杂的软件。
- 场景四:大数据包网络处理
- 需求: 在通信领域,FPGA需要处理整包的以太网数据(如万兆网,数据包可达9KB)。
- 解决方案: 将整个数据包暂存于外部存储器,同时进行包头解析、查表、数据修改等操作,实现 “存储转发” 。
4. FPGA外部存储器家族概览与选型考量
现在,我们正式引出本系列的主角们,并给出一个宏观的选型思路。
- 4.1 家族成员介绍
- DDR SDRAM家族:
- DDR3: 经典、成熟、成本低,是许多工业和控制项目的首选。
- DDR4: 更高速度、更大容量、更低功耗,是高性能计算的基石。
- LPDDR4: 面向移动设备,低功耗、高带宽,在需要能效比的场合(如便携设备、汽车)越来越受欢迎。
- 非DDR家族:
- HyperRAM: 引脚数极少,设计简单,是传统SPI PSRAM的强大替代品,适用于需要适度容量(如几十到几百Mb)且对PCB成本和尺寸敏感的应用。
- DDR SDRAM家族:
- 4.2 选型考量维度(给出一个初步的对比表格)
| 存储器类型 | 典型容量 | 典型带宽 | 功耗 | 引脚数/设计复杂度 | 成本 | 典型应用 |
|---|---|---|---|---|---|---|
| DDR3 | 512Mb - 8Gb | 中等 | 中等 | 中等/中等 | 低 | 工业控制,视频处理,通信 |
| DDR4 | 4Gb - 16Gb+ | 高 | 较低 | 高/高 | 中等 | 数据中心,高性能计算,高端视频 |
| LPDDR4 | 4Gb - 16Gb+ | 很高 | 低 | 中等/高 | 中等 | 便携设备,汽车电子,嵌入式视觉 |
| HyperRAM | 64Mb - 512Mb | 低-中等 | 很低 | 少/低 | 很低 | IoT,可穿戴,显示缓冲,替代QSPI Flash |
- 如何选择?—— 灵魂四问
- 我的数据量有多大? → 决定 容量 。
- 我的数据吞吐率要求多高? → 决定 带宽 。
- 我的板卡有严格的功耗或尺寸限制吗? → 决定在功耗/引脚数上的权衡。
- 我的项目预算和开发周期如何? → 决定对成本/复杂度的容忍度。
5. 本系列博客路线图
在本系列博客中,我们将逐一揭开这些存储器的神秘面纱。我们将从最经典的DDR3入手,理解其核心原理;然后探索性能更强的DDR4和LPDDR4;接着,我们会了解能让硬件设计变简单的HyperRAM。我们不仅会讲理论,更会深入实战,探讨如何用FPGA的IP核去控制它们,如何设计高效的数据流,以及如何调试那些令人头疼的硬件问题。
1395

被折叠的 条评论
为什么被折叠?



