《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的1553B通信模块的设计
基于FPGA的1553B通信模块的设计
张晴晖1,李俊萩1,段芙蓉2,徐安排1,张宏翔1
1.西南林学院 计算机科学系,云南 昆明650224;2.成都纵横测控技术有限公司,四川 成都610
摘要: 提出一种将FPGA与PowerPC芯片结合,实现MIL-STD-1553B通信模块的技术方案。详细讨论了该系统的结构、1553B总线协议在FPGA上的实现以及系统的软件结构等关键技术。该系统方案与采用专用的协议芯片实现1553总线接口的方法相比,具有更灵活、成本更低、可移植性好等特点。
中图分类号: TP336
文献标识码: A
Design of 1553B communication module based on FPGA
ZHANG Qing Hui1,LI Jun Qiu1,DUAN Fu Rong2,XU An Pai1,ZHANG Hong Xiang1
1.Dept.of Computer and Information Science, Southwest Forestry College, Kunming 650224,China;2.Chengdu Jovian Measurement & Control Technology Co., Ltd,Chengdu 610041,China
Abstract: A realization technique of the MIL-STD-1553B communication module is presented, which is a combination of FPGA and PowerPC chip. And the key technologies such as the system structure, the implementation of 1553B bus protocol on FPGA and software architecture are discussed in detail. This method is more flexible, lower cost and portability compared with method using 1553B ASIC chips.
Key words : MIL-STD-1553B;FPGA;PowerPC

    MIL-STD-1553总线是美国国防部制定的一种具有可确定性且传输可靠的数据总线,被广泛应用于军用飞机、军用车辆以及舰载等领域中。目前,1553B总线接口模块的实现主要有2种方式:一种是采用专用的协议芯片(如DDC公司的BU-61580、HOLT公司的HI-6110等);另一种是采用FPGACPU结合实现1553B的协议模块。
    本系统采用后一种方式,硬件上采用PowerPC芯片PPC405EP与Xilinx的FPGA芯片XC3S200为系统的核心芯片,使用VHDL语言实现1553B的总线协议。与采用专用的协议芯片实现1553总线接口的方法相比,该方案的成本很低,也很容易根据需要进行功能扩展,使用灵活。
1 1553总线分析
    在MIL-STD-1553总线上有总线控制器、远程终端和监视器3种设备。其中,最重要的是总线控制器(BC-Bus Controller),总线上的任何操作都是由BC发起的(通过发不同的命令控制总线上的数据传输);远程终端(RT-Remote Terminal)接收BC的命令,并按命令进行相应数据传输;总线监视器(BM-Bus Monitor)对总线上的数据进行接收和存储。
    1553B总线上数据的交互是基于消息机制的。该标准定义了10种消息传输格式,而这10种传输格式都采用前述的3种字类型,总线上的数据传输就是采用这10种消息传输格式中的一种。其传输过程如下:BC通过总线发送某种命令字,所有的RT接收该命令字,并将命令字中的地址域与自己的地址相比较,相同则接收该命令字;随后,RT对命令字进行解析,根据命令完成相应的操作(接收数据字、发送数据字、同步、自检等)。这些操作都会产生相应的状态字发送给BC。BC通过状态字来判断RT是否工作正常。如果RT接收到的命令字中的终端地址是广播地址,则所有的RT都接收该命令,但都不返回状态字给BC。
2 系统设计
2.1 系统结构

    系统结构如图1所示。1553B的协议处理以及编解码都由FPGA实现。在同一电路上集成BC、BM和R/T功能,可以通过软件设置来选择所需的功能。同时,其综合了通信和测试功能,既能够检测出各种可能出现的错误,又能根据测试要求产生各种错误。

    CPU芯片采用AMCC公司的PowerPC405EP。该芯片不仅包括一个高性能的RISC处理器内核,还有SDRAM控制器、PCI总线接口、以太网接口、外部ROM和周边资源控制及串行口、IIC接口、通用I/O口等,支持DMA功能。
    系统中的PXI接口是用PowerPC405EP的PCI接口与外部的开关电路扩展实现的。CPU通过EBC总线与1553模块通信,其接口电路由FPGA实现。图1所示接口电路主要完成通道选择、数据环回等功能。

