《电子技术应用》
您所在的位置:首页 > 模拟设计 > 设计应用 > 1553B总线中曼彻斯特编解码器的设计
1553B总线中曼彻斯特编解码器的设计
武 鹏,毕君懿
摘要: 针对曼彻斯特码特点,可采用位同步方法提取时钟,常采用滤波法和数字锁相环法。滤波法采用的窄带滤波器不适合数字电路使用。数字锁相环法通过比较接收码元和本地码元为定时时钟的相位来添加扣除时钟脉冲,以达到调整相位的目的,但电路实现过于复杂。本文提出的时钟分离电路比数字锁相环简单,而且提取出来的时钟可以准确地采样到曼彻斯特码信号。
Abstract:
Key words :

0 引言
    曼彻斯特" title="曼彻斯特">曼彻斯特码是一种总线数据传输双极性码。在数字信号基带传输中,通过这种信道编码技术可使传送数据同时携带时钟信息,故也称其为自同步曼彻斯特码。在信道传输中曼彻斯特码有很好的抗干扰能力。接收端可以将分离出的时钟用于解码,从而简化了解码过程。
    针对曼彻斯特码特点,可采用位同步方法提取时钟,常采用滤波法和数字锁相环法。滤波法采用的窄带滤波器不适合数字电路使用。数字锁相环法通过比较接收码元和本地码元为定时时钟的相位来添加扣除时钟脉冲,以达到调整相位的目的,但电路实现过于复杂。本文提出的时钟分离电路比数字锁相环简单,而且提取出来的时钟可以准确地采样到曼彻斯特码信号。

1 曼彻斯特码
   
曼彻斯特码是一种广泛用于以太网、短距离无线通信、航空电子综合系统中总线数据传输的双极性码。它的每个码元中点都存在一个电平跳变,1信号为一个从1到0的负跳变;0信号为一个从0到1的正跳变。由于曼彻斯特码在频谱中存在很强的定式分量,解码时可将分离出的时钟用来解码。另一方面,1553B" title="1553B">1553B传输电缆呈容性负载特性,所以在信号传输中,直流和低频分量将受到很大的衰减。曼彻斯特码频谱中不存在直流分量,而且低频分量也大大减小,很适合在1553B电缆中传输。
    MIL-STD-1553B协议中采用的曼彻斯特码数据格式如图1所示。


    同步头:占三位码元长度。命令字或状态字同步头的前1.5倍码元长度为高电平;后1.5倍码元长度为低电平,数据字同步头刚好相反。同步头用于区分字的类型以及标识字传输开始。
    数据:16位数据位。图中bit3为数据最高位,依次递减,bit18为数据最低位。
    奇偶校验位:这里采用奇校验。将16位数据按位同或的结果作为奇校验位。

2 曼彻斯特编码器的设计" title="设计">设计
   
由于曼彻斯特码的每个码元在其中心存在电平跳变,所以编码器的发送时钟频率至少应选择信息传输速率的2倍频。
    通常编码器的实现方式有2种,基于移位寄存器,或者数据选择器。移位寄存器型编码器需要在编码开始后将同步头位、数据位、奇偶校验位通过字符格式编排器编排成一个并行数据,然后在发送时钟的控制下串行移位输出;数据选择器型编码器需要在编码开始后启动一个计数器,在计数器的控制下分别送出同步头、数据位、奇偶效验位。本文的编码器采用后者,其结构框图如图2所示。


2.1 编码过程
   
编码过程如下:
    (1)检测编码周期是否开始,编码周期开始后将同步头类型、16位并行数据存储到内部寄存器中,与此同时计数器cnt开始计数。
    (2)在计数器cnt的控制下通过码型生成器发出同步头、数据位、奇偶校验位。
    (3)在当前字的曼彻斯特码发送完成后回到过程(1)等待发送下一个字
