基于HS3282的ARINC429航空通讯总线设计.docx
《基于HS3282的ARINC429航空通讯总线设计.docx》由会员分享,可在线阅读,更多相关《基于HS3282的ARINC429航空通讯总线设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于HS3282的ARINC429航空通讯总线设计
基于HS3282的ARINC429航空通讯总线设计
摘要:
木丈简要地介绍了航空电子通讯总线ARINGI29接口的唤件设计和软件算法。
系统设计中具有典
型性和实用性.
关键词:
航空电子;差分输出;航空429总线;环形队列
功能相对独立的航空电子系统逐步走向综合,例如将宙达、惯导、GPS和机载i|•算机联合•组成新型航空图寻航系统•备子系统之间的数据通iR变御尤为重要。
航空电『系统Z间最常的通讯总线足ARINCI29和155SB.其屮ARINC429广泛使用在波音(Boeing)系列飞机、欧洲空中$勺[(Airbus)等机种,我国的惯导系统也以ARIXC429为主雯通讯总线,
ARINC429总线简介
ARIXC429规范•又称Marks3数字信息传输系统(DITS―DigitalInformationTransferSystem).是专为航空电子系统通讯而规定的航空丄业标准.解决门京來419规范的许参矛盾和冲突。
它忽略了不同厂家航电系统接口的复杂性,为系统互联提供了统一平台。
根据规范,数字怡息通过•对爪向.養分耦介、双绞屏蔽线传输,木质属于串行通讯范踌。
数据以32-Bit字(Vgd)恪式传送•毎个字包含1-Bit校验位•8-Bit标号.标号(Label)定义了飞行数据的功能•即保持被传输数据的所属类型,例如属于精度数据、纬度数据等•其余的数据位或以数字(一进制或BCD編码儿或以字即编码,根据Labe]而区分成不同的域。
为门吏通讯完全标准化fn防止冲突,所有的飞行功能都已经賦予r辖進的标号和数据粘式・
ARIXC429数据发送时经过一级差分驱动,如图1波形所示。
前级V+、V-是TTL电平,即逻辑1为5V,
逻辑0为0V的正逻辑。
经过驱动的第一级输出VrV-电平和参考电压Vr*有关。
而差分运t?
结果足参考
电压的2倍4图1表示ARIXC429逻辑U“Nui1”空数据和逻辑“0”在差分双绞线上电平定义。
在连续传送数据时•每个32-Bit字之间至少插入4个空(Null)状态进行隔离,亦即字间隙。
字内矗式宦义如表1所示。
注总,其位号从1开始.不是通常的从0开始的习惯。
前级
差分运算
ARINC429数据电平定文
ARINC42932-Bit字格式定义
ARINCBIT#
(数据位)
Function(功能)
备注
18
Label
标号域
910
3DIorData
数据源(Source)s目的(Destination)
或数据的一部分
11
LSB
12-27
}ata
28
ISB
29
3ign
数据的最低有效位
30.31
SSM
数据
32
>aritySxatus
数据的最《有效位
HSS282若片和ARINC429收发设计
目前ARINC129收发器以HARRIS公司的HS3282flJHS3182M为著名,分别和DeviceEngineering公司的DEI1016及BD429完全兼容。
HSS282是高性能的CMOS型429接口,亦能满足类似的时分多路串行数据通讯.图2是其结构框图,整个芯片只需號5VI:
作iW.它具有2路接收、一路发送。
接收器和发送器相互独立,同时工作。
戏通道接收器之间也是独立的并行接收.可以直接连接到AR1NC429总线•而不需电平转换。
数据字长可以是标准的S2-Bit或25・Bit,接收数据时进行校验,而发送数据时产生校验。
内部定时器可自动调整字间隙(WordGap).其发送缓冲是一个8x32Bit的FIFO。
图2HS3282DEI1CH6结构框图
HS8282和CPU接口比校简叽发送时经常和HS3182配合。
HS3182是满足ARINC429规范的、双极数据输入的线驱动器。
这里不再详细介绍这两个芯片的管脚分配,如需嬰可以参考图3。
图3ARIXC129总线收发的经典电路&复位是低电平有效.外部I:
作时钟为1MH2。
具有一路接收.即
第•路接收(Rx429AtRk429A・)和第一路接收(Rx429BxRx429B-)■具有一路发送.即(Tx429+-TX129-).发送时,HS32S2为前级输出.HS3182为正式差分输出。
C2.C3为68pF的电容,这两个电容至关重要,最好采川商粘度军拮电容。
一般作为CPU外fflI/0设备的接口芯片,都有片选.读.写信号和选择片内寄心器的若干地址线。
但HS3282有点特殊.每一个寄存器操作信号都需要对CPU信号进行译码产生。
图4是对HS8282控制逻辑示意亂选挪CPU时最好直接选捕外部数据总线为I6-Bit以上的,iaiMC80186.F2I0等。
如果非要用8"Bit的CPU.则需耍2个8-Bit的锁存器,一次将16-Bit读弓到锁〃器中,然后分别对2个锁心器读写,换件和软件都比较麻烦。
控制逻辑以CPU提供的I/O操作信号/IS和读写信号,RD./WR以及地址A2A1为输入•为HS3282产生操作信号,诸如读第-•路接收数据寄存器信号/RCH29A,第二路/RD-129B.发送低字选通信号/WR429LW.為•字WR429HW.发送使能控制TX429EX等。
控制逻辑和CPU同时监视HSS282的3个状态信号•第一路接收准备好信号/Rx1RDY.第一路/RX2RDY,发送准备好/Tx429RDY.这些状态信号一方面可供软件食询,另一方血•由控制逻辑产生/INT中断请求。
PCI
D4
20
D3
24
D2
25
DI
26
DO
2T
bTXClK
TZ/R
CWS7R
VCC
S£L
ERl
EN2
GHD
EHTX
WC
PLl
KC
PL2
WC
n
「
D15D14D13
D12
DllDIO
RX429A*
KX429A-
3
3RX429A-
RX«29B*
rKET,⑹>CLK
21
35霸
40
p-
7
/RX2RDY
30
JTX42?
RDY
VCCi3
RZ429B--t
luT
vcc
IWC42?
A*
4RX429B4
图3ARJNC429收发电路设计
16
14"5
+3V
+15T
•15V
CA
CB
g
匸
T
12
C4
P0.1L
入
31
T429*
4
J
DA7A+
L
OUT#
6
TX429*
32
T429-
13
£>ATiA・
KT广
otrr-
IIP
11
TX42?
-
p
)0
15
HL
5RX42?
B-
TX429*
tX429-
GNDGND
VRfif>CLK
SYNC
68p]
2
8
在图4和下浙的逻辑描述中都没有体现为CPU提供READY信号的耍求。
一般情况下,作为10外设的
HS3282读写速度LtCPU慢•应该川一个状态机进行速度匹配.为CPU产生READY信号。
表2是对图彳
控制逻雅皿地址的…种分配方法,并不是唯一的。
在发送使能信号TX429EX控制中•简敢地把发送准备好信号/TX429RDY反郴后输出。
亦即只耍HS3282发送器有空闲,就允许发送°HS3282的发送器包
扌舌-•个FIFO•可以存储8个32-Bit的429数据字。
在要求爆发式(Burst)发送时.可以把发送使能T
X429EN直接由CPU控制。
一股处于禁止状态,7CPU填充HS3282的发送FIFO字数达到自定数目
(如8个)时.再使能发送,使FIFO中数据帧泻而出。
表2HSS282寄器分配
地址
啖操作(Read>
打操作(W丫1te)
冇效信号
OOH
笫一路接收低字寄存器
/RD129A=L,
Rx429ALW
(sel=ao=o)
01H
第•路接收岛•字寄〃器
/RD-129A=L.
Rx429AHV
(SEL=AO=1)
02H
第一路接收低字寄存器
/RD429A=L,
RX129BLW
S£L=A0=0
03H
第一路接收岛字寄存器
悴制奇存器
/RD429B=L,
RX429BHW
CR429A
(SEL=A0=1>
04H
发送低字奇存器
ZWR-129LW=L
TX429ALW
05H
06H
发送ft字奇存器
/WR429HW=L
TX129AHW
其实现逻辑如下:
IS,RD,WRpin:
//CPU方的10操作、读写信号•皆为低有效.
!
INT=iRXlRDY8:
RX2RDY:
//2路接收准备好,共京中断请求.
软件设计
上电复位后,软件应在正式工作前初始化HS3282,即向控制器写控制字。
初始化时可以设置字长为32-Bit或25・Bito外部提供的工作时钟为iMHz,内部接收和发送速率可以设g为十分之一或八十分之一,即200Kbps或12・5Kbp$。
也可以设g为自测试模式•即HS3282的发送直接在内部环接到笫一路接收,反相接到第_路0发送数据,然后比较发送和接收,判断HS3282X作状况。
自测试原理可以参考图1的框图。
在此主要介绍正式工作时软件的一些功能算法•
3.1原始数据收发
在图3和图4的硕件设讣中已经考虑到软件设i|•的方便性.软件收发既可以采用査询HS3282的状态位进行,也可以采用中断驱动。
原始数据的收发是整个系统的瓶颈.一般实用程序都采用中斷接收,査询式发送。
«中断响应作为核心部分,一股都使川对应嵌入式CPU的汇编语言实现。
为清楚起见,采川算法语言描述。
中斷接收数据首先存放到缓冲区,亦即环形队列中.再由主程序读取•其结构与算法如下:
位S
0
1
2
3…X-2
N-1
内容
RxXum
iffPtr
RdPtr
DataBuffer
EndAddr
功能
半前接收字数
7•佈针
读拆针
数据缓冲区
结束地址
//环形队列缓冲区初始化
proCedureInitBuf:
begin
//禁止中断
DisableInterrupt;
RXNurn:
=0;
//接收数目清0
VrPtr;=StartAddr;//写指针指向开始地址
RdPtr
StartAddr;H读抬针抬向开始地址
EnableIntcrrupt;
//使能中断
end;
//ARIXC429环形队列中断接收算法.
pr0cedureRx429Intcrrupt
begxn
SaveRegister;
//保护现场
DataBuf[ffrPtr]:
=InpW(Rx429ALW);
//读HS3282低16-Bit字
ncreament(WrPtr):
//写指针加1,后移.
DataBufCWrPtr]:
=Inpff(Rx■129AHW);
//读HS328216-Bit字
Increament(ffrPtr);
//写指针加I•后移•
//禁止更高级中断・
DisablcInterrupt:
Increament(RXNum);
//修改接收字数,即加1•
Enab1eInterrupt;
//开放中
if(FrPtrNEndAddr)then
//
若写拆针到达队尾.环绕之
WrPtr:
=StartAddr;
//恢复现场
RestoreRegistcr:
end;
//环形队列读取算法.
functionRdl29BufCvarLW129,HW429:
word):
boolean;
bogin
Result;=FaIse;
if(RXNum=0)thencxit;
//
如果没有接收数据,则退出
Result:
=True:
LW429:
=DataBuf[RdPtr]:
//读队列129低16-Bit字
Increament(RdPtr);
//读指针加1,后移.
HW429:
=DataBuf[RdPtr];
Inereament(RdPtr);
//读指针加n后移.
DisableInterrupt;
//禁止中斷.
Dccreament(RxNum):
//修改接收字数.即减1.
//所读数据有效
//开放中断
EnableInterrupt:
//若读指针到达队尾.环绕之
if(RdPtrMEndAddr)then
RdPtr
=StartAddr:
end:
环形队列初始化应该在系统开放中断前调用•接收算法木身就是中断响应,而读収算法在主程序中数据处理时调用0环形队列缓冲区大小应该和主程序处理速度取得平衡•太大则浪费空间,太小则容易溢出,适成混乱C
3.2多路接收中断共享算法
十2路以上接收共亨一个中断时,容易出现覆盖现盘.丢掉某一路数据.或使边沿触发的中斷失效.不再接收任何数据。
这种错误非常隐蔽•如图5波形“I在A点第一路准备号/RxlRDY=L./XINT冇效.引起中断•CPU进入中断处理响应,在AB之间已经判定为第一路有效并开始处理。
处理到B点时,第一路接收准备好亦引起中断。
但/XINT已经有效•不会引起电平变化。
中断响应程序继续进行,在C点退出,没有处理第_路接收。
如果中断请求是电平(Level)墩感•中断处理退出后还可以再次进入。
但有相十的系统开销。
若中斷请求是边沿(edge)触发■在C点退出之后.因未处理第一路接收使得中断请求/IXT-直保持电平有效•但不能产生边沿跳变翻转,中断触发条件水远不能满足.系统死锁。
各路数据将无一幸免的丢失。
第_痔fRxlRDY—1人
第二路/Rx2RDY
fc
中断请求/INT
中断处理第一路
图5多路接收中断覆盖示意
有人解决这个问題时采用“独占中断"办法,将每一路接收准备好只对应到-•条駛件中断请求上。
嵌入式CPU能提供给外部的坝件中断都比较少,系统外m设备较少时尚能对付,I/O外设和接收通道变多时就束于•无策。
实质性解决办法需要“软硕辣施”。
如前图4所示,将HS32S2的/RxlRDY./Rx2RDY等状态信号同时送达CPl^组成只读“状态奇存器”,供CPU中斷响应时査询。
对中断处理方法如下:
//多路共亨中断处理程序算法
ProcedureRxSharelRQbegin
//保护现场
SaVeRcgister:
vhileData(/INT=L)do
//中断请求信号电平有效
begin
RCadSR:
TreatReceive
//读状态寄存器
//根据状态.处理对应接收通道。
end;
//恢复现场
RestoreRegister:
end;
这个方法已经运州在多个不同种类的系统,证明是非常有效的•有人质疑在中断响应中使用循环是否合适,甚至认为在速度快、路数多的情况下CPU可能全消耗在中断循环中,仍然嬰丢数据。
"哎呀,怎么得r”•岂不鸣乎哀哉。
其实,路数越乡.这种办法越有效。
它进入中斷次数少,系统开销就少.对多路爆发式数据接收响应快。
至于丢数据则更不可能.CPU-股都比外设处理速度快御多。
如果CPU速度不足以管理几路接收,并进行一定的加工处理,还嬰这种“头重脚轻根底注”的系统干什么?
3.3ARIKC429字与HS3282数据转换
ARINC129的32-Bit逻徘字和HS3282数拥•线卜・2个16-Bit的物理字并不完全等同,在数据接收后的处理和发送前需耍软件进行适半的转换-目前我国在S2-01规范中规定数字信思传输系统采用HB6096标准,和上面规定差不多.只是把SDI、LSB、MSB统一规定到数据域,定义如下:
D32|d31-D30
D29
D28-D9
DS—D1
奇偶位1状态位
符号位
20位数据
8位标号
表3
HB6096标准
在和上层软件交换数据时.应以ARIXC429字格式进行•而在控制HS3282收发时应以2个16-Bit物理字为敢位。
底层软件要进行互逆转换0总的转换方法如图6所示•注虑,两者的标号逐位逆序对应,即D7-D0等・以下是标号转换算法。
//functionTransLabel(valuc:
byte):
byte;
//功能:
ARINC429数据标号互换
//入口参数:
value:
原标号值
Result=逐位转换后的新标号functionTransLabel(value:
bytc):
byto;
begin
Result
0:
if((valueand$01)thenRcsuIt:
=Resuitor$80:
//
交换DOD7
if((valueand$02)thenResuIt
Resultor$0:
//交换D1
-D6
ifC(Labe1and$01)thenResult:
=ResuItor$20:
//
交换D2D5
if
(CValueandS08>thenResuIt:
=Resultor$10;
((Va]ueand$10)thenRcsult:
=Resultor$08;
〃交换D4D3
if
(then
Rcsult:
=ResuItor$01;
//交换D5—D2
if
((valueand$40)then
Rcsuit:
=RcsuItor$02;
//交换D6--DI
((Valueand$80)then
Result:
=Resu1torSOI;//交换D7—*D0
end;
至于32-Bit的ARINC429数据和2个16*Bit的HS3282物理字的相互转换,可以参考上面标号互换方法,不再给出。
wflf
IMTA
UffL
_Q)
8S
15
X?
311»
79
»|»1?
i1js1n|3i1n1141ifl11/1161b11«|i]|i7|n
綽19
屮|&|9卜PUP
33BilARIMCSerialDataFwrat(Sit1i$TransfnrttodFirel)
FUNCTION
BIT
13
u1n1111to|91B1T1eH1<111?
I
卜
n1iuin
K»|3
9
'10
x
2
s
DWA
w
a
£
I
5
IMU
§
oraiA
Bn
FUNCTION
Word2Format
Wort1Femai
图6ARINC429与HS3282数据转换
四.
结束语
ns-3282是为ARINC-129度身定做的,而且设il•针对现今飞机技术锻苛刻的耍求.所以使用HST282來设irARINC-12g总线既简有效.又严格保证共可黑性。
我们已将上述设计应川在多个不同种类的航空电予系统中,证明是十分有效的。
随着航空电f系统之间的通讯标准向ARIXC-129总线釜拢.HS3282的应用将更加广泛。
429总线
定义
ARINC是美国航空无线电公司英文字头的缩写,该公司1977年7月21日出版了“ARINC429规范”一书,429规范就是飞机电子系统之间数字式数据传输的标准格式,在飞机上使用429总线的电子设备均应遵守这个规范,这样才能保证电子设备之间数据通讯的标准化•通用化。
在429规范里规楚了从所选左输出接口发送信息的方法。
卅a件之间的连接线使用由二根线绞结在一起再加上屏蔽保护的专用线,这种传输线称为429数据总线。
429总线只能单向传输数据。
徉字位的作用
按照ARING429总线规宦,每个字格式(二进制或二-十进制)由32位组成:
1-8位是标位(LABELh它标记出包括在这个传送字内的信息的类型,也就是传送的代码的意义是什么。
如传送的是VHF信息,则标号为八进制数030;若是DME数据,则标号为八进制数201等a
9-10位是源终端识别(SDI).它指示信息的来源或信息的终端,例如一个控制盒的调谐字要送至3个甚高频收发机,就需要标示出信息的终端,即把调谐字输送至那个甚高频接收机。
11-28或29位是数据组(DataField),根据字的类型可确宦为是11到28还是11到29。
它所代表的是所确宦的特左数据。
如标号为030,则11到29位为频率数据,使用的是BCD编码数据格式,即位11到29。
29到30或31位为符号状态矩阵位(SSM),根摇字的类型号为29或30到31。
它指岀数据的特性,如南,北,正,负等或它的状态。
在甚高频内使用30到31位(BCD编码)。
32位为奇偶校验位(P),它用于检查发送的数据是否有效。
检查方法是当由]位到31位所出现的高电平的位数(即1的数)的总和为偶数时,则在第32位上为“1”。
如果为奇数,则显示为“0”。
在发送毎组数据后有四位零周期.它是隔离符号.以便于发送下一组数据。
ANINC429的发送速度有高速(100Kbps)和低速(12.5Kbp$)两种。
意义及硬件要求
在航空电子综合化系统中,快速、有效的数据传输对整个航空电子系统的性能有很大的影响,因此数据总线被称为现代航空电子系统的“竹架”。
ARINC429是航空电子系统之间最常用的通讯总线之一,它符合航空电子设备数字数据传输标准。
要在计算机上实现ARINC429总线数摇的接收和发送,必须实现429总线与il•算