光纤通信系统5B6B码编码的设计与仿真_第1页
光纤通信系统5B6B码编码的设计与仿真_第2页
光纤通信系统5B6B码编码的设计与仿真_第3页
光纤通信系统5B6B码编码的设计与仿真_第4页
光纤通信系统5B6B码编码的设计与仿真_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章绪论1.1引言被普遍使用的数字光纤通信系统中的一种路线码型就是5B6B码[1]。在光纤中的传输线,信号通过5B6B码和串并转换数据后,形成一个连续的长度小于5的Bit0或Bit1串行编码序列,0和1的数据转换的高密度,而且有一个有利于接收电路、时钟恢复电路的设计的直流平衡特性[2]。5B6B码是一种nBmB分组码,这是一个二进制线路编码,即把一个二进制5位信源码型转为6位二进制线路码型,64个线路码型是基于“0”和“1”的数量来分成两种码型:即非均匀码和均匀码。均匀码是指“0”和“1”的数量是一样的,反之,则为非均匀码。非均匀码又分为正负两个模式,当“0”码个数少于“1”码个数时是为正模式,“0”码个数大于“1”码时为负模式[3]。因为线路码和信源码的个数不等,因此从5码转换为6码时,有多种编码方案。本文只选用其中一种编码方案。1.2QuartusII软件介绍因为只有通过系统软件的操作和硬件实物平台才能成功实现5B6B的编码设计与仿真,所以在设计前,首先要了解使用QuartusII和FPGA相应的使用方法。下面做简单的说明。图SEQ图\*ARABIC1QuartusII运行背景QuartusII不仅支持AHDL设计输入的形式,同时支持电路原理图,VHDL、VerilogHDL,模拟器和合成器,嵌入其中。QuartusII在PLD开发软件集成中为了完成PLD的设计过程,可以从设计输入完成的硬件配置。除了完成使用QuartusTcl脚本、QuartusII的设计过程之外,还可以使用设计完美的图形用户界面,并支持使用Unix、XP或Linux等操作系统[4]。接口速度快,运行统一,功能设置,简单易用。为了用户能够充足的使用成熟的完备模块,囊括了LPM/Mega功能库,并且降低了设计过程中的复杂程度,同时,它还支持Altera公司的IP内核,设计速度加快了等等。其他的EDA工具能够让用户使用EQuartusII,认识在设计过程当中的每个过程,支持全面的可编程逻辑器件开发软件。支持电路原理图,VHDL语言,AHDLDA和vrilogHDL。此外,QuartusII开发的工具能够轻松实现各种DSP应用,将DSPBuilder与MATLAB/Simulink结合。SOPC的开发可在可编程系统芯片上实现,包括已设置的可编程逻辑设计系统和嵌入式软件开发形成一个全面的开发平台[5]。PLD设计软件拥有Altera公司的优秀的易用性,之前的MAXPLUSII得到了普遍的应用。MAXPLUSII现在已经不更新了,不仅因为QuartusII充实了不断变化的图形界面的设备的类型,还包括许多QuartusII软件,例如,设计的RTLViewer查看器和编辑器芯片的援助,增强SignalTapIIAltera的图形界面,MAXPLUSII继承和SOPC的硬件复制设计和集成流程。可编程逻辑设计环境有一个直观的界面和其强大的设计能力,因此受到广大系统开发者的应用[6]。Altera的第4代开发平台有QuartusII软件。该平台支持的工作组环境设计要求,包括基于互联网的协同设计支持。提高LogicLock的设计效力,添加FASTFIT编译器选项,高级编辑网络性能,并提高调试效果。Max7000/Max3000是开发的第4代产品,它提供了一个完备的功能和高效的设计适合于给定的设计要求[7]。QuartusⅡ给出了一个便利的输入功能,和迅疾的编译器和编程设备直接访问的能力。支持超过一百万门的逻辑门数的发展,提供了一个无缝接口,用于第三方工具。在QuartusⅡ支持的设备有:StratixⅡ,StratixGX,Stratix,水星,MAX3000A,MAX7000B,MAX7000S,MAX7000AE,MAXⅡ,FLEX6000,FLEX10K,FLEX10KA,FLEX10KE,旋风,旋风Ⅱ等。QuartusⅡ编程包是整个体系的中枢,为了给出强力的问题解决实力,设计人员能够添加特定的限制,提升整个芯片的利用效率。在整个设计过程中的每个环节,该软件可以使QuartusⅡ集中于设计,而不是使用软件本身。同时,自动定位误差,充满了错误和警告信息,使设计更简单和容易。此外,QuartusⅡ结合SOPCBuilder开发SOPC系统(可编程片上系统),是一种非常有前途的EDA软件。QuartusⅡ4.1软件光盘能在代理获得,可以在internetitAltera上下载,安装,并得到授权文件,其具体步骤可以参照MAX+PLUSⅡ的操作。1.3VHDL语言1.3.1背景简介VHDL是被开发于1982年的的特高速电路集成硬件描述语言,它最初是由美国国防部开发,为了提高设计的可靠性,小范围内使用的用以减少设计语言发展周期的硬件语言。1987年底,VHDL是已经确认的标准硬件描述语言[8]。IEEE-1076后不同的公司都推行了各自的开发环境以适用于VHDL的使用,或表示能够和VHDL的设计相连。1993年,宣布对VHDL语言就行修订,VHDL语言扩大了抽象和描述性的动力系统的更高层次的审查内容,即IEEE标准的1076-1993版本。简而言之,VHDL是电路设计语言中的一种。中国被翻译成VHDL描述超高速集成电路硬件描述语言,主要用于数字电路的设计。大多数中国人使用的是FPGA、CPLD和EPLD。显然,相对较强的一些单位的强度,它也可用于ASIC设计[9]。VHDL语言大部分应用于数字系统的布局、活动、效用和接口的描述。程序结构工程设计的VHDL,或叫做实体设计(可以为一个功能元器件,电路模块或一个完整的系统体系)的特性被分为外部(可见器件)和内部(不可见的器件)的两个功能,即包括实体里面的功用和算法实现的功用部分。设计实体确定外部接口后,在其内部设计成功之后,其他模块可以直接使用此实体。这个概念是分为内部和外部实体设计的VHDL开发和设计的基础部分。1.3.2VHDL主要特点1.健壮,灵活的设计VHDL语言拥有较强的结构,因此能够表现出源代码的清晰和精炼的描述,从而达成繁杂的控制逻辑。多层次的描绘方式使之具备多层次的设计特征,最后可直接产生电路级的描述。与其他硬件描述语言相比,VHDL具备有它们所没有的电路设计特征,即:同步、异步和随机。VHDL语言也支持其他方面的设计,包括自下而上和自上而下的设计;同时支持模块化设计和分层设计支持。2.支持广泛,容易改变因为VHDL已经成为标准的IEEE标准硬件描述语言,支持基本上所有的EDA工具,所以这为之后的推行以及VHDL的普遍使用垫定了基础。在硬件的设计过程中,源代码基本上都是由VHDL来撰写的,又由于它的可读性和结构化,很容易改变设计。3.强大的硬件功能说明VHDL的设计具备多个分级的描述能力,除了能够作为电路的系统级描述,而且能够用来描述门级电路。既可以作为一个行为描述,转让或寄存器描述方案,也可用于混合级描述。此外,VHDL不仅支持惯性的延迟和输送系统的延迟,也有创造电路硬件描述精确模型的能力。由于VHDL支持数据类型的预定义和自定义两种形式,让硬件描述带来了更大的自由空间,可以很容易地建立高层次的系统模型。4.设备-自主设计,自主的过程当使用VHDL设计时,不需要考虑完成设备的设计,可以专注于优化设计。所描述的设计告终,能够运用各种不一样的元器件结构完成它的功能。5.可移植性强VHDL是标准的硬件描述语言,设计的描述可以通过各种工具来支持,从而有可能对移植设计进行描述。6.轻松共享和重用基于VHDL的设计方法,可以重新创建所有可用的模块。这些模块可以预先设计或在最后归档模块设计中使用,这些模块将被存储在库中,它可以在未来的计划中重复使用,可以使设计结果在设计师之间交流,减少硬件电路设计。1.3.3VHDL主要优势1.VHDL比其他硬件描述语言有更多的描述能力,使之确定成为了设计描述语言的最佳硬件。描述结构的行为能力很强,避免特定的设备,系统的描述和大型电子逻辑系统有关的设计。2.VHDL拥有大量的仿真程序和库函数,能够让设计任意大的系统最早的时候就可以发掘系统的设计特点,准备仿真设计的可能性。3.行为报表说明,采用VHDL语言编程技巧和结构,决定了支持大规模分解的开发和重用现有的设计。系统扩展,以满足市场的高效需求、快速实现设计一定要有多人一起完成,更有甚者需要许多个开发组并行工作来实现。4.VHDL描述设计的相对独立性,设计师不用了解硬件的结构,也不需要知道项目管理的最终目的是实现什么目标设备,在此基础上进行独立的设计。第二章FPGA系统开发过程因为FPGA设计和5B6B编解码系统原理是相似的,所以下面对FPGA开发系统的过程作一些简要介绍。2.1电路设计在系统的设计中,第一个进行演示程序,前期的系统设计和FPGA芯片的选择。根据任务要求,如指标和系统的复杂性,各种资源,运行速度和芯片本身的成本与取舍等方面,选择合适的设计和正确类型的设备。正常情况下设计采用自顶向下这种方法,先将系统划为几个基本的单位,之后的每个基本单位又划为基本单位的下一级,不停如此,直到能够立即运用的EDA库为止。2.2设计输入输入设计是将用于电路设计的系统或以开发所需的软件的形式展示出来,并输入到EDA工具的过程。经常使用的方式有HDL、原理流程图等。示意图是描述的最直接的方式,可编程芯片开发更广泛的适用于早期应用,将各个器件从元器件库中调出来,绘制原理图。这种方法虽然简单,易于仿真,但是实现效率极低,难以维护和重用,不利于模块结构。但它的主要缺点是不便于携带,升级后的芯片,所有原理图需要做一些改变。目前,实际的HDL是目前广泛使用的开发语言,利用文字描述设计,可分为一般HDL和行为HDL。在大型项目中,主要使用HDL,其主要的语言是VerilogHDL与VHDL。这两种语言是电气和电子工程师标准的美国协会(IEEE)制定的标准,其常见的突出特点是:独立于语言和芯片技术,这将有助于自顶向下设计,便于共享模块和移植,移植性良好,描述和模拟具有较强的逻辑思维能力,以及输入数据效率很高[10]。2.3功能仿真功能仿真,也称为前仿真,在用户逻辑电路的变异之前进行的电路逻辑功能设计验证,这个时候仿真没有延迟信息,只要预先进行功能测试。模拟之前,构建波形文件和测试向量(即将信号输入组成一个序列),模拟的结果将产生一个报告文件和输出信号波形,他们可以观察到每个节点的信号变化。若觉察到有问题,就回到逻辑设计改正[11]。2.4综合优化综合优化是使高层次的抽象描述成为一个较低的水平的描述。整合优化是根据目标的一致性的要求生产,从而使设计水平为FPGA布局布线软件实平面化。目前,集成的优化(合成),是将输入的逻辑与门,非门,或门,触发器,内存和其他基本的原始元素设计网表的逻辑单元相连接,而不是真正的门电路。真正具体的门级电路应使用FPGA供应商提供的布线功能,产生的一个全面的准则,该准则是根据归纳后的门级网表生成的。为了转换成该网表,HDL代码务必要满足给定的合成器的特定要求。因为它是一个成熟的技术集成的门级和RTL级的HDL程序结构,所有的设备都支持合成到这个程度的整合。2.5综合后仿真经过全面的仿真,以检查是否和原始设计的综合结果相一致。在模拟过程中,将标准延迟文件完整的反标记进综合仿真模型里,可以大概估算门延迟造成的硬性。然而,这一步不能估计线延迟,根据目前的状况,与现实情况仍有很大的差异,不是很精准的。合成工具目前相对比较成熟,所以整体设计能够舍去此步,不过若发现不符合电路布局设计的意向,就应该回来确认模拟问题。2.6实现与布局布线专用芯片FPGA布局的创作是综合性应用逻辑网表的一个最重要的过程。合理布局配置的逻辑网表的硬件原语和基本的硬件单元结构配置到固有的硬件芯片内,并且经常需要进行最快速度速度和最佳区域之间的选择。基于相关布线的拓扑结构,运用合理的精确的芯片连接到各个组件的内部。目前,FPGA的结构是非常复杂的,尤其是当有限制,需要使用定时驱动布局引擎布线的时候。布局布线后,该软件工具能够自主产生业务报表,给出相关部分的设计信息。因为只有FPGA芯片制造商了解芯片结构,所以芯片设计工具开发人员必须选择开发商提供的工具。