2.2 总体方案
    1553B总线协议由硬件和软件配合实现。整体设计思路是:硬件和软件采用中断和查询2种方式,通过一个共享的数据Buffer进行信息交互。下面介绍系统整体数据收发流程。本系统的软硬件功能就是根据该流程进行分工和实现的。
2.2.1 数据发送流程
    上层软件以数据结构的形式将控制和数据信息传输给硬件逻辑电路,硬件电路自动地将数据按照控制信息发送到1553B总线上。CPU向硬件逻辑发送数据时,首先应检测上次的发送是否已经结束。具体方法是:读通道状态寄存器发送完成位,如果有效,表示上次发送已经结束了。只有检测到上次发送结束了,才能进行数据的发送操作。硬件电路在将数据发送完之后,会产生中断请求。软件根据中断请求去查询状态寄存器,决定下一步的操作。传输流程简述如下:
    (1)CPU向数据发送FIFO写入1个指令字/状态字和错误控制信息;
    (2)CPU向通道控制寄存器写入发送使能信号;
    (3)CPU向数据发送FIFO写入0~32次数据和错误控制信息;
    (4)硬件逻辑检测到发送使能信号;
    (5)硬件逻辑自动将存储在FIFO中的数据顺序取出;
    (6)硬件逻辑根据错误控制信息对数据进行相应处理后将数据发送到1553B总线上;
    (7)硬件逻辑在发送消息结束2 μs后,置发送完成状态位,并产生中断信号。
2.2.2 数据接收流程
    硬件逻辑接收到1553B总线上的数据后,对该数据进行错误检测,并将相应的状态信息和数据组合起来一起存入到接收FIFO中。当接收FIFO达到一定容量后,便向CPU产生中断信号。CPU对FIFO进行读操作,将数据和状态取出。接收步骤如下:
    (1)硬件逻辑接收总线上的数据;
    (2)硬件逻辑对数据进行错误检测,产生状态信息;
    (3)硬件逻辑将数据和状态信息写入接收FIFO中;
    (4)当接收FIFO达到一定容量时便产生中断信号;
    (5)CPU响应外部中断;
    (6)CPU对FIFO进行读操作,将状态信息和数据取走;
    (7)CPU对状态信息进行解析,决定对数据的处理。
3 总线编解码的FPGA实现
    本系统中的FPGA芯片采用Xilinx公司的Spartan-3A XC3S200。该系列产品采用了90 nm工艺,支持业界最广泛的I/O标准(26种),具备独特的功耗和配置功能以及防克隆(anti-cloning)安全性优势。
    FPGA的功能全部采用VHDL语言实现,其功能框图如图2所示。其主要完成的工作有:(1)曼彻斯特码的编解码,包括串/并转换。(2)1553B协议的消息的解析,包括同步头的识别,以及各种错误的识别、奇偶校验等。(3)1553B协议的消息发生,包括同步头的产生、各种状态位的产生以及各种错误信息的产生。(4)与CPU接口的实现。(5)各种中断信号的实现。(6)定时和超时控制电路等。
3.1 总线发送电路实现
    如果没有注入错误的要求,编码器的实现就比较简单,只需要用若干倍1553B的传输速率(本设计采用12倍频)将并行数据转换为串行数据,加上相应的同步头即可。在硬件上数据发送电路主要由一个状态机、双口FIFO、注入错误标志寄存器以及控制电路组成。状态机的状态图如图3所示。复位之后,该状态机在每个时钟的上升沿都检测FIFO中是否有数据,若为空则停留在空闲状态。一旦上层软件通过EBC接口向FIFO写入数据后, 硬件电路自动将数据读出。进入到同步头发送状态,硬件电路根据命令寄存器的控制字送出相应的串行同步头,随后进入数据发送状态。在每个时钟沿,移位寄存器将数据寄存器的数据移出,进行曼码编码后发出,同时,数据计数器自动加1。当计数值为16时,则转入到奇偶校验状态,将异或得到的检验位编码后发出。

    本系统要求具有测试功能,主要有以下注入错误的要求:
    (1)EI_BITCOUNT:消息中指定数据的位数错误(不为16位);
    (2)EI_PARITY:消息中指定数据的校验位错误;
    (3)EI_SYNC:错误的同步头;
    (4)EI_WORDCOUNT:使消息中的数据长度不等于命令字中的长度;
    (5)EI_MIDBIT:指定数据位过零点错误,比期望位置延时300 ns;
    (6)EI_MIDSYNC:同步头的过零点错误,比期望位置延时300 ns;
    (7)EI_BIPHASE:整个位时无过零点。
    硬件电路要求在状态机中加入对应的电路,检测错误寄存器中的标志位,并产生对应的错误。
