自学内容网 自学内容网

SpaceWire原理介绍及FPGA实现

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)六个协议层。

image-20241009191836311

名称介绍
物理层提供物理接口
信号层基本描述LVDS/DS编码技术/传输波特率等方面
字符层描述字符定义、校验方式和控制器接口。分为数据字符与控制字符
交换层负责在两节点之间建立连接和控制它们之间的数据流
信息包层包括了数据由本地向对方节点发送中需要定义的包格式
网络层包括了总线路由器、总线节点和整个节点 网络的定义

SpaceWire的FPGA实现

整体结构说明

image-20241010092741816

  • AHB Master:作为AHB读写需求的主机来负责将读写需求转化为AHB协议规范发送出去。

  • Packet Ctrl:负责读写数据包的请求产生、相关信息和状态的产生以及相应的 CRC 校验。

  • Glue:主要负责寄存器与子模块间的跨时钟异步握手,包括配置寄存器以及相应的状态寄存器和中断信号。

  • APB Config:APB 接口寄存器配置接口,为相关参数配置、状态读取以及中 断产生提供接口。

  • SpaceWire Codec:SpaceWire 的链路节点,负责 SpaceWire 链路建立、数据接收与发送。

  • Loop Generic:主要负责LVDS 环回测试的信号产生以及相关信号接收校验。

  • LVDS:该模块负责数字信号/低压差分信号之间的相互转换,以符合协议信号层规范。

image-20241010092939594

SpaceWire 模块工作流程

子模块 CODEC

CODEC模块主要实现了SpaceWire链路接口,负责对端节点的握手,并将待发送数据(数据包以及Time-Code)以符合 SpaceWire 的编码方式发送出去,同时 也将接收到的数据中的有效数据(数据包以及 Time-Code)恢复出来。它主要由 发送机、接收机和主状态机三部分组成。

image-20241010092512574

SpaceWire 推荐的 CODEC 内部逻辑框图

CODEC中的TRANSMITTER设计

发送机TRANSMITTER 主要实现了SpaceWire 数据的发送,负责数据的编码 工作、接收主机系统的传输命令以及内部状态的状态控制,同时发送相应的数据。

image-20241010093156287

RECEIVER 设计

接收机RECEIVER 主要实现了SpaceWire 数据的接收,负责时钟恢复、数据译码,输出相应的数据和状态。

image-20241010093450472

FSM设计

image-20241010094715783

一共包含 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 是转义符用于转义控制,发送方按协议规定需特殊操作时发送,接收方按规定处理。

image-20241010200956394

参考文献

[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.


原文地址:https://blog.csdn.net/qq_28455081/article/details/142816532

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!