基于HS3282的ARINC429航空通讯总线设计.doc

上传人:精*** 文档编号:825030 上传时间:2023-09-04 格式:DOC 页数:25 大小:250.06KB
下载 相关 举报
基于HS3282的ARINC429航空通讯总线设计.doc_第1页
第1页 / 共25页
基于HS3282的ARINC429航空通讯总线设计.doc_第2页
第2页 / 共25页
基于HS3282的ARINC429航空通讯总线设计.doc_第3页
第3页 / 共25页
基于HS3282的ARINC429航空通讯总线设计.doc_第4页
第4页 / 共25页
基于HS3282的ARINC429航空通讯总线设计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、 基于HS3282的ARINC429航空通讯总线设计摘要: 本文简要地介绍了航空电子通讯总线ARINC429接口的硬件设计和软件算法。系统设计中具有典型性和实用性。关键词:航空电子;差分输出;航空429总线;环形队列功能相对独立的航空电子系统逐步走向综合,例如将雷达、惯导、GPS 和机载计算机联合,组成新型航空图导航系统,各子系统之间的数据通讯变得尤为重要。航空电子系统之间最常的通讯总线是ARINC429和1553B。其中 ARINC429广泛使用在波音(Boeing)系列飞机、欧洲空中客车(Airbus)等机种。我国的惯导系统也以ARINC429为主要通讯总线。一. ARINC429总线简介

2、ARINC429 规范,又称Mark33数字信息传输系统(DITS-Digital Information Transfer System),是专为航空电子系统通讯而规定的航空工业标准,解决了原来419规范的许多矛盾和冲突。它忽略了不同厂家航电系统接口的复杂性,为系统互联提供了统一平台。根据规范,数字信息通过一对单向、差分耦合、双绞屏蔽线传输,本质属于串行通讯范畴。数据以32-Bit字(Word)格式传送。每个字包含1-Bit校验位,8-Bit标号。标号(Label)定义了飞行数据的功能,即保持被传输数据的所属类型,例如属于精度数据、纬度数据等。其余的数据位或以数字(二进制或BCD编码),或以

3、字母编码,根据Label而区分成不同的域。为了使通讯完全标准化和防止冲突,所有的飞行功能都已经赋予了特定的标号和数据格式。ARINC429数据发送时经过二级差分驱动,如图1波形所示。前级V+、V-是TTL电平,即逻辑1为5V,逻辑0为0V的正逻辑。经过驱动的第二级输出V+、V-电平和参考电压VRef有关。而差分运算结果是参考电压的2倍。图1表示ARINC429逻辑“1”、“Null”空数据和逻辑“0”在差分双绞线上电平定义。在连续传送数据时,每个32-Bit字之间至少插入4个空(Null)状态进行隔离,亦即字间隙。字内格式定义如表1所示。注意,其位号从1开始,不是通常的从0开始的习惯。 表1

4、ARINC429 32-Bit字格式定义ARINC BIT#(数据位)Function (功能)备注1-8Label标号 域9-10SDI or Data数据源(Source)、目的(Destination)或 数据的一部分11LSB12-27Data28MSB29Sign数据的最低有效位30,31SSM数据32Parity Status数据的最高有效位二. HS3282芯片和ARINC429收发设计目前ARINC429 收发器以HARRIS公司的HS3282和HS3182最为著名,分别和Device Engineering公司的DEI1016及BD429完全兼容。HS3282是高性能的CMO

5、S型429接口,亦能满足类似的时分多路串行数据通讯。图2是其结构框图, 整个芯片只需单5V工作电源。它具有2路接收、一路发送。接收器和发送器相互独立,同时工作。双通道接收器之间也是独立的并行接收,可以直接连接到 ARINC429总线,而不需电平转换。数据字长可以是标准的32-Bit或25-Bit,接收数据时进行校验,而发送数据时产生校验。内部定时器可自动调整字间隙(Word Gap)。其发送缓冲是一个832Bit的FIFO。HS3282和CPU接口比较简单,发送时经常和HS3182配合。HS3182是满足ARINC429规范的、双极数据输入的线驱动器。这里不再详细介绍这两个芯片的管脚分配,如需

6、要可以参考图3。图3 是ARINC429总线收发的经典电路。复位是低电平有效,外部工作时钟为1MHz。具有二路接收,即第一路接收(Rx429A+,Rx429A-)和第二路接收(Rx429B+,Rx429B-),具有一路发送,即(Tx429+,Tx429-)。发送时,HS3282为前级输出,HS3182为正式差分输出。C2、C3为68pF的电容,这两个电容至关重要,最好采用高精度军品电容。一般作为CPU外围I/O设备的接口芯片,都有片选、读、写信号和选择片内寄存器的若干地址线。但HS3282有点特殊,每一个寄存器操作信号都需要对CPU信号进行译码产生。图4是对HS3282控制逻辑示意图。选择 C

