在研究1553B总线协议特点的基础上,提出了一种基于DSP的1553B总线接口设计方案.详细描述了硬件电路的实现及软件驱动程序的编写。在电路中采用DSPTMS320F2812为核心处理单元。BU-64843为1553B协议执行元件,采用FPGA实现地址译码和逻辑控制功能。为了保证1553B总线消息处理的实时性,直接由下位机DSP控制1553B协议芯片,负责消息的读取、处理、写入和1553B协议芯片的初始化,通过对BU-64843寄存器的配置,使系统工作在BC/RT/MT模式。通信协议处理模块严格按照通信协议收发周期性消息,时间误差精度小于1μs。
关键词:1553B;总线接口;DSP;FPGA;TMS320F2812
航空电子综合化是一种在苛刻的空间限制条件下,对密集型的航空电子子系统集合进行信息综合和功能综合的技术。以MIL-STD-1553B为代表的子系统联网接口标准构成了目前航空电子综合系统中信息交换的主干道。1553B总线接口电路是实现航空电子综合化系统的关键部件,其作用是在1553B总线与现有的其他总线技术之间搭建一座桥梁,使得不同制式的信息流能够实时、准确地进行相互转换。在1553B总线接口的研制过程中,复杂而苛刻的环境对中央处理器的实时性与可靠性提出了很高的要求,而DSP芯片以其优良的高速性能为中央处理器的选择提供了一个较为理想的解决方案。
随着MIL-STD-1553B总线协议标准的颁布。许多公司开发了总线与CPU之间的硬件接口芯片。在实际的1553B总线工程中使用最为广泛的是DDC公司生产的接口芯片。这些芯片完全实现了1553B总线的电气特性协议,而且与CPU或存储器连接非常简单。本文探讨基于TMS320F2812(以下简称F2812)和DDC公司的BU-64843协议芯片的1553B总线接口的硬件设计和软件驱动编写要点。
1 1553B总线
1553B总线是一种时分制指令/响应式多路传输数据总线,具有很高的可靠性和良好的实时性。1553B总线由4种基本硬件组成:传输介质、总线控制器(BC)、远程终端(RT)、总线监视器(MT)。
1553B总线采用异步、半双工方式传输,传输速率1 MB/s。1553B总线传输协议规定的传输过程为:BC向某一终端发送一个接收/发送指令,RT在规定的响应时间内发回一个状态字并执行消息的接收/发送。在操作过程中BC始终掌握总线的控制权,总线上任何时候只有一个BC,但可以最多挂31个RT或MT。在总线的数据传输过程中,MT按要求监视总线上的数据,并将这些数据输出或者存盘以便实时地监测这些数据的传输状态或便于后续分析。1553B采用双冗余总线,有2个传输通道,保证了良好的容错性和故障隔离。如果当前总线的数据传输出现错误或故障,数据可以自动从冗余总线上传输。1553B总线的传输介质为屏蔽双绞线。其总线结构简图如图l所示。
2 系统设计方案
该系统以F2812为控制核心,与外围辅助电路构成微计算机系统;由BU-64843协议芯片完成1553B总线的功能。BU-64843提供了丰富的资源。为软件的设计提供了极大的灵活性和可靠性;控制和译码信号利用FPGA实现,FPGA器件电路连接简单,使用方便,使用功能强大的VerilogHDL语言编程,可提高系统的维护性和扩展性。
F2812负责消息的读取、处理、写入和BU-64843协议芯片的初始化。通过对BU-64843的相关寄存器进行相应的配置,就可以使本接口卡工作在BC模式、RT模式或MT模式。接口卡在BC模式下实现1553B总线消息的接收,BU-64843协议芯片每接收完一个消息,就向F2812发送一次中断申请,由F2812响应中断并从相应的RAM区读取接收到的消息进行相应处理,F2812同时完成与上位机的通讯,并把接收到的数据发送出去。与上位机的通讯是利用F2812的串行通信接口(SCI),本系统采用MAX485实现的。
3 接口电路的硬件设计
系统的硬件电路主要包括:DSP模块、1553B总线接口模块、逻辑综合模块。系统的结构框图如图2所示。
3.1 DSP模块
DSP芯片功能强、体积小、使用方便灵活,被众多领域广泛应用。F2812是TI公司推出的采用高性能静态CMOS技术的32位定点数字信号处理器,器件上集成了多种先进的外设,为现代控制领域应用提供了良好的控制核心。F2812的地址线为19位,数据线为16位。其特点有:1)采用高性能静态CMOS技术,其供电电压为3.3 V,采用哈佛总线结构和流水线操作,具有150 MIPS的运算能力,可单周期执行32位×32位的乘和累加操作(MAC)或双16位×16位MAC运算;2)片上存储器包括128 k×16 Flash存储器、18 k×16的片内RAM、4 k×16的Boot ROM大容量的片内RAM可满足大多数设计要求,无需扩展片外存储器,既降低了成本又使硬件设计变得简洁;3)具有外部中断扩展(PIE)模块,可支持多达45个外部中断,最多可达56个的可编程通用输入/输出(GPIO)引脚,带有丰富的接口模块包括2个串行通信接口(SCI)、串行外设接口(SPI)和多通道缓冲串口(MeBSP),为建立信号处理平台提供基础。
3.2 1553B接口电路
传统的1553B接口卡设计时采用BU-61580接口芯片,采用70引脚的双列直插式组件(DIP)封装,5 V供电,考虑到本系统的DSP芯片F2812的I/O是3.3 V电平,所以1553B总线接口电路采用DDC公司的首款全3.3 V的1553B接口芯片BU-64843,无需电平转换,简化了硬件电路设计,采用该芯片80-pin陶瓷扁平封装更加方便用户进行硬件电路设计。BU-434843内部还集成了双收发器逻辑、编解码器、协议逻辑、内存管理和中断控制逻辑,支持BC/RT/MT模式,还提供了一个4 kB的内部共享静态RAM和与处理器总线之间的缓冲接口。
BU-64843与微处理器或外部存储器接口非常灵活,可与8位、16位多种微处理器相连接,并且可以实现无缝连接或者只需很少的粘和逻辑电路。BU-64843有2种工作模式:透明模式(TRANSPARENT)和缓冲模式(BUFFERED)。透明模式时芯片可以寻址64 KB,即可以寻址到其外部的RAM,这时需要为其配置外部RAM。一般应用透明模式时。在BU-64843协议芯片和CPU之间配置双口RAM。而在二者的数据总线和地址总线之间需要使用隔离器。缓冲模式时只寻址其内部的4 KB字的RAM,地址单向,可直接由CPU驱动,不需要使用总线隔离器。另外,BU-64843还根据微处理器是否具有READY(握手信号)选择零等待和非零等待方式。非零等待是指在微处理器对BU-64843进行并行总线(读、写)操作时,BU-64843内部逻辑电路若有操作时,微处理器需要等待BU-64843准备好。当BU-64843准备好时,就输出READY信号。在这种情况下。应将BU-64843的READY信号接到微处理器的READY信号上,并设置微处理器的等待方式受READY控制。16位缓冲模式是最常用的接口形式。提供一个与16位或32位微处理器共享RAM的缓冲器接口,在这种接口中,BU-64843的内部地址/数据缓冲器使其与微处理器的地址,数据隔离。一般在传输数据量比较少,BU-64843内的4 KB RAM足够用时。可选用16位缓冲非零等待模式。在该模式下将引脚16/8#置为高电平,TRANSPARENT/B-UFFERED#置为低电平,ZERO_WAIT#置为高电平。工作在缓冲方式下,占用16位数据总线和12位地址总线,其所有的控制信号由FPGA的译码电路产生,通过中断方式与F2812通信,因此BU-64843的中断引脚INT与F2812的外部中断XINTl连接;BU-64843总线接口有2个数据通道,通道A和通道B,这是为了保证通信的可靠性而采取的冗余设计,在实际的工程中也使用2个通道,通过软件选择任意通道进行数据传输。BU-64843通过2个耦合变压器PM-DB2755与外部的屏蔽双绞线连接:16 MHz有源晶振作为时钟输入。
3.3 逻辑综合电路
BU-64843和F2812之间的逻辑综合电路由FPGA完成。本系统的可编程逻辑器件采用Xilinx公司Spartan-3系列的FPGA芯片XC3S400,该芯片的I/O口供电电压为3.3 V、系统门数为40万、最大可用I/O数为264个。逻辑综合电路包括:地址译码电路、逻辑控制电路。地址译码电路功能是对接口卡所使用的F2812存储器和BU-64843存储器进行地址选择、译码。译码程序在Xilinx ISE 9.2i环境下用硬件描述语言Verilog-HDL编写。选用FPGA作为逻辑综合电路的另一个优点是:VerilogHDL程序的烧写通过JTAG接口完成,除了一条烧写线外不需要任何附加的硬件电路,因此只要硬件连接正确,其余的工作均由软件完成,便于以后的系统升级。VerilogHDL程序根据F2812的地址总线、数据总线和片选信号,经逻辑译码产生BU-64843的片选信号SELECT#,寄存器和缓冲区选择控制信号MEM/REG#。
逻辑控制电路功能是产生BU-64843所需要的控制信号以及给F2812提供中断信号、握手信号、插入等待信号。由F2812和BU-64843向XC3S-400提供地址线、数据线、中断申请线、中断响应线以及读、写信号线。
4 驱动软件的设计
驱动程序的编写采用C语言与汇编语言混合编程的实现方法,兼顾二者的优点,使程序既有C语言较好的可读性和可移植性,又有汇编语言较高的效率。驱动程序的功能主要是实现BU-64843协议芯片的初始化、RAM空间的自检、与上位机的通信、中断响应、总线数据的读取和发送。驱动程序从本质上说,就是根据上位机的命令和要求,控制接口卡的工作,实现系统的启动、停止、自检以及自检结果的返回等,在系统启动后主要实现1553B总线数据的接收和发送。整个驱动程序的组成如图3所示。
4.1 初始化模块设计
在驱动程序编制中,初始化模块是非常重要的一部分,作为整个程序的入口,初始化模块完成整个接口卡的初始配制,该模块主要功能为:
1)完成对F2812初始化,设置其相关寄存器,主要是设置有关中断和串口的寄存器,包括中断标志寄存器(IFR)、中断使能寄存器(IER)、中断控制寄存器(ICR)、SCI通信控制寄存器(SCICCR)、SCI控制寄存器l(SCICTL1)、波特率设置寄存器(SCIBAUD)等,以确定中断源和串口的波特率、停止位等。其具体操作为:①使IFR=Ox0000。IER=Ox0000,关闭所有的中断;②使IER=OxO101,开启中断SCITXRXINT和中断XINTl;③使ICR=0x001F,将中断模式设置为下降沿触发中断XINTl;④使SCICCR=0x0007;设置发送和接收中使用1 bit停止位,8 bit字符长度;⑤使SCICTL1=0x0003;使能发送器TX、接收器RX;⑥使SCIBAUD=Ox01E7,系统时钟SYSCLK的频率为150 MHz,低速外设时钟频率LSPCLOCK为37.5 MHz时,异步串行口数据传送波特率为9 600 b/s,BRR的数值可由下面的公式得到:
⑦SCICTL1=0x0023,使SCI退出复位。
2)完成对BU-64843协议芯片内部寄存器(主要包括开始/复位寄存器、配置寄存器1、配置寄存器2、配置寄存器3、中断屏蔽寄存器)的初始化设置,使其能够正确实现BC模式的功能。BU-64843对片内功能寄存器的设置顺序有严格要求,如果顺序不正确将会引起芯片初始化失败。BU-64843工作在BC模式下的有关寄存器的配置顺序如下:①将开始,复位寄存器配置为0x0001,即可对BU-64843进行软件复位;②如果用到BU-64843增强模式,将配置寄存器3配置为Ox8000;③将中断屏蔽寄存器设置为Ox0001,使消息完成中断使能;④将配置寄存器1设置为BC模式;⑤将配置寄存器2设置为0x0008,使中断方式为低电平中断;⑥将开始/复位寄存器配置为Ox0002,启动BC传输模式。
通过对以上寄存器的配置。即可完成BC模式的操作。其初始化流程图如图4所示。
4.2 自检模块
自检模块主要完成对BU-64843的4 kB RAM空间的检查,看是否出现错误。实现方法是向该内存空间写入连续的数据,然后读出来比较看是否相等,若不相等则表示有错,记录下所有的错误数并把这个错误数通过串行口发送给上位机。
4.3 中断模块
驱动程序的中断模块分为2部分:1)用于接收1553B总线到来的数据,响应1553B总线数据的中断。利用F2812的XINTl,XINTl采用脉冲下降沿触发中断方式;2)用于接收上位机向DSP发送的命令,接收上位机的命令是通过F2812的串行通信接口(SCI)来进行的,利用F2812的SCIT-XRXINT中断。在XINTl中断服务子程序中设置“读总线数据标志”,在异步串口中断服务子程序中设置“读串口数据命令标志”。在查询模块中,可以通过查询这两个标志,来判断是否有总线数据到来以及是否有上位机的命令到来。
4.4 查询模块
在查询模块中,当“读总线数据标志位”有效时,F2812就从BU-64843的命令堆栈相应地址处开始依次读4个地址单元的内容。分别为数据块状态字、时间标志字、数据块指针和接收到的命令字,根据命令字和数据块指针到数据堆栈读取总线数据,然后将接收到的总线上的数据转发出去。
当“读串口数据命令标志位”有效时,RX接收上位机的命令,根据不同的命令实现相应的功能。为了能够保证与上位机实现可靠的握手,在查询程序中设置了一个数据缓冲区,在查询程序中对缓冲区中的数据进行判断,看是否收到一帧完整的命令。若收到一帧完整的命令,则根据不同的命令设置系统的启动、停止、自检等相应标志,并将缓冲区中的数据依次向前移动一帧,数据指针也向前移动一帧。
5 结论
本文对1553B总线协议及其接口芯片BU-64843的功能、配置进行详细说明,并介绍了定点DSP TMS320F2812的基本性能和特点。在此基础上实现了基于F2812和BU-64843的1553B总线接口的硬件电路和软件的设计。BU-64843作为全3.3 V供电的1553B总线终端之一,方便与DSP芯片F2812连接。BU-64843芯片功能强大,同时设置也很复杂,因此,对接口芯片的掌握,不但要从硬件接口上入手,还要熟悉其内部寄存器的相关配置。基于DSP的1553B总线接口设计方案有效解决了通讯实时性要求高的问题,对地面电子检测系统的应用具有参考价值。 |