1553B总线中曼彻斯特编解码器的设计
该模块将曼彻斯特码自带的时钟信号分离,得到clk2_en,并在该信号有效(高电平)时采样,经过三级寄存器保持输出的曼彻斯特码信号rx_data_reg_2。采样时刻总出现在每个码元正负电平的中点处,而这也是曼彻斯特码采样的最佳时刻,如图5所示。 时钟分离电路结构如图4所示,收到的曼彻斯特码rx_data为异步信号,通过DFF1,DFF2,DFF3三级采样保持电路可消除亚稳态。edge_ check在每个曼码电平跳变后产生一个脉冲,该信号将对cnt_clk2和clk2_en同步清零,以达到调整相位的目的。cnt_clk2是一个6进制计数器,当计数到1时通过比较器给出同步置位脉冲set,它将对clk2_en同步置1。 为了全面验证设计功能,需要注入不同类型的错误来检测解码器的查错能力。其中,包括同步头类型错,曼彻斯特码型错,奇偶校验错,字不连续错等。测试过程完全按照GJB5186相关要求进行。
(2)同步头识别模块
该模块始终检测同步头,并给出同步头类型。检测方法如下,在采样到时钟使能信号clk2_en有效时,将rx_data_reg_2存入移位寄存器sync_reg[9:0]中,当检测到sync_reg[5:0]为“111000”或“000111”时,给出同步头有效信号sync_1,用于触发计数器和码型转换移位模块工作。
(3)计数模块
计数器cnt是一个40进制计数器,在cnt的控制下完成整个解码过程。当收到同步头有效信号sync_1时,将计数器使能信号cnt_enb置为有效(高电平),并在其控制下开始计数。
(4)码型转换与移位电路
该模块在移位使能信号data_sample有效,且采样到采样使能信号clk2_en时,将rx_data_reg_2移入一个17位寄存器data_reg[16:O]中,移位完成后,将得到一个16位并行数据data_reg[16:1]和一个奇偶校验位data_reg[0]。
(5)校验模块
该电路将检测并输出同步头类型、奇偶校验结果、曼彻斯特码检测结果、字连续性检测结果。
同步头类型检测:当cnt计数到3时,将同步头检测结果sync_csw和syn_dw分别寄存输出给csw和dw。
奇偶校验:将17位并行数据data_reg[16:O]按位同或后在cnt计数到33时将效验结果输出给parity_right。
曼彻斯特码型的有效性校验:对16位曼彻斯特码和1位奇偶校验码的码型进行检测。当收到同步头有效信号sync_1时将mangchester_rig-ht信号置为1,之后将每个码元曼彻斯特检测结果与mangchester_right做与运算,再寄存输出到mangchester_right。当中间某个码元曼彻斯特码出错时,mangchester_right将变为0,并在之后的检测中一直保持为0,直到收到下一个字的sync_1信号。
字连续性检测:若前一个字与当前字连续,则在前一个字cnt计数到39时,当前字的同步头有效信号sync_1应为高电平,若不连续,sync _1为低电平。所以在cnt=39时将sync_1寄存输出给word_continue可表征字的连续性。
(6)数据有效输出模块
当所有校验和移位都完成时,在cnt为34~38之间输出数据有效信号data_ready。
4 仿真及FPGA实现
在TESTBENCH中将编码器曼彻斯特码的输出直接连到解码器曼彻斯特码的输入端。图6为正确曼彻斯特码的时序仿真波形图,传输速率为10 Mb/s,系统时钟为120 MHz。图6的上半部分为编码器信号波形,下半部分为解码器信号波形。发送消息为连续的4个字:第1个为命令字,后3个为数据字。
该设计在XlLINX公司Spartan3E系列的XC3S500E型号FPGA上进行了实现。当编解码器时钟约束为7 ns时,编码器最高跑到143 MHz,解码器最高到157 MHz。
5 结语
根据曼彻斯特码型特点,设计出一种符合MIL-STD-1553B协议的曼彻斯特编解码器,并兼容1 Mb/s和10 Mb/s两种传输速率的协议。该设计通过了GJB5186规定的测试点验证,实验结果证明所设计的曼彻斯特编解码器具有高速、高可靠性的特点。
- 基于DSP的1553B终端设计(10-16)
- 基于PCI局部总线的1553B总线接口卡设计(05-21)
- 现场总线CANbus与RS-485之间透明转换的实现(01-26)
- Rapid IO---成就高速互连之美(05-06)
- PCI总线数据输出板驱动程序的开发(05-16)
- 采用PCI9052的ATM数据采集卡的接口电路设计(05-27)