在CPLD基础上的曼彻斯特编码技术

出处:王 奇,王英民,牛奕龙,陶林伟 发布于:2011-08-23 20:49:50

 

    在工业现场控制网络中,曼彻斯特码由于编码方式简单易行、无直流分量,且含有丰富的时钟信息,常被用作高速基带数据传输。曼彻斯特编码已经广泛应用在数控测井和无线监控等领域。

    本文主要介绍一种通过CPLD来实现曼彻斯特编解码的方法,在CPLD内部完成并/串、串/并转换以及曼彻斯特编解码,提高了编解码的通用性,大大节省了开发成本,并且可以实现更高的编码速率。

    1 曼彻斯特码

    在曼彻斯特编码中,每一位的中间有一个跳变,位中间的跳变既作时钟信号,又作数据信号。从高到低跳变表示“0”,从低到高跳变表示“1”。

    从曼彻斯特码的特点可以看出曼彻斯特码是一种自同步码,且没有直流分量,因此抗干扰能力强。但其缺点是编码后每一个码元都被调成2个电平,所以数据传输速率只有调制速率的1/2。

    2 可编程逻辑器件的选择

    系统中CPLD器件选择Altera公司的MAX7000系列的EPM7128AETC100-10。EPM7128AE系列CPLD具有2 500个可用门,内部具有128个宏单元,多可用I/O引脚100个,时钟可达192.3 MHz,使用3.3 V电压供电。

    本文的编解码分别在2个CPLD中完成。编码端的CPLD内部程序框图如图1所示,首先锁存并行信号,然后根据编码时钟把并行数据用移位寄存器进行并/串转换,曼彻斯特编码模块对串行NRZ数据进行编码输出。

    解码端的CPLD内部程序框图如图2所示,首先曼彻斯特解码模块把输入的曼彻斯特码解码成NRZ码,并从码元中提取同步时钟,然后在移位寄存器中对串行NRZ码完成串/并转换,把并行信号锁存到锁存器中并输出。


    3 曼彻斯特编解码器设计

    3.1 编码器设计

    (1)同步头

    解码时,何时开始一个解码周期是解码正确与否的关键,为此在曼彻斯特码的前面增加了4个时钟周期(此时钟是数据传输速率的2倍)的高电平作为同步头。编码时首先输出同步头,接着输出曼彻斯特码元。解码器检测到此同步头时启动一个解码周期。


    (2)曼彻斯特编码

    根据曼彻斯特码的特点,常规设计方法是将NRZ码和时钟信号相异或进行编码,这种方法的缺点是会在数据的跳变沿产生毛刺。

    设计中采用如下编码方式:

    选用二倍频于数据传输速率的时钟,当时钟个数为奇数时,曼彻斯特码等于NRZ码;当时钟个数为偶数时,曼彻斯特码等于NRZ码取反。

    这种编码方式简单易行,而且解决了常规通过异或方式编码产生的毛刺现象。

    3.2 解码器设计

    曼彻斯特解码框图如图4所示,主要分为4个部分:同步头检测电路、同步时钟提取器、解码的判决器和计数器


    其中同步头检测电路和判决器采用VHDL语言设计,同步时钟提取器和计数器使用原理图方式设计。

    下面分别介绍这4部分:

    (1)同步头检测电路

    同步头检测电路有2个功能:检测同步头和去掉同步头。

    (2)同步时钟提取器

    曼彻斯特码的一个优点是本身含有时钟信息,可以很方便地进行位同步。时钟提取器就是要从曼彻斯特码中提取出同步时钟。从曼彻斯特码的特点可以看出每个码元中间都有跳变,时钟提取电路提取出跳变信息,以此来恢复出位同步时钟。

    同步时钟提取电路如图5所示,DataIn是输入的曼彻斯特码;CLK16x是解码用的高倍时钟;DataIn2是曼彻斯特码经过2次时延后的信号,此信号与经过1次时延的信号异或运算得到曼彻斯特码的跳变信息;CLR是从曼彻斯特码中提取出的跳变信息,把这个跳变信息作为计数器的清零信号,同时利用高倍时钟就可以从输入的曼彻斯特码中恢复出同步时钟,图5中CLKOUT是同步时钟的输出端。

    (3)判决器

    判决器是曼彻斯特解码的部分,采用16倍频于传输速率的时钟作为解码时钟。解码流程图如图6所示。在接收到曼彻斯特码后使用16倍频的时钟对信号进行采样,为了正确解码出一位NRZ码,需要进行16次采样,即一个解码周期等于16个时钟周期。


    解码时设置了2个计数器:tHigh和tClock。tHigh用于记录每16次采样时前8次采样的高电平的个数。如果tHigh等于8,那么原始码元就是“1”,反之为“0”。在每次采样时tClock都会加1,记录采样的次数。当tClock等于16时,一个解码周期完成,将tHigh和tClock清零。

    在实际设计中,为了提高对解码的抗干扰能力,将tHigh的判决门限设定为8-2,即6,当tHigh≥6就认为原始信号是“1”,反之为“0”。

    3.3 软件仿真

    (1)编码仿真

    本文使用VHDL语言进行设计,使用MAX+PLUS II进行仿真,仿真的数据编码速率设为2 MB/s,仿真图形如图7所示。其中D[05]是发送端的并行信号;DSP_CLK是由外部提供的40 MHz的时钟信号,在CPLD中进行10分频,产生需要的4 MHz的二倍频时钟信号;MAN_OUT是终的曼彻斯特码。从图7可以看出,曼彻斯特码的前面有4个时钟周期的高电平,是编码信号的同步头。

    从图7中还可以看出,输入的并行信号是0xA756,由于程序中使数据的位在前,位在后,因此进行并串转换后的NRZ码是0110,1010,1110,0101,对应的曼彻斯特码为01 10 10 01,10 01 10 01,10 10 10 01,01 10 01 10。


    (2)解码仿真

    仿真时所用的解码时钟是16 MHz,仿真图如图8所示。其中,DataIn是输入的曼彻斯特码,速率是原始数据速率的2倍,即4 MB/s;DataIn2是由输入信号延迟一个时钟周期产生的;CLK16x是外部提供的16 MHz高倍时钟信号;CLR是从曼彻斯特码提取的跳变信息;CLKOUT是恢复出的时钟信号;enable是同步头检测电路产生的使能信号;NRZ是判决器输出的NRZ码;q[015]是解码出的数据,从图8中可以看出其值为0xA756,正确解码了输入的曼彻斯特码。

    本文使用VHDL语言在Altera公司的EMP7128AETC100-10实现了曼彻斯特编解码,在MAX+PLUS II下正确实现了2 MHz时钟下的编解码。比专用器件具有更高的速率和更好的灵活性。大大增加了曼彻斯特编解码的可移植性,并且为编解码器的扩展预留了足够的空间。

 

 

 

 

 

 


  
关键词:PLD

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!