跳转至

SpaceWire

SpaceWire(ECSS-E-ST-50-12C)是航天器上的星载数据处理链路。每个方向使用 Data 与 Strobe 两条线,每个比特只有其中一条会翻转,因此时钟由 Data XOR Strobe 还原,不需要另一条时钟线。全双工链路因此是四条信号。

规范规定了 2 Mb/s 下限与强制的 10 Mb/s 起始速率,但没有规定上限——上限来自设备本身,以及 Data 与 Strobe 两线之间的 skew。解码会分别测量两个方向的速率并显示,所以两个方向可以运行在不同速率。

测量全双工需要接四条信号,单一方向接两条即可。若某一组的 Data 与 Strobe 接反,Auto-detect Data / Strobe 会自动判定并在报表中说明判定结果。

Decode Settings

Decode Settings

SpaceWire Decode Settings
  • Full duplex (4 channels):解码两个方向。取消勾选时只读 Tx 这一组,凡是需要跨越两个方向才成立的信息——流量控制额度、初始化握手、以及是哪一端造成断链——都无法呈现。默认:勾选。
  • Auto-detect Data / Strobe:自动判定每一组里哪一条是 Data、哪一条是 Strobe。两者对调后仍然会产生合法的时钟,所以接反不会让解码停下来,只会悄悄把数据解错。没有特别理由请保持开启。默认:勾选。
  • Tx swapped / Rx swapped:手动指定接法。只有在 Auto-detect 取消勾选时才可操作,因为自动判定会覆盖这两个设置。默认:未勾选。
  • Tolerance:一个比特偏离测得的比特周期多少以内仍视为正常,可选 5 % 到 50 %。线材较长或 skew 明显时调高。默认:30 %。
  • Disconnect:线上多久没有任何翻转就判定为断链,可选 727 ns 到 4000 ns。规范给的是一个区间而不是单一数值。默认:850 ns。
  • View:波形与报表要呈现哪一层。
    Field——单个字符内部的组成:数据比特、奇偶校验位与 data-control 标志。字符完全解不出来时看这一层。
    Character——一行一个字符或控制码。
    Packet——一行一个数据包,含载荷字节。
    Credit——流量控制额度随时间的变化;唯一必须两个方向都在才成立的视图,也因此是 Live mode 唯一不提供的。
    默认:Character。
  • Waveform:波形区要画哪一个方向。非 Live mode 时报表两个方向都有。同速率时两个方向的字符几乎完全重叠,一行同时画两条会让多数区块只剩一个采样点宽,所以这里只选一个。只有全双工时可操作。默认:Tx。
  • Packet row:数据包报表一行放几个载荷字节,超过就换到续行。SpaceWire 数据包没有长度上限,长包一定会折行;续行以字节偏移标示(008h、010h…),最后一行带出总长度。Packet 视图时可操作。默认:8 bytes。
  • Reduce repeated NULL / FCT:把连续的 NULL 或 FCT 收合成一行。空闲中的链路会持续发送 NULL,实机采集因此绝大部分是 NULL,数据包会被淹没在里面。在会汇总行的视图中可操作。默认:勾选。

Result

SpaceWire Result

Character 视图:两个方向,含一个数据包与一个 Time-code

两个方向各自拥有 Event、Error、Delta 三列,所以两条数据流并排时仍然分得清楚。Delta 指的是与同方向前一个事件之间的间隔。

Packet 视图中一个数据包成为一行,载荷超过一行长度时续接到下一行:

SpaceWire Packet view

Packet 视图:续行与字节总数

Live mode

SpaceWire 解码支持 Live mode(实时采集中同步解码),但有以下限制。 解码器会跟着数据流前进:字元一批一批解出来,而只在链路建立时发生一次的字元同步, 会跨批保留下来。

有三件事 Live mode 显示不了。采集存档后再解码,三项都与平常一样。

  • 报表只显示一个方向 —— 波形区设定的那一个(Waveform 设定)。波形区本来就只画一个方向,Live mode 的报表也是用同一份数据流建立 的。报表会注明目前显示的是哪个方向。
  • 不提供 Credit 视图。 FCT 与它所授权的数据走相反方向,所以要两个方向都在手上 才算得出 credit。在 Live mode 选了它会改以 Character 视图呈现,并在 Information 栏说明 —— 而不是显示一个会在正常链路上越算越低、最后变成假的 credit 错误的数字。
  • 不显示测量位元率那一行,原因相同:它走的是报表自己的数据流,不是波形数据流。