1553B总线在嵌入式系统中的应用_嵌入式系统论文
作者email: cai_yang@etang.com
1 介绍
mil-std-1553是为数据总线定义的军方标准。这种数据总线被用来为各种的系统之间的数据和的交换提供媒介,它类似“局域网或者lan”。
1950年至60年代中,航空电子学是简单、独立的系统,航空、通信、飞行控制和显示器由模拟系统构成;信号主要由模拟电压、同-异步信号和接触式开关构成。
mil-std-1553总线的传输速度为每秒1m比特,字的长度为20个比特,数据有效长度为16个比特,信息量最大长度为32个字,传输方式为半双工方式,传输协议为命令/响应方式,故障容错有典型的双冗余方式,第二条总线处于热备份状态;格式有bc到rt、rt到bc、rt到rt、广播方式和系统控制方式;能挂31个远置终端,终端类型有总线控制器(bc)、远置终端(rt)和总线监听器(bm);传输媒介为屏蔽双绞线,mil-std-1553总线耦合方式有直接耦合和变压器耦合。
2 硬件系统
本系统采用pci总线接口,pci桥芯片采用plx公司的pci9052。1553b总线芯片采用ddc61580,cpld主要实现ddc61580和pci9052之间的时序及逻辑控制。硬件框图如图1所示。
详细的逻辑控制信号见cpld逻辑部分。
2.1 pci9052的主要特点
pci9052是plx技术公司为扩展适配板卡推出的能提供一种混合的高性能pci总线目标(从)模式的接口芯片。该芯片可与多种局部总线相连,并且支持相对慢的局部总线在pci总线上的突发传送速率达到132mb/s。9052可编程配置直接与复用或非复用的8/16/32位局部总线相连,8位和16位模式便于isa卡直接向pci卡转换。
pci9052的内部结构中包含了一个独立的isa逻辑接口,通过这个逻辑接口可以完成由isa到pci的平滑转换。它支持8位和16位数据宽度的isa设备,该设备可以是内存映射,也可以是i/o映射。先读模式用于提高读取数据的吞吐量。一旦isa接口模式使能,pci9052只执行单个周期操作。特别指出的是,串行eeprom必需使isa接口模式使能。
可以使用两种方法配置pci9052用于isa接口模式。方法一:烧写串行eeprom方法。使用烧写器,将数据写入串行eeprom,参照pci9052的datasheet来写入恰当的数据。需要注意的是,对于isa模式,lreset引脚必须始终为高电平,并确认mode引脚置为0,处于非复用模式。
方法二:热配置方法。从pci总线通过pci9052芯片来烧写串行eeprom。该方法需要注意的是,lreset引脚的极性在isa模式时由低变为高,并确认mode引脚置为低。
当为isa接口模式配置时必须注意以下几点:(1)存取isa接口引脚时要参照pci9052引脚的c/isa模式引脚图来连线。(2)空间0分配给isa接口的内存存取。(3)空间1分配给isa接口的i/o存取。(4)无论空间0的局部地址处于cs0#范围还是空间1的局部地址处于cs1#范围,isa存取均有效。(5)标准的从周期可以使用空间2、空间3和串行eeprom来存取。
2.2 ddc61580的主要特点
ddc61580具有以下特点:
● 全兼容mil-std-1553接口
● 灵活的处理器/内存接口
● 标准的4k×16ram
● 自动bc重试
● 可编程bc间隔时间
● 灵活的rt数据缓冲区
● 可编程非法区
● 可选择消息监控
● 支持同时rt/monitor模式
下面将详细介绍bc、rt以及mt模式的内存组织,编程方法等。
2.3 bc模式操作
bc协议支持所有的mil-std-1553消息格式,通过编程bc控制字和命令字的t/r*位来确定消息格式。另外,bc控制字还允许选择通道、自测试、重试、中断以及状态字掩码等。bc模式内存映射包含有8个固定的内存位置,即堆栈指针a,b、消息计数器a,b、初始堆栈指针a,b和初始消息计数器a,b。在启动消息帧之前,必须首先初始化堆栈指针和消息计数器。特别应注意的是,bc消息块最大是38个字,比如对于rt->rt传输,它包含32个数据,1个控制字,2个命令字,1个loopback字和2个状态字。
2.3.1 bc内存管理
bc内存管理如图2所示。该图说明了堆栈指针包含四个字的消息块描述符,即块状态字,时间标志字,消息间隔时间和消息块地址。块状态字包括消息状态、完成、有效性及总线通道;时间标志字反映了当前消息起始和结束时时间标志寄存器的值,它可以编程为分辨率为2~64us/lsb(2的幂);消息间隔时间指的是当前消息的开始到下一条消息的开始之间的时间;消息块地址提供了指向消息块第一个字的指针。
2.3.2 bc编程
对于bc编程,首先要初始化相应的寄存器以及堆栈指针、消息计数器;然后定义消息的控制字、命令字等;最后启动bc。需要注意的是bc控制字不会在1553总线上传输。bc的消息格式通过编程bc控制字的最低3位来控制。如表1所示。
bc消息帧可以通过查询和中断来进行处理。如果采用查询模式,那么可以查询配置寄存器1、中断状态寄存器、堆栈指针和消息计数器寄存器。另外,每一条bc消息结束后堆栈指针加4,所以如果要读取rt-to-bc的消息,我们应该首先从堆栈指针a中读取当前消息的堆栈指针,然后减4后来分别读出块状态字、时间标志字、消息时间间隔和上一条消息的块地址,最后从此块地址读出接收到的数据。在嵌入式系统软件处理中,我们应尽量采用中断方式。
表1 mil-std-1553消息格式
bit2(mode code) | bit1(broadcast) | bit0(rt-to-rt) | message format |
0 | 0 | 0 | bc-to-rt(if t/r*=0) or rt-to-bc(if t/r*=1) |
0 | 0 | 1 | rt-to-rt |
0 | 1 | 0 | broadcast |
0 | 1 | 1 | rt-to-rts(broadcast) |
1 | 0 | 0 |
|