27、时间触发以太网控制器的硬件实现

时间触发以太网控制器的硬件实现

1. 引言

在分布式实时系统中,信息的时间准确性区间受全局时间视图精度的影响。而分布式时基的精度又取决于网络中消息传输延迟的抖动以及通信协议。一个可预测的实时通信系统必须保证消息在恒定的传输延迟和有界的抖动内传输。由于以太网的开放性,在使用标准以太网网络的系统中,很难保证有界的传输延迟。

消息在网络上的传输时长取决于网络流量的特性,可分为两种不同的场景:合作发送者和竞争发送者。在标准以太网中,发送者是竞争关系,可能会出现两个或多个消息同时发送给单个接收者的情况。解决这种冲突有两种方法:向发送者进行背压流量控制(这是基于总线的“老式以太网”的选择)或在网络中存储消息(这是交换式以太网的选择)。但这两种方法都会增加消息传输的抖动,从实时性能的角度来看并不理想。因此,在实时系统中,发送者必须合作以避免消息传输冲突。

本文介绍了一种时间触发以太网通信控制器(TTE 控制器)的 VHDL 模块设计,该模块可应用于可编程片上系统(SOPC),并展示了使用定制硬件板的 TTE 控制器原型实现。

2. 时间触发以太网

时间触发以太网(TT Ethernet)系统由一组通过特定交换机(TT 以太网交换机)互连的节点组成。节点可以是标准以太网节点或 TT 以太网节点。标准以太网节点由商用现货(COTS)以太网控制器和仅传输标准以太网消息的主机计算机组成。TT 以太网节点由执行 TT 以太网协议的 TT 以太网通信控制器和执行分布式(实时)应用程序一个或多个线程的主机计算机组成。

TT 以太网允许竞争发送者(标准以太网节点)与合作发送者(TT 以太网节点)在同一网络中共存,同时保持合作发送者之间流量的时间可预测性。为了将竞争流量无缝集成到同一网络中而不干扰合作流量,TT 以太网使用标准化的以太网帧格式引入了两种消息类:
- 标准以太网消息:用于竞争发送者的事件触发(ET)流量。
- 时间触发(TT)消息:在合作发送者之间传输。

标准以太网消息在不需要通信介质传输时间触发消息的时间间隔内传输。为了避免标准以太网流量影响时间触发流量的时间特性,TT 以太网交换机抢占处于时间触发消息传输路径上的所有标准以太网消息。这种抢占机制允许以恒定的传输延迟传输 TT 消息。所有 ET 消息都存储在 TT 以太网交换机中,被抢占的 ET 消息在 TT 消息传输完成后由交换机自动重新传输。如果由于缓冲区内存溢出,TT 以太网交换机必须丢弃一条 ET 消息,则由发送节点的上层协议重新传输该消息。TT 消息不在网络中存储。

TT 以太网有两种变体:标准 TT 以太网和安全关键 TT 以太网。安全关键 TT 以太网基于标准 TT 以太网,但进行了一些增强,以确保能够容忍集群中某个设备的任意故障。这使得 TT 以太网适用于各种应用场景,从多媒体应用、工业自动化到汽车和航空领域的线控系统等安全关键应用。本文介绍的 TT 以太网通信控制器旨在用于标准 TT 以太网系统。

3. TT 以太网控制器设计

TT 以太网节点由 TT 以太网控制器和主机计算机组成。主机计算机与 TT 以太网控制器之间的数据交换接口称为通信网络接口(CNI),它实现为双端口内存,作为主机和通信控制器之间的时间防火墙。

TT 以太网控制器的设计包括以下部分:
- 发送器模块
- 接收器模块
- 定时器模块
- 配置模块
- 控制模块

3.1 控制模块

控制模块协调处理 TT 消息的不同组件的功能。主机可以在任何时间启用 ET 消息处理,而不受控制模块状态的影响。控制器的内部状态与 TT 以太网协议规范中指定的协议状态之一相等。

