微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 一种基于CPLD的曼彻斯特编解码器设计

一种基于CPLD的曼彻斯特编解码器设计

时间:08-06 来源:互联网 点击:
引言
  
虽然计算机通信的方法和手段多种多样,但都必须依靠数据通信技术。数据通信就是将数据信号加到数据传输信道上进行传输,并在接收点将原始发送的数据正确地恢复过来。由于计算机产生的一般都是数字信号,因此计算机之间的通信实际上都属于数据通信。曼彻斯特码编解码器是1553B总线接口中不可缺少的重要组成部分。曼彻斯特码编解码器设计的好坏直接影响总线接口的性能。在数控测井系统和无线监控等领域,曼彻斯特码编解码器都有广泛应用。

1 数据通信系统结构

 
  
图1所示是数据通信系统的基本构成。在计算机通信中,通信双方传递的信息必须进行量化并以某种形式进行编码后才能进行传输。机内信号不论采用哪一种编码方法,它们的基本信号都是脉冲信号,为了减少信号在传输媒质上的通信带宽限制,以及噪音、衰减、时延等影响,也由于同步技术的需要,操作时都需要对简单的脉冲信号进行一些不同的变换,以适合传输的需要。这样就会产生许多不同的代码,通常有不归零电平(NRZ-L)码,逢“1”反转(NRZ-1)码,曼彻斯特码和差分曼彻斯特等。图2所示是部分编码方式的波形图。

 
  
由图2可知,不归零码的制码原理是用负电平表示“0”,正电平表示“1”,其缺点是难以分辨一位的结束和另一位的开始;发送方和接收方必须有时钟同步;若信号中“0”或“1”连续出现,信号直流分量将累加。这样就容易产生传播错误。曼彻斯特码(Manchester)的原理是每一位中间都有一个跳变,从低跳到高表示“0”,从高跳到低表示“1”。这种编码方式克服了NRZ码的不足。每位中间的跳变即可作为数据,又可作为时钟,因而能够自同步。曼彻斯特编码特点是每传输一位数据都对应一次跳变,因而利于同步信号的提取,而且直流分量恒定不变。缺点是数据编码后,脉冲频率为数据传输速度的2倍。差分曼彻斯特码(Differential Manchester)的原理是每一位中间都有一个跳变,每位开始时有跳变表示“0”,无跳变表示“1”。位中间跳变表示时钟,位前跳变表示数据。这种方式的优点是时钟、数据分离,便于提取。

2 曼彻斯特编解码器的设计
  
可编程逻辑器件的出现为数字系统的设计带来了很大的灵活性.而VHDL (VHSIC HardwareDescription Language)是一种功能强大的硬件设计语言,可用简洁的代码来进行复杂控制逻辑的设计。为此,本文采用VHDL语言来对曼彻斯特编解码器进行描述,并用Active-HDL进行编译,最后用Synplify进行综合。

2.1 解码
  
根据曼彻斯特码的特点,可将该码的解码过程分成三部分:一是启动解码时钟,即通过检测一个数据跳变沿来使能时钟。二是对曼彻斯特码形式的数据进行解码。三是将串行数据转换成并行数据。解码器的逻辑框图如图3所示。

 
  
该逻辑可南进程实现。输人的时钟为clkl6x的时钟,串行的曼彻斯特码的数据与单倍的时钟相对应。首先,串行的曼码由clk16x的时钟采样,之后再将采样到的数据先后存放在两个寄存器中,当两个寄存器中的值不一致时,即开始解码过程,从而完成检测数据变化的进程。分频计数进程用来产生clklx,并用分频计数的结果来实现1/4和3/4点的采样。根据曼彻斯特码的性质,对1/4和3/4点采样可以准确的恢复成NRZ码。此后在clklx的驱动下,控制字计数器开始计数,直到8个clklx之后,计数器归零。解码进程则在clkl6x的驱动下,对1/4和3/4采样点的数据进行解码,从而得到曼码相对应的NRZ码。紧接着将解码得到的每一位NRZ码移入8位的移位寄存器,当控制字寄存器计到8时(即8位移位寄存器溢出的时候),再将8位NRZ码一起输出到数据寄存器,最后输出数据寄存器中被解码好的NRZ码。
  
图4所示是采用该设计的曼彻斯特码的时序仿真波形,clkl6x采用16 MHz的时钟,mdi为输入的曼码(10101100)。最后输出dout为十六进制AC,这说明该解码过程是正确的。



2.2 编码
  
编码是解码的逆过程。编码的过程也可以分为两部分:一是检测编码周期是否开始,以决定产生正跳变沿;二是对串行的数据进行编码,之后编码周期结束。编码器的输入时钟(clk2x)为2MHz。当写信号(wr)为高电平时,开始产生正跳变沿,并使clklx-enable为高电平,这样,正跳变沿产生完成即开始编码过程。将clk2x进行二分频可得到clklx,这样可使归零制的数据(nrz)与clklx相对应。此后再在clklx_enable高电平和clk2x正跳变的情况下,将归零制码(nrz)转换成相应的曼彻斯特码(meo)。最后,当写信号(wr)为低电平时,以使clklx_enable为低电平,结束编码过程。


  
图5所示其编码时序仿真波形图,图中,clk2x采用2MHz的时钟,nrz为串行输入的归零制码(10101100),meo为串行输出的曼彻斯特码。由图可见,从刚开始的跳变沿之后,输出meo也为10101100,证明编码过程正确。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top