第三章5B6B编码设计步骤3.15B6B编码通俗来说,5B6B编码就是要如何把一个5B码转换成为一个6B码。5B6B编码实现方式主要有两种:使用MATLAB或者FPGA。这里选择的是FPGA。3.1.15B6B编码原理mBnB是将为二进制输入的源代码流分组,每m个二进制码为一组,表示为mB,称为码字,然后转换成n个二进制代码,表示为nB,并且在同一个时隙间输出[12]。实际上就是将mB码变成nB码,形成所谓的mBnB,其中m和n正常情况下都为大于零的数,且N>M,通常选定N=M+1。mBnB结构的形成方法是:将二进制代码里的每m个编码流码元分成一组,并且根据给定的编码规则和在相同的时隙内,找到一个相应的n位代码组来替代原来的m位码组。大部分mBnB代码都可以使用两种编码方式,是用来取代数字和d比较大的数组[13]。MBnB代码又称为分组码:这是非常有用的类多余的二进制代码,这是输入比特流(MB)的来源是一组码字,然后在时间变量相同的长度内变为n位(n>m),最后为这些新的数据流传输,以零或非零的形式。改造后,码传输速率提高,线路码比原来的二进制码速率增加了(通常会增加N/M倍)。mBnB类,一般有有1B2B,2B3B,4B5B,5B6B等类型,用的最多的而是5B6B码[14]。现在用5B6B代码示例来看看它的编码情况:5B6B码,五位二进制码共有2的5次方=32个字或代码,而六位共有2的6次方=64的二进制码字或代码。为了选出64种编码中最适合的编码方案去替代5B码中的32个码字,有许多编码方案,分别对应不同的表5B6B编码。在实践中,引入了一个参数应用于6B码:不平等的参数d,d=“1”码数—“0”码数,将d=0的6B码(如001101,100110)称为均等码,这类码字有20种不同的,能够分别表示20个不同的5B码。将d=+2称为正不均等的代码(例如111010,101101等),以及d=-2为负不均等码(例001101,010010等),它们各自是12种,为了让“0”码和“1”码出现的可能性相差不大,所述码字可被相互交换地使用,来表示对应的码图5B码额外的12码字。所以,“6B”码中连续相同的最大数目为6。时间信息丰富,而且“0”和“1”显示的概率相等,各占50%,所以可视为没有直流漂移。其他未使用的6码可以视为禁码,如果出现这些码字,则意味着编码有错误,从而实现了不间断误码监测的功能[15]。该5B6B模型有各种编码方式,根据CCITT标准和建议,对5b6b表进行使用,其中D=0的数字码组20个和D=±2的码组分别取12个。因此在5B6B码流中相同数量码的代码和少于5,数字码和差不大于3,甚至更小。3.1.25B6B码表设计由以上总结出5B6B码表的设计规则为:Ⅰ.“0”码出现的概率可能性等于“1”码Ⅱ.减少最大连续相同数的个数Ⅲ.选择d值最小的码组为了实现设计目标,引入了两种模式。模式1是正的,模式2是负的;模式1和2交替。如下的设计代码表:

