3. 星载数据流与带宽需求分析
星载FPGA的缓存与带宽优化,第一步不是写代码,而是把“数据从哪来、以什么速率来、要送到哪去、路上允许等多久”算清楚。载荷类型不同,数据特征差异极大:遥感载荷是高速、突发、强相关的图像流;通信载荷是连续、对称、可预测的码流;导航载荷则是低速、周期、强实时的观测量。若把三类数据混在一条链路上按同一策略处理,要么缓存被遥感突发撑爆,要么通信码流被导航的实时性要求反复打断。
三类载荷的数据特征
遥感载荷以推扫式成像为代表,CCD或CMOS线阵在行周期内并行输出多个像元,经A/D量化后形成像素流。以某示例参数为例:4条线阵、每条4096像元、每像元16 bit、行频2 kHz,则瞬时像素率为 4×4096×2000 = 32.768 M像素/s,对应原始速率 32.768 M×16 bit ≈ 524 Mbit/s。这类数据在行有效期内集中到达,行间存在消隐间隙,因此呈现明显的“突发—空闲”交替特征,突发峰值远高于平均速率。
通信载荷处理的是调制解调后的基带码流或中频采样数据,速率由符号率与过采样倍数决定。例如符号率200 Msps、4倍过采样、8 bit量化,则采样率为800 Msps,数据率6.4 Gbit/s。这类数据几乎无间隙,属于持续带宽型,对链路的稳态吞吐能力要求最高,但对单次延迟的容忍度相对宽松。
导航载荷输出的是伪距、载波相位、多普勒等观测量,更新率通常为1~10 Hz,单帧数据量仅几十到几百字节,平均速率可忽略不计。但其价值在于“准时”,从采样到输出的时延必须稳定且可界定,抖动会直接影响定位解算精度。因此导航数据的关键指标不是带宽,而是确定性与实时性。
吞吐率计算与突发/持续带宽
带宽需求分析要区分三个量:平均吞吐率、持续带宽和突发峰值带宽。平均吞吐率用于评估长期存储容量和链路利用率;持续带宽决定链路能否“跟得上”不丢数;突发峰值带宽决定缓存深度和仲裁策略。以遥感为例,若行周期500 μs、行有效时间400 μs、行消隐100 μs,则占空比为80%。平均速率 = 524 Mbit/s × 0.8 ≈ 419 Mbit/s,但突发期内必须按524 Mbit/s写入,缓存需吸收行间100 μs的空闲与行内400 μs的集中写入之间的速率差。
缓存深度可按最坏情况估算:若下游链路只能提供419 Mbit/s的持续写入能力,则每个行周期内缓存需额外吸收 (524−419) Mbit/s × 400 μs ≈ 42 kbit ≈ 5.25 KB。考虑多行累积、仲裁延迟和刷新开销,实际设计通常留2~4倍余量,取16~32 KB的乒乓缓冲较为稳妥。若下游链路持续能力低于平均速率,缓存将单调增长直至溢出,此时必须提高链路速率或降低前端速率。
通信载荷的持续带宽计算更直接:6.4 Gbit/s是稳态值,链路必须全程满足,缓存只用于跨时钟域和协议封装,深度需求小但带宽裕量要求高。导航数据虽小,却要求从采样到输出的时延上界可界定,例如不超过1 ms,且抖动不超过100 μs,因此不能与遥感大突发共用同一条深度队列,否则会被长队列阻塞。
实时性要求与优先级划分
实时性不是“越快越好”,而是“时延有界且可预测”。导航观测量若延迟抖动过大,会引入等效测距误差;通信码流若被频繁打断,会造成帧同步丢失;遥感图像若行间错序,会导致图像几何畸变。因此调度策略应按“实时性优先、带宽次之”的原则分层:导航走低延迟旁路通道,通信走高优先级持续通道,遥感走大容量缓冲通道并允许一定排队。
在FPGA内部,可用多级队列加加权轮询实现上述分层。示例配置:导航队列权重最高、深度最小(如4 KB),通信队列权重次之、深度中等(如32 KB),遥感队列权重最低、深度最大(如256 KB)。当遥感突发到来时,只要导航和通信队列未满,遥感数据在缓冲中等待,不会挤占实时通道。这样既保住了导航的时延上界,又让通信码流不中断,同时用大缓冲吸收遥感突发。
| 载荷类型 | 平均速率(示例) | 持续带宽(示例) | 突发峰值(示例) | 时延要求 | 缓存策略 |
|---|---|---|---|---|---|
| 遥感 | ≈419 Mbit/s | ≈419 Mbit/s | ≈524 Mbit/s | 行级有序,允许排队 | 大容量乒乓缓冲 |
| 通信 | 6.4 Gbit/s | 6.4 Gbit/s | ≈6.4 Gbit/s | 帧同步不中断 | 中等深度高优先级 |
| 导航 | <1 Mbit/s | <1 Mbit/s | 百字节级 | ≤1 ms,抖动≤100 μs | 小深度低延迟旁路 |
把上述关系落到设计上,就是先建立一张“载荷—速率—时延—缓存”的对应表,再据此分配FPGA的BRAM/URAM资源、DMA通道和仲裁优先级。遥感突发靠深度换平稳,通信持续靠带宽换连续,导航实时靠旁路换确定性。三者各得其所,整条数据链才不会在某一类载荷的极端情况下崩溃。