3.2 总线接收电路实现
    无论是BC还是RT都需要对收到的数据进行解析。接收电路的主要功能有:曼码的解码、串并转换、同步头检测、奇偶校验以及各种错误的检测。如图4所示,状态机复位之后进入同步头搜索状态。硬件电路以12倍1553总线传输速率的频率去检测几种同步头。若收到同步头,则将状态寄存器中的对应位置位,并转入数据接收状态;否则,停留在该状态下。数据接收状态下,移位寄存器在时钟沿将经过解码的数据移入。在数据计数器计数到16之后转入到奇偶校验状态;之后,将数据和状态写入到FIFO中。硬件电路在状态机的每个阶段都要检测各种错误,如果出错则回到同步头搜索状态。同时,产生错误标志和中断信号。

3.3 硬件中断功能的实现
    如上所述,本系统软件和硬件的通信主要通过中断和查询的方式进行信息交互。硬件电路实现了如下中断功能:
    (1)每收到1个命令/状态字产生中断;
    (2)数据长度计数器中断和使能。软件对收到的命令/状态字进行解析,如果有数据准备接收,将数据长度值写入数据长度计数器,同时使能计数器。硬件收到1个数据字,递减计数器,直到0产生中断,同时禁止该数据计数器中断;
    (3)接收FIFO半满或3/4满产生中断;
    (4)接收FIFO全满(overflow)产生中断;
    (5)发送FIFO为空产生中断;
    (6)中断状态/使能寄存器;
    (7)等待超时中断(接收数据长度不够);
    (8)数据计数器中断处,打上时间戳;收到每个命令/状态字打上时间戳;发送的命令/状态字的同步头过零点打上时间戳。
4 软件设计
    软件设计包括板载嵌入程序、主机驱动程序设计。板载嵌入程序和主机驱动程序通过共享PPC外挂内存来完成数据交互,板载嵌入式程序通过访问FPGA的寄存器和FIFO来完成硬件操作和数据收发。其结构如图5所示。

    主机驱动程序的开发平台是LabWindows/CVI,为用户提供方便实用的API接口函数及其定义。
    嵌入式程序的开发平台是Tornado2.2。该程序主要完成模块的初始化、各通道BC\RT\BM的消息解析、中断服务处理、与主机交互等功能。其中消息解析是嵌入式程序的核心部分。
    当模块选项为多功能模块时,要求各通道在同一个工作时期可同时作为BC、BM和最多31个RT进行工作。当被测系统的可得终端有限时,又希望获得充足完备的测试,多功能模块将提供充足的终端用以测试。为了能同时且正确充当BC、BM、RT 3个不同的角色,模块的嵌入式程序设计引入了可编程逻辑设计的状态机设计思想。BC、BM、RT各自拥有自己的状态机。
5 测试与结论
    图6所示为1553收发器仿真波形图。由于篇幅原因,只显示了部分功能。该仿真主要验证了如下过程:软件通过EBC总线接口将3个待传输数据以及对应的控制字写入到FIFO中,经过硬件电路转换为串行数据输出到差分输出端;输出再环回到差分输入端,经过解码电路再写入到FIFO中,产生中断信号,并被软件通过EBC总线将数据和状态读回。

    经过仿真和实际验证,本系统满足1553B总线协议的要求。同时,该设计已经成为产品,在实际中得到了应用。
参考文献
[1] Condor Engineering Inc.MIL-STD-1 553 Tutorial[Z].2000.
[2] Data Device Corporation.MIL-STD-1 553 DESIGNER′S GUIDE[Z].1998.
[3] Applied Micro Circuits Corporation.PowerPC 405EP Embedded Processor datasheet[EB/OL].http://www.appliedmicro. com/MyAMCC/retrieveDocument/PowerPC/405EP/PPC405EP_DS2003.pdf,2003.
[4] Xilinx INC.Spartan-3 FPGA Family:Complete Data Sheet [EB/OL].http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf,2008.

此内容为AET网站原创,未经授权禁止转载。