首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年8月19日星期一
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
TS68C429在飞机ARINC429 通讯改装中的应用

The Application of TS68C429 in Refitting Aircraft ARINC429 Bus Communication System

中国航空计算技术研究所一室 姜运生



ARINC429总线规范,又称Mark33数字信息传输系统(DITS,Digital Information Transfer System),是专为航空电子 系统通讯而制定的航空工业标准。几年前,笔者 写了《基于HS3282的ARINC429航空通讯总线设计》,至今仍有朋友不断咨询和学习。时代在发展,技术在进步,有价值的东西多分享才能创造更多价值。故本文在此抛砖引玉,介绍一种集成度更高的ARINC429芯片的应用,即ATMEL公司的多通道ARINC429收发器TS68C429A芯片在飞机改装中的应用。


改装系统简介

飞机航空电子系统的改装,就是使功能相对独立的子系统逐步走向综合,例如将雷达、惯导、GPS和机载计算机联合,组成新型航空图导航系统。通俗讲,就是将那些“傻、大、粗、笨”的仪器仪表,集成为“少而精”的智能仪表,减轻飞行员的操作难度。
图1是某系列多机型改装时的多功能显示器,它将原来分散显示的信息和数据集中在一台多功能显示器上。替换掉原来“老死不相往来”的各种导航仪表,不再需要领航员记忆大量枯燥的数据,减少了仪表种类,节省了宝贵的空间,极大减轻了领航员工作强度。图1中除了地图视频采用LVDS外,其它仪表通讯都采用ARINC429总线。显然,解决多通道的ARINC429通讯成为本次改装的瓶颈。

图1 多功能显示器关联图(略)

传统的ARINC429通讯设计中,大多采用HARRIS公司的HS3282或Device Engineering公司的DEI1016。但在此则极不经济,完成多通道429通讯,需要多个芯片和更多的布板空间,功耗也线性增加。特别是,传统的多通道的429需要更多的CPU中断请求线,需要外部复杂的逻辑设计。TS68C429A则是目前解决多通道429通讯最有效的途径。和传统的“两收一发”的芯片比较,它是“八收三发”,“一片顶四片”。


TS68C429A的主要特征

ATMEL公司的TS68C429A是高性能、多通道、低功耗的CMOS型429接口,亦能满足类似的时分多路串行数据通讯。图2是其结构框图,整个芯片只需单5V工作电源。它具有8路接收、3路发送。所有的接收通道和发送通道都是彼此互独立,可同时并行工作。8个接收通道之间也是独立的并行接收,可以直接连接到ARINC429总线,而不需电平转换。数据字长是标准的32-Bit,25-Bit的并不支持。

图2 TS68C429A 结构框图(略)

主要特征如下:

(1)8个独立的接收通道

(2)3个独立的发送通道

(3)和所有的TS68K系列的微处理器接口兼容

(4)16-Bit数据总线

(5)符合ARINC429接口,归零制编码(Return Zero Code)

(6)支持所有的ARINC429数据传输率,最高可达2.5Mbit/s 传统的ARINC429芯片的速率只有2种可选。

(7)多标号能力

传统的芯片要么不检查标号,要么就接收一个指定的标号。

(8)校验控制:奇校验、偶校验、无校验,中断能力

(9)RX、TX的数据率可独立编程

(10)每个发送通道有8个信息单元的FIFO

(11)向量式中断

(12)可组成菊花链中断

(13)所有的寄存器都是可直接寻址的

(14)具有自测试能力

(15)工作频率为20MHz

(16)低功耗:400mW


硬件设计

TS68C429A接收和发送通道都成倍增加,但毕竟不是通道的简单叠加,不是传统接口的线性扩展,在相关器件选型和设计中需要仔细推敲。

基本硬件接口

基本硬件接口就是和嵌入式CPU的接口电路。根据ARINC429数据特点,至少要选16-Bit数据总线以上的CPU。TS68C429A和所有的TS68K系列的CPU接口兼容,像TS68000、TS68020都可以只需要增加非常简单的接口逻辑。特别是TS68302完全可以“无缝连接”。无缝连接就是两个复杂芯片不需要“粘合逻辑”,对应信号直接相连。图3是最典型的无缝连接电路。

图3 基本接口电路(略)

在设计基本电路时需要注意以下几点:

(1)嵌入式CPU选型。

CPU的数据总线至少应该是16Bit的,否则在硬件上要增加字节转发电路,设计复杂度上升。如果在中断响应时想迅速判断中断源,CPU在中断响应时应该能够发出中断响应(IACK)信号,由TS68C429输出中断向量,由CPU回读后硬件判断,直接进入对应中断服务例程,节省软件响应时间。除TS68K系列外,符合这个要求的还有最广泛使用在PC机上的X86系列,如Intel80486等。显然,TS68C429的中断响应机制,完全类似X86系列中的 8259中断控制器时序,可以直接无缝连接。值得指出的是,X86系列的中断请求是高有效,中断请求信号需要反相。