7、PU时最好直接选择外部数据总线为16-Bit以上的,如MC80186、F240等。如果非要用8-Bit的CPU,则需要2个8-Bit的锁存器,一次将16-Bit先读写到锁存器中,然后分别对2个锁存器读写,硬件和软件都比较麻烦。控制逻辑以CPU提供的I/O操作信号/IS和读写信号/RD、 /WR以及地址A2A1为输入,为HS3282产生操作信号,诸如读第一路接收数据寄存器信号 /RD429A,第二路 /RD429B,发送低字选通信号 /WR429LW,高字 /WR429HW,发送使能控制 TX429EN等。控制逻辑和CPU同时监视HS3282的3个状态信号,第一路接收准备好信号 /Rx1RDY,

8、第二路/Rx2RDY,发送准备好/Tx429RDY。这些状态信号一方面可供软件查询,另一方面由控制逻辑产生 /INT中断请求。在图4 和下面的逻辑描述中都没有体现为CPU提供READY信号的要求。一般情况下,作为I/O外设的HS3282读写速度要比CPU慢,应该用一个状态机进行速度匹配,为CPU产生READY信号。表2是对图4控制逻辑电路地址的一种分配方法,并不是唯一的。在发送使能信号TX429EN控制中,简单地把发送准备好信号 /TX429RDY反相后输出。亦即只要HS3282发送器有空闲,就允许发送。HS3282的发送器包括一个FIFO,可以存储8个32-Bit的 429数据字。在要求爆发

9、式(Burst)发送时,可以把发送使能TX429EN直接由CPU控制。一般处于禁止状态,当CPU填充HS3282的发送 FIFO字数达到自定数目(如8个)时,再使能发送,使FIFO中数据倾泻而出。 表2 HS3282寄存器分配地址读操作 (Read)写操作(Write)有效信号00H第一路接收低字寄存器Rx429ALW/RD429A = L, (SEL=A0=0)01H第一路接收高字寄存器Rx429AHW/RD429A = L, (SEL=A0=1)02H第二路接收低字寄存器Rx429BLW/RD429A = L, SEL=A0=003H第二路接收高字寄存器Rx429BHW控制寄存器CR429

10、A/RD429B =L, (SEL=A0=1)04H发送低字寄存器Tx429ALW/WR429LW = L05H06H发送高字寄存器Tx429AHW/WR429HW = L其实现逻辑如下: IS,RD,WR pin; / CPU方的I/O操作、读写信号,皆为低有效. IOAddr = A2,A1,X; / CPU 方 I/O 地址 ENTX429A = !TX429ARDY; / ARINC429 发送使能. / 读 第一路 ARCIN429 接收寄存器 高低字. !RD429A = !IS & !RD & (IOAddr = RX429ALW) # (IOAddr = RX429AHW);

11、/ 读 第二路 ARCIN429 接收寄存器 高低字. !RD429B = !IS & !RD & (IOAddr = RX429BLW) # (IOAddr = RX429BHW); / 写 第一路 ARCIN429 发送寄存器 高低字. !WR429AL = !IS & !WR & (IOAddr = TX429ALW); !WR429AH = !IS & !WR & (IOAddr = TX429AHW); / 写 第一片 HS3282 控制寄存器. !WR429ACW = !IS & !WR & (IOAddr = CR429A); !INT = !RX1RDY # !RX2RDY;

12、/ 2路接收准备好,共享中断请求. 三. 软件设计上电复位后,软件应在正式工作前初始化HS3282,即向控制器写控制字。初始化时可以设置字长为32-Bit或25-Bit。外部提供的工作时钟为1MHz,内部接收和发送速率可以设置为十分之一或八十分之一,即100Kbps或12.5Kbps。也可以设置为自测试模式,即HS3282的发送直接在内部环接到第一路接收,反相接到第二路。发送数据,然后比较发送和接收,判断HS3282工作状况。自测试原理可以参考图1的框图。在此主要介绍正式工作时软件的一些功能算法。3.1 原始数据收发在图3和图4的硬件设计中已经考虑到软件设计的方便性。软件收发既可以采用查询HS

