一种基于ARM处理器的智能1553B总线通信模块的设计
2011-04-24王巍
王 巍
(江苏自动化研究所,江苏 连云港 222006)
1553B又称MIL-STD-1553B,是上世纪70年代美国军方专为飞机上设备制定推出的一种时分制命令/响应式多路复用数据总线。1533B总线采用曼彻斯特II编码,半双工工作方式,数据传输的速率为1 Mbps,能挂接31个远置终端,支持3种终端类型,即总线控制器(BC)、远程终端(RT)和总线监视器(BM),信息格式有BC到RT、RT到BC、RT到RT、广播方式和系统控制方式[1]。1553B总线采用了多冗余度总线型拓扑结构,具有双向输出特性,并且实时性和可靠性高。该标准作为美国国防部武器系统集成和标准化管理的基础之一,被广泛的用于飞机综合航电系统、外挂物管理与集成系统,并逐步扩展到飞行控制等系统及坦克、舰船、航天等领域。我国参照MIL-STD-1553B标准,于1987年颁布了相应的国家军用标准。目前,1553B总线通信模块在多家航空航天和兵器领域的科研院所和生产单位得到了广泛的应用。传统的采用非智能设计的1553B总线模块,因为其较低的数据传输率,读写操作频繁时,必然会对整个计算机系统的影响较大,因此本文提出了一种基于ARM处理器的1553B总线模块,将原需要计算机系统主处理器完成的任务在本模块内部完成,因而可以明显提高系统的性能。
1 硬件系统设计
传统的1553B总线模块一般采用总线协议芯片+耦合变压器的工作方式实现与1553B总线的连接[2]。而在系统总线一端,一般通过PCI-Local桥接芯片将PCI系统总线转入模块内部的局部总线(Local Bus),在局部总线和1553B总线之间,通过采用FPGA实现粘合逻辑(Glue Logic),从而实现总线之间的数据通信。1553B总线与计算机系统之间的通信流程,以1553B总线一端通过系统总线发起中断开始,系统响应中断并完成1553B总线一端的读写操作。采用非智能设计的传统1553B通信模块,每次向系统总线发起中断拟传输的数据量往往较少,而中断发起的频率较高,因此,慢速的1553B总线必然将影响整个系统的运行速度。
智能1553B总线通信模块采用基于处理器的设计技术[3]。本设计方法中即在模块内部实现ARM 处理器,通过双口RAM实现与系统总线之间的数据通信。关于ARM处理器的特点,本文不再赘述,重点介绍ARM处理器如何实现与计算机系统的通信。智能1553B模块的总体框图如图1所示。
智能1553B总线通信模块在1553B总线一端仍采用了美国DDC公司的1553B总线协议芯片BU61580,通过耦合变压器B3227接入1553B总线。采用变压器而不使用直接的耦合的设计方式,是因为由于直接耦合不利于终端故障隔离,可能会因为一个终端故障而造成整个总线网络的完全瘫痪,所以1553B协议中明确指出不推荐使用直接耦合方式。1553B总线数据信号采用了曼彻斯特II码进行编码传输,这种编码非常适合利用变压器进行总线耦合。
图1 智能1553B总线通信模块总体框图
在模块内部的数据处理方式上,智能1553B总线模块上的ARM处理器将1553B总线数据以一定的格式存入双口RAM,PCI总线不直接访问1553B协议芯片,而是通过访问双口RAM存取1553B总线数据,因此双口RAM是PCI总线获得1553B总线数据的唯一通道。本文采用了美国CYPRESS公司生产的双口RAM集成电路 CY7C027。CY7C027是一种高速异步双口RAM,带有双端BUSY信号,存储容量为512Kb,具有32K×16bit的结构,采用3.3V单电源供电,最高存取速度为 15ns[4]。该存储器具有两个独立的端口,各端口分别自有一套相应的地址总线、数据总线和控制总线。该双口RAM在工作时,允许两个端口独立、异步地对存储器中作任何存储单元进行存取操作[5]。
PCI总线一侧,采用了PLX公司生产的高性能的PCI-Local桥PCI9054,以完成在PCI 总线和Local 总线之间数据传输的功能。PCI9054配置灵活,既可以作为两个总线的主控设备去控制总线,也可以作为两个总线的目标设备去响应总线。PCI9054有6个零等待可编程FIFO 存储器。它们分别完成PCI发起读、写操作,PCI目标读、写操作和DMA读、写操作。由于FIFO存储器的存在,数据可以大量突发传输而不丢失。这样不仅满足实时性要求,同时可以根据用户的需要采用与PCI 时钟异步的本地频率。
2 底层软件设计
从PCI总线一侧来看,本板的1553B总线应该是透明的,即对系统总线来说,需要存取数据的仅为一只双口RAM。因此,对于智能1553B总线通信模块来说,就是需要将1553B总线数据进行处理后存入双口RAM,并从双口RAM中读出数据写入1553B协议芯片。为了实现智能模块上ARM处理器与PCI总线上系统CPU之间的通信,关键是对双口RAM的处理。从软件层面来看,智能模块的结构如图2所示。
图2 智能1553B总线通信模块软件结构示意图
如图2所示,数据链路层的作用是保证系统CPU将数据和指令及时准确的传输到智能模块中,而双口RAM是数据指令传输的通道,需要保证数据和指令能正确通过双口RAM。下面为了讨论方便,将智能模块上的ARM CPU称为CPU-A,系统CPU称为CPU-B。为了方便CPU-A和CPU-B进行数据通信,先将双口RAM分为A、B两个大区,如图3所示。
图3 双口RAM存储空间分配
A区地址范围为0x0000-0x3FFF,用作智能模块向系统总线传输数据使用。对于A区的存储空间,CPU-A可读写,但CPU-B只读。B区地址范围为0x4000-0x7FFF,用作智能模块向系统总线传输数据使用。对于A区的存储空间,CPU-B可读写,但CPU-A只读。对于每个大区,其空间又被分成两个小部分(A0/B0和A1/B1),分别用于处理两个优先级的数据传输。A0/B0区又称为命令区,大小为256B,数据内容包括单板控制命令、高优先级命令、高优先级数据和A1/B1区的长度信息等。A1/B1又称为数据区,大小分别为A/B区扣除A0/B0区后的大小,A1/B1包含普通优先级的数据。
在A0/B0区偏移地址为0的存储单元,可以定义一个状态字STATA/STATB,记录数据区中的数据长度、A0/B0命令区数据是否被处理过的状态以及A1/B1数据区数据是否被处理过的状态等信息。CPU-A 或 CPU-B通过读取各自区域的STATA/STATB状态字,及时了解对方CPU对已方数据的处理情况。现以CPU-A处理CPU-B的数据为例,说明数据处理流程,如图4所示。
图4 CPU-A处理CPU-B数据流程图
当CPU-A需要向A1区写数据时,首先检查A0区STATA与B0区的STATB是否相同,如果不相同,说明原先写入的数据未被CPU-B处理过,CPU-A可选择是否强制写入新数据覆盖老数据。如果CPU-A选择强制写入数据,那么首先设置STATA为无效值,然后将数据写入A1区,再将STATA设为有效值。CPU-A从B1区接收CPU-B的数据时,CPU-A首先检查STATA与STATB的值是否相同,如果相同,说明B1区的数据已过时,不做处理。如果不同,说明B1区的数据是新数据,CPU-A将B1区数据读走后,再将STATA设置与STATB相同,通知CPU-B已将B1区的数据处理完毕。CPU-B读取或向CPU-A写入数据时,过程与之类似。
而对于CPU-A与CPU-B之间通信时的具体数据结构,可由智能模块的底层软件设计人员与操作系统驱动程序开发人员定制,处理方式相当灵活。
3 结束语
由于智能1553B总线与PCI总线通信模块不再通过 PCI总线向计算机系统提请中断,而是通过双口RAM 以较高的效率实现智能模块与计算机系统之间的数据通信,因此可以减少计算机系统资源消耗,提高计算机系统的性能。另外,由于智能模块按预定的数据结构在本板内实现了数据重组,因此也可以减少操作系统下驱动程序开发的工作量。通过研制智能1553B总线通信模块,可以掌握基于ARM处理器的智能模块设计的方法。这种采用本模块内部智能处理的设计方法,也可以推广到其他智能低速总线通信模块的设计中去,从而提高整个系统的性能。
[1]周福宽,马彪.MIC总线与1553B总线综合分析比较[J].测控技术,2006(2):32-33.
[2]翟雯艳,张遂南.基于CPCI的1553B总线通信模块的设计与实现[J].无线电技术2008(10):90-92.
[3]李世良,许永辉.PCI总线智能GJB289A仿真卡设计[J].现代电子技术,2010(20):114-116.
[4]孙爱东,等.基于双口 RAM 的数据采集系统的设计[J].电子测量技术,2006(2):90-91,94.
[5]钱瑞霞.基于双口 RAM 的智能数据采集卡设计[J].中国仪器仪表,2001(3):24-26.