基于FPGA的曼彻斯特编解码器设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的曼彻斯特编解码器设计

摘要:曼彻斯特码是一种性能良好的数字基带信号传输码,在工作原理的基础上,运用FPGA技术,利用VHDL设计完成曼彻斯特编解码器并用软件MAX +plusⅡ进行仿真,仿真结果与理论分析一致。

关键词:FPGA;VHDL;曼彻斯特码;编码器;解码器

0引言

曼彻斯特码简明有效时序却比较复杂,特别是在编码器接口的设计上需要大量的逻辑电路,FPGA的出现正好缓解了这个难题。由于FPGA具有开发周期短、开发费用低、集成度高、性能稳定、结构灵活、成品不需要测试等诸多特点,所以越来越多的科学技术人员选择运用FPGA技术来进行电子电路的设计[1]。

1FPGA原理及开发工具

1.1FPGA原理

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,其内部包括3个部分:输入输出模块IOB(Input Output Block)、可配置逻辑模块CLB(Configurable Logic Block)以及内部连线(Interconnect)[2]。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,所以工作时要对片内RAM进行编程。用户能够根据不同的配置模式来选择不同的编程方式。加电的时候,FPGA需要将EPROM中的数据读入片内编程RAM中,配置完成后FPGA就进入工作状态。因为掉

电以后FPGA会恢复成白片,内部的逻辑关系会全部消失,所以FPGA 能够反复使用。另外,FPGA的编程不需要专门的FPGA编程器,只需要用通用的EPROM、PROM编程器就可以解决,当需要修改FPGA 的功能时,换一片EPROM就能够达到效果。同一片FPGA,不同的编程数据,能够产生不同的电路功能。所以FPGA的使用十分灵活[3]。

1.2MAX +plusⅡ软件

MAX +plusⅡ软件是由美国的Altera公司负责研究开发的。MAX +plusⅡ作为一种EDA软件,提供了业界唯一一个真正与结构没有关系的、全部集成化的可编程的设计环境,它为设计者提供了丰富的库单元,使设计者能够随时调用[4]。MAX +plusⅡ具有强大的逻辑综合与优化功能,方便把设计功能集成到器件中,所以它的功能非常强大。MAX +plusⅡ开发系统的设计输入方式十分灵活,可以采用原理图输入方式(Graphic)、文本输入方式(Text)、符号输入方式(Symbol)以及波形输入方式(Waveform)等多种输入方式[5]。在文本输入方式下,软件支持多种硬件描述语言[5]。

2曼彻斯特码工作原理

2.1曼彻斯特码原理

曼彻斯特码又叫做双相码,它是利用两个具有不同相位的二进制码来代替原来的二进制信息码。它是由普通二进制数据与其位率时钟信号相异或而得,解决了传输数据没有时钟的问题。编码规则如表1所示[6]。

表1曼彻斯特码的编码规则

不像AMI码和HDB3码那样,曼彻斯特码的特点是仅仅使用了两个电平。曼彻斯特码不仅能够提供足够的定时分量,而且没有直流漂移,更重要的是其编码过程比较简单,但是这种码的带宽与其它码相比较要宽一些。

2.2曼彻斯特码的帧格式

曼彻斯特码的帧格式由20位二进制代码组成,1~3位是同步头,用来表示帧类型,标识帧的开始[9]。同步头又可以分为命令同步和数据同步,如果同步头1.5位元处有上升沿,那么表示为数据同步,如果同步头1.5位元处有下降沿,那么表示为命令同步;4~19位是编码器接收到的待编码数据,20位为校验位,对4~19位的代码进行奇偶校验,如果数据位中的‘1’的个数是偶数,则用周期中心的下降沿来表示,如果数据中的‘1’的个数是奇数,则用周期中心的上升沿来表示。

3系统总体设计

3.1曼彻斯特码编码器设计

3.1.1曼彻斯特编码器设计流程

曼彻斯特编码器设计流程如图1 所示。

当使能信号in_enable为高电平时,编码周期开始;当同步选择信号ss为高电平时,表示输出信号为命令同步,当同步选择信号ss 为低电平时,表示输出信号为数据同步;当输入数据使能信号in_enable 为‘1’时,表明允许数据输入,如果输入的数据信元data_in 为‘1’,编码就输出“10”来表示,如果输入数据信元data_in为‘0’,

编码则输出“01”来表示。

3.1.2系统仿真

该程序在MAX +plusⅡ下进行仿真,得到的结果如图2、图3所示。

在图2中同步字选择信号ss为低电平‘0’,表示数据字输出,其同步字编码输出的表现形式为“000111”,如果在仿真前设置的输入信息序列data_in=“0101001110101 110”,仿真结果显示,曼彻斯特编码输出data_out=“01100110010110101001100110101001”,仿真结果与理论分析相吻合。在图3中同步字选择信号ss为高电平‘1’,表示命令字输出,其同步字编码输出的表现形式为“111000”,如果在仿真前设置的输入信息序列data_in=“0101001110101110”,仿真结果显示,曼彻斯特编码输出data_out=“01100110010110101001100110101001”,仿真结果与理论分析相吻合。

3.2曼彻斯特码解码器设计

3.2.1曼彻斯特解码器设计流程

曼彻斯特解码过程正好与曼彻斯特编码过程相反,解码的关键是从编码的数据流中提取出“01”和“10”,并把它们转化为‘0’和‘1’。对输入的数据进行曼彻斯特解码,再把解码后的数据予以输出[10]。

3.2.2系统仿真

对该解码器进行设计并仿真,仿真结果如图4所示。

4结语

本文通过对曼彻斯特码的研究,实现了信息在传输性能较差的信道中的传输,超越了传统数据传输的极限。是本研究尚需值得注意的地方,例如在数字通信中同步问题也是一个研究的重点;在测井通信系统中,复杂多变的外界环境对通信性能有更高的要求。所以在通信系统中,良好的位同步的实现对于解码以及整个通信系统的正常工作有重大意义。

参考文献:

[1]付林,任志平,刘承杰.基于FPGA技术的曼彻斯特编码器[J].现代电子技术,2007(6):5559.

[2]ANPING LIU.Novel SBS suppression scheme for high power fiber amplifiers[J].Proc.of SPIE,2006,5(3):8891.

[3]杨海钢,孙嘉斌,王慰.FPGA器件设计技术发展综述[J].电子与信息学报,2010,32(3):714727.

[4]王利,弓楠,巩艳华.VHDL语言在数字电路实验中应用[J].现代电子技术,2007(6):162163.

[5]姚远,李辰.FPGA应用开发入门与典型实例[M].北京:人民邮电出版社,2010.

[6]厚航.深入浅出玩转FPGA[M].北京:北京航空航天大学出版社,2010.

相关文档
最新文档