控制器有两种可能的启动场景:
1. 时钟速率主节点 :如果控制器被配置为时钟速率主节点,它会等待一段时间以接收传入的同步消息。如果接收到同步消息,则另一个控制器作为主速率主节点,该控制器必须作为备份速率主节点,将其时钟同步到主速率主节点,直到主速率主节点出现故障。如果在启动时没有接收到同步消息,该控制器将成为主速率主节点,然后开始按照配置发送 TT 消息,从同步消息开始。
2. 计时节点 :如果控制器被配置为计时节点,它会将其本地时间调整为速率主节点的时钟。在启动时,控制器会等待直到接收到足够的同步消息,以便同步本地时间。如果达到一定的精度,控制器将开始按照配置发送 TT 消息。

3.2 配置模块

配置模块由两个组件组成:配置寄存器和消息描述符列表(MEDL)内存。
- 配置寄存器 :是静态的,在启用控制器的消息传输之前由主机设置。在运行时,主机可以访问几个只读状态寄存器,以了解当前控制器的运行状态。
- MEDL 内存 :每个数据包的调度信息存储在 MEDL 内存中。有一个用于接收消息的 MEDL 内存和一个用于发送消息的 MEDL 内存。MEDL 组织成 16 个链表(TT 以太网支持以 16 种不同周期定期传输消息)。每个 MEDL 记录包含一个 MEDLPTR 条目,用于链接到下一个 MEDL 记录。在每个列表中,条目按传输偏移量升序排序。如果将新条目插入链表,主机必须确保将其插入列表中的正确位置,条目的实际内存位置并不重要。排序不正确的列表会导致严重的调度错误。DMA 机制会自动存储有关实际传输的状态信息,并在实际消息传输完成后获取每个列表的下一个条目。为了并发访问每个链表的下一个消息,控制器内部最多复制 16 个活动 MEDL 条目。

主机将 MEDL 数据存储在双端口 RAM 中。只有具有两个独立端口的内存才允许主机和控制器同时访问 MEDL 数据。但必须确保同一时间只有一方写入单个内存位置。如果启用了消息传输,控制器对 MEDL 有固定的访问模式,因此主机不能随时更改 MEDL 条目。主机必须遵循一个时间表,以确定何时允许修改某个 MEDL 条目。随时允许读取 MEDL 条目,但主机的读取操作不是原子操作,可能会产生不一致的数据。这个问题通过部署非阻塞写入协议来解决。

3.3 TT 数据传输

控制器配置完成后,TT 消息数据传输自动进行。当传输时间到达时,控制器开始传输消息头。同时,控制器的一个 DMA 引擎将数据包的有效负载数据从 CNI 内存传输到内部缓冲区内存。头传输完成后,控制器开始从内部缓冲区读取数据,并在头之后传输,直到缓冲区中的最后一个字节传输完毕。如果发送的字节数超过 59 个,控制器会添加填充字节,直到传输所需的 60 个字节,然后再传输校验和。

校验和在数据发送时实时生成,因此在控制器的 DMA 活动时,主机无法通过更改数据来使预先计算的校验和无效。

TT 以太网区分不同类型的 TT 数据包:TTsync、TTdiag 和 TT 数据消息。TTsync 和 TTdiag 消息与 TT 数据消息的区别在于,只有 TT 数据消息的有效负载数据存储在 CNI 内存中。因此,发送器模块可以在不使用 DMA 机制的情况下实时生成 TTsync 和 TTdiag 消息,这减少了这些消息的处理时间,并允许生成具有最短可能帧间间隔的数据包。

每个数据包的调度信息存储在 MEDL 内存中,调度信息是触发生成器的基础,触发生成器会在每个消息传输时间到达时发出信号。有了这个信号,TX DMA 启动(如果调度的是 TT 数据消息),发送器开始传输数据包。如果整个数据包发送完毕,消息传输的结果会在 MEDL 条目的状态字段中更新,并加载该消息周期的下一个 MEDL 条目。

3.4 TT 数据接收

