2、FPGA在小基站中的角色:FPGA vs DSP vs ASIC、FPGA在PHY层和MAC层的典型应用、为什么选择FPGA做加速
2.1 三种处理器的“三国杀”:FPGA vs DSP vs ASIC
做小基站开发,第一个绕不开的问题就是:用什么芯片?
我见过不少团队,一开始就纠结在FPGA、DSP和ASIC之间。其实这三者各有各的脾气,选对了事半功倍,选错了……嗯,后面全是坑。
咱们先看一张对比表,心里有个底:
| 维度 | FPGA | DSP | ASIC |
|---|---|---|---|
| 灵活性 | 极高(可重配置) | 中等(软件可编程) | 极低(固定功能) |
| 处理能力 | 并行处理,时延极低 | 串行处理,适合算法 | 最优,但固化 |
| 开发周期 | 中等(硬件描述语言) | 较短(C语言) | 很长(流片周期) |
| 功耗 | 中等 | 较低 | 最低 |
| 成本(小批量) | 适中 | 低 | 极高 |
| 典型场景 | PHY层加速、协议栈 | 音频、基带算法 | 大规模量产芯片 |
说白了,这三者不是谁替代谁的关系。我个人的习惯是:FPGA做“硬加速”,DSP做“软处理”,ASIC做“最终定型”。
举个例子。我在一个4G小基站项目里,刚开始用DSP跑整个PHY层,结果发现FFT和信道估计的时延根本压不下来。后来把FFT和Viterbi译码挪到FPGA里,DSP只负责调度和上层协议,整个系统的吞吐量直接翻了一倍。
核心观点:FPGA不是万能的,但在小基站的PHY层加速上,它几乎是唯一的选择。DSP适合做控制面和算法原型,ASIC适合千万级出货。小基站这种“中批量、高灵活”的场景,FPGA就是那个“甜点”。
2.2 FPGA在PHY层的典型应用
PHY层,说白了就是物理层。它负责把比特流变成无线电波,再收回来。这里面全是“硬骨头”——计算量大、实时性要求极高。
我列几个FPGA在PHY层最常见的“活儿”:
- OFDM调制解调:FFT/IFFT是FPGA的拿手好戏。一个流水线结构的FFT IP核,几百个时钟周期就能搞定一个符号。DSP跑同样的算法,至少要多花10倍时间。
- 信道编码/译码:Turbo码、LDPC码、Polar码。这些迭代译码算法,FPGA用并行架构一周期能处理多个状态。我在项目中做过一个LDPC译码器,用FPGA实现了800Mbps的吞吐量,DSP当时只能跑到50Mbps。
- 信道估计与均衡:LS、MMSE算法。FPGA可以做成全流水线,每个时钟周期出一个结果。DSP需要多次访存,时延大得多。
- 同步与定时:PSS/SSS检测、CP相关。这些需要低时延的反馈控制,FPGA的硬件逻辑天然适合。
- 数字预失真(DPD):这是5G小基站里最吃性能的模块之一。FPGA用查找表和多项式计算,能做到实时补偿。
避坑指南:我曾经在一个项目里,把整个PHY层都塞进FPGA,结果资源爆了。后来学乖了——只把“计算密集+时延敏感”的模块放FPGA,比如FFT、译码器、DPD。控制逻辑和慢速处理留给DSP或ARM。
2.3 FPGA在MAC层的典型应用
MAC层比PHY层“软”一些,但同样有硬实时需求。
你想想看,MAC层要处理调度、HARQ、随机接入。这些功能如果全用软件跑,时延很容易超标。FPGA在这里的角色是“硬件加速器”。
我总结几个典型场景:
- HARQ管理:混合自动重传请求。FPGA可以维护一个HARQ进程表,每个进程的状态、重传次数、软比特缓存,全部用硬件状态机管理。DSP只需要下发指令,FPGA自动完成重传调度。
- 调度器加速:MAC调度器需要快速计算每个UE的优先级和资源分配。FPGA可以用并行比较器,一个时钟周期选出最优UE。DSP做同样的工作,需要循环遍历,时延大一个数量级。
- 随机接入处理:PRACH检测。FPGA用匹配滤波器做前导码检测,速度快、精度高。我在一个项目中,用FPGA实现了同时检测64个前导码,DSP只能处理8个。
- CRC计算与校验:这个太基础了,但FPGA做起来就是比DSP快。一个时钟周期算完一个包,DSP需要几十个指令周期。
注意:MAC层和PHY层的接口,是FPGA设计的“鬼门关”。时延、带宽、同步,任何一个出问题,整个系统都会崩。我建议用AXI4-Stream接口,配合握手信号,保证数据不丢、不乱序。
2.4 为什么选择FPGA做加速?
这个问题,我经常被问到。其实答案很简单:因为小基站需要“既要又要还要”。
既要低时延(1ms以内),又要高吞吐(Gbps级别),还要灵活(支持不同协议版本)。ASIC做不到灵活,DSP做不到低时延。FPGA是唯一能同时满足这三点的。
我再说几个具体理由:
- 并行架构:FPGA内部有成千上万个逻辑单元和DSP切片。一个FFT运算,FPGA可以拆成多个蝶形单元并行计算。DSP只能串行执行指令,再快的DSP也拼不过并行。
- 确定性时延:FPGA的时延是可预测的。每个模块的延迟就是几个时钟周期,不会因为中断或缓存命中而抖动。这对5G的URLLC场景至关重要。
- 可重配置:小基站的协议经常更新。FPGA可以远程升级,不用换硬件。ASIC一旦流片,功能就锁死了。
- 接口丰富:FPGA有大量的高速SerDes、LVDS、DDR控制器。可以直接连接ADC/DAC、CPRI/eCPRI光模块。DSP的外设接口往往不够用。
- 功耗可控:虽然FPGA功耗比ASIC高,但比DSP+外围芯片的组合低。而且FPGA可以动态关断不用的模块,进一步省电。
我的经验:在一个5G小基站原型项目中,我们用FPGA实现了整个PHY层+部分MAC层。对比纯DSP方案,时延从5ms降到了0.5ms,吞吐量从200Mbps提升到了1.2Gbps。功耗只增加了30%。这就是FPGA加速的价值。
当然,FPGA也有缺点——开发难度大、调试麻烦。但做小基站,这点代价是值得的。你想想看,如果选错了处理器,后面改板子、重写代码,那才是真正的“灾难”。
嗯,这一章就到这里。下一章咱们聊聊FPGA开发环境的搭建,包括Vivado、Quartus这些工具的使用技巧。到时候我会分享一些“血泪史”,保证有用。