一种新型1553B备份总线控制器设计与实现
摘 要: 总线控制器是1553B总线的核心,总线控制器出现故障,将导致整个网络瘫痪。工程实践中通过设置备份总线控制器的方法提高总线的可靠性,给出了一种新型备份总线控制器的设计方法,其同时工作于RT模式和MT模式,设置RT地址为x,RTx功能与其他RT功能相同,MT功能可有选择的监控除RTx以外的总线上的任何消息。与RT或MT作为备份总线控制器的传统设计方法相比,RTMT模式作为备份总线控制器在不增加总线负载的情况下满足了新的应用需求,已在工程实践中得到成功应用。
关键词: 1553B总线; 总线控制器; 备份总线控制器; 远程终端; 监控终端
中图分类号: TN876⁃34; TP39 文献标识码: A 文章编号: 1004⁃373X(2013)13⁃0124⁃04
Design and implementation of a new type 1553B backup bus controller
FAN Xiang⁃hui1, ZHAO Gang1, ZHOU Yi⁃fan2
(1. Aeronautics Computing Technique Research Institute, Xi’an 710068, China; 2. Naval Equipment Department, Xi’an 710077, China)
Abstract: The bus controller is the core of 1553B bus. Once the bus controller breaks down, the whole network will be paralyzed. The reliability of the bus is improved by setting backup bus controller in engineering practice. A design method of new type backup bus controller is provided, it can work in RT mode and MT mode simultaneously. Set RT address x, the function of RTx and RT is the same, and the function of MT could selectively monitor any of the messages on the bus except RTx. Compared with the traditional design method of RT and MT as backup bus controller, RTMT mode could satisfy the needs of new application without increasing the bus burthen. The design has been successfully applied in engineering practice.
Keywords: 1553B bus; bus controller; backup bus controller; remote terminal; monitoring terminal
0 引 言
1553B总线是在20世纪70年代末由美国提出的飞机内部电子系统互联的标准,具有灵活性和高可靠性,广泛应用于三代机中[1⁃2]。经过多年的发展和型号应用,1553B软硬件设计技术已经相当成熟,但随着系统性能的提升,系统对1553B总线的性能要求也越来越高,应用模式也发生较大的变化,如何让1553B总线适应新的系统性能要求及新的应用模式是当前研究的热点。
BC是1553B总线消息传输的组织者和发起者,即总线上所有的消息传输都由BC通过发送1553B命令来实现,RT响应BC发送的命令并执行操作。1553B总线是双冗余的传输线,具有A、B两个互为备份的通道,增强了系统的可靠性[3⁃4]。但是,由于总线上只能存在一个BC,一旦BC出现故障,则整个总线将瘫痪。工程实践中通过增加BBC的方法来提升系统的可靠性,殷杰波等人提出了利用RT模式作为BBC的设计方法[1],该RT只接收一条BC的特定消息,通过查询该消息的时间标志寄存器判断在周期内是否收到了该消息,以此判断BC是否工作正常。此设计方法简单有效,一旦BC故障,BBC可以切换为BC模式,进行总线管理与维护。杨卫军等人提出了利用MT模式作为BBC的设计方法[2];以上设计中,BBC仅用于监控BC的工作状态,功能单一。新的应用需求中,BBC需要具备三个功能:监控BC的工作状态、与其他子系统通信、同步获取BC与其他子系统之间的应用数据传输,完成系统应用的同步解算,传统RT或者MT模式作为BBC的设计方法无法满足系统的要求,本文依据某1553B协议芯片,针对新的应用模式,给出了一种BBC工作于RTMT模式的设计方法。
1 1553B应用模式
1553B采用总线型拓扑结构,节点按照功能可以划分为3类[3]:BC、RT及MT,新的应用模式下,接口控制文件定义了应用相关的所有RT⁃BC及BC⁃RT的消息,如图1所示,A系统为主,B系统为备份,A系统主机通过BC负责消息的组织与发送,B系统主机作为备份具有三个功能:
(1)通过BBC监控A系统的运行状态,一旦A系统故障,B系统复位BBC并将其切换为BC,控制整个网络的正常运行;
(2)BBC要能够完成与BC及其他RT的数据通信;
(3)B系统主机需要实时获取ICD文件中定义的所有应用相关的消息,用于同步解算。例如,ICD文件中MSG1为一条RT⁃BC的消息,当BC组织此消息时,A系统主机通过BC获取到该消息,与此同时,B系统也要通过BBC获取到该消息。
在以往设计模式中,如果BBC工作在RT模式,要满足功能(3),必须根据原ICD文件中定义的RT⁃BC及BC⁃RT的消息增加相同数量的RT⁃BBC及BC⁃BBC的消息,会导致消息量倍增,无法保证系统的实时性,甚至超出1553B协议可承载的消息数量;如果BBC工作于MT模式,则无法满足功能(2)。针对新的应用模式,RT功能可以满足条件(1),(2),MT功能则可以满足条件(1),(3),若BBC工作于RTMT模式,某一时刻仅能工作于其中一种工作模式,即作RT时,完成RT功能,MT功能停止,作MT时,有选择的监控总线上的通信数据,RT功能停止,RTMT功能根据总线上消息的类型完成自动切换,如果总线上的消息是与BBC的RT地址相关,则工作于RT模式,如果总线上的消息和BBC的RT地址无关,则工作于MT模式,则可以在不增加消息通信量的条件下满足新的应用模式。依据备份总线控制器工作于RTMT模式的思想,本文基于1553B协议芯片给出了BBC工作于RTMT模式的设计与实现方法,其应用模式如图1所示。
<\\192.168.0.25\$d\8月\8-2\补\补!现代电子技术201313\Image\22t1.tif>
图1 1553B总线应用模式
2 设计与实现
1553B协议芯片内部功能强大,接口灵活、便于控制,可设置为BC、RT、MT及RTMT模式,在需要主机较小干预的情况下,基于RT地址、T/R位及子地址进行选择性消息监控。MT模式包含一个命令栈和一个数据栈,位于共享RAM的固定位置,且与BC或RT的命令栈独立,选择消息监控模式下,协议芯片接收到一个有效命令,根据“选择监控表”(RAM中固定位置)决定是否使能该消息,如果指定的BIT位在“选择监控表”内是0,命令将不被使能,忽略该消息,如果BIT位为1,命令被使能,进入监控命令栈并将数据内容存放到相应的监控数据栈中。
RTMT模式使得协议芯片除了处理和自己RT地址相关的消息外,其余时间用来有选择的监控总线上的数据,其通过一个中断状态队列实现RT模式与MT模式的判断,如图2所示。
<\\192.168.0.25\$d\8月\8-2\补\补!现代电子技术201313\Image\22t2.tif>
图2 RTMT模式中断状态队列
该队列按中断产生的次序记录中断条件和中断事件。中断状态队列为64 B长度,可存储32条监控消息中断。中断状态队列的指针存储在中断向量队列指针寄存器(寄存器地址0x1F)中,该寄存器必须由主机初始化,并由主机累加,中断向量队列指针寄存器始终指向下一个中断的存储地址。每个中断事件产生,协议芯片将2 B写入中断队列,第一个字为中断向量,表明哪一类事件导致了中断。中断事件被分为2类:消息中断事件和非消息中断事件,第二个字为消息描述块指针,指向消息描述块的首地址。
基于以上1553B协议芯片的特点,RTMT功能实现主要包括两部分:相关资源初始化及中断服务处理程序的设计。
2.1 协议芯片初始化
初始化协议芯片由主机完成,主要包括协议芯片固定地址初始化及寄存器初始化,表1给出了在共享RAM为64 KB的硬件环境下,RTMT的资源分配表,其中标明“固定”的表示该地址为1553B协议芯片单独使用,且地址的值不能变更。
表1 RTMT模式共享RAM空间分配表
[地址(Hex)\&描述\&地址(Hex)\&描述\&0000~00FF\&RT命令栈A(256字)\&01C0~023F\&查询表B(固定)\&100\&RT命令栈指针A(固定)\&0240~0247\&忙位查询表(固定)\&101\&保留\&0248~025F\&未用\&102\&MT命令栈指针A(固定)\&0260~027F\&未用\&103\&MT数据栈指针A(固定)\&0280~02FF\&选择监控查询表
(固定)\&104\&栈指针B(固定)\&0300~03FF\&命令非法表(固定)\&105\&保留\&0400~07FF\&MT命令栈A
(1 024 B)\&106\&MT命令栈指针B(固定)\&0800~09FF\&MT数据栈A
(2 048 B)\&107\&MT数据栈指针B(固定)\&1000~103F\&ACE中断队列
(64 B)\&0108~010F\&方式代码选择中断表
(固定)\&6000~7FFF\&RT接收缓冲区\&0110~013F\&方式代码数据(固定)\&8000~9FFF\&RT发送缓冲区\&0140~01BF\&查询表A(固定)\&A000~F000\&MT数据缓冲区\&]
2.1.1 固定地址初始化
RTMT模式中需要初始化的固定地址包括:RT命令栈指针A、监控命令栈指针A、监控数据栈指针A、方式代码选择中断表、方式代码数据、RT查询表A、忙位查询表、选择监控查询表、命令非法表。固定地址初始化步骤及方法如下:双端口RAM地址0000H⁃00FFH初始化为0000H,作为RT命令站空间;双端口RAM地址0100H初始化为0000H,用于设置RT命令栈指针首地址为0000H;双端口RAM地址0102H初始化为0400H,用于设置MT命令栈指针A起始地址为0400H;双端口RAM地址0103H初始化为0800H,用于设置MT数据栈指针A起始地址为0800H;设置方式代码选择中断表;双端口RAM地址0110H~013FH设置为0000H,用于初始化方式代码数据值为0000H;双端口RAM地址0240H~0247H设置为0000H,清除RT的所有子地址忙位;双端口RAM地址000H~03FFH设置为FFFFH,设置命令非法表;初始化RT查找表数据指针空间,接收缓冲区地址从0x6000开始,发送缓冲区地址从0x8000开始;每个数据块长度为40 B,开始的一个字作为消息块标志字,广播接收消息与非广播接收消息共用同一个缓冲区,具体初始化流程如下:
for(i=0;i<0x20;i++) //初始化LOOKUP表A接收缓冲区地址
{
*(pDpram+0x140+i)=0x6000+i*40+1;
//用1 B作为消息块标志字
}
for(i=0;i<0x20;i++) //初始化LOOKUP表A发送缓冲区地址
{
*(pDpram+0x160+i)=0x8000+i*40+1;
//用1 B作为消息块标志字
}
for(i=0;i<0x20;i++) //初始化LOOKUP表B接收缓冲区地址
{
*(pDpram+0x1C0+i)=0x6000+(i+0x20)*40+1;
//用1 B作为消息块标志字
}
for(i=0;i<0x20;i++) //初始化LOOKUP表B发送缓冲区地址
{
*(pDpram+0x1E0+i)= 0x8000+(i+0x20)*40+1;
//用1 B作为消息块标志字
}
2.1.2 寄存器初始化
通过配置1553B协议芯片的寄存器,设置协议芯片处于不同的工作模式,RTMT工作模式下的协议芯片寄存器初始化方法及步骤如下:向启动/复位寄存器写入值0001H,复位ACE协议芯片;配置寄存器3写入8000H,使ACE协议芯片工作于增强模式;中断掩码寄存器1设置为0201H,使能握手失败中断及消息结束中断;配置寄存器1设置为9B80H,使能BUSY,SSFLAG,RTFLAG RT/BM;配置寄存器2设置为8498H,使能电平中断,256 B边界禁止,RT子地址发送/接收采用单缓冲模式;配置寄存器3设置为8D5DH,使能方式命令的相关操作,设置RT命令栈为256 B,MT命令栈为1 024 B,MT数据栈为2 048 B;配置寄存器4设置为C008H,外部BIT字使能,使能RT地址软件锁存方式;将经过奇校验RT地址写入配置寄存器5,作为备份总线控制器的RT地址;配置寄存器6设置为6172H,设置时钟频率为20 MHz,使能软件配置RT地址,使能协议芯片中断队列操作;将中断向量队列指针寄存器初始化为1000H,表明中断向量队列是从1000H开始的64 B空间;将数据栈指针寄存器初始化为0800H,用于设置MT数据栈指针的起始地址为0800H;读取配置寄存器1的值或上0400H后写入配置寄存器1,用于清除RT忙位,使能协议芯片进行通信。
2.2 中断服务处理
共享RAM中固定地址及ACE协议芯片寄存器初始化完成后,协议芯片即工作于RTMT模式,当协议芯片接收到有效命令,将触发消息结束中断,中断服务程序完成对该条消息的处理[5]。首先,用全局变量CurrQueuePtr记录尚未处理的中断队列指针,其初始值为中断队列的起始地址0x1000;中断向量队列指针寄存器始终存放的是下一次中断待写入的中断队列指针,读取中断向量队列指针寄存器(1F)内下一次待写入的中断队列指针NextQueuePtr,并进行如下处理:
if(CurrQueuePtr != NextQueuePtr)
{
status = *(pDpram+CurrQueuePtr);
//读取当前消息中断队列中的状态字
if((status&0x03) == 0x03 )
//判断该消息是否为消息中断事件且为消息结束中断
{
blkptr=*(pDpram+ CurrQueuePtr+1);
//读取该消息的描述块指针
if(blkptr < 0x100) //描述块指针在RT描述块空间内
{
Rt_Do_Msg(blkptr); //RT消息处理
}else
If( (blkptr>=0x400) && (blkptr<0x800))
//描述块指针在MT描述块空间内
{
Do_Mt_Msg(blkptr); //RT消息处理
}else{
*(pReg +starReset) = 1;
//中断向量队列出错,复位协议芯片
}
}
CurrQueuePtr = CurrQueuePtr + 2;
//当前队列指针后移2 B
if(CurrQueuePtr == 0x1040)
//当前队列指针指向队尾时,翻转到队头
{
CurrQueuePtr = 0x1000;
}
}
其中Rt_Do_Msg()函数主要完成RT功能下消息接收或发送后的相关处理,如新数据标志的置位与清除等,方式命令的处理等。Mt_Do_Msg()函数主要完成MT功能,将数据从较小的MT数据栈(0x800~0x9FF)根据监控过滤位,将需要监控的消息按照特定的格式重新组织并存储到较大的MT数据缓冲区(0xA000~0xF000)内,以备用户使用。
3 应用实例及分析
某项目采用1553B总线作为主干总线,总线上共有RT 13个,RT地址分别为1~13,1个BC,1个BBC,工作于RTMT模式下,RT地址为18。系统应用的消息类型及条数见表2,系统应用要求BBC应能够与BC同时获取BC⁃RT及RT⁃BC之间的应用数据通信内容,用于同步解算。根据应用要求,若采用BBC工作于RT模式,排列出的总线消息类型及消息条数见表3,根据应用需求,共有BC⁃RT消息24条,为了满足BBC同时获取BC⁃RT消息的需求,必须增加24条BC到BBC的消息,同样,共有RT⁃BC的消息65条,为了满足BBC同时获取RT⁃BC消息的需求,必须增加65条RT⁃BBC的消息,BBC需排列接收消息为BC⁃BBC及RT⁃BBC的消息综合,共计92条,远远大于BBC作为RT模式,仅能接收消息30条消息的限制,且总线传输存在延迟,导致BBC不能与BC同步获取BC⁃RT与RT⁃BC的消息,因此,BBC工作于RT模式无法满足应用需求。若采用BBC工作于MT模式,则无法满足BC⁃BBC、BBC⁃BC及BBC⁃RT之间的数据传输要求。
采用新的设计方法后,BBC工作于RTMT模式,作为RT18可以满足BBC⁃BC、BC⁃BBC、BBC⁃RT及RT⁃BBC之间的消息通信,同时作为MT可以有选择的监控BC⁃RT及RT⁃BC的消息,无需额外增加BC⁃BBC及RT⁃BBC的消息,即可让BBC与BC同步获取相应应用数据内容,在不增加消息量的前提下,满足了系统应用的需求。
表2 系统应用消息类型及条数
[消息类型\&BC⁃RT\&BC⁃BBC\&BBC⁃BC\&BBC⁃RT\&RT⁃BC\&RT⁃BBC\&RT⁃RT\&合计\&消息条数\&24\&3\&2\&11\&65\&0\&44\&149\&]
表3 BBC工作于RT模式消息类型及条数
[消息类型\&BC⁃RT\&BC⁃BBC\&BBC⁃BC\&BBC⁃RT\&RT⁃BC\&RT⁃BBC\&RT⁃RT\&合计\&消息条数\&24\&24+3\&2\&11\&65\&65+0\&44\&238\&]
4 结 论
本文首先介绍了当前1553B方向BBC的最新应用模式,并基于1553B协议芯片给出了工作于RTMT模式下BBC的设计与实现方法,并结合工程实例,从实际应用需求出发,分析了RTMT模式与以往RT或MT模式下的应用差别,在RT模式或者MT模式均不能满足系统要求的前提下,采用RTMT模式很好的解决了系统对于BBC新的应用需求,且无需增加任何总线负载,具有较强的工程实践意义。
参考文献
[1] 殷杰波,张书滨.1553B总线控制器双机热备份设计[J].现代电子技术,2010,33(7):39⁃40.
[2] 杨卫军,许化龙,訾向勇.基于1553B总线的嵌入式网络BBC设计与实现[J].微电子学与计算机,2007,24(1):63⁃65.
[3] 陈丹,赵文静.基于1553B的总线控制器的设计[J].现代电子技术,2007,30(2):41⁃43.
[4] 颜猛,蒋轩祥.1553B总线BC BBC配置下总线管理软件的研究与实现[J].微电子学与计算机,2003,20(1):20⁃22.
[5] 史国庆,高晓光,吴勇.基于DSP的1553B总线接口卡设计与实现[J].计算机测量与控制,2005,13(12):92⁃93.
[6] 赵明阳,朱岩,张建东,等.基于PCI局部总线的1553B总线接口卡设计[J].现代电子技术,2012,35(10):47⁃49.
推荐访问: 总线 控制器 备份 设计