13、3282的状态位进行,也可以采用中断驱动。原始数据的收发是整个系统的瓶颈,一般实用程序都采用中断接收,查询式发送。其中断响应作为核心部分,一般都使用对应嵌入式CPU的汇编语言实现。为清楚起见,采用算法语言描述。中断接收数据首先存放到缓冲区,亦即环形队列中,再由主程序读取,其结构与算法如下:位置0123 N-2N-1内容RxNumWrPtrRdPtrData BufferEndAddr功能当前接收字数写指针读指针数据缓冲区结束地址 / 环形队列缓冲区初始化procedure InitBuf;begin Disable Interrupt; / 禁止中断 RxNum := 0; / 接收数目清0

14、WrPtr := StartAddr; / 写指针指向开始地址 RdPtr := StartAddr; / 读指针指向开始地址 Enable Interrupt; / 使能中断end; / ARINC429环形队列中断接收算法.procedure Rx429Interruptbegin Save Register; / 保护现场 DataBufWrPtr := InpW(Rx429ALW); / 读HS3282低16-Bit字 Increament(WrPtr); / 写指针加1,后移. DataBufWrPtr := InpW(Rx429AHW); / 读HS3282高16-Bit字 Inc

15、reament(WrPtr); / 写指针加1,后移. Disable Interrupt; / 禁止更高级中断.Increament(RxNum); / 修改接收字数,即加1. Enable Interrupt; / 开放中断 if (WrPtr EndAddr) then / 若写指针到达队尾,环绕之 WrPtr := StartAddr; Restore Register; / 恢复现场end; / 环形队列读取算法.function Rd429Buf(var LW429,HW429:word):boolean;begin Result := False; if (Rx Num = 0)

16、 then exit; / 如果没有接收数据,则退出 Result := True; / 所读数据有效 LW 429 := DataBufRdPtr; / 读队列429低16-Bit字 Increament(RdPtr); / 读指针加1,后移. HW429 := DataBufRdPtr; / 读队列429高16-Bit字 Increament(RdPtr); / 读指针加1,后移. Disable Interrupt; / 禁止中断.Decreament(RxNum); / 修改接收字数,即减1. Enable Interrupt; / 开放中断 if (RdPtr EndAddr) th

17、en / 若读指针到达队尾,环绕之 RdPtr := StartAddr;end;环形队列初始化应该在系统开放中断前调用,接收算法本身就是中断响应,而读取算法在主程序中数据处理时调用。环形队列缓冲区大小应该和主程序处理速度取得平衡,太大则浪费空间,太小则容易溢出,造成混乱。3.2 多路接收中断共享算法当2 路以上接收共享一个中断时,容易出现覆盖现象,丢掉某一路数据,或使边沿触发的中断失效,不再接收任何数据。这种错误非常隐蔽,如图5波形。当在A点第一路准备号/Rx1RDY = L,/XINT有效,引起中断,CPU进入中断处理响应,在AB之间已经判定为第一路有效并开始处理。处理到B点时,第二路接收

18、准备好亦引起中断。但 /XINT已经有效,不会引起电平变化。中断响应程序继续进行,在C点退出,没有处理第二路接收。如果中断请求是电平 (Level) 敏感,中断处理退出后还可以再次进入。但有相当的系统开销。若中断请求是边沿(edge)触发,在C点退出之后,因未处理第二路接收使得中断请求 /INT一直保持电平有效,但不能产生边沿跳变翻转,中断触发条件永远不能满足,系统死锁。各路数据将无一幸免的丢失。有人解决这个问题时采用“独占中断”办法,将每一路接收准备好只对应到一条硬件中断请求上。嵌入式CPU 能提供给外部的硬件中断都比较少,系统外围设备较少时尚能对付,I/O外设和接收通道变多时就束手无策。实

19、质性解决办法需要“软硬兼施”。如前图4所示,将HS3282的 /Rx1RDY,/Rx2RDY等状态信号同时送达CPU,组成只读“状态寄存器”,供CPU中断响应时查询。对中断处理方法如下:/ 多路共享中断处理程序算法procedure RxShareIRQbeginSave Register; / 保护现场while Data(/INT = L) do / 中断请求信号电平有效begin Read SR; / 读状态寄存器Treat Receive / 根据状态,处理对应接收通道。end;Restore Register; / 恢复现场end;这个方法已经运用在多个不同种类的系统,证明是非常有效

20、的。有人质疑在中断响应中使用循环是否合适,甚至认为在速度快、路数多的情况下CPU 可能全消耗在中断循环中,仍然要丢数据。“哎呀,怎么得了”,岂不呜乎哀哉。其实,路数越多,这种办法越有效。它进入中断次数少,系统开销就少,对多路爆发式数据接收响应快。至于丢数据则更不可能,CPU一般都比外设处理速度快得多。如果CPU速度不足以管理几路接收,并进行一定的加工处理,还要这种“头重脚轻根底浅”的系统干什么?3.3 ARINC429字与HS3282数据转换ARINC429 的32-Bit逻辑字和HS3282数据线上2个16-Bit的物理字并不完全等同,在数据接收后的处理和发送前需要软件进行适当的转换。目前我