(2)时钟

传 统的ARINC429芯片只有一个时钟,大多数是1MHz,用以控制收发速率。速率有2种选择,即速率是时钟的十分之一或八十分之一,亦即100K或12.5K。在这里,TS68C429需要2种时钟,系统时钟和ARINC429收发时钟。系统时钟CLKSYS用来控制CPU接口时序,应该和CPU时钟相同,在这里直接使用TS68302的输 出时钟CLK0。在使用其它型号的CPU时,CLKSYS可以直接和CPU时钟连接在一起。CLK429使用了定时器输出TOUT1,用来决定429串行数据传输速率。在使用其它型号的CPU时,也可以设计一个独立的时钟做CLK429。

(3)高、低字节访问

处理器对TS68C429每次访问都应该是16Bit的,除了这里和TS68302的无缝连接,还可以把高字节选通信号(/UDS)和低字节选通信号(/LDS)一起直接接地。CPU一般是字节编址的,所以应该是A9..A1对应TS68C429的A8..A0。

(4)存储器周期

无 论是读周期还是写周期,TS68C429都要用/DTACK应答CPU。TS68K系列中的/DTACK,即数据传输周期应答( Data Transfer Acknowledge),本质上就是许多CPU的READY信号。如果使用别的型号CPU,READY属于高有效,需要对/DTACK进行反相。

中断菊花链电路

对于大多数应用来讲,一片TS68C429基本可以满足多通道429通讯要求。当要求更多通道时,TS68C429A可以采用菊花链的形式设计。图4是菊花链电路示意图。

图4 中断菊花链(略)

菊花链(Daisy Chain)是一种阻塞式级联结构,排在前面的优先级高于其后的所有单元。在任一时刻,高优先级若果发出中断,就禁止了比它自身优先级低的中断。图4中的共有U1、U2…Un个单元,其中U1具有最高优先级,Un优先级最低。当某一单元需要发出中断时,首先要判断前面是否有高优先级的中断,即判断传递下来的中断使能信号/IEIxx,当其为低电平时,可以发出,当其为高电平时禁止发出。禁止中断发出时,要一直等待到前面中断响应完成后再发出。最极端的情况就是,某些低优先级的中断单元永远没有机会发出中断,设计菊花链电路时,要综合平衡各通道的数据流量。


软件设计

上电复位后,软件应在正式工作前初始化TS68C429。传统的芯片只需要写一次控制寄存器,但多通道的初始化要复杂一些。

寄存器映象

传统的ARINC429只有一个控制寄存器,由于通道少,每个通道分配专用的选通信号,硬件简单译码即可。在多通道的芯片中,不可能继续采用这种办法。整个芯片只有一个总的片选(/CS),然后由地址A8..A0来寻址片内寄存器。系统的初始化,本质就是正确配置这些寄存器。

8个接收通道,每个都有自己的4类专用寄存器区。

(1)接收控制寄存器 (Receive Control Register)

这是一个可读可写的寄存器,它控制本通道的中断优先级、校验、标号、测试模式以及通道使能等配置。如果有2个通道的中断优先级相同,就有一个永远发不出中断。如果设置本通道处于测试模式,则第三发送通道的数据在内部回环到本通道。这个特征是用来做通道自检的。

(2)间隙寄存器 (gap register)

间隙寄存器是一个只写寄存器。写入值是以CLK429时钟周期为单位的计数值,实际是定义了相邻两个429数据的最小间隙。在传统的芯片中,最小间隙是固定的。在这里,必须显式地设置这个寄存器,决不能隐含使用复位缺省值。

(3)数据缓冲区 (message buffer)

数据缓冲区是2个16Bit的只读寄存器,存放接收到的ARINC429数据。采用中断接收时,主要就是读这2个寄存器。高16Bit(Most Significant Word)存放在低地址,低16Bit(Least Significant Word SW)存放在高地址。读数据时先读MSW,再读LSW。

(4)标号控制矩阵 (label control matrix)

这是一个256 x 1Bit的存储器区。许多人不理解这个区的含义,不会配置,以致系统不能正确运行。众所周知,ARINC429规范的低8Bit属于标号区(Label),标号代表了数据类型,例如 72H代表高度数据,73H代表角速度等。这样总计有256个标号。标号控制矩阵的某地址设置为“1”,就允许该通道接收对应标号的数据,清除为“0”,就禁止该标号的数据。硬件复位之后全部清“0”,也就是禁止接收一切数据,这就是系统不运行的原因。