数据接收与数据传输类似。接收器在检查数据有效性的同时将数据传输到内部缓冲区。由于只有在检查整个数据包并比较帧校验和后才能确定数据的有效性,因此在整个数据包接收完毕后,将数据复制到 CNI 内存的 DMA 才会启动。如果数据包无效,缓冲区中的所有数据将被清除,仅在 CNI 内存中更新状态信息。

接收器对同步消息进行特殊处理。除了内部缓冲区外,有效负载数据的一些内容和接收时间戳也会写入连接到时钟同步接口的 FIFO 缓冲区。

与传输不同,接收需要一个可配置大小的有效窗口,因为集群中的所有节点无法完全同步,这个接收窗口可以对此进行补偿。如果在该窗口范围内接收到消息,则在接收时间方面将其视为有效。如果在接收窗口内没有接收到消息,则与该窗口关联的消息将被视为丢失,并相应地更改其状态。该接收窗口的大小可根据集群中时钟同步的质量进行配置。时钟之间同步得越好,接收窗口的大小就可以配置得越小。

两个 TT 以太网控制器之间由网络引起的消息传输延迟是恒定的,该延迟取决于网络中交换机的数量和电缆的长度。为了简化时钟同步机制,TT 以太网控制器会根据消息传输延迟调整接收到的任何消息的每个时间戳。这些值必须在启用控制器之前由主机进行配置。

3.5 ET 消息处理

如果控制器的 TT 部分启用,ET 数据传输在两个 TT 消息之间的网络空闲时间进行。如果主机禁用了 TT 消息处理,ET 消息可以随时传输。如果主机配置要传输一条 ET 消息,控制器会等待两个调度的 TT 消息之间有足够大的帧间间隔来发送该 ET 消息。如果有多个消息要发送,控制器不会更改 ET 数据包的顺序,这样可以保证接收器不必重新排序数据包。这一点很重要,因为特别是嵌入式节点没有足够的接收缓冲区空间来容纳多个数据包,它们依赖于正确的接收顺序,否则会丢弃所有顺序错误的数据包并请求重新传输,这会浪费网络带宽,因此在本设计中避免了这种情况。

ET 消息的接收过程与 TT 消息接收相同,只是 ET 消息不需要在接收时间窗口内接收。

3.6 定时器模块

定时器模块提供多个计数器,其中一个用于实现可配置的分频器,用于应用速率校正,以将本地时钟的频率调整为集群全局时间的频率。该计数器每个微滴答(Microtick)递减一次,微滴答频率由使用的硬件振荡器定义。每次该计数器达到零,会生成一个脉冲(宏滴答,Macrotick),并使用时钟同步子系统计算的值重新加载。宏滴答脉冲用于递增本地时间计数器。通过更改宏滴答周期的长度,可以调整本地时钟的速率。

定时器模块为时钟同步子系统提供接口。同步算法的实际计算使用 CPU 完成,这样做的优点是算法可以用软件实现,便于对时钟同步算法进行更改。

当接收到 TTsync 消息时,接收器将接收时间戳和消息中包含的定时数据存储到缓冲区中。CPU 子系统可以读取该缓冲区的内容,并使用此信息计算本地时间与要同步的时间之间的差异。它执行时钟状态校正,以补偿实际的时间差异,并计算和应用新的微滴答/宏滴答速率值,以便在接收到下一个 TTsync 消息之前减小时间差异。如果时间差异大于 1 个宏滴答,时钟同步模块将重新启动,并将本地时间设置为从时钟同步消息中获得的时间。

当在一定时间内,时间差异小于宏滴答长度时,本地时钟的速率和时间值将调整为参考时钟,并发出时钟已同步的信号,此时可以启用消息传输。

4. TTE 控制器原型

TTE 控制器卡通过 Cardbus 接口与主机相连,卡的配置和数据区域映射到主机计算机的内存空间。

