SpaceWire原理及介绍
spacewire特点
SpaceWire 总线具有高速、全双工、点对点、串行传输的特点。它由欧洲航 空局(European Space Agency,简称 ESA)联合欧洲航空公司等共同发起,由 Dundee 大学制定,以 IEEE-1355 接口标准为基础并结合低电压差分技术(Low Voltage Differential Signaling,简称 LVDS)提出了该协议标准。
目的:
-
促进高性能星载数据处理系统的构建。
-
帮助降低系统集成成本。
-
提高数据处理设备和子系统之间的兼容性。
-
鼓励在多个不同任务中重复使用数据处理设备。
优势:
-
低复杂度且易实现:接口可在约 5000 - 8000 个逻辑门中实现,可与应用逻辑或微型计算机集成在 FPGA 或 ASIC 中;采用数据 - 选通编码,无需锁相环,对偏斜有良好耐受性。
-
物理特性良好:双向,每方向使用两对双绞线,物理层采用 LVDS,可在单芯片上实现完整设备,具有容错特性。
-
高效的分组交换网络:采用虫洞路由交换机,减少路由交换机中所需的缓冲存储器;网络拓扑无限制,可使用组自适应路由实现链路带宽共享或容错;支持向网络所有节点分配时间信息,分辨率可达几微秒。
spacewire介绍
SpaceWire 总线协议是一种高速、全双工、点对点的串行传输 总线。该协议标准总共包含物理层(Physical Level)、信号层(Signal Level)、 字符层(Character Level)、交换层(Exchange Level)、信息包层(Packet Level)、 网络层(Networks Level)六个协议层。
名称 | 介绍 |
---|---|
物理层 | 提供物理接口 |
信号层 | 基本描述LVDS/DS编码技术/传输波特率等方面 |
字符层 | 描述字符定义、校验方式和控制器接口。分为数据字符与控制字符 |
交换层 | 负责在两节点之间建立连接和控制它们之间的数据流 |
信息包层 | 包括了数据由本地向对方节点发送中需要定义的包格式 |
网络层 | 包括了总线路由器、总线节点和整个节点 网络的定义 |
SpaceWire的FPGA实现
整体结构说明
-
AHB Master:作为AHB读写需求的主机来负责将读写需求转化为AHB协议规范发送出去。
-
Packet Ctrl:负责读写数据包的请求产生、相关信息和状态的产生以及相应的 CRC 校验。
-
Glue:主要负责寄存器与子模块间的跨时钟异步握手,包括配置寄存器以及相应的状态寄存器和中断信号。
-
APB Config:APB 接口寄存器配置接口,为相关参数配置、状态读取以及中 断产生提供接口。
-
SpaceWire Codec:SpaceWire 的链路节点,负责 SpaceWire 链路建立、数据接收与发送。
-
Loop Generic:主要负责LVDS 环回测试的信号产生以及相关信号接收校验。
-
LVDS:该模块负责数字信号/低压差分信号之间的相互转换,以符合协议信号层规范。
SpaceWire 模块工作流程
子模块 CODEC
CODEC模块主要实现了SpaceWire链路接口,负责对端节点的握手,并将待发送数据(数据包以及Time-Code)以符合 SpaceWire 的编码方式发送出去,同时 也将接收到的数据中的有效数据(数据包以及 Time-Code)恢复出来。它主要由 发送机、接收机和主状态机三部分组成。
SpaceWire 推荐的 CODEC 内部逻辑框图
CODEC中的TRANSMITTER设计
发送机TRANSMITTER 主要实现了SpaceWire 数据的发送,负责数据的编码 工作、接收主机系统的传输命令以及内部状态的状态控制,同时发送相应的数据。
RECEIVER 设计
接收机RECEIVER 主要实现了SpaceWire 数据的接收,负责时钟恢复、数据译码,输出相应的数据和状态。
FSM设计
一共包含 ErrorReset、ErrorWait、Ready、Started、 Connecting、Run 六个工作状态,协议规定转换顺序有且只有这一种。
其他
控制字符
-
FCT(Flow Control Token)
-
作用:用于流量控制,通知接收方发送方的数据传输能力和接收方的接收能力,以确保数据的稳定传输。
-
发送时机
-
发送方:当发送方的发送缓冲区中有数据准备发送,并且接收方的接收缓冲区有足够的空间来接收数据时,发送方会发送 FCT。具体来说,发送方根据接收方通过 FCT 请求的空间大小,来决定发送的数据量。例如,如果接收方通过 FCT 请求发送方发送 8 个更多的 N - Char(正常字符,包括数据字符、EOP 或 EEP),那么发送方就会发送相应数量的数据。
-
接收方:接收方通过接收 FCT 来了解发送方的发送能力和自己的接收能力,以便进行流量控制。当接收方的接收缓冲区有足够的空间时,会发送 FCT 给发送方,请求发送数据。
-
-
接收时机
-
发送方:发送方在接收到接收方发送的 FCT 后,会根据 FCT 中指示的空间大小来发送数据。
-
接收方:接收方在接收数据的过程中,如果接收缓冲区已满,会停止接收数据,并发送 FCT 给发送方,通知发送方暂停发送数据,直到接收缓冲区有足够的空间为止。
-
-
-
EOP(End of Packet)
-
作用:表示数据包的结束,用于标记一个数据包的传输结束。
-
发送时机
-
发送方:当发送方完成一个数据包的发送时,会在数据包的最后发送 EOP 字符。
-
-
接收时机
-
接收方:接收方在接收数据时,当接收到 EOP 字符时,会知道当前数据包已经结束,开始处理下一个数据包。
-
-
-
EEP(Error End of Packet)
-
作用:表示数据包的异常结束,当数据包在传输过程中出现错误时,会使用 EEP 来终止数据包的传输。
-
发送时机
-
发送方:如果在数据包传输过程中检测到错误,发送方会在数据包中插入 EEP 字符来标记数据包的异常结束。
-
-
接收时机
-
接收方:接收方在接收数据时,如果接收到 EEP 字符,会知道当前数据包出现了错误,可能是数据损坏或传输中断等原因导致的。接收方会根据具体情况进行相应的处理,例如重新请求发送数据包或采取其他错误恢复措施。
-
-
-
ESC(Escape)
-
作用:用于转义控制,在特定情况下,用于表示特殊的控制字符或操作。
-
发送时机
-
发送方:根据协议规定,在需要发送特定的控制字符或进行特殊操作时,发送方会发送 ESC 字符。
-
-
接收时机
-
接收方:接收方在接收数据时,会根据协议规定来处理 ESC 字符。例如,当接收方接收到 ESC 字符后,会根据后续的字符来确定是否进行特殊操作,如形成更长的控制代码或执行其他特殊功能。
-
-
总结:FCT 用于通知收发双方数据传输和接收能力以确保稳定传输,发送方在接收方有空间且自身有数据时、接收方在缓冲区有空间时发送或接收;EOP 表示数据包结束,发送方完成数据包发送时发送,接收方收到该字符知数据包结束;EEP 表示数据包异常结束(如奇校验错误),发送方检测到错误时发送,接收方收到知数据包出错;ESC 是转义符用于转义控制,发送方按协议规定需特殊操作时发送,接收方按规定处理。
参考文献
[1] 李政.基于SpaceWire协议的IP核设计与UVM验证[D].湖南大学,2019.DOI:10.27135/d.cnki.ghudu.2019.000703.
[2] SpaceWire User’s Guide (star-dundee.com)
[3] 邹萌,飞海东,王兴友,等.高速SpaceWire总线电路设计与验证[C]//中国航天电子技术研究院科学技术委员会.中国航天电子技术研究院科学技术委员会2020年学术年会论文集.北京微电子技术研究所;,2020:6.DOI:10.26914/c.cnkihy.2020.036732.