表SEQ表\*ARABIC15B6B码表序号输入二元码组(5bit)输出二元码组(6bit)

5B6B—1

(00)

5B6B—2

(01)模式1模式2模式1模式200000000011100011101011110100010000101110001110010011101100020001011000111000101101110010030001110100110100100011100011140010001101001101010101101010050010101001101001100101100101160011010110010110000110100110170011111100100011000111000111080100010011010011011001100110090100101010101010101001101001110010100101111010000101010101011101011100111011000010110010110120110010101101010001100101100113011010111101000010110100110101401110101110010001011100011100150111111010011010010110101001016100000010110010110111011000101710001011101100010100011100011181001001101110010010010110010119100111101010010101001101001102010100110110001001101001101001211010111101000010110101010101022101101010101010101011001011002310111011001011001110101001010241100010110101001011000111000125110010011010011011100101100102611010110010110010110100110100271101101011001011011100100011028111001001011001011110001110002911101100011100011101110010001301111000111000111011011000100131111111110001110001110100001013.25B6B编码模块设计3.2.1编码器的工作原理5B6B编码电路模型,包括时钟控制模块、串行/并行转换电路,存储器模块,并行/串行转换模块等组成,如图2所示:串/并转换模块串/并转换模块存储器模块并/串转换模块串行6B码组输出并行5B码组并行6B码组串行5B码组输入时钟控制模块本地时钟输入图SEQ图\*ARABIC2系统总体设计图编码器电路的原理是一个本地振荡器产生一个标准时钟,由变频器电路产生的时钟用于编解码电路工作的输出电路的时钟,它们之间的关系是缓冲电路接收5位输入码存储为一个编码器,这个编码器电路中,根据5b6b码表输出6位代码。再将这6位码在时钟脉冲的驱动下再进行并行/串行转换来输出。3.2.2编码电路模块划分在实际设计中,应当与当前的实际情况和VHDL语言相结合,编码电路可分成以下模块。它们是:串行、并行转换模块,编码模块,并行串行转换模块,序列产生模块和其他的有关模块。下面描述了设计概念中的4个模块,后一些模块将会给出程序。1.时钟控制模块主要是实现一个时钟分频的功能,为了后面的串并转换模块,缓存电路以及并串转换模块提供一个时钟。2.串并转换模块主要是将输入的串行码流进行并行转换然后输出的功能。对于6B码而言,在查找表之前必须先转换成并行6B比特流,然后并行6B码聚集起来,再查找表。就5B码而言,就是被转换成并行数据流的5bits码。3.存储器模块主要负责将5B的码组转换为6B的码组,即实现编码功能。4.并串转换模块其功能与串并转换模块功能大体相同,即是将并行码流转换成串行码输出。3.3系统各个模块的设计3.3.1时钟控制模块的设计本模块主要是实现一个时钟分频的功能,为了后面的串并转换模块,缓存电路以及并串转换模块提供一个时钟,其实质为计数器,本设计需要用到一个六分频的为并串转换模块提供时钟,通过Quartus封装后的图形如图3所示:图图SEQ图\*ARABIC3时钟控制模块3.3.2串并转换模块的设计本模块主要是实现串行数据输入转换为并行数据输出,输入的为5位的串行的数据,输出为5位并行的数据,通过Quartus封装后的图形如图4所示:图图SEQ图\*ARABIC4串并转换模块3.3.3缓存电路的设计本模块主要实现5B数据转换为6B数据的一个功能,其实质是就是一个PROM,通过程序把5B6B码表存储起来,然后如果输入一个5B的数据,通过查表后输出一个对应的6B数据,从而实现5B转6B的功能,通过Quartus封装后的图形如图5所示:图SEQ图\*ARABIC5缓存电路3.3.4并串转换模块的设计本模块主要是实现并行数据输入转换为串行数据输出,输入的为6位的并行的数据,输出为6位串行的数据,通过Quartus封装后的图形如图6所示:图SEQ图\*ARABIC6并串转换模块3.3.5系统的顶层设计完整电路模块采用自顶向下的设计方法,在顶层模块中调用各个子模块来完成系统控制功能。具体顶层设计电路如下:图SEQ图\*ARABIC7完整电路顶层图3.4系统各个模块的仿真3.4.1分频器的仿真通过前面的设计,设置好相应的输入和输出后六分频器的仿真波形如图8所示:图SEQ图\*ARABIC8分频器的仿真图中clk为系统时钟输入,clk6为6分频后的时钟输出,通过对比可以看出,仿真波形是正确的。3.4.2串并转换模块的仿真通过前面的设计,设置好相应的输入和输出后串并转换模块的仿真波形如图9所示:图SEQ图\*ARABIC9串并转换模块的仿真图中clk为系统时钟输入,shift_in为串行的5B码组输入,A为并行的5B码组输出,这里我们选用任意的一个码组10110,从仿真结果中可以看出,在第五个时钟周期结束后并行输出的码组为10110,验证了仿真的正确性。3.4.3存储器模块的仿真通过前面的设计,设置好相应的输入和输出后存储器模块的仿真波形如图10所示:图SEQ图\*ARABIC10缓存电路的仿真图中clk为系统时钟输入;F为模式选择位,0表示选择模式1,1表示选择模式2,;Y为并行的5B码组输入,Q为并行的6B码组输出。通过对比Y和Q的码组可以发现,当输入00000时输出000111,当输入00001时输出011100,当输入00010时输出110001,当输入00011时输出110001……,只不过延迟了一个时钟周期。与5B6B编码表中进行对比可以证明仿真结果是正确的。3.4.4并串转换模块的仿真通过前面的设计,设置好相应的输入和输出后并串转换模块的仿真波形如图11所示:图SEQ图\*ARABIC11并串转换模块的仿真图中clk0表示系统时钟6分频后的时钟输入,clk1为系统时钟输入,Q为并行的6B码组输入,shift_out为串行的6B码组输入,这里我们选用任意一个码组100100测试,shift_out在一个clk0周期后输出的串行码为100100,说明了仿真是正确的。3.4.5完整电路仿真根据顶层模块的设计,仿真结果如图12所示:图SEQ图\*ARABIC12完整电路仿真波形图中clk为系统时钟输入,clk6为6分频器分频后的输出,M为模式选择位,A为并行5B码组输入,Q为并行6B码组输出,shift_in为串行的5B码组输出,shift_out为串行的6B码组输出,这里选用任意一个码组01011作为串行码组输入,可以看到在一个clk6周期后串行输出的6B码组为100111,通过编码表对比可以知道,设计与仿真都是正确的,故整个系统完全实现了所要求的功能。