所有功能都在 FPGA(Altera Cyclone II EP2C35 设备)中实现。以太网 PHY 收发器用于将 FPGA 的 IO 标准转换为以太网物理层标准。2 MB 大小的 SSRAM 内存用于存储实时消息的 CNI 内存以及标准以太网消息的缓冲区空间。非易失性存储器保存 FPGA 的配置数据(FPGA 基于易失性 SRAM 单元,因此上电时需要进行配置)和一些特定于每张卡的配置数据,这些数据用于在网络和主机上识别设备。还实现了一个传感器,用于监控卡的温度,并在过热时关闭系统,以及一个复制保护电路,以防止使用的 IP 被盗用。以太网 PHY 需要 25MHz 振荡器,FPGA 使用 32.768MHz 振荡器。控制器的状态信息由两个双色 LED 显示。

TT 以太网控制器被集成到应用于 FPGA 的 SOPC 系统中。以下是 TT 以太网控制器模块(不包括时钟同步 CPU 和主机接口)的编译结果:
| 项目 | 详情 |
| ---- | ---- |
| 大小 | 18598 个逻辑单元 |
| 内存使用 | 144896 位 |
| 最大微滴答频率 | 70.63 MHz |

5. 实验评估

5.1 硬件设置

硬件设置包括一个 TT 以太网交换机,连接到三个配备 TT 以太网控制器的节点。节点 0 被配置为速率主节点,节点 1 和 2 为计时节点。第四个配备 COTS 以太网控制器并运行 Windows XP 的节点用于生成 ET 数据包。

5.2 最小帧间间隔实验

此实验旨在证明系统能够处理最小帧间间隔为 3 个宏滴答的数据包突发。节点 0 按照以下时间表配置传输数据包,节点 1 接收所有消息。实验期间,节点 2 和 ET 数据包生成节点断开连接。
| 类型 | 长度 | 周期 | 偏移 | 持续时间 |
| ---- | ---- | ---- | ---- | ---- |
| TTsync | 64 字节 | 7.8ms | 0.00µs | 5.80µs |
| TTpM | 666 字节 | 7.8ms | 7.60µs | 54.00µs |
| TTpM | 122 字节 | 7.8ms | 62.94µs | 10.48µs |

上述时间表产生的两个数据消息之间的帧间间隔为 1.34µs,相当于 2.75 个宏滴答。节点 1 上的主机 CPU 配置为监控数据包接收。经过 10000 个传输周期后,节点 1 记录的数据显示每个数据包都正确且按时接收。

5.3 时钟同步实验

此实验涉及将节点内的本地时钟同步到集群的全局时间。使用了简单的主从同步算法。集群由三个 TT 以太网节点组成,其中一个节点配置为速率主节点,以 7.8ms 的周期发送 TTsync 消息。另外两个节点是计时节点,将其本地时钟同步到速率主节点的时钟。

每个节点配置为每个周期至少发送和接收一个数据包,数据消息的传输偏移恒定,周期在实验过程中改变,具体如下:
| 实验运行 | 周期 | 偏移 | 发送者 | 接收者 |
| ---- | ---- | ---- | ---- | ---- |
| 所有实验运行 | 7.8ms | 0 | 节点 0 | 节点 1, 节点 2 |
| 实验运行 (x) 0 - 3 | 61µs - 488µs | 2 - 16 + x | 节点 0 | 节点 1, 节点 2 |
| 实验运行 (x) 0 - 3 | 61µs - 488µs | 2 - 15 + x | 节点 2 | 节点 0, 节点 1 |
| 实验运行 (x) 0 - 3 | 61µs - 488µs | 2 - 15 + x + 2 - 16 + x | 节点 1 | 节点 2 |
| 实验运行 (x) 4 - 15 | 976µs - 2s | 2 - 16 + x + 2 - 23 + x | 节点 0 | 节点 1, 节点 2 |
| 实验运行 (x) 4 - 15 | 976µs - 2s | 2 - 15 + x + 2 - 23 + x | 节点 2 | 节点 0, 节点 1 |
| 实验运行 (x) 4 - 15 | 976µs - 2s | 2 - 15 + x + 2 - 16 + x + 2 - 23 + x | 节点 1 | 节点 2 |

