前言
在探讨了 1553B(可靠但慢速的“骨干网”)、RS422和 LVDS(极速但缺乏协议约束的“物理层”)之后,本章将对SpaceWire (SpW)进行介绍。在深空探测中,如果说 LVDS 是高速磁悬浮的轨道,那么 SpaceWire 就是整套磁悬浮运营系统。它基于 LVDS 物理层,但引入了独特的时钟-数据(Data-Strobe)编码机制和路由交换架构,解决了多载荷联网、即插即用以及复杂拓扑下的数据调度问题。
1. SpaceWire 技术概述
SpaceWire 是一种专门为航天器设计的全双工、点对点串行总线标准。它不仅定义了电气特性(物理层),还规范了协议层、网络层。
标准依据:ECSS-E-ST-50-12C。
传输速率:典型值为 2Mbps 至 200Mbps,高性能 ASIC 可达 400Mbps+。
核心定位:连接科学载荷(如高光谱相机、粒子探测器)与中心数据处理单元(SDPU)或大容量存储器的主要接口。
2. 物理层与 DS 编码机制
虽然 SpaceWire 底层采用 LVDS 电气标准(100Ω 终端匹配、350mV 摆幅),但它在信号调制上有一个天才的设计:DS (Data-Strobe) 编码。
2.1 为什么不是简单的“数据+时钟”?
普通的 LVDS 传输通常需要随路时钟,但在极高速率下,时钟和数据线的走线偏斜(Skew)会导致采样错误。
2.1.1 LVDS的理解
一开始没有理解为什么会有随路时钟,在驱动器的引脚中并没有看到时钟线。所以首先来理解LVDS是异步通信还是同步通信:
这是一个非常深刻的问题。简单直接的回答是:LVDS(低压差分信号)本身只是一种物理层电气标准,它既不是纯粹的同步协议,也不是异步协议。它是同步还是异步,取决于你在它之上跑什么样的协议逻辑。我们可以从以下三个维度来拆解:
(1)物理层层面:它是“透明”的管子
LVDS (TIA/EIA-644) 仅仅定义了信号的电压摆幅(350mV)、中心电平(1.25V)以及电流驱动模式。 就像电线一样,它不关心传输的数据是否有位钟。你既可以用它传输带有随路时钟的同步信号,也可以传输 UART 这种异步串口信号。
(2) 常见的应用模式
在实际的 FPGA 或高速电路设计中,LVDS 通常表现为以下几种形式:
A. 源同步(Source-Synchronous)—— 这是最常见的“同步”用法
这是你在讨论“走线偏斜(Skew)”时遇到的场景。
做法:发送端同时发送“LVDS 数据线”和一根“LVDS 时钟线”。(从 FPGA 导出一个时钟信号接在
,再导出三个数据信号接在
。这样在接收端,我们就认为第一对差分线是“随路时钟”。)
性质:它是同步的,因为接收端必须依靠发送端提供的时钟来采样数据。
痛点:由于时钟和数据是分开的两对线,一旦速率极高,两对线之间的走线延迟差(Skew)就会导致采样失败。
B. 嵌入式时钟(Embedded Clock / SerDes)—— 接近“异步”的串行模式
做法:通过 8b/10b 或 64b/66b 编码,将时钟信息“揉进”数据流里,不发送独立时钟线。
性质:在物理连线上看起来是异步的(只有一对线),但接收端通过 CDR(时钟数据恢复)电路锁相出一个时钟。
典型应用:高速千兆以太网、PCIe。
C. Data-Strobe (DS) 编码 —— SpaceWire 的特殊方案
做法:发送 Data 和 Strobe 两路信号。
性质:它介于两者之间。它不需要全局同步时钟,但 Data 和 Strobe 之间存在逻辑上的互补同步关系。
(3)为什么你之前笔记里说它“不依赖具体协议”?
正如你整理的笔记所言,LVDS 仅定义了物理层的电气特性。 在深空探测中,LVDS 往往作为高速物理通道:
如果连接的是高速 ADC:通常是同步的(ADC 输出 Data + CLK)。
如果运行的是SpaceWire:则是基于DS 编码的自同步协议。
如果运行的是RS422 接口的电平升级版:它就变成了异步的。
总结对照表
模式 是否有独立时钟线 同步性质 对 Skew 的敏感度 典型场景 源同步 LVDS 是 同步 极高(需严格等长) FPGA 与 ADC 互联 异步 LVDS 否 异步 低 远距离低速指令传输 SpaceWire (DS) 否(两路信号) 自同步 中/低 卫星载荷数据总线
2.2.2 会出现采样错误的原因
为了更深入地理解这个原因,我们可以从数字信号的“采样窗口”以及时钟与数据的“相对位移”这两个核心概念入手。
在高速数字电路设计中,随路时钟被称为源同步时钟(Source-Synchronous Clocking)。
(1). 核心瓶颈:采样窗口的缩放
在低速电路中(如),一个比特(Bit)持续的时间长达
,时钟线和数据线差几个厘米(纳秒级延迟)几乎没有影响。
但在高速 LVDS 传输中,假设速率为:
单位间隔(UI, Unit Interval):
。
这意味着接收端必须在这极短的
内完成采样。
(2).建立时间与保持时间(Setup & Hold Time)
FPGA 内部的触发器(Flip-Flop)采样时,并不是在时钟上升沿那一瞬间完成的,而是需要两个硬性条件:
建立时间 (
):在时钟沿到达前,数据必须已经稳定了多长时间。
保持时间 (
):在时钟沿到达后,数据必须继续保持多长时间。
采样成功的条件是:时钟边沿必须落在数据窗口(Data Eye)的中间,并满足:
(3). Skew(偏斜)是如何破坏采样的?
Skew指的是两路信号到达接收端的时间差。产生 Skew 的原因通常有:
PCB 走线不等长:信号在 PCB 上的传输速度约为
。如果数据线比时钟线长了
,就会产生约
的延迟。
芯片内部偏斜(Intra-chip Skew):就像LVDS047 引脚图,内部四路通道的逻辑门延迟不可能做到物理上绝对一致,手册中通常会标注一个
Channel-to-Channel Skew(典型值为)。
温度与过程波动:环境变化会导致电信号传播速度微调。
采样错误模型:
假设,理想情况下时钟在
处采样。
如果由于 PCB 走线和芯片偏差,数据线相对于时钟线产生了的Skew:
原本正对准中心的时钟沿,现在会由于数据的“迟到”或“早到”,变得极其靠近数据的边缘。
如果
使得时钟边沿距离数据跳变沿小于 $T_{su}$,触发器就会进入亚稳态(Metastability),导致逻辑判断错误。
(4). 为什么 SpaceWire 的 DS 编码能“避雷”?
传统的“随路时钟”方案(如普通 LVDS 接口)是刚性的:时钟和数据是两个独立的物理实体。一旦偏斜超过门限,系统就崩溃。
SpaceWire (DS 编码) 的原理差异:
它不传输原始采样时钟,而是传输Data (D)和Strobe (S)。
接收端通过
(异或)来重建采样时钟。
自适应性:因为采样时钟是根据 Data 和 Strobe 的跳变沿实时生成的,即使这两根线之间有偏斜,异或出来的时钟也会随之移动。只要 Data 和 Strobe 不同时跳变,逻辑就能自动找到采样点。
(5)总结
| 特性 | 普通 LVDS (Source-Sync) | SpaceWire (DS 编码) |
| 时钟来源 | 独立的时钟线 | 从 Data 和 Strobe 异或得出 |
| Skew 敏感度 | 极高。需严格 PCB 等长约束 | 较低。具备一定的天然容错性 |
| 设计难度 | 需配置 FPGA 的IDELAY调整相位 | 需编写 DS 解码逻辑和异步 FIFO |
| 主要用途 | 极高速点对点(如 ADC 接口) | 航天器内多载荷组网、控制指令 |
2.2 DS 编码原理
Data (D):直接传输原始二进制数据。
Strobe (S):只有当 Data 信号在两个位周期之间不发生变化时,Strobe 信号才发生翻转。
优势:
自同步能力:D 或 S 每一位至少有一个会发生跳变。接收端只需将 D 和 S 进行“异或 (XOR)”运算,即可重建出稳定的采样时钟。
极高容错性:对线缆长度不一致(偏斜)的容忍度远高于普通同步时钟方案。
3. 网络拓扑与路由架构
与 1553B 的“总线式”结构不同,SpaceWire 是交换式网络,类似于星内局域网。
点对点连接:两个节点通过一组(4 对差分线)直接相连。
路由交换 (Router):通过 SpaceWire 路由器(如 GR718B),可以将多个载荷组网。
蠕虫路由 (Wormhole Routing):数据包的包头(目标地址)到达路由器后,路由器立即开始转发,无需等待整个包接收完毕。这极大地降低了深空实时任务中的传输延迟。
4. SpaceWire 典型系统架构
在典型的深空探测单机中,SpaceWire 的构建方式通常分为三层:
4.1 物理连接层
采用专门的SpaceWire 线缆(双屏蔽四绞线)。为了防护 ESD,通常会在 FPGA 与外部接口间加入SN65LVDS047/048驱动芯片或专门的加固收发器。
4.2 接口控制层 (Codec)
FPGA 实现:在 Xilinx 或国产 FPGA 中,调用高性能 I/O 原语。由于 DS 编码的特性,通常需要通过延迟锁相环(IDELAY)来微调 D 和 S 的相位。
专用 ASIC:如前所述的GR712RC,内部直接集成了符合标准的 SpW 控制器硬件电路。
4.3 协议封装层 (RMAP)
为了实现“存储器映射”式的访问,SpaceWire 通常搭载RMAP (Remote Memory Access Protocol)。这使得地面指令可以直接读写卫星载荷内部的寄存器或内存空间,就像访问本地内存一样方便。
5. 为什么深空探测偏爱 SpaceWire?
容错与冗余:支持链路自动重新连接。如果一条链路因为空间单粒子锁定断开,协议栈可以自动尝试重新握手。
低功耗:相比于以太网 PHY 芯片,SpaceWire 的逻辑实现非常简洁,FPGA 资源占用极少,静态功耗低。
电磁兼容性 (EMC):由于采用恒流源 LVDS 和严格的差分走线,它对探测器产生的噪声干扰极小。
6. FPGA 设计建议与避坑指南
6.1实现方案
因为SpaceWire 是一种协议逻辑。所以可以选择以下两种系统架构。
方案 A:FPGA + IP 核
在这种方案中,FPGA 充当了 SpaceWire 接口芯片的角色。
逻辑实现:需要将 SpaceWire 的协议逻辑(包括 DS 编码/解码、状态机、RMAP 协议等)以 IP 核(Verilog/VHDL 代码)的形式写进 FPGA。
物理连接:FPGA 输出单端的 Data 和 Strobe 信号,SN65LVDS047只负责把这两路信号变成符合 SpaceWire 电气标准的 LVDS 差分对。
为什么不需要额外芯片?因为 FPGA 的灵活性允许它“模拟”出任何接口。这种架构在载荷开发中极其常见,因为它节省了 PCB 面积,且方便与你自己的 VLF 信号处理逻辑直接对接。
方案 B:使用专用 SpaceWire ASIC 芯片
如果你不想在 FPGA 里消耗逻辑资源,或者需要极高的可靠性,你可以选用专门的SpaceWire 协议芯片。
独立控制器:如BM3109(国产)或AT7913E。这些芯片内部已经固化了所有的 SpaceWire 协议逻辑。
分工:FPGA 只需要通过简单的并行总线或 SPI 与这些芯片通信,复杂的 SpaceWire 握手和数据打包由这颗专用芯片完成。
集成 SoC:像GR712RC或GR740这种芯片,不仅是处理器,内部还直接集成了多路 SpaceWire 接口控制器。
| 特性 | 方案 A:FPGA + 驱动芯片 (LVDS047) | 方案 B:专用接口芯片 (ASIC) |
| SpaceWire 逻辑 | 消耗 FPGA 逻辑资源(LE/LUT) | 芯片硬件固化,不占用主控资源 |
| 灵活性 | 极高。可自由修改时钟频率、缓冲区大小 | 固定。必须遵循芯片的数据手册规范 |
| 电气特性 | 依赖外部驱动芯片(如 LVDS047) | 通常自带 LVDS 驱动器,直接连接线缆 |
| 抗辐射性能 | 取决于 FPGA 本身(如航天级 FPGA) | 通常是专用加固芯片,抗总剂量能力极强 |
| 典型应用 | 科学载荷、自研高速处理板卡 | 卫星综控机、标准化通信网关 |
6.2注意事项
作为研究人员,在 FPGA 上实现 SpaceWire 时应注意:
时钟域跨越 (CDC):SpaceWire 接收端重建的时钟是随着发送端变化的(异步)。在将数据送入 FPGA 内部逻辑时,必须使用异步 FIFO进行隔离,防止亚稳态。
状态机加固:SpW 的链路状态机(Initialization State Machine)较为复杂。建议对状态机进行三模冗余 (TMR)编码,防止单粒子翻转导致链路反复重置。
PCB 布线:
D 对与 S 对必须四线等长。
虽然 DS 编码允许一定偏斜,但在 200Mbps 以上时,严格等长依然是保证低误码率的前提。
交流耦合:跨设备连接时,记得在差分对上串联电容,避免载荷与卫星平台之间的“地电位不一致”烧毁 FPGA 引脚。