第四章总结本文简单介绍了一种方法实现5B6B的编码,并使用VHDL硬件语言实现了5B6B编码数字化设计,完成了编码器最基本的功能,在这个基础上,未来的目标就是降低监测同步信号误码率,使这个设计更加完美。第一次采用FPGA来对5B6B编码,所有的Verilog编程中,所有的设计QUARTUS2功能仿真和时序验证已经通过仿真。毕业设计选择这一个题目是因为有同学在课程设计中曾做这个题目,可以相互探讨。开始可以选择Matlab或者VHDL语言来进行设计,我们选择了用VHDL来做,使用自上而下的硬件描述语言的设计方法来实现。

参考文献[1]李勇权,刘永强,何云状,樊建明.一种基于FPGA的5B6B编译码的实现[J].微计算机信息,2007,(14)[2]张少锋,杨章顺,戴琦,齐恒,冉立新.\o"光纤数字通信系统5B6B编译码的FPGA实现"光纤数字通信系统5B6B编译码的FPGA实现[J].光通信技术,2004,(12)[3]刘增基,周洋溢,胡辽林,周绮丽.光纤通信(第二版)[M].西安:西安电子科技大学出版社,2008.12[4]刘绍汉,刘新民,林杜生.VHDL芯片设计[M].北京:清华大学出版社,2004.[5]段吉海,等.基于CPLD/FPGA的数字通信系统建模与设计[M].北京:电子工业出版社,2004.[6]江国强.EDA技术与应用[M].北京:电子工业出版社,2004.[7]季雄,等.基于VerilogHDL的UART设计[J]微计算机信息.2006,6-2;230-232.[8]孙娇燕.码编解码方案的分析与改进,光通信技术,1994,18(4):282~286[9]夏宇闻.复杂数字电路与系统的VerilogHDL设计技术.北京:北京航空航天大学出版社,1998,9[10]杨祥林.光纤通信系统[M].北京:国防工业出版社,2000.1.[11]王新梅,等.纠错码原理与方法[M].西安:西安电子科技大学出版社,2001[12]南利平,李光华,张晨燕,王亚飞.通信原理简明教程:第二版[M].北京:清华大学出版社,2007.8.[13]樊昌信,詹道庸,徐炳祥,等.通信原理[M].北京:国防工业出版社,2001[14]DorotaHuizinga,AdamKolawa.AutomatedDefectPrevention:BestPracticesinSoftwareManagement[M].Wiley-Blackwell,2007.[15]AdamKolawa.TheNextLeapinProductivity:WhatTopManagersReallyNeedtoKnowaboutInformationTechnology[M].Wiley,2009.

