![]() |
时钟发生器
时钟发生器对外部晶振(本设计采用的是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信号的接收与发送,可以大大降低重量、体积及成本,这在机载航空总线数据处理中具有较大的实用价值。