实验重复进行 32 次。第一次运行时,数据消息以 61µs 的周期传输,随后每次运行周期加倍。16 次运行后,启用节点 4(配备 COTS 以太网控制器并运行 Windows XP 的标准 PC 计算机),每 250µs 发送一条长度为 1500 字节的 ET 消息,并将周期重置为 61µs,重复前 16 次运行,启用 ET 流量。

对于每次实验运行,所有节点测量每个消息的接收时间与消息预定到达时间的偏差。由于每个消息只有在预定义的接收窗口内接收才被接受,因此消息的接收时间偏差尤为重要。所有实验运行的最大测量偏差总结如下:
| 节点 | 最早偏差 | 最晚偏差 |
| ---- | ---- | ---- |
| 节点 0(无 ET) | -9µT | 9µT |
| 节点 0(有 ET) | -6µT | 11µT |
| 节点 1(无 ET) | -9µT | 8µT |
| 节点 1(有 ET) | -5µT | 8µT |
| 节点 2(无 ET) | -7µT | 7µT |
| 节点 2(有 ET) | -5µT | 8µT |

测量结果表明,启用 ET 流量时的接收时间偏差与未启用时相同,消息的最大测量接收时间偏差仍低于半个宏滴答(25µT),因此在两个实验中都没有丢失消息。

6. 结论

TT 以太网系统中的节点由主机计算机和通信控制器组成。主机计算机执行一个或多个应用程序任务,而通信控制器负责执行 TT 以太网通信协议。主机和通信控制器通过通信网络接口(CNI)连接。TT 以太网通信控制器可以处理 ET 和 TT 消息。

实现 TT 以太网通信控制器有多种方法:
- 作为主机计算机上运行的附加软件任务。
- 作为运行在专用 CPU 上的软件。
- 作为专用硬件设备。

本文介绍了一种针对硬件实现进行优化的 TT 以太网控制器设计,并开发了原型实现进行评估。

在这项工作中,对由 TT 以太网交换机和多个 TT 以太网节点组成的 TT 以太网系统进行了评估。首先测量了系统可达到的精度,对 TT 以太网规范定义的每个可能的消息传输周期进行了一次实验运行。测量结果显示,最坏情况下的精度为 18µT 或 342 ns。然后在网络中应用 ET 流量重复实验,测量结果相同。

最后一个实验证明了 TT 以太网控制器能够处理最小帧间间隔为 3 个宏滴答的 TT 数据包突发。

通过分析评估实验可以得出结论,采用 TT 以太网机制并精心实现的设计能够提供一个消息传输环境,充分发挥以太网技术的极限,同时仍能支持标准以太网设备,而无需对集群中的任何设备进行更改。

以下是 TTE 控制器设计的 mermaid 流程图:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B(初始化控制器):::process
    B --> C{是否为时钟速率主节点?}:::decision
    C -->|是| D(等待同步消息):::process
    D --> E{收到同步消息?}:::decision
    E -->|是| F(作为备份速率主节点同步时钟):::process
    E -->|否| G(成为主速率主节点发送同步消息):::process
    C -->|否| H(作为计时节点等待同步消息):::process
    H --> I{达到同步精度?}:::decision
    I -->|是| J(开始发送 TT 消息):::process
    F --> J
    G --> J
    J --> K(处理 TT 消息传输):::process
    K --> L(处理 TT 消息接收):::process
    L --> M{是否有 ET 消息?}:::decision
    M -->|是| N(处理 ET 消息传输和接收):::process
    N --> O([结束]):::startend
    M -->|否| O

这个流程图展示了 TTE 控制器从初始化到消息处理的整个过程,包括不同启动场景下的处理逻辑以及 TT 消息和 ET 消息的处理流程。

实验结果分析

从实验结果来看,该 TT 以太网系统展现出了良好的性能。在最小帧间间隔实验中,系统能够处理帧间间隔为 2.75 个宏滴答(接近设定的最小 3 个宏滴答)的数据包突发,且经过 10000 个传输周期,所有数据包都能正确且按时接收,这表明系统在处理高并发数据包时具有较高的稳定性和可靠性。