致谢四年的时间转眼就过去了,在这四年里我成长了很多,也从周围的朋友身上了解到了很多这一辈子都不会忘记的事。在这即将毕业离校之际,我很感谢在这段时间里同学们和老师们的帮助,很感谢大家!通过此次做毕业论文,我觉得我对自己的实践动手能力提高了很多。毕竟在之前的学习生活中,理论往往是大于实践的,我们花更多的时间在课堂以及书本的学习上,但很少花时间去自己亲手去实现一个功能。所以,通过这两个月来的使用,我已经很好掌握了QuartusII软件的使用方法,并对5B6B码有了一个很明确的了解。在这个过程中,我遇到了很多的问题,但是我通过上网查询以及和同学相互交流,一一解决了这些难题。从中有知道了,有些东西不亲自动手去做,是永远都学不会的。在这里,我想我应该感谢我的老师张倩老师。在张倩老师的指导下,我很有条理的完成了各个时间段应该完成的工作,不至于在最后截止日期前手忙脚乱。并且,在这期间张倩老师也给了我很多学术上的指导,使我受益匪浅。最终,我很感谢张老师在毕业论文的写作中给我的帮助!姜晓菀2014年6月于合肥学院

附录:图表目录TOC\h\z\c"图"图1QuartusII界面 1图2系统总体设计图 11图3时钟控制模块 12图4串并转换模块 12图5缓存电路 13图6并串转换模块 13图7完整电路顶层图 13图8分频器的仿真 14图9串并转换模块的仿真 14图10缓存电路的仿真 15图11并串转换模块的仿真 15图12完整电路仿真波形 16TOC\h\z\c"表"表15B6B码表 10程序代码(一)六分频器模块:序列发生器的输入时钟脉冲六分频从而可以实现每输入6BIT的并行信号就将其转换给变量。具体程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityCNT6isport(clk:instd_logic;clk6:outstd_logic);end;architectureexamofCNT6issignalq:std_logic_vector(2downto0);signaltemp:std_logic;beginprocess(clk)beginifclk'eventandclk='1'thenifq="101"thenq<="000";temp<='1';elseq<=q+1;temp<='0';endif;endif;endprocess;clk6<=temp;endexam;(二)五位串并转换模块:5位串变并用循环移位实现Clk0来一次有效,Y接收串行的数据就向右移一位当五分频的信号clk5有效时把Y输出。编码部分五串变五并程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitySER2PAR5to5is port(clk:instd_logic; shift_in:instd_logic; A:outstd_logic_vector(4downto0)); end;architectureoneofSER2PAR5to5is signalq:std_logic_vector(4downto0);begin p1:process(clk) begin ifclk'eventandclk='1' thenq<=q(3downto0)&shift_in; endif; endprocessp1;A<=q;endone;(三)存储器模块:根据上面的码表确定5位码对应的6位码利用类似查表的方法把输入的五位数据当作rom中的地址然后输出对应的6位码。编码部分程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYPROM5_6ISPORT(Y:INSTD_LOGIC_VECTOR(4DOWNTO0); clk,F:INSTD_LOGIC; Q:OUTSTD_LOGIC_VECTOR(5DOWNTO0));END;ARCHITECTUREONEOFPROM5_6ISSIGNALREG:STD_LOGIC_VECTOR(5DOWNTO0);BEGINP1:PROCESS(Y,F)BEGINifF='0'then--模式一部分caseYis when"00000"=>REG<="000111"; when"00001"=>REG<="011100"; when"00010"=>REG<="110001"; when"00011"=>REG<="101001";--buxing when"00100"=>REG<="011010"; when"00101"=>REG<="010011"; when"00110"=>REG<="101100"; when"00111"=>REG<="111001"; when"01000"=>REG<="100110"; when"01001"=>REG<="010101"; when"01010"=>REG<="010111"; when"01011"=>REG<="100111"; when"01100"=>REG<="101011"; when"01101"=>REG<="011110"; when"01110"=>REG<="101110"; when"01111"=>REG<="110100"; when"10000"=>REG<="001011"; when"10001"=>REG<="011101"; when"10010"=>REG<="011011"; when"10011"=>REG<="110101"; when"10100"=>REG<="110110"; when"10101"=>REG<="111010"; when"10110"=>REG<="101010"; when"10111"=>REG<="011001"; when"11000"=>REG<="101101"; when"11001"=>REG<="001101"; when"11010"=>REG<="110010"; when"11011"=>REG<="010110"; when"11100"=>REG<="100101"; when"11101"=>REG<="100011"; when"11110"=>REG<="001110"; when"11111"=>REG<="111000"; WHENOTHERS=>REG<=NULL;endcase; endif;ifF='1'then--模式二部分caseYis when"00000"=>REG<="000111"; when"00001"=>REG<="011100"; when"00010"=>REG<="110001"; when"00011"=>REG<="101001"; when"00100"=>REG<="011010"; when"00101"=>REG<="010011"; when"00110"=>REG<="101100"; when"00111"=>REG<="000110"; when"01000"=>REG<="100110"; when"01001"=>REG<="010101"; when"01010"=>REG<="101000"; when"01011"=>REG<="011000"; when"01100"=>REG<="010100"; when"01101"=>REG<="100001"; when"01110"=>REG<="010001"; when"01111"=>REG<="110100"; when"10000"=>REG<="001011"; when"10001"=>REG<="100010"; when"10010"=>REG<="100100"; when"10011"=>REG<="001010"; when"10100"=>REG<="001001"; when"10101"=>REG<="000101"; when"10110"=>REG<="101010"; when"10111"=>REG<="011001"; when"11000"=>REG<="010010"; when"11001"=>REG<="001101"; when"11010"=>REG<="110010"; when"11011"=>REG<="010110"; when"11100"=>REG<="100101"; when"11101"=>REG<="100011"; when"11110"=>REG<="001110"; when"11111"=>REG<="111000"; WHENOTHERS=>REG<=NULL;endcase;endif;ENDPROCESSP1;P2:PROCESS(clk)BEGINIFclk'eventandclk='1'THENQ<=REG;ENDIF;ENDPROCESSP2;ENDONE;(四)六位并变串转换:把编码实现的6位码由并行转换为串行输出。具体程序如下:libraryieee;useieee.std_logic_1164.all;entityPAR2SER6to6is port( clk0,clk1:instd_logic; Q:instd_logic_vector(5downto0); shift_out:outstd_logic);endPAR2SER6to6;architectureoneofPAR2SER6to6is signalN:INTEGERRANGE0TO5; signalREG:std_logic_vector(5downto0);begin p1:process(clk0,Q) begin ifclk0'eventandclk0='1'then REG<=Q; endif; endprocessp1; PROCESS(clk1,REG,N) BEGIN IFclk1'EVENTANDclk1='1'THEN IFN<5THENN<=N+1; ELSEN<=0; ENDIF; ENDIF; caseNis when0=>shift_out<=REG(5); when1=>shift_out<=REG(4); when2=>shift_out<=REG(3); when3=>shift_out<=REG(2); when4=>shift_out<=REG(1); when5=>shift_out<=REG(0); whenothers=>shift_out<='X'; endcase; endprocess;endone;基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论