3个接收通道,每个都有自己的3个专用寄存器:

(1)频率寄存器 (Frequency Register)

这是一个只写的寄存器,写入值是发送速率的除数因子。

发送速率=CLK429/FR除数因子。

根据这个公式,用户可设定选择的速率。传统的ARINC429没有这个功能,只有2种固定的速率。

(2)发送控制寄存器(Transmitter Control Register)

和接收控制寄存器类似,这是一个可读可写的寄存器,它控制本通道的中断优先级、校验、是否作为测试模式的发送、以及通道使能等配置。其中的发送间隙是控制连续发送的两个32-Bit的ARINC429信息之间最小间隙,防止接收方覆盖溢出。

(3)发送FIFO

FIFO,即“先进先出”(First In First Out),基本元素可以认为是2个16Bit的寄存器。软件必须先写入MSW,再写入LSW,这和接收通道顺序是一致的。FIFO深度为8个ARINC429信息。在写入之前,必须验证FIFO未满,否则写入数据被丢弃。在FIFO只要满队列的FIFO发送了一个元素,此时FIFO虽然未空,但也未满,就可以写入后一个数据。
除了接收通道和发送通道的专用寄存器,还有几个通用的寄存器,如通道状态寄存器、中断屏蔽寄存器,中断向量基址寄存器等,不再赘述。

复位初始化

上电复位之后,所有寄存器清 “0”,各通道处于禁止状态,需要软件显式初始化。下面给出接收通道和发送通道的初始化流程。

// 接收通道的初始化
procedure InitReceiver;
begin
for i: = 1 to 8 do
if (Channel used) then // 如果要使用该通道
begin
if (Check Label) then // 要控制标号
begin
Bit LCMWE = 1; // 允许写标号控制矩阵
Write 'Label Control Matrix;
Bit LCMWE = 1;
end;

if (Check Parity) then // 使能校验
begin
Set Parity Bit;
end;

Set "Channel-Priorty Prder" // 设置通道优先级
Bit "Channel Enable" = 1; // 使能通道
end;
end;

// 发送通道的初始化
procedure InitTransmitter;
begin
for i: = 1 to 3 do
if (Channel used) then // 如果要使用该通道
begin
if (Check Parity) then // 使能校验
begin
Set Parity Control Bit;
end;

Write "frequency divider" // 设置发送分频因子
Write "transmission gap" // 设置间隙寄存器
Bit "Channel Enable" = 1; // 使能通道
end;

if (Interrupt used ) then // 使用中断来发送
begin
Write "Base Register" // 设置基址寄存器
Write "Mask Register" // 设置屏蔽寄存器
end;
end.

ARINC429数据的接收与发送

系统工作后,初始化的通道就可以接收发送了。一般,因为不可预测接收数据何时到达,正式工作后接收采用中断驱动,发送采用查询,这样既可以不丢失数据,又可以掌控发送节奏。查询接收的办法,一般使用在系统初期硬件调试阶段。在上篇文章中,介绍了中断采用环形接收队列,这个方法非常有效。在此不再赘述环形队列访问算法。下面给出查询/中断收发流程。

// 查询方式的接收流程
procedure ScanReceiv;
begin
Read "Status Register"; // 读状态寄存器
for i: = 1 to 8 do
if (RXi = 1) then // 该通道接收到数据
begin
Read MSW; // 读高字
Read LSW; // 读低字
Write Recv Buf[i]; // 存入接收缓冲
end;
end.

中断接收就很简洁了,如下

// 中断接收服务程序
procedure IntReceiv;
begin
Read MSW; // 读高字
Read LSW; // 读高字
Write Recv Buf[i]; // 按照环形接收队列算法,存入接收缓冲
end.

// 查询方式的发送流程
procedure ScanTransmitter;
begin
Read "Transmitter control Register"; // 读发送控制寄存器
Extract "Nb-msg"; // 解算出 FIFO中的信息数目
N = 8 - Nb-msg; // 设置本次可发送的信息数
for i: = 1 to N do
begin
Write MSW; // 写高字
Write LSW; // 写低字
end;
end.

// 中断式发送流程
procedure IntTransmitter;
begin
N = 8; // 设置本次可发送的信息数
for i: = 1 to N do
begin
Write MSW; // 写高字
Write LSW; // 写低字
end;
end.


结束语

TS68C429集成度高,是改装原来分散的ARINC429设备的一种合理有效的选择。我们已将上述设计应用在多个不同种类的航空电子系统中,证明是十分有效的。随着航空电子系统的更新换代,TS68C429的应用将更加广泛。

《世界电子元器件》2007.7
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com