3、时间敏感网络(TSN)概述:TSN家族、802.1Qav在TSN中的角色、与其他子标准的关系
时间敏感网络(Time-Sensitive Networking, TSN)是IEEE 802.1工作组制定的一套用于在标准以太网上实现确定性通信的协议族。TSN并非单一标准,而是一组相互协作的子标准,它们共同解决了传统以太网在实时性、带宽预留和时间同步方面的不足。对于FPGA工程师而言,理解TSN的整体架构和802.1Qav在其中的定位,是进行硬件逻辑设计的前提——因为FPGA实现的是MAC层与MAC控制子层的功能,而不同TSN子标准对MAC层的修改点各不相同,错误的优先级判断或门控逻辑设计将直接导致流量调度失效。
上图展示了TSN子标准家族的核心架构。可以看到,802.1AS时间同步是所有TSN功能的基础,而802.1Qav(信用整形)、802.1Qbv(时间感知整形)和802.1Qbu(帧抢占)则分别从带宽保障、时分复用和优先级打断三个维度实现确定性传输。FPGA工程师需要理解的是:这些标准并非孤立工作,而是在MAC层内部相互协作,共同构成完整的TSN解决方案。
3.1 TSN家族全景:从时间同步到流量调度
核心原理:TSN标准族可以按功能划分为四个层次:时间同步层、调度与整形层、可靠性层和资源管理层。时间同步层由802.1AS(gPTP)提供全网统一时钟;调度与整形层包括Qav、Qbv、Qbu等,负责决定数据帧何时、以何种速率发送;可靠性层通过802.1CB(FRER,帧复制与消除)实现冗余传输;资源管理层的802.1Qcc负责流预留和网络配置。对于FPGA实现而言,最核心的是调度与整形层,因为这一层的逻辑直接嵌入在MAC发送通道中,需要硬件逻辑以纳秒级精度运行。
| 子标准 | 功能定位 | MAC层改动点 | FPGA资源消耗 |
|---|---|---|---|
| 802.1AS | 时间同步 | 硬件时间戳、PTP报文处理 | 中等(需要高精度计数器) |
| 802.1Qav | 信用整形(CBS) | 每队列信用计数器、发送门控 | 低-中(状态机+算术单元) |
| 802.1Qbv | 时间感知整形(TAS) | GCL表、门控列表执行引擎 | 中-高(需要存储GCL表) |
| 802.1Qbu | 帧抢占 | MAC合并子层、帧分段/重组 | 高(需要额外的FIFO和状态机) |
| 802.1CB | 帧复制与消除 | 序列生成/恢复、流识别 | 高(需要流表存储) |
判断方法:在设计FPGA TSN方案时,首先需要根据应用场景确定需要实现哪些子标准。例如,如果目标是专业音视频传输(AVB),则802.1Qav是核心;如果面向工业运动控制,则802.1Qbv和802.1Qbu更为关键。判断依据是:流量类型(周期性/突发性)、延迟要求(硬实时/软实时)、带宽保障(是否需要预留)。
3.2 802.1Qav在TSN中的核心角色:信用整形(CBS)
核心原理:802.1Qav定义了基于信用的整形算法(Credit-Based Shaper, CBS),其核心思想是为每个SR(Stream Reservation)类流量维护一个信用计数器。当队列中有待发送帧时,信用值以发送速率(sendSlope)增加;当帧被发送时,信用值以补充速率(idleSlope)减少。只有当信用值大于等于0时,帧才允许被发送。这种机制确保了SR类A(优先级6)和SR类B(优先级5)流量能够获得确定的带宽份额,同时不会完全阻塞尽力而为(BE)流量。
关键参数:
- idleSlope:信用值增加速率,等于该类流量预留的带宽(单位:bits/s)
- sendSlope:信用值减少速率,等于端口速率减去idleSlope
- hiCredit:信用值上限,由最大帧大小和sendSlope决定
- loCredit:信用值下限,由最小帧大小和idleSlope决定
FPGA实现要点:在FPGA中实现CBS,需要为每个SR队列配置一个信用计数器(通常使用32位有符号整数),以及两个定时器用于控制信用值的增减。关键设计难点在于:信用值的更新必须与帧发送事件精确同步,且需要处理多个队列同时有帧待发送时的仲裁逻辑。通常采用轮询仲裁或优先级仲裁,但必须保证SR类流量优先于BE流量。
// 信用整形状态机伪代码(Verilog风格)
always @(posedge clk) begin
if (reset) begin
credit <= 0;
state <= IDLE;
end else begin
case (state)
IDLE: if (queue_not_empty && credit >= 0) state = SEND;
SEND: begin
credit <= credit - sendSlope * byte_count;
if (frame_done) state = IDLE;
end
default: if (queue_empty) credit <= credit + idleSlope * elapsed_time;
endcase
end
end
常见误区:初学者常犯的错误是将CBS理解为简单的令牌桶。实际上,CBS的信用值可以为负(当连续发送多个帧时),且信用值的恢复速率(idleSlope)不等于端口速率,而是等于预留带宽。另一个误区是忽略帧间隙(IFG)对信用值的影响——在计算sendSlope时,必须将IFG和前导码计入帧的总传输时间。
3.3 802.1Qav与802.1Qbv、802.1Qbu的协同关系
核心原理:三个子标准解决的是不同层面的调度问题。802.1Qav通过信用机制提供统计复用的带宽保障,适合对延迟抖动要求不极端但需要带宽保证的流量(如音视频);802.1Qbv通过门控列表(GCL)实现时分复用,在特定时间窗口内只允许特定队列发送,适合硬实时周期性流量(如运动控制指令);802.1Qbu则通过帧抢占机制,允许高优先级帧在低优先级帧传输过程中打断,从而降低紧急流量的最大延迟。
| 维度 | 802.1Qav(CBS) | 802.1Qbv(TAS) | 802.1Qbu(抢占) |
|---|---|---|---|
| 调度粒度 | 基于信用值,连续平滑 | 基于时间窗口,离散 | 基于帧边界,事件驱动 |
| 带宽保障 | 统计复用,平均带宽可保证 | 严格时分,带宽完全隔离 | 不直接提供带宽保障 |
| 延迟抖动 | 中等(取决于信用恢复) | 极低(纳秒级确定性) | 低(高优先级可打断) |
| FPGA复杂度 | 低-中 | 中-高 | 高 |
| 典型应用 | AVB音视频流 | 工业控制、车载TSN | 混合流量场景 |
协同工作方式:在实际系统中,这三个标准往往同时启用。例如,在一个车载TSN交换机中,控制流量(如制动指令)通过802.1Qbv的专用时间窗口发送,保证绝对确定性;音视频流通过802.1Qav的信用整形发送,保证带宽;而一些偶发的诊断报文则通过802.1Qbu的抢占机制,在低优先级帧传输间隙插入。FPGA实现时,需要将这些逻辑串联在MAC发送通道中:先经过Qbv门控判断,再经过Qav信用整形,最后通过Qbu抢占控制。
重要提醒:在FPGA中同时实现Qbv和Qav时,必须注意门控窗口与信用值的交互。如果Qbv的门控窗口关闭了SR队列的发送机会,但信用值仍在增加,可能导致信用值溢出(超过hiCredit)。因此,设计时需要将Qbv的门控状态反馈给CBS状态机,在门控关闭期间暂停信用值更新,或采用门控感知的CBS(Gate-Aware CBS)算法。
3.4 案例拆解:车载TSN交换机中Qav与Qbv的联合调度
案例背景:某智能驾驶域控制器需要设计一个4端口TSN交换机,承载三类流量:①摄像头视频流(每路约150Mbps,共2路);②激光雷达点云数据(每帧约2MB,周期10ms);③车辆控制指令(周期1ms,帧长64字节)。要求:控制指令端到端延迟小于100μs,视频流延迟抖动小于50μs。
初始方案与问题:最初设计仅使用802.1Qav进行调度,为视频流和控制指令分别预留带宽。实测发现,当视频流突发时,控制指令的最大延迟达到300μs,超出要求。分析原因:CBS的信用机制虽然保证了平均带宽,但无法避免突发流量对高优先级帧的冲击——当视频流信用值充足时,可能连续发送多个大帧,导致控制指令等待。
优化方案:引入802.1Qbv,将时间划分为1ms的周期,每个周期内设置三个窗口:控制窗口(0-50μs,只允许控制指令队列发送)、视频窗口(50-850μs,允许视频流队列发送)、雷达窗口(850-1000μs,允许点云数据发送)。同时,在视频窗口内启用802.1Qav的信用整形,防止视频流内部的两个摄像头流互相争抢带宽。
FPGA实现细节:
- GCL表存储在Block RAM中,每个周期条目包含:窗口起始时间、窗口时长、各队列门控状态
- CBS模块为每个视频流队列配置独立的信用计数器,idleSlope设为75Mbps(150Mbps/2)
- 控制指令队列不经过CBS,直接由Qbv门控控制
- 在Qbv门控关闭期间,CBS信用值冻结(不增加也不减少),避免信用溢出
结果对比:优化后,控制指令最大延迟降至85μs(满足100μs要求),视频流抖动控制在40μs以内。代价是FPGA逻辑资源增加了约15%(主要用于GCL表存储和门控引擎),且需要精确的802.1AS时间同步(±100ns以内)。
复盘经验:①单独使用Qav无法满足硬实时要求,必须结合Qbv的时分隔离;②Qbv窗口大小需要根据流量周期和帧长精确计算,留出保护带(Guard Band)防止帧跨越窗口边界;③FPGA实现时,GCL表的切换必须与硬件时钟同步,不能依赖软件中断。
3.5 常见误区与设计建议
误区一:认为Qav可以替代Qbv。Qav提供的是统计复用,无法保证绝对延迟上界。对于要求硬实时的控制流量,必须使用Qbv或Qbu。
误区二:忽略帧间隙(IFG)和 preamble 对整形精度的影响。在计算sendSlope和idleSlope时,必须将IFG(12字节)、前导码(8字节)和CRC(4字节)计入帧的总传输时间。否则,实际带宽会低于预期。
误区三:在FPGA中直接使用浮点数计算信用值。CBS的信用值更新需要纳秒级精度,浮点运算延迟大且资源消耗高。建议使用定点数表示,例如将idleSlope和sendSlope乘以2^16后取整,信用值使用32位有符号定点数。
误区四:忽视Qbv与Qav的交互。当Qbv门控关闭时,CBS信用值仍在变化,可能导致门控打开时信用值已超出hiCredit,产生突发发送。必须实现门控感知的CBS。
设计建议:在FPGA架构设计阶段,建议将TSN功能模块化:时间同步模块(802.1AS)、队列管理模块(含CBS)、门控引擎模块(Qbv)、抢占控制模块(Qbu)。各模块之间通过标准AXI-Stream接口连接,便于单独验证和复用。同时,为每个模块设计独立的寄存器配置接口(通常使用AXI-Lite),方便软件动态配置参数。
总结:802.1Qav作为TSN家族中最早成熟的标准,其信用整形机制为AVB音视频传输提供了有效的带宽保障手段。但在现代TSN应用中,它往往与802.1Qbv和802.1Qbu协同工作,共同构建完整的确定性网络。FPGA工程师需要深入理解各标准的原理和交互关系,才能在硬件逻辑设计中做出正确的架构决策。