21、国在SZ -01规范中规定数字信息传输系统采用HB6096标准,和上面规定差不多,只是把SDI、LSB、MSB统一规定到数据域,定义如下: 表3 HB6096标准D32D31-D30D29D28-D9D8D1奇偶位状态位符号位20位数据8位标号在和上层软件交换数据时,应以ARINC429字格式进行,而在控制HS3282收发时应以2个16-Bit物理字为单位。底层软件要进行互逆转换。总的转换方法如图6所示。注意,两者的标号逐位逆序对应,即D7 D0等。以下是标号转换算法。/-/ function TransLabel(value:byte):byte;/ 功能: ARINC429数据标号互换/

22、入口参数:/ value: 原标号值/ Result = 逐位转换后的新标号/-function TransLabel(value:byte):byte;begin Result := 0; if (value and $01) then Result := Result or $80; / 交换D0 D7 if (value and $02) then Result := Result or $40; / 交换D1 D6 if (Label and $04) then Result := Result or $20; / 交换D2 D5if (value and $08) then Resu

23、lt := Result or $10; / 交换D3 D4if (value and $10) then Result := Result or $08; / 交换D4 D3if (value and $20) then Result := Result or $04; / 交换D5 D2if (value and $40) then Result := Result or $02; / 交换D6 D1if (value and $80) then Result := Result or $01; / 交换D7 D0end;至于32-Bit的ARINC429数据和2个16-Bit的HS328

24、2物理字的相互转换,可以参考上面标号互换方法,不再给出。四. 结束语HS -3282是为ARINC429度身定做的,而且设计针对现今飞机技术最苛刻的要求,所以使用HS-3282来设计ARINC429总线既简单、有效,又严格保证其可靠性。我们已将上述设计应用在多个不同种类的航空电子系统中,证明是十分有效的。随着航空电子系统之间的通讯标准向ARINC429总线靠拢,HS3282的应用将更加广泛。429总线定义ARINC 是美国航空无线电公司英文字头的缩写, 该公司1977年7月21日出版了“ARINC 429规范”一书,429规范就是飞机电子系统之间数字式数据传输的标准格式,在飞机上使用429总线

25、的电子设备均应遵守这个规范,这样才能保证电子设备之间数据通讯的标准化,通用化。在429规范里规定了从所选定输出接口发送信息的方法。各组件之间的连接线使用由二根线绞结在一起再加上屏蔽保护的专用线,这种传输线称为429数据总线。429总线只能单向传输数据。各字位的作用按照ARING 429 总线规定,每个字格式(二进制或二-十进制)由32位组成:1-8位是标号位(LABEL)。它标记出包括在这个传送字内的信息的类型,也就是传送的代码的意义是什么。如传送的是VHF信息,则标号为八进制数030;若是DME数据,则标号为八进制数201等。9-10位是源终端识别(SDI)。它指示信息的来源或信息的终端,例

26、如一个控制盒的调谐字要送至3个甚高频收发机,就需要标示出信息的终端,即把调谐字输送至那个甚高频接收机。11-28或29 位是数据组(Data Field),根据字的类型可确定为是11到28还是11到29。它所代表的是所确定的特定数据。如标号为030,则11到29位为频率数据,使用的是BCD编码数据格式,即位11到29。29到30或31位为符号状态矩阵位(SSM),根据字的类型号为29或30到31。它指出数据的特性,如南,北,正,负等或它的状态。在甚高频内使用30到31位(BCD编码)。32位为奇偶校验位(P),它用于检查发送的数据是否有效。检查方法是当由1位到31位所出现的高电平的位数(即1的数)的总和为偶数时,则在第32位上为“1”。如果为奇数,则显示为“0”。在发送每组数据后有四位零周期,它是隔离符号,以便于发送下一组数据。ANINC 429的发送速度有高速(100Kbps)和低速(12.5Kbps)两种。意义及硬件要求在航空电子综合化系统中,快速、有效的数据传输对整个航空电子系统的性能有很大的影响,因此数据总线被称为现代航空电子系统的“骨架”。ARINC429是航空电子系统之间最常用的通讯总线之一,它符合航空电子设备数字数据传输标准。要在计算机上实现ARINC 429总线数据的接收和发送,必须实现429总线与计算机总线之间的数据传输。 .

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 通讯论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922