SpaceWire总线介绍

📅2026/7/15 6:41:03 👁️次浏览
SpaceWire总线介绍
SpaceWire简称 SpW是由 ESA欧洲空间局和 NASA 联合制定的星载高速数据链路与网络协议核心用于航天器内部设备处理器、存储、遥测模块等之间的高速数据传输是星载通信的核心协议之一。核心优势高可靠性、低延迟、可扩展性强支持多设备组网通过路由器可复用不同任务的硬件模块降低星载设备研发成本。1、总线结构SpaceWire总线网络由节点、路由器和链路组成节点之间通过链路和路由器可选连接。一个最简网络由两个节点和一条链路组成一个较为复杂的网络由多个节点、路由器及多条链路组成。2、协议栈SpaceWire协议栈由物理层、信号层、字符层、交换层、包层、网络层及应用层组成。①物理层提供传送数据的物理通路包括电缆、连接器、电缆组件、PCB走线等物理介质。②信号层提供可靠的信号传输模式。本标准规定了信号经DS编码后以LVDS电平形式传输。③字符层定义数据字符、控制字符和控制码④交换层旨在物理通道上建立可靠的数据传输链路⑤包层定义数据链路上传输的数据包格式⑥网络层定义网络构成和运行机制⑦应用层由用户自行定义。2.1物理层物理层连接器信号定义如下连接方式如下2.2信号层信号编码方式SpaceWire采用DS编码方式编码规则信号与数据位流一致即当数据位为时为高电平当数据位为时为低电平信号则在相邻数据位不变化时翻转电平。链路速率最低信令速率2 Mbit/s初始链路建立速率10 ± 1 Mbit/s常规运行速率2 Mbit/s 至 200 Mbit/s2.3字符层①数据字符数据字符编码后字符为10位含位校验位、位数据控制位和位数据其中数据控制位为“”表示当前为数据字符位数据应先传低位再传高位。②控制字符控制字符编码后为 4 位其中包含1位奇偶校验位 1位标志位 2位控制码。数据控制位为“1”。③控制码控制字符本身只携带2位信息其能力通过特定的序列进行扩展形成了两种核心的控制码NULL (空标志)由ESC (转义码) FCT (流控制令牌)序列构成中间的校验位P为“”。当链路上没有实际数据需要发送时接口会持续发送NULL字符以此来维持链路的活动状态并支持链路断开检测功能。Broadcast Code (时间码)由ESC (转义码) 一个数据字符序列构成中间的校验位为“”其中B0B5为数据B6、B7为类型。广播编码用于时间码和分布式中断码。时间码的广播编码类型应设置为 0b00。时间码的值字段应包含一个6位的时间码值该值为无符号二进制整数。分布式中断码的广播编码类型应设置为 0b10。中断支持两种工作模式1中断模式仅通过网络发送中断码中断码值字段的位0到位4应包含中断标识符其取值范围为0到31。中断码值字段的第5位应为0。中断码应与由其中断标识符值确定的32个可能中断之一相关联。2带应答的中断模式通过网络发送中断码和中断应答码。中断应答码应用于向中断源回传中断的应答。中断应答码值字段的位0到位4应包含中断标识符其取值范围为0到31。中断应答码值字段的第5位应为1。与中断标识符值为N0 ≤ N ≤ 31的中断码相对应的中断应答码其中断标识符值应为N。④奇偶校验SpaceWire采用奇校验方式因此检验作用域内“”的数量应为奇数。奇偶校验所覆盖的范围包括前一个字符的部分字段数据字符的低位或控制字符的低位、当前字符的标志位和奇偶校验位本身中1的个数必须为奇数。⑤初始传输字符复位或链路出错时D信号和S信号应先置。发送器复位后应先发送校验位且该位应置以使信号先发生翻转。2.4交换层2.4.1链路字符和标准字符交换层有两类字符分别是链路字符link-characterL-Char和标准字符normal-characterN-Char。L-Char包括FCT、ESC、NULL及Time-Code这些字符不会被传递到包层。N-Char包含传输的数据字符及包结束标识EOP和EEP这些字符校验正确后将被传递到包层。①链路字符L-Char详解链路字符是为数据链路自身维护设计的专用字符不承载业务数据仅负责链路层面的控制四类核心 L-Char 如下FCT通常为帧控制字符Frame Control Token是链路层的帧定界、控制标识用于定义帧的起始 / 结束、控制字段解析等是链路帧结构的核心控制符。ESC即转义字符Escape Character用于实现字符转义解决数据中出现特殊字符时的冲突问题例如当数据中包含 FCT、EOP 等字符时通过 ESC 标记实现区分避免链路解析错误。Null空字符常用于链路同步、填充、空闲状态标识在链路无数据传输时维持链路连接状态或用于数据帧的空白填充。Time-Code时间码字符用于链路层的时间同步、时序校准、时延测量等保障链路设备间的时间基准一致常见于对同步性要求高的通信系统。关键特性所有 L-Char 仅在交换层内部处理完成链路控制功能后直接丢弃不会被转发到包层如网络层、应用层对应的包处理模块避免链路控制信息干扰业务数据传输。②标准字符N-Char详解标准字符是业务数据的载体是用户实际需要传输的内容分为两部分1传输的数据字符这是核心的业务数据包括文本、二进制数据、业务报文等用户 / 应用层产生的有效数据是数据传输的核心内容。2包结束标识用于标识数据包的传输结束包含两种标识EOPEnd of Packet数据包结束标识最常用的数据包终止符EEPError End of Packet包错误结束标识用于标记传输过程中出现异常、存在错误的数据包的终止场景为包层提供错误感知依据。关键特性N-Char 需要经过校验机制如奇偶校验校验正确后才会被传递到包层由包层进行数据包的重组、解析、路由等后续处理若校验失败该字符及对应数据包会被丢弃确保传输数据的完整性。2.4.2字符传输优先级广播码最高优先级帧控制字符FCT标准字符N-Char空字符Null最低优先级。2.4.3流量控制SpaceWire 链路针对标准字符N-Char的传输采用FCT帧控制令牌信用计数机制实现流量控制核心由接收端授权、发送端按额度发送数据通过双维度信用计数、固定额度限制、异常处理机制保障链路数据传输不发生缓存溢出实现收发端速率匹配。①核心基础规则控制信号FCT 是流量控制的唯一核心令牌由数据接收端发送至发送端作为发送 N-Char 的授权依据。额度映射1 个 FCT 固定对应8 个 N-Char 的发送/接收额度是流量控制的基本单位。字符归属EOP、EEP 属于 N-Char 范畴无论空数据包是否被丢弃均计入信用计数。状态复位当链路状态机进入错误复位ErrorReset 状态时所有信用计数器强制置 0重置流量控制状态。②信用计数规则1发送信用计数记录发送端可发送的 N-Char 额度计数增加每接收到 1个FCT发送信用计数8计数减少每向对端发送 1个N-Char发送信用计数-1行为约束计数为 0 时发送端停止发送 N-Char仅可发送链路控制类字符FCT Null、广播码、L-Char。2 接收信用计数记录接收端已授权但未接收的 N-Char 额度计数增加每向对端发送 1 个 FCT接收信用计数 **8**计数减少每从对端接收 1 个 N-Char接收信用计数 **-1**发送约束仅当接收端有足够缓存容纳 8 个新 N-Char且接收信用计数未溢出时方可发送新 FCT。③额度限制与边界规则数值上限发送信用计数、接收信用计数的最大值均为 56对应 7 个 FCT任意时刻未完成确认的 FCT 数量不得超过 7 个。动态适配若接收端缓存容量不足 56 个 N-Char接收信用计数的最大值可动态调整为小于 56 的数值接收端实际可缓存的 N-Char 数量可大于接收信用计数的最大值。④异常处理机制计数超限若接收到 FCT 导致发送信用计数超过最大值 56触发信用错误计数器不增加并上报异常。计数为 0发送端无可用发送额度时暂停 N-Char 传输仅维持链路控制字符的发送直至收到新的 FCT 恢复额度。⑤发送行为规范发送前提发送端必须在接收到对端发送的 FCT 后方可向对端发送 N-Char无数据场景当无广播码、FCT、N-Char 待发送时发送端发送 Null维持链路激活状态FCT发送条件接收端需同时满足「缓存可容纳 8 个新 N-Char」和「接收信用计数未达上限」两个条件才能发送 FCT。2.4.4链路状态机链路状态机包含以下6个状态错误复位状态ErrorReset错误等待状态ErrorWait准备好状态Ready启动状态Start连接状态Connect运行状态Run正常链路建立流程错误复位 → 错误等待 → 准备好 → 启动 → 连接 → 运行。发生任何异常 →直接跳回错误复位状态。各状态核心功能如下①错误复位状态1进入条件任一端口复位在错误等待/准备好/启动状态时发生端口无效或断开校验错误、转义错误接收到 FCT、N-Char 或 Time-Code在启动或连接状态时停留超过 12.8 μs 未能正常跳转在运行状态时发生端口无效或断开校验错误、转义错误信用错误2本状态操作开始6.4μs计时清除发送使能控制位清除接收使能控制位发送信用计数器置 0接收信用计数器置 0接收到 FCT 状态指示清零丢弃未发送的 Time-Code。3退出条件端口复位后在错误复位状态停留 ≥ 6.4 μs →错误等待状态②错误等待状态1进入条件从错误复位状态停留 6.4 μs 后进入2本状态操作开始12.8μs计时清除发送使能控制位置位接收使能控制位但不向字符层传递 N-Char也不寄存所有 Time-Code。3退出条件端口复位 →错误复位状态端口无效或链路断开 →错误复位状态校验错误、转义错误 →错误复位状态接收到 FCT、N-Char 或 Time-Code →错误复位状态停留 12.8 μs 后 →准备好状态③准备好状态1进入条件从错误等待状态停留 12.8μs后进入2本状态操作清除发送使能控制位置位接收使能控制位但不向字符层传递 N-Char也不寄存所有 Time-Code3退出条件端口复位/无效/断开 →错误复位状态校验错误、转义错误 →错误复位状态接收到 FCT、N-Char 或 Time-Code →错误复位状态链路使能且链路启动允许 →启动状态链路使能且自启动允许并接收到一个 Null →启动状态④启动状态1进入条件从准备好状态满足以下任一链路使能 链路启动允许自启动允许 接收到一个 Null2本状态操作开始12.8μs计时持续发送 Null置位接收使能控制位但不向字符层传递 N-Char也不寄存所有 Time-Code。3退出条件端口复位/无效/断开 →错误复位状态校验错误、转义错误 →错误复位状态接收到 FCT、N-Char 或 Time-Code →错误复位状态使能状态下至少接收到一个 Null 且发送了一个 Null →连接状态停留12.8μs后未正常跳转 →错误复位状态⑤连接状态1进入条件从启动状态至少接收到一个 Null 且发送了一个 Null2本状态操作开始12.8μs计时发送 FCT 使能无数据/控制字符时持续发送 Null发送 FCT 和 Null置位接收使能控制位接收到 FCT 时向字符层发送 N-Char 并寄存接收到的 Time-Code3退出条件端口复位/无效/断开 →错误复位状态校验错误、转义错误 →错误复位状态在使能状态下至少发送了一个 FCT 且接收到了一个 FCT →运行状态未发送 FCT 时接收到 N-Char 或 Time-Code →错误复位状态停留12.8μs后 →错误复位状态⑥运行状态1进入条件从连接状态至少发送了一个 FCT 且接收到了一个 FCT2本状态操作发送 FCT、N-Char 和 Time-Code 使能无数据/控制字符时持续发送 Null置位接收使能控制位发送 N-Char 和 Time-Code 到字符层将接收到的 Time-Code 发送至网络层3退出条件端口复位/无效/断开 →错误复位状态校验错误、转义错误 →错误复位状态信用错误 →错误复位状态2.4.5链路初始化2.4.6差错检测交换层可检测并处理五种接收错误任何错误都会导致复位初始化字符同步和流控制进程。2.5数据包层①SpaceWire 数据包由一个或多个数据字符构成其后跟随数据包结束标识EOP或数据包错误结束标识EEP。②数据包的起始位置应为以下之一链路初始化之后或链路断开后重新初始化之后发送的第一个数据字符。紧接在 EOP 或 EEP 之后的数据字符。注前一个数据包结束后的第一个数据字符即为下一个数据包的起始。③数据包的结束应由 EOP 或 EEP 标识。④数据包应包含零个或多个数据字符。注若数据包包含零个数据字符则该数据包将被其遇到的第一个路由交换机丢弃。⑤数据包前部的零个或多个数据字符应构成目的地址。⑥目的地址之后、直到 EOP 或 EEP 之前的剩余数据字符应构成有效载荷。2.6网络层2.6.1 SpaceWire路由SpaceWire 路由是一个多端口交换设备根据数据包首字节地址查表或直接映射到输出端口采用虫洞交换、信用流控、优先级转发时间码支持路径寻址、逻辑寻址、组自适应路由和可选组播。①路由开关Routing Switch核心结构一个标准 SpaceWire 路由必须包含一个或多个端口包括连接外部链路的SpaceWire端口和连接内部并行接口的FIFO端口最多31个外部端口。交换矩阵Switch Matrix连接输入端口与输出端口是数据转发核心。路由表Routing Table用于逻辑地址 → 物理端口映射。配置节点Configuration Node通过端口地址 0 访问用于配置路由表、端口参数。可选时间码寄存器保存最近收到的时间码并广播有效时间码。可选中断中继寄存器指示当前激活的中断并广播中断码。②端口寻址配置端口 端口 0SpaceWire/FIFO 端口 1–31路由根据数据包首字节决定输出端口。③路径寻址首字节 0–31 为路径地址Path Address用于直接指定下一跳端口。首字节 0 → 路由到配置端口端口 0首字节 1–31 → 直接路由到对应编号端口路径地址可由多个字节组成多级路由每个路由使用后删除该字节露出下一个地址给下一个路由配置端口只能通过路径寻址访问④逻辑寻址首字节 32–254 为逻辑地址Logical Address用于查表转发。路由根据首字节查路由表 → 得到输出端口逻辑地址不删除除非启用 “逻辑地址删除” 功能路由表保存逻辑地址 → 物理端口映射255 保留不可使用⑤逻辑寻址删除路由可配置在转发前删除首字节逻辑地址。每个路由可选择是否删除首字节只删除一个字节删除后露出下一个地址路径 / 逻辑给下一个路由用于网络分区、多级逻辑地址扩展⑥寻址错误处理以下情况必须丢弃数据包首字节指向不存在的端口路由表项未配置有效端口逻辑地址 255保留地址⑦虫洞路由SpaceWire 路由的核心交换机制数据包到达后立即决定输出端口输入端口与输出端口直通连接逐字符N‑Char转发不缓存整包输出端口忙时数据包在输入端口等待输出端口完成当前包后才能接收新包⑦路由仲裁多个输入端口竞争同一个输出端口时必须使用公平仲裁fair arbitration输出端口空闲时选择一个输入端口接入传输完成后释放端口重新仲裁公平竞争轮流使用输出端口。2.6.2 SpaceWire网络时间组成时间码 ESC字符 数据字符6 位计时器 2 位控制位。全网唯一主节点仅一个端口作为时间主机向网络广播时间码。计时机制全网节点/路由均维护6 位计时器0~63 循环。时间主机周期性发计时信号本地计时器 1 并发出新时间码。从节点/路由仅在新时间码 当前值 1时视为有效并更新、广播。传输与分发流程链路端收发接收→校验有效性→更新计时器无效则丢弃。网络分发主机发码→中间节点校验有效→转发至其他链路无效不转发。最终实现全网计时器同步。时间码丢失处理丢失导致部分节点本次无法更新。下次校时未更新节点用新码更新但不转发新码。经若干次校时后全网自动恢复同步次数取决于网络规模与丢失位置。3、SpaceWire 协议标识3.1协议标识说明核心作用为实现多种协议在 SpaceWire 网络中并发运行且互不干扰标准定义了协议标识符机制。接收节点根据数据包中的协议标识符处理报文不支持的标识符则丢弃报文。上层协议规范基于 SpaceWire 运行的上层协议统一在 ECSS-E-ST-50-5x 系列标准中定义文中列举了两类典型协议远程内存访问协议RMAP支持对远程 SpaceWire 节点的内存读写可用于网络配置、节点控制及数据收发规范依据为 ECSS-E-ST-50-52。CCSDS数据包传输协议将 CCSDS数据包封装进 SpaceWire 数据包进行传输在目标节点解封装规范依据为 ECSS-E-ST-50-53。①数据包寻址规则携带协议标识符的数据包到达目标节点时结构包含单字节逻辑地址相关规则如下地址传递发起端发送的数据包可能包含多个前置路径/逻辑地址字节在 SpaceWire 网络传输中会被剥离仅保留单字节逻辑地址到达目标节点。默认逻辑地址当目标节点未配置专属逻辑地址时固定使用2540xFE 作为默认值发起端若未知目标地址也可使用该默认地址。节点适配规则目标节点可选择忽略逻辑地址为 0xFE 的数据包并可统计并上报此类被忽略的数据包数量。目标节点可支持接收一个或多个不同逻辑地址的数据包例如同时支持 60、61、0xFE。②基础协议标识符协议标识符是紧跟逻辑地址后的单字节字段有严格的取值与分配规则核心取值定义:取值00x00保留用于扩展协议标识符EPI是扩展标识的触发标识。取值2550xFF保留用于未来扩展禁止使用。标识符分配范围:1~2390x01~0xEF标准化标识符由 SpaceWire 工作组统一分配是当前已批准协议的专用范围可保证多协议并发运行。240~2540xF0~0xFE项目自定义标识符由项目自行分配存在与其他用户协议冲突的风险无标准化保障。③扩展协议标识符当基础单字节标识符无法满足需求时可使用扩展标识符其规则如下启用条件仅当节点支持扩展协议标识符时生效此时基础协议标识符取值为 0x00其后紧跟两个字节组成 16 位的扩展协议标识符最多可支持 65535 种协议。禁用与丢弃规则若节点不支持扩展协议标识符所有基础标识符为 0x00 的数据包必须丢弃。扩展标识符取值 0x0000~0x00FF 为未来保留值禁止使用包含该范围的数据包必须丢弃。统计机制不支持扩展协议标识符的节点可统计并上报接收到的扩展标识符数据包数量。3.2 CCSDS数据包传输协议CCSDS 数据包传输协议用于将CCSDS 空间数据包封装进 SpaceWire 数据包在 SpaceWire 网络中从发起端传输至目标端解封装后交付给目标用户应用不提供传输确认、重传机制也不校验 CCSDS 数据包内容与格式仅负责封装/解封装与数据透传。①协议定位与服务特性服务类型单向、异步、无确认的数据传输服务仅提供单源到单目的地的透传能力。服务访问点SAP通过 SpaceWire 地址标识服务数据单元按提交顺序处理协议不强制定义流控方案。服务能力不保证数据完整性、无重传、不校验 CCSDS 数据包格式、不保证数据单元序列保持端到端服务质量由底层 SpaceWire 网络提供。序列保持仅单路由拓扑无组自适应路由可保持数据包序列多路由拓扑无法保证。②核心参数定义CCSDS 数据包遵循 CCSDS 133.0-B-1 标准为协议服务数据单元。数据包长度最小 7 字节最大 65542 字节项目可自定义任务级最大长度。状态码用于标识数据包有效性取值0x00数据包正常0x01以数据包结束符EEP终止到达0x02保留字段非零目标地址包含目标 SpaceWire 路径地址、目标逻辑地址默认值 254/0xFE目标可支持多逻辑地址。用户应用值8 位自定义字段可用于虚拟通道标识等用户专属用途。③CCSDS数据包格式字段结构与顺序空间数据包必须包含两个连续的必选字段顺序固定数据包主包头Packet Primary Header固定长度为 6 字节是所有空间数据包的必备头部。数据包数据域Packet Data Field长度为 1~65536 字节承载业务数据。总长度约束单个空间数据包的总长度主包头 数据域必须满足最小长度7 字节6 字节包头 1 字节数据域最大长度65542 字节6 字节包头 65536 字节数据域空闲包Idle Packet特殊说明当数据包的应用进程标识符APID为保留值且数据域填充为项目指定的空闲模式时该包被称为空闲包。空闲包由遥测TM、高级在轨系统AOS、统一空间数据链路协议USLP等协议按需生成用于维持数据传输过程的同步。1数据包主包头4、典型应用①路由器采用IP核或专用芯片实现协议栈与数据包路由功能提供两类接口与节点或其他路由器连接的链路接口与主机系统连接的主机接口②节点采用IP核或专用芯片实现协议栈及数据包的源起与接收功能提供两类接口与路由器或其他节点连接的链路接口与内部控制器如CPU、FPGA逻辑连接的控制器接口③链路物理介质使用SpaceWire专用电缆与接插件统一采用9芯插座/插针设备端为插座电缆端为插针电缆按接点3互连方式连接。为保证传输可靠性链路两端设备必须良好共地。