3. 1553B字格式与消息结构
MIL-STD-1553B 总线上传输的一切信息,最终都被拆解为三种基本“字”(Word):命令字、数据字和状态字。每个字固定为 20 位,在 1 Mbps 的速率下占用 20 μs。理解这三种字的位域定义,是读懂总线波形、编写终端软件、排查通信故障的基础。本节从物理编码讲到位域含义,再串起一条完整消息的结构。
一、物理层编码:曼彻斯特与同步头
1553B 采用曼彻斯特双相电平(Manchester II)编码。每个位周期被一分为二:前半位与后半位电平相反,形成一次跳变。约定“1”为高→低跳变(正跳变在中间),而“0”为低→高跳变。这种编码自带时钟信息,接收端可从跳变沿恢复位同步,且直流分量为零,适合变压器耦合。
每个字的开头有一个 3 位时长的同步头(Sync),它不遵循曼彻斯特编码规则,因此不会与数据位混淆。同步头有两种形态:
- 命令/状态同步头:先高 1.5 位、再低 1.5 位,形如一个“宽高脉冲”,用于命令字和状态字。
- 数据同步头:先低 1.5 位、再高 1.5 位,与前者极性相反,仅用于数据字。
接收端一旦检测到同步头,就能立即判断接下来是命令/状态字还是数据字,并据此对齐后续 16 个数据位和 1 个奇偶位。同步头是字与字之间的“帧界标”,也是解码的第一道判据。
二、三种字的位域定义
同步头之后是 16 个信息位(第 4~19 位),最后是第 20 位的奇偶校验位。三种字共用这 20 位框架,但信息位的含义不同。
命令字(Command Word)由总线控制器(BC)发出,用于指定本次传输。其 16 位信息域划分为:
- 第 4~8 位:远程终端地址(RT Address),5 位,可寻址 0~31。其中 31(全 1)为广播地址,0 通常保留。
- 第 9 位:发送/接收位(T/R)。T/R=1 表示命令 RT 发送(RT→BC),T/R=0 表示命令 RT 接收(BC→RT)。
- 第 10~14 位:子地址(Subaddress),5 位,0~31。0 和 31 有特殊用途(如方式命令),1~30 用于一般数据缓冲。
- 第 15~19 位:数据字计数(Word Count),5 位,表示本次传输的数据字个数,0 表示 32 个字。
数据字(Data Word)承载有效载荷,其 16 位信息域就是数据本身,没有地址或控制字段。数据字使用数据同步头,接收方按命令字中约定的字数依次接收。
状态字(Status Word)由被寻址的 RT 在收到有效命令后返回,用于报告自身状态。其 16 位信息域包含:
- 第 4~8 位:RT 地址,回显自身地址,供 BC 核对。
- 第 9 位:消息错误位(Message Error)。置 1 表示 RT 检测到消息格式或奇偶错误。
- 第 10 位:测试位(Instrumentation),用于区分标准状态字与测试状态字。
- 第 11 位:服务请求位(Service Request),RT 请求 BC 服务。
- 第 12~14 位:保留位,通常置 0。
- 第 15 位:广播命令接收位(Broadcast Command Received)。
- 第 16 位:忙位(Busy),RT 无法接收新命令时置 1。
- 第 17 位:子系统标志位(Subsystem Flag)。
- 第 18 位:动态总线控制接受位(Dynamic Bus Control Acceptance)。
- 第 19 位:终端标志位(Terminal Flag),表示 RT 自身故障。
三、奇偶校验
每个字的第 20 位是奇校验位(Odd Parity)。发送端统计同步头之后 16 个信息位中“1”的个数,若为偶数则奇偶位置 1,使整个 16 位信息域加奇偶位中“1”的总数为奇数。接收端重新计算,若校验失败则丢弃该字,并在状态字中置消息错误位(对 RT 而言)。奇偶校验只能发现奇数个位错误,不能纠错,但实现简单、延迟低,符合 1553B 的实时性要求。
四、消息结构:从命令到状态
一次完整的消息传输由命令字、若干数据字和状态字组成。以 BC 向 RT 发送 2 个数据字为例:BC 先发命令字(T/R=0,地址=某 RT,子地址=某缓冲,字数=2),随后连续发 2 个数据字,RT 接收完毕后回送状态字。若 RT 忙,可在状态字中置忙位,BC 据此重试或延后。
下图以一条“BC→RT 发送 2 个数据字”的消息为例,展示三种字的位域划分、同步头形态与奇偶校验位置,帮助建立从波形到字段的对应关系。
五、实际开发中的观察与判断
在开发或调试 1553B 系统时,通常用总线分析仪抓取波形,再按上述位域逐段解码。判断一条消息是否正常,可按以下顺序检查:
- 同步头形态是否正确:命令/状态字应为“高→低”宽脉冲,数据字应为“低→高”宽脉冲。
- 奇偶校验是否通过:每个字独立校验,失败则说明该字在传输中出错。
- 命令字中的 RT 地址、T/R、子地址、字数是否与预期一致。
- 状态字回显的 RT 地址是否与命令字一致,ME、Busy、TF 等标志位是否异常。
- 数据字个数是否与命令字中的字数一致,数据内容是否符合协议约定。
掌握三种字的位域定义后,后续编写 RT 仿真软件、解析总线日志或设计 BC 调度表时,就能直接按位操作:例如构造命令字时,把 RT 地址左移 11 位、T/R 位左移 10 位、子地址左移 5 位,再与字数按位或,最后计算奇偶位。这种“位域拼装”是 1553B 驱动开发中最常见的底层操作,也是理解消息结构的关键一步。