用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

ARINC429总线收发器芯片DEI1016的原理及应用

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:55:53
一般情况下,作为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;javascript:window.open(this.src);" style="cursor:pointer;"/>

// 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路接收准备好共享中断请求.

……
javascript:window.open(this.src);" style="cursor:pointer;"/>
    4.2 两路接收中断共享算法

该模块有一路发送和两路接收。发送数据不需要用中断来解决。而当2路接收共享一个中断时,可能会出现覆盖而丢掉某一路数据的情况,也可能使边沿触发的中断失效而不再接收任何数据。其波形示意图如图6所示。图中,在A点,当第一路准备好Rx1RDY为低时 (L),XINT有效以引起中断,CPU响应中断处理,同时在AB之间判定为第一路有效并开始处理。当处理到B点时,第二路接收准备好引起中断。但此时XINT已经有效,故不会引起电平变化,中断响应程序继续进行,并在C点退出,此时并没有处理第二路接收。如果中断请求是电平 Level 敏感,中断处理退出后还可以再次进入,但这会有相当的系统开销。若中断请求是边沿edge触发,那么在C点退出之后,由于未处理第二路接收,所以中断请求 INT一直保持电平有效,但不能产生边沿跳变翻转,中断触发条件永远不能满足,系统处于死锁状态,从而使两路数据全部丢失。

对于这一问题,其实质性的解决办法需要“软硬兼施”。可以将图4 中DEI1016的Rx1RDY、Rx2RDY等状态信号同时送达CPU以组成只读“状态寄存器”,供CPU中断响应时查询。

由以上分析可知,对于ARINC429数据通讯系统,在具体的电路设计及软件算法中均应考虑收发数据的丢失问题。




上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:24,781.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号