2.2 端口说明
    rst_n为异步复位信号;clk为系统时钟,频率为信息传输速率的12倍;enc_trigger(输入,高有效)的编码开始的触发信号;enc_csw(输
入,高有效)表示要发送的字为命令字或状态字;enc_dw(输入,高有效)表示要发送的字为数据字;enc_data(输入)表示16位要发送的并行数据;tx_data_p(输出)表示发出的曼彻斯特原码;tx_data_n(输出)表示发出的曼彻斯特反码。
2.3 子模块说明
   
(1)6分频电路
    将系统时钟6分频输出占空比为1/6的编码时钟使能信号enc_clk_en,该信号的频率为信息传输速率的2倍,其他3个模块只有在采样到该信号高电平后才会触发。在复杂时序电路设计中通过引入时钟使能信号可减少设计中的时钟信号,提高电路的可靠性。
    (2)保持寄存器
    在enc_clk_en有效且采样到enc_trigger为1时,将enc_csw,enc_dw,enc_data存入内部寄存器csw_reg,dw_reg,data_reg中。
    (3)计数器
    在enc_clk_en有效时采样到enc_trigger为1时,将计数使能信号置为1,并在其控制下开始计数,计数范围为0~39。
    (4)码型生成器
    码型生成器通过对16位并行数据data_reg做同或运算产生奇偶校验结果。在计数器cnt的控制下发送出曼彻斯特码。发送过程如下(以tx_data_p说明):
    cnt(0~5):根据同步头类型,依次发送111000(csw_reg有效)或000111(dw_reg有效)。
    cnt(6~37):发送数据位,在码元前半个周期发送原码,后半个周期发出反码。
    cnt(38~39):发送奇偶校验位,计数到38时,发送奇偶校验位原码,39时发送其反码。

3 曼彻斯特解码器" title="解码器">解码器的设计
   
解码器需要将收到的曼彻斯特码解码,得出16位并行数据,并给出各种校验结果。本文设计的解码器逻辑结构如图3所示。


3.1 解码过程
   
(1)同步头检测,当检测到同步头后触发整个解码过程开始,并给出同步头类型。
    (2)检测到同步头后,计数器cnt开始计数,在cnt的控制下进行解码。包括码型转换与移位操作,同步头类型输出、曼彻斯特码型校验、奇偶校验、字连续性校验等。
    (3)当码的串并转换以及各种校验都完成后,给出并行数据和校验结果信号,在cnt的控制下最终给出数据有效信号data_ready。协议模块可在该信号有效(高电平)时检测其他校验信号,并决定是否取走并行数据。
3.2 端口说明
    rst_n为异步复位信号;clk为系统时钟,频率是信息传输速率的12倍;rx_data(输入)为收到的曼彻斯特原码;data_ready(输出,高有效)为数据有效信号,该信号有效期间可检测其他校验输出信号,若数据有效可取走16位并行数据;csw(输出,高有效)为收到字类型为命令字或状态字;dw(输出,高有效)表示收到字类型为数据字;data(输出)表示解码输出的16位并行数据;parity_right(输出,高有效)为奇偶校验结果;manchester_right(输出,高有效)为曼彻斯特码型校验结果;word_continue(输出,高有效)为字连续性校验结果,有效时表示当前收到的字与上一次收到字之间是连续的。
3.3 子模块说明
   
(1)时钟分离模块
    时钟分离模块如图4所示。


    该模块将曼彻斯特码自带的时钟信号分离,得到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。
    (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个为数据字。


    为了全面验证设计功能,需要注入不同类型的错误来检测解码器的查错能力。其中,包括同步头类型错,曼彻斯特码型错,奇偶校验错,字不连续错等。测试过程完全按照GJB5186相关要求进行。
    该设计在XlLINX公司Spartan3E系列的XC3S500E型号FPGA上进行了实现。当编解码器时钟约束为7 ns时,编码器最高跑到143 MHz,解码器最高到157 MHz。

5 结语
   
根据曼彻斯特码型特点,设计出一种符合MIL-STD-1553B协议的曼彻斯特编解码器,并兼容1 Mb/s和10 Mb/s两种传输速率的协议。该设计通过了GJB5186规定的测试点验证,实验结果证明所设计的曼彻斯特编解码器具有高速、高可靠性的特点。

此内容为AET网站原创,未经授权禁止转载。