ARINC429总线收发器芯片DEI1016的原理及应用
2012-05-05 来源:dzsc
1 概述
目前,ARINC429收发器主要以Device Engineering公司的DEI1016及BD429来配套使用.其中DEI1016提供有标准航空串行数据和16bit宽数据总线接口.该接口电路包括一个单通道发送器、两个独立的接收通道和可选择操作方式的可编程控制器.
发送器电路包括一个发送缓存器和一个控制逻辑,发送缓存器是一个8×32bit的FIFO,而控制逻辑则允许主机给发送器写数据块,并通过主机使能发送器来使该数据块自动发送出去.数据在TTL电平格式下经过BD429电平转换器后发送出去.而每一个接收通道都可以直接连接到ARINC429数据总线,而不需要电平转换.
2 引脚功能
DEI1016芯片的引脚图如图1所示.下面是DEI1016的主要特点:
●两路接收和一路发送;
●环绕自测试模式;
●数据字长为25bits或32bits格式;
●接收数据时进行校验,发送数据时产生校验;
●具有8×32bit的发送缓存;
●采用低电源工作;
●支持多路复用ARINC数据总线(如429、571、575、706).
3 电路原理
DEI1016的复位是低电平有效,外部工作时钟为1MHz.具有二路接收(第一路接收和第二路接收)和一路发送.要使电路正常工作,发送时需要和BD429配合.BD429是满足ARINC429规范的、双极数据输入线驱动器.DEI1016为前级输出,BD429为差分输出.设计时,BD429地周围要接两个68pF的电容才能正常工作,而且这两个电容至关重要.DEI1016由三个基本单元组成,第一部分为接收通道,第二部分为发送通道,第三部分为主机接口.其电路结构框图见图2所示.
3.1 接收通道
接收通道包括线接收器、数据接收、数据时钟、源/目标码译码器、校验控制位、数据通道和数据错误条件等电路.
线接收器的前端是一个电平转换器,最常用的就是BD429.它可以把±10V的数据信号转换为5V内部逻辑电平.
接收数据时,接收到的每一位数据的开始位首先被检测,外部提供的工作时钟(1MCK)为1MHz,内部接收和发送速率可以设置为十分之一或八十分之一(即100kbps或12.5kbps).读接收器的任一个字时,一般都需要检测收到的信息数据的校验位.初始化时,可以设置字长为32Bit或25Bit.其32Bit字长格式如图3所示.
为了访问接收器的数据,首先应设置接收器数据选择输入端(SEL)为逻辑"0",并通过脉冲使输出使能端烵En 也置为"0",以使得数据字1被送入到数据总线上;同样,数据字2也被放到数据总线上.当字1、字2被读走以后,数据准备好信号烡Rn 被复位,复位后,该信号处于三态;如果新数据到了,而以前的数据又没有被读取,此时如果数据准备好信号没有复位,则新数据不能覆盖FIFO中的数据;如果一个完整的数据没有读完就出现错误,接收器将复位,同时忽略该数据或者该帧数据.如果希望测试该芯片是否正常工作,也可以通过设置为自测试模式,即将DEI1016的发送直接在内部接到第一路接收,并将反相接到第二路,然后发送数据,并比较发送和接收,以判断DEI1016的工作状况.3.2 发送通道
发送通道包括8×32bit FIFO、校验产生器、发送器定时器和一个TTL输出电路.其中8×32bit FIFO 可由用户进行操作(如装载、使能、非使能等);通过装载发送器数据字(LD1)或者(LD2)脉冲沿可以把第一个16位字(字1)或第二个16位字(字2)放到数据线上;LD1总是先于LD2.如果缓存已满且新数据已被LD1和LD2脉冲沿打入,缓存里的最后一个32位字将被覆盖;而当ENTX为逻辑"1"时,FIFO时钟被激活,同时,数据被串行移到发送器驱动器上;然后在发送时钟(TXCLK)1MHz下通过DO烝 和DO烞 差分输出,DEI1016和BD429连接见图4所示.
3.3 主机接口
CPU外围I/O设备的接口芯片一般都有片选、读、写信号和选择片内寄存器的若干地址线.但DEI1016有点特殊,它的每一个寄存器操作信号都需要对CPU信号进行译码产生.因此,选择CPU时,最好直接选择外部数据总线为16Bit以上的CPU,如TI公司的TMS320F240等.
4 DEI1016的应用
4.1 DEI1016与BD429HW的连接
DEI1016的应用主要是数据通讯.它一般和CPU、可编程器件一起形成智能通讯模块,图5是由DEI1016构成的数据通讯系统原理图.该数据通讯模块的控制逻辑以CPU提供的I/O操作信号IS和读写信号RD、WR以及地址A2、A1为输入来为DEI1016产生操作信号,如读第一路接收数据寄存器信号 RD429A、第二路 RD429B、发送低字选通信号 WR429LW、高字 WR429HW、发送使能控制 TX429EN等.控制逻辑和CPU同时监视DEI1016的3个状态信号,包括第一路接收准备好信号 Rx1RDY、第二路Rx2RDY和发送准备好Tx429RDY.这些状态信号一方面可供软件查询,另一方面可由控制逻辑产生 INT中断请求.DEI1016和CPU接口比较简单,发送时经常和BD429配合使用.
一般情况下,作为I/O外设的DEI1016的读写速度要比CPU慢,因此,应该用一个状态机进行速度匹配以便为CPU产生READY信号.在发送使能信号TX429EN的控制下可以简单地把发送准备好信号 TX429RDY反相后输出.亦即只要DEI1016发送器有空闲,就允许发送.DEI1016的发送器包括一个FIFO,它可以存储8个32-Bit的429数据字.当CPU填充DEI1016的发送FIFO字数达到自定数目熑8个 时,系统将使能发送以发出FIFO中的数据.其实现逻辑用Abel语言简写如下
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)); // 读 第二路 ARCIN429 接收寄存器 高低字. !RD429B = !IS & !RD & (IOAddr == RX429BLW) # 烮OAddr == RX429BHW); // 写 第一路 ARCIN429 发送寄存器 高低字. !WR429AL = !IS & !WR & (IOAddr == TX429ALW); !WR429AH = !IS & !WR & (IOAddr == TX429AHW); // 写 DEI1016 控制寄存器. !WR429ACW = !IS & !WR & (IOAddr == CR429A); !INT = !RX1RDY # !RX2RDY; // 2路接收准备好煿蚕碇卸锨肭. ……
4.2 两路接收中断共享算法
该模块有一路发送和两路接收.发送数据不需要用中断来解决.而当2路接收共享一个中断时,可能会出现覆盖而丢掉某一路数据的情况,也可能使边沿触发的中断失效而不再接收任何数据.其波形示意图如图6所示.图中,在A点,当第一路准备好Rx1RDY为低时 (L),XINT有效以引起中断,CPU响应中断处理,同时在AB之间判定为第一路有效并开始处理.当处理到B点时,第二路接收准备好引起中断.但此时XINT已经有效,故不会引起电平变化,中断响应程序继续进行,并在C点退出,此时并没有处理第二路接收.如果中断请求是电平 烲evel 敏感,中断处理退出后还可以再次进入,但这会有相当的系统开销.若中断请求是边沿焑dge 触发,那么在C点退出之后,由于未处理第二路接收,所以中断请求 INT一直保持电平有效,但不能产生边沿跳变翻转,中断触发条件永远不能满足,系统处于死锁状态,从而使两路数据全部丢失.
对于这一问题,其实质性的解决办法需要"软硬兼施".可以将图4 中DEI1016的Rx1RDY、Rx2RDY等状态信号同时送达CPU以组成只读"状态寄存器",供CPU中断响应时查询.
由以上分析可知,对于ARINC429数据通讯系统,在具体的电路设计及软件算法中均应考虑收发数据的丢失问题.