一、 1553B诞生背景:
1553B总线是MIL-STD-1553总线的简称,MIL-STD-1553总线是时分制命令/响应式多路复用数据总线。主要应用在海陆空等军事装备和航天领域。美国SAE A2K委员会在军方和工业界的支持下于1968年决定开发标准的信号多路传输系统,并于1973年公布了MIL-STD-1553标准,此标准的修订本于1978年公布,即MIL-STD-1553标准,1980年美国空军又对该标准作了局部修改和补充。 我国于1987年颁布了相应的军标GJB289-87<<数字式时分制指令响应型多路传输数据总线>>,并于1997年颁布了新的替换版本GJB289A-97。 相关技术资料 《MIL-STD-1553 Protocol Tutorial》 《GJB289A-97数字式时分制指令响应型多路传输数据总线》
二、 1553B主要特点:
- 双冗余通道设计,两个通道可以自动切换获得冗余容错能力,提高可靠性。
- 实时的可确定性。
三、 1553B基础知识:
总线控制器(BC):对1553B总线的控制和管理,是所有信息传输动作的发起者。任何时刻上只有一个总线控制器,其负责发送命令、参与数据传输、接收状态响应和监测总线系统。 远程终端(RT):对从总线上总线的控制接收到的有效命令作出响应,回送状态字,完成相应动作。每个 RT 最多可以连接 30 个子系统(子系统是指通过 1553B 总线接受数据传输服务的设备或单元)。各个工作单元间不是直接相连, 而是通过变压器耦合到总线上。 这种物理隔离的机制能保证总线或某一设备上的故障或差错不会影响到其他单元的正常工作。 总线监视器(BM或MT):监听和记录总线上的传输命令和数据终端,它受BC控制,不参与任何总线传输。(如今实际使用中,总线监视器包括两种模式,一种是纯MT模式,即仅仅是一个监视终端,不占用终端地址;而另一种是RTMT混合模式( LHB155301芯片称为RT/MMT 组合模式),即自身包换一个远程数据终端,有自己的一个远程终端地址,当监视器收到BC向其终端地址的命令时,作为一个RT设备进行响应,对于所有其他命令,它则作为MT监视器功能)
1553B的接收或发送是针对RT远程终端而言的。
1553B总线传输速率1Mbps(目前国内也用到4Mbps速率),半双工工作方式。
1553B信息流由一串1553B消息构成,1553B消息由命令字(GJB289A-97中叫指令字)、数据字、状态字组成,所有的1553B字都是20bit。每个字都应是:3位同步头+16位数据/命令/状态位 +1位奇偶校验构成。同步和奇偶校验被1553B硬件用来确定1553B信息格式和数据错误的时候。
图 1 GJB-97关于1553B字格式说明
1 命令字(指令字) 命令字(CW)指定远程终端要执行的功能,只有主动总线控制器发送这个字。由同步头、远程终端地址、发送/接收位(T/R)、子地址/方式字段、数据字计数/方式代码字段及奇偶校验位§构成。 远程终端地址:紧跟着同步头后的5 bit(第4-8位)是远程终端地址。每个远程终端被指定一个专用地址,从地址0到十进制地址30均可采用(尽量不要使用地址0作为远程终端专有地址),十进制31为左右远程终端的公用地址,供广播时使用。 发送/接收位(第9位):表示要求远程终端的操作,0表示指定远程终端作接收操作,1表示指定远程终端作发送操作(信息流的方向总是以远程终端的角度出发)。 子地址/方式字段(第10-14位):共五位,用来指定远程终端的子地址(使用十进制1-30),或者用作总线系统进行方式控制时的标记(使用十进制0和31,此时数据字计数/方式代码字段的内容为方式代码)。 数据字计数/方式代码字段: 该字段(第15-19位):共5位用来指定远程终端应发送、应接收的数据字的个数或者方式代码。在任何一条消息内最多可以发送或者接收32个数据字,全1表示十进制31,全0表示十进制计数32. 奇偶校验位: 命令字的最后一位用作前16位的奇偶校验,采用的是奇校验。 方式控制说明:当系统进入方式控制时,由总线发出的命令字中的子地址/方式字段必须是0或者31,且紧跟着数据字计数/方式代码字段就是5位方式代码。它们仅用于同总线系统有关硬件通信和用于信息流的管理,而不用于从子系统提取数据或者向子系统传送数据域。在方式代码指令中,相应的发送/接收位的分配、数据字的有无、广播与否均应按照规定表1使用。
2 数据字 数据字由同步头、数据字段和奇偶校验位组成。 3 状态字 状态字只能由RT发出,它的内容代表是RT对BC发出的有效命令的反馈。
- 远程终端地址:表示正在发送状态字的是哪个远程终端的地址
- 消息差错位:表示远程终端收到的消息,有一个字或多个字没有通过有效性测试(电平信号、奇偶校验错误、无效协议等),1表示消息有差错,0表示消息正常。
- 测试手段位:可选位,用于测试。
- 服务请求位:可选位,为1时表示本远程终端有服务请求,要求总线控制器启动与本远程终端或子系统有关的预操作。
- 保留状态位:状态字的12 ,13 ,14位是保留状态位,应置位为0,保留使用。
- 广播指令接收位:置1时表示本远程终端接收到的上一有效指令字是广播(注意,表示的是上一条消息状态,因为广播消息本身不回状态字,而非当前消息的状态)。当收到一个有效的广播后,远程终端停止状态字的发送并且将该位置1,BC可以通过执行发送状态字或者发送上依稀状态字模式指令来检查终端是否收到广播消息。
- 忙位:状态字的第15位,为1表示远程终端处在忙状态,表示它不能按照总线控制器的指令要求将数据移入子系统或从子系统取出数据。如果远程终端在响应发送指令时置忙,那么只发出它的状态字。
- 子系统标志位:可选位,用来向总线控制器指出存在子系统故障状态,且警告总线控制器本远程终端提供的数据可能无效(一个远程终端可能包含多个子系统,共同使用一个RT地址构成远程终端)。
- 动态总线控制接受位:可选位,若置1表示本远程终端接收动态总线控制的授命,0表示不接受。
- 终端标志位:状态字的第19位留作终端标志功能,逻辑为1表示本远程终端内部存在故障,请求总线控制器干预,逻辑0表示不存在故障,为可选位。
综上,消息差错位用于检查RT收到的数据是否有问题,终端标志位用来表征自身终端是否存在故障,这两个状态位表征故障状态。
四、 1553B消息格式:
模式(方式)码由标准定义,为总线控制器提供数据总线管理和错误处理/恢复能力,T/R位决定数据字是由远程终端传输还是接收。 1 总线控制器向远程终端的数据传输 总线控制器发出一个接收命令字及规定数目的数据字到远程终端,远程终端在核实消息之后,应发回一个状态字给控制器。其中,命令字和数据字之间以没有字间间隔的连续形式发出。 2 远程终端向总线控制器的数据传输 总线控制器向远程终端发出一个发送命令字,远程终端在核实命令字后,应发回一个状态字给总线控制器,继之以规定数目的数据字。其中,状态字与数据字之间以没有字间隔的连续形式发出。 3 远程终端向远程终端的数据传输 略。
4 不带数据字的方式指令 总线控制器使用表1规定的方式代码向远程终端发送一个发送命令字,该远程终端在核实指令字后,回送一个状态字。 5 带数据字的方式指令(发送) 总线控制器应使用表1中规定的方式代码向远程终端发送一个发送命令字,该远程终端在核实指令字后,回送一个状态字,继之以一个数据字。状态字和数据字应以没有字间间隔的连续形式发送。
6 带数据字的方式指令(接收) 总线控制器应使用表1中规定的方式代码向远程终端发送一个命令字,继之发送一个数据字。命令字和数据字之间应以没有字间隔的连续形式发送。该远程终端在核实命令字和数据字之后,回送一个状态字。
7 广播: 广播包括总线控制器向远程终端的数据广播传输,远程终端向远程终端的广播传输,总线控制器不带数据字的方式指令广播、总线控制器带数据字的方式指令广播。需要注意的是,远程终端对于广播是不回复状态字的,没有广播应答,因此不存在远程终端向总线控制器的广播数据传输和远程终端向总线控制器的方式指令回复。 ? 总线控制器向远程终端的数据广播: 总线控制器发出一个远程终端地址为十进制31的接收命令字,继之以规定数目的数据字。命令字与数据字之间没有字间隔的连续形式发送。具有接收广播能力的远程终端在核实消息后,将状态字中的广播指令接收位置位,但不回状态字。 ? 远程终端向远程终端的广播传输 略。 ? 总线控制器不带数据字的方式指令广播 总线控制器发出一个远程终端地址为十进制31含有方式代码(子地址为0或31)的发送命令字(参见表1注意用的是发送命令字),具有接收广播能力的远程终端在核实消息后,将状态字中的广播指令接收位置位,但不回状态字。 ? 总线控制器带数据字的方式指令广播 总线控制器发出一个远程终端地址为十进制31含有方式代码(子地址为0或31)的接收命令字,继之以发送一个数据字。指令字与数据字之间以没有字间隔的连续形式发送。具有接收广播能力的远程终端在核实消息后,将状态字中的广播指令接收位置位,但不回状态字。
带数据字的方式指令广播只有单向总线控制器向远程终端的,没有反向的。
五、 实时性:
1553B的一条消息是指包括命令字、数据字和状态字的整个流程,有三个重要时间信息。 消息时间间隔:最小4us。 响应时间:表示终端响应有效命令字(开始回复状态字)的时间间隔,为4.0us -12us。该时间为从状态字之前的最后一个字的最后一位的中间过零点到状态字同步头中间过零点的时间。
The standard states that a remote terminal, upon validation of a transmit command word or a receive message (command word and all data words) shall transmit its status word to the bus controller. The response time is the amount of time the terminal has to transmit its status word. To allow for accurate measurements, the time frame is measured from the mid-crossing of the parity bit of the command word to the mid-crossing of the sync field of the status word. The minimum time is 4.0 microseconds; the maximum time is 12.0 microseconds. However, the actual amount of “dead time” on the bus is 2 to 10 microseconds, since half of the parity and sync waveforms are being transmitted during the measured time frame. It is important to remember this when calculating bus loading 响应超时时间:最小超时时间不同IP核不同,属于BC端可配置值。常见的有18.5us、14us等,应做超时处理。(该标准还指定总线控制器必须等待的最小值14.0微秒的状态字响应之前,确定终端已失败响应。在使用长数据总线或存在其他特殊条件的应用程序中,可能需要将此时间延长到20.0微秒或更高The standard also specifies that the bus controller must wait a minimum of 14.0 microseconds for a status word response before determining that a terminal has failed to respond. In applications where long data buses are used or where other special conditions exist, it may be necessary to extend this time to 20.0 microseconds or greater)
六、 总线负载率:
对于1553B这种多路复用系统,MIL-HDBK-1553A建议在系统设计时使用40%的负载,在部署时使用60%的负载。额外的时间用于系统增长(添加新系统,这是开始使用多路系统的原因之一)和错误恢复消息。比如数据总线加载了60%,并且每个消息都收到了一个错误,则错误处理将超过100%的可用时间,从而导致系统出现问题。 总线负载率是发送消息所需的时间(总线被占用的时间)与可用的总时间的百分比,表6一个简单的总结可以用下面信息计算:
在计算加载时,一定要使用实际的响应时间和实际的消息间隔时间。 例1: 总线控制器消息间隔为50us,消息响应时间为8us,BC发送一个28个字的接收命令所用时间为多少,如果是5ms中唯一的消息,总线负载率是多少? 答:消息占用总线时间=(命令字+状态字+数据字)*20+响应时间+消息间隔= (1+1+28)*20+8+50 = 658us,总线负载率 = 658us/5000us = 13.16%。 实际运用过程中,可能涉及到AB总线故障重试问题,计算方法相对要麻烦一些: 例2: 某5ms为运行周期1553B通信中,一条15个数据字的总线接收命令,RT响应时间实测为5us,BC等待超时起判时间为10us(即BC发送命令字或数据字结束后10us后开始判定是否超时),响应超时时间IP核设置为18,5us,请问总线总位时和负载率为多少? 如果不考虑发生总线重试: 总位时 = (命令字+数据字+状态字)*20+实测响应时间 = (1+1+15)*20 +5 = 345us. 总线负载率 = 345us/5000 = 6.9% 如果发生总线重试: 总位时 = (命令字+数据字+状态字)*20 + 超时起判时间+响应超时时间 + (命令字+数据字+状态字)*20+实测响应时间 = 340 +10+18.5+345 = 713.5us。 总线负载率 = 713.5/5000 = 14.27% 例3: 某5ms为运行周期1553B通信中,一条15个数据字的总线接收命令和一条5个数据字的总线接收命令,RT响应时间实测为5us,BC等待超时起判时间为10us(即BC发送命令字或数据字结束后10us后开始判定是否超时),响应超时时间IP核设置为18,5us,请问总线总位时和负载率为多少? 如果不考虑发生总线重试: 总位时 = (命令字1+数据字1+状态字1)*20+实测响应时间1 +(命令字2+数据字2+状态字2)*20+实测响应时间2 = (1+1+15)*20 +5 +(1+1+5)*20 +5= 345us+145us = 490us. 总线负载率 = 345us/5000 = 9.8% 如果都发生总线重试,最大负载率和位时: 总位时 = (命令字+数据字+状态字)*20 + 超时起判时间+响应超时时间 + (命令字+数据字+状态字)*20+实测响应时间 = 713.5us + 140+28.5+145us。 总线负载率 = 713.5/5000 = 14.27%
七、 国内1553B控制器:
协议实际上基于DDC公司的61580芯片而来,目前国内仿真也都是在协议基础上模仿61580芯片进行设计。比如771所的 LHB155301 型 1553B 总线控制器作为一款核心技术全国产化的智能通讯引擎,完整地实现了 1553B Notice II 协议的内容,采用了和 DDC 公司的 BU-61580S6 全兼容的软件界面和封装形式。 LHB155301特点: BC:可编程的间隔时间;可编程的响应超时; RT:RT状态字的消息差错位到终端标志位的11位可由软件控制,但是如果有非法的指令字,RT状态字的消息差错位也会置1。 1 广播和非广播数据可配置是否存储相同区域:可软件配置将同一子地址广播接收消息和非广播接收消息存在相同的区域或者分别存储在各自的存储区域。 2 增加了增强模式:相对于非增强模式,增强模式增加的功能有: BC 模式下,如果增强模式使能,相对于非增强模式增加的功能有:扩展的 BC 控制字和扩展的 BC 块状态字、错误停止和状态置位停止功能、帧自动重发功能、消息间隔时间可编程、自动重试、扩展的状态字屏蔽、在选择的消息后产生一个中断等功能。(其中,控制字是不再1553B总线上传输,用来配置当前消息的控制信息比如消息错误屏蔽、使能重发、选择A还是B总线等配置;同样BC块状态字也不再总线上传输,但是却可以表征RT状态字错误在内的格式错误(表示 RT 状态字的地址域错或当前消息(存在一个或多个错误)不满足 1553B 总线消息的有效性检查,包括: 同步头错误、编码错误、奇偶校验位错误、位计数错误或字计数错误等)、响应超时(BC 没有在规定时间内接收到 RT 的响应)和回写测试失败(该位有效至少表示了 LHB155301 的发送与接收部分发生了故障)等错误状态,BC块状态字完全可以覆盖检查RT状态字的消息状态) RT 模式下,如果增强模式使能,相对于非增强模式增加的功能有: RT/MMT 组合模式、接收子地址双缓冲、 RT 状态字全部可控制、忙表等功能。 MT 模式下,如果增强模式使能,相对于非增强模式增加的功能有: WMT 模式下的触发功能、 MMT 模式、 RT/MMT 组合模式,其中在 RT/MMT 组合模式下, LHB155301 将成为一个复合终端,既可作为 RT 使用,也可以作为 MMT 工作。当指令字的 RT 地址与复合终端的 RT 地址匹配时, LHB155301作为 RT 响应指令,否则作为 MMT 监视总线上传输的其他消息。 3 BC重试功能: 寄存器配置支持当BC判定响应超时或者RT状态字格式错误(包括 RT 状态字地址错、无效字、同步头类型错、字计数错等)或者RT状态字的消息错位位”1”时,可以实现BC自动重试。重试可以通过配置寄存器选择是重试选择不同总线或是使用相同的总线。 4 响应超时时间: 响应超时时间可配置为18,5、22.5、50.5、130us四种。
八、 BUsTraEr软件使用:
BUsTraEr是DDC公司生产的一个用来监听1553B数据或者模拟1553B数据发送或接收的图形化上位机软件。这里主要讲下如何使用其模拟作为BC发送1553B数据的发送,其实认真看下用户手册相信你也能知道怎么操作。 DDC使用Major和Minor帧的术语来创建MIL-STD-1553B消息。在Minor Frame中编译多个1553消息。然后在一个Major帧中编译多个Minor帧。 看看数据手册提供的图,应该可以清除的看懂其关系: 即当我们构造1553B消息时,消息类型以End of Major消息结束,不同Minor之间以End of Minor消息结尾。因为Minor Frame Time是可以配置的,因此可以用来构造指定时间间隔的不同消息。 例:模拟1553B的BC向某指定RT地址先发送一条接收消息,1s后再发送一条发送消息。 如下图:我们按照以End of Major消息结束,不同Minor之间以End of Minor消息结尾,Minor Frame Time配置为1s 运行后可看到两条消息间隔为1s(1000002us).
|