DIY编程器网

标题: ARINC429总线收发器芯片DEI1016的原理及应用 [打印本页]

作者: liyf    时间: 2014-10-5 13:58
标题: ARINC429总线收发器芯片DEI1016的原理及应用
ARINC429总线收发器芯片DEI1016的原理及应用

摘要:简要介绍了Device Engineering公司的DEI1016芯片的功能,详细说明了利用DEI1016芯片实现ARINC429协议数据通讯系统的设计方法,给出了比较具体的电路设计及软件解决方法。    关键词:ARINC429;差分输出;FIFO;可编程器件
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”,并通过脉冲使输出使能端OEn也置为“0”,以使得数据字1被送入到数据总线上;同样,数据字2也被放到数据总线上。当字1、字2被读走以后,数据准备好信号DRn被复位,复位后,该信号处于三态;如果新数据到了,而以前的数据又没有被读取,此时如果数据准备好信号没有复位,则新数据不能覆盖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A和DOB差分输出,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) # IOAddr == 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点退出,此时并没有处理第二路接收。如果中断请求是电平 Level 敏感,中断处理退出后还可以再次进入,但这会有相当的系统开销。若中断请求是边沿edge触发,那么在C点退出之后,由于未处理第二路接收,所以中断请求 INT一直保持电平有效,但不能产生边沿跳变翻转,中断触发条件永远不能满足,系统处于死锁状态,从而使两路数据全部丢失。
对于这一问题,其实质性的解决办法需要“软硬兼施”。可以将图4 中DEI1016的Rx1RDY、Rx2RDY等状态信号同时送达CPU以组成只读“状态寄存器”,供CPU中断响应时查询。
由以上分析可知,对于ARINC429数据通讯系统,在具体的电路设计及软件算法中均应考虑收发数据的丢失问题。
作者: 李小路    时间: 2021-6-30 17:44
谢谢分享!




欢迎光临 DIY编程器网 (http://diybcq.com./) Powered by Discuz! X3.2