FPGA的ARINC429总线接口卡原理设计

接口/总线/驱动

1143人已加入

描述

      ARINC429总线广泛应用于商务运输航空领域,如空中客车A310/A320、A330/A340飞机,波音公司727、737、747、757和767飞机,麦道公司MD-11飞机等。它采用异步双极性归零码进行数据的编码,并通过双绞线传输,具有很强的抗干扰性能。目前市场上的ARINC429总线接口设计一般都采用专用接口芯片,如Device Engineering公司的DEI-1016,INTERSIL公司的HS-3282等,这些专用芯片价格昂贵,且路数有限,使用非常不灵活。本设计将ALTERA公司的FPGA芯片应用于ARINC429标准数据传输,并完成了与计算机USB接口的通信,有效缩小了系统体积并降低了成本,同时也增加了系统配置的灵活度。

  ARINC429总线数据

  ARINC429数据总线协议规定一个数据字由32位组成,以脉冲形式发送,采用双极性归零码,码速率为12.5kb/s或100kb/s。电气特性为:高电平(+10V)为逻辑1;低电平(-10V)为逻辑0;0电平(0V)发送自身时钟脉冲,字与字之间以一定间隔(不少于4位)分开,以此间隔作为字同步。一个32位的数据字由五部分组成:标志位(LABEL),用于标识传输数据的信息类型;源/目的标识码(S/D),用于判断在一个多系统中的源系统;数据区(DATA);符号/状态位(SSM),用于标识数据字的特征或数据发生器的状态;奇偶校验位(PARITY),ARINC429数字信息传输使用奇校验。

  FPGA内部逻辑设计

  根据ARINC429总线协议,要完成数据的收发以及对USB总线接口的逻辑控制, FPGA 芯片应完成的逻辑功能框图如图1所示,其中虚线框中是FPGA实现的部分。

 

  发送器

  发送器结构如图2所示,由缓冲存储器、信号发生器和发送控制逻辑三部分构成,用于将来自总线接口通信模块的32位429格式数据转换成调制前的两路串行数据,即图2中TTL0和TTL1。其中使用缓存是为了提高数据传输速度,用户向缓存写进想要发送的多个32位数据字后,就可以通过entx信号控制数据从缓存连续不断地读出,并经过信号发生器转换成串行数据后送给总线驱动威廉希尔官方网站 。在这里,缓存是直接调用ALTERA提供的LPM_FIFO+宏功能模块来实现的。

  信号发生器由位计数器、字间隔计数器、码元调制、移位寄存器以及相应的控制逻辑组成,结构如图3所示。其中,位数计数器用来控制429数字字的位数,字间隔计数器用于产生字间隔。在本设计中,采用状态机来实现信号发生器的功能,共分3个状态:

  a)IDLE:初始状态,当复位或是发送完一个32位数后进入该状态,在该状态完成字间隔的产生,并用移位寄存器的load信号来锁存待转换数据,并在至少四位字间隔后进入TRANS状态,否则等到直到有新数据载入。

  b)TRANS:进行数据的并串转换,同时进行奇偶校验,即每产生一位串行数据就进行一次异或运算,并由位数计数器控制计到31时就进入PARITY状态。

  c)PARITY:输出奇偶校验位并回到IDLE状态。

  码元调制是在信号busy的有效区间内,将串行输出数据serial_data与时钟做逻辑运算得到的TTL0和TTL1(如图4)送至外部调制威廉希尔官方网站 ,并转换为429总线规范要求的双极性归零信号。其verilog语言描述如下: 

  always @(busy,clk_tx,serial_data)

  begin

  if (busy)

  begin

  TTL1<=serial_data&clk_tx;

  TTL0<=~serial_data&clk_tx;

  end

  else begin

  TTL1<=0;

  TTL0<=0;

  end

  end

  endmodule

  发送控制逻辑用于协调缓存和信号发生器之间的数据传递。在缓存非空、busy无效(信号发生器状态机处于TRANS状态下busy有效)的条件下,一旦允许转换信号entx有效,便开启缓存的读使能rden,并产生转换数据的装载信号load,以完成缓存数据的自动转换和发送。

  接收器

  双极性的ARINC429 信号通过解调威廉希尔官方网站 转换为两路TTL 信号,TTL1和TTL0。后经接收器转换成32位并行数据供主机读取。接收器结构如图5所示。为使数据接收具有一定的抗干扰能力,本设计采用一个16倍于码速率的高速时钟对数据进行检测。同步字头检测模块对高速时钟进行计数,当计数值计满64(对应4位字间隔),即产生一个位接收允许信号rec_en,该信号启动位检测模块。位检测模块对TTL0和TTL1信号进行监控,一旦两路串行数据中任一路为高,则标志有效数据开始发送。位检测模块对每一位数据进行三次检测,在码元的前半周期检测两次,后半周期检测一次,只有这三次检测都符合429信号标准才能被视为有效数据,否则报错并自动丢弃。字检测模块将正确检出的位转换为并行数据并做奇偶校验和SDI校验,校验正确后数据被锁存,并产生接收完成信号rec_done向主机发出中断请求。

  时钟发生器

  时钟发生器对外部晶振(本设计采用的是12.8MHz的时钟频率)分频产生100kHz和12.5kHz高低速率两个发送时钟,以及16倍于发送时钟频率的接收时钟,高低速率可通过控制寄存器中相应位来选择。在本设计中遵循同步设计原则,不是将分频时钟直接当时钟用,而是采用了时钟使能的方法,将分频时钟作为触发器的使能控制。本设计的关键部分都采用了状态机的方式,将分频时钟用做状态机状态间相互转换的先决条件,从而实现了在整个设计中只有一个全局时钟,避免了时钟“满天飞”的问题。

  USB总线接口通信模块

  USB接口控制逻辑完成以下任务:通过对USB协议处理芯片本地端的地址译码完成429总线接口的各种操作,如配置控制寄存器、写数据发送缓存以及读接收数据等。当主机要发送数据时,接口通信模块将收到的8位数据按照429数字字的编码格式组装成32位数据,并产生控制信号。将组装好的32位数据写入发送器的缓存中,之后根据总线译码,产生自动发送控制信号,通知发送器进行自动转换和发送。同样地,当接收完一个32位数据时,将这个32位数拆分成4个8位寄存器供主机读取,它们中的一个对应标志位(LABEL),另外有两个对应数据区(DATA),最后一个包含了数据字中剩余部分的信息。

  仿真与验证

  本设计采用ModelSim SE 6.1b,对经过quartus6.0综合布局布线后的设计进行时序仿真验证。图6和图7分别为发送模块和接收模块在ModelSim中的时序仿真图。

  图6中data为要发送的并行32位ARINC429数据0x5a5a5a5a,mclk为全局时钟信号,clk_tx和clk_tx_en分别是发送时钟(占空比为50%)和同频的发送时钟使能信号,aout、bout即上文中发送器的输出TTL1、TTL0,busy表示正在进行转换。图7中mclk为全局时钟信号,ckl_rx_en是接收时钟使能信号,_429ain、_429bin为接收器的输入TTL1、TTL0,dout为收到的ARINC429数据0x75555555,以并行32位数据格式存入寄存器中,rec_done为接收完一个429数据发出的中断信号。由时序仿真结果可以看出,FPGA可以正确实现ARINC429数据的发送和接收。

  在后期板级调试中,将自制板卡与现在市场上出售的429总线接口卡进行对接通信的方法来验证,证明了本设计的FPGA协议处理和驱动威廉希尔官方网站 工作无误,可以正确进行429数据的收发,完成429总线的数据通讯。

  本设计采用了ALTERA公司的FPGA芯片EP2C5Q208和CYPRESS公司的USB协议处理芯片CY7C68013以及外围的调制解调威廉希尔官方网站 ,实现了4路收发的429总线数据传输接口,并完成了与上位计算机的通信。该系统大部分功能都是在同一FPGA芯片内部实现的,发挥了FPGA的优势,提高了系统的稳定性、集成度,并增强了抗干扰能力。利用FPGA的可重配置性,可以实现更多路ARINC429信号的接收与发送,可以大大降低重量、体积及成本,这在机载航空总线数据处理中具有较大的实用价值。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分