在时钟同步实验中,无论是启用还是未启用 ET 流量,消息的最大测量接收时间偏差都低于半个宏滴答(25µT),且没有出现消息丢失的情况。这说明 ET 流量的引入并没有对系统的时钟同步性能产生实质性的影响,系统能够在复杂的网络环境下保持稳定的时钟同步,确保消息的可靠传输。

设计优势总结

  • 时间可预测性 :通过引入时间触发机制,TT 以太网能够保证消息在恒定的传输延迟和有界的抖动内传输,为实时应用提供了可靠的时间保障。
  • 兼容性 :支持竞争发送者(标准以太网节点)和合作发送者(TT 以太网节点)在同一网络中共存,同时保持与标准以太网 COTS 组件和现有网络协议的兼容性,无需对现有设备进行大规模改造。
  • 灵活性 :TT 以太网有标准和安全关键两种变体,适用于从多媒体应用到安全关键系统等各种不同的应用场景,具有很强的灵活性和扩展性。
  • 硬件优化 :本文提出的 TT 以太网控制器设计针对硬件实现进行了优化,减少了处理时间,提高了系统的整体性能。

应用前景展望

TT 以太网的这些优势使其在多个领域具有广阔的应用前景:
- 工业自动化 :在工业自动化生产线上,实时性和可靠性是至关重要的。TT 以太网能够确保设备之间的通信及时、准确,提高生产效率和产品质量。
- 汽车和航空领域 :在汽车和航空电子系统中,如线控系统等安全关键应用,TT 以太网的高可靠性和容错能力能够满足系统对安全性和稳定性的严格要求。
- 多媒体应用 :在多媒体数据传输中,TT 以太网能够保证数据的实时性和流畅性,提供高质量的用户体验。

未来研究方向

尽管 TT 以太网已经取得了显著的成果,但仍有一些方面值得进一步研究和改进:
- 算法优化 :进一步优化时钟同步算法和消息调度算法,提高系统的时间精度和资源利用率。
- 容错能力提升 :研究如何进一步增强系统的容错能力,以应对更复杂的故障场景。
- 应用拓展 :探索 TT 以太网在更多领域的应用可能性,如智能家居、物联网等。

总结

TT 以太网作为一种新型的通信系统,通过引入时间触发机制和消息分类,实现了实时和非实时流量在同一网络中的集成,为分布式实时系统提供了一种高效、可靠的通信解决方案。本文介绍的 TT 以太网控制器设计针对硬件实现进行了优化,并通过实验验证了其性能。未来,随着技术的不断发展和应用需求的不断增加,TT 以太网有望在更多领域得到广泛应用。

以下是一个总结 TT 以太网优势的表格:
| 优势 | 描述 |
| ---- | ---- |
| 时间可预测性 | 保证消息在恒定传输延迟和有界抖动内传输 |
| 兼容性 | 支持标准以太网节点和 TT 以太网节点共存,与现有设备和协议兼容 |
| 灵活性 | 有标准和安全关键两种变体,适用于多种应用场景 |
| 硬件优化 | 针对硬件实现优化,提高处理效率 |

下面是一个 mermaid 流程图,展示了 TT 以太网系统的应用前景和未来研究方向:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([TT 以太网系统]):::startend --> B(工业自动化):::process
    A --> C(汽车和航空领域):::process
    A --> D(多媒体应用):::process
    A --> E(智能家居):::process
    A --> F(物联网):::process
    A --> G(算法优化):::process
    A --> H(容错能力提升):::process
    A --> I(应用拓展):::process
    B --> J(提高生产效率):::process
    C --> K(保障安全关键系统):::process
    D --> L(提供高质量体验):::process
    E --> M(实现智能控制):::process
    F --> N(支持万物互联):::process
    G --> O(提高时间精度和资源利用率):::process
    H --> P(应对复杂故障场景):::process
    I --> Q(开拓新应用领域):::process

这个流程图展示了 TT 以太网系统在不同领域的应用前景以及未来的研究方向,为进一步的研究和发展提供了清晰的思路。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值