基于VHDL循环码编译码器_第1页
基于VHDL循环码编译码器_第2页
基于VHDL循环码编译码器_第3页
基于VHDL循环码编译码器_第4页
基于VHDL循环码编译码器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

目录TOC\o"1-2"\u目录1摘要21引言31.1课程设计目的41.2课程设计平台42应用工具介绍52.1EDA技术介绍52.2VHDL语言介绍62.3VHDL语言的特点63设计原理83.1编码器的设计83.2译码器的设计94设计步骤114.1VHDL设计流程114.2系统分析114.3程序流程分析124.4程序设计124.5系统仿真154.6结果分析175结束语186致谢19参考文献20基于VHDL语言的循环码编译码器设计学生姓名:凌鹏指导老师:肖红光等摘要本课程设计设想采用专用集成电路芯片实现循环码编译码器的功能。在本次计中,使用的系统开发平台为Quartus2Ⅱ,硬件描述语言是VHDL。设计方案中,实现了编码,纠错,译码。从循环的原理出发,讨论循环码编译码系统的特点。以一个〔7,4〕循环码为例,使用硬件描述语言VHDL对该系统进行了设计,能实现循环码以及一位错码的纠错译码。依据设计方案和设计平台完成了程序编写和程序调试,通过运行程序及时序波形的仿真有效验证了设计的正确性,初步实现了设计目标。关键词专用集成电路;VHDL;循环码编译码器;Quartus2ⅡAbstractThecourseisdesignedASICchipenvisagedcycliccodescodecfunctions.Inthisaccount,theuseofthesystemdevelopmentplatformforQuartus2Ⅱ,hardwaredescriptionlanguageVHDL.Design,therealizationofthecoding,errorcorrection,decoding.Fromthecycleofprinciple,todiscussthecharacteristicsofcycliccodeencodinganddecodingsystem.A(7,4)cycliccode,forexample,usinghardwaredescriptionlanguageVHDLdesignofthesystem,toachievethecycliccodeandadecodingerrorcorrectioncodes.Designanddesignplatformbasedonthecompletionoftheprogramminganddebugging,andtimingwaveformsbyrunningthesimulationprogrameffectivelyvalidatethecorrectnessofthedesign,theinitialrealizationofthedesigngoal.1引言循环码是在严密的代数学理论根底上建立起来的,是线性分组码的一种。这种码的编码和解码设备都不太复杂,而且纠错的能力较强。顾名思义,循环码除具有线性码的一般性质之外,还具有循环性,即任一码组循环一位以后,仍为该码中的一个码组。在代数编码理论中,为了便于计算,经常将循环码表示成码多项式的形式,设码组为a=(an-1an-2...a1a0),那么码多项式定义如下:T(X)=an-1x+an-2x+...+a1x+a0在循环码除全“0〞码组外,再没有连续k位均为“0〞的码组,即连“0〞的长度最多只有(k-1)位。否那么,在经过假设干次循环移位后将得到一个k位信息位全为“0〞,但监督位不全为“0〞的一个码组。因此,g(x)必须是一个常数项不为“0〞的(n-k)次多项式,而且这个g(x)还是这种码中次数为(n-k)的唯一一个多项式。称这唯一的(n-k)次多项式g(x)为码的生成多项式。一旦确定了g(x),那么整个(n,k)循环码就被确定了。由此,可以写出循环码的生成矩阵G.通常这时得到的循环码的生成矩阵不是典型矩阵,可通过线性变换转为典型矩阵,那么循环码组可写成:T(X)=[an-1an-2...an-k]G(X)G(X)=[an-1x+an-2x+...+an-(k-1)x+a].g(x)所有的码组多项式T(X)都可被g(x)整除,而且任意一个次数不大于〔k-1〕的多项式乘g(x)都是码多项式,该条性质用于编码,还可用于验证接收码组是否出错。由于任一循环码多项式T(X)都是g(x)的倍式,故可写成T(X)=h(x).g(x),而g(x)本身也是一个码组,即有T'(X)=g(x)。由于T'(X)是一个〔n-k〕次多项式,故xkT'(x)是一个n次多项式,在模xn+1运算下,也是该编码中的一个许用码组。可以写成xT'(x)=Q(x)+T(x),又由于等式左端分子和分母都是n次多项式,故Q(x)=1。因此,上式可化成xkT'(x)=(xn+1)+T(x)。最后,可得到xn+1=g(x〕[xk+h(x)]。由此说明,g(x)应该是xn+1的一个因子。在本次计中,我使用的系统开发平台为Quartus2Ⅱ,在Quartus2Ⅱ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。在本次设计中,采用的硬件描述语言是VHDL[3]〔Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage〕。VHDL语言是一种用于电路设计的高级语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。1.1课程设计目的和要求电子产品的设计生产,从选题、方案论证、性能指标确定、装调电路、修改、定型参数直到批量生产,是一个复杂而又费时的过程。该过程的任一环节,都对产品性能和经济效益产生直接影响。尤其是集成电路的设计,器件在插接板上就无法组合成像集成电路内部那样紧密复杂的电子电路,装配板上的寄生参数与集成环境中的完全不同。因此,在装配板测试的特性将无法准确地描述集成电路的真实特性。所以,电子电路的传统设计方法已经不适应当前电子技术开展的要求,这就要借助计算机完成电子电路的辅助设计,即电子电路EDA技术。EDA包括电子工程设计的全过程,如系统结构模拟、电路特性分析、绘电路图和制作PCB等。本课程设计中将一组循环码输入,并且能编码,再纠错,再到解码输出的一个过程。作为通信专业的学生,通过这次EDA方面的课程设计,可以提高我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。1.2课程设计平台Quartus2Ⅱ2应用工具介绍作为当今最流行的计算机软件系统,EDA技术是以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。EDA可提供文本输入以及图形编辑的方法将设计者的意图用程序或者图形方式表达出来,而我们经常用到的VHDL语言便是用于编写源程序所需的最常见的硬件描述语言〔HDL〕之一。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC幅员或PCB幅员的整个过程的计算机上自动处理完成。EDA现已广泛用于机械、电子、通信、航空航天、化工、矿产、生物、医学和军事等众多领域的设计和制造。2.1EDA技术介绍EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念开展而来。EDA技术是在电子CAD技术根底上开展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计[1]。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统工程的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。

在今天,EDA技术已经成为电子设计的普遍工具,无论设计芯片还是设计系统,没有EDA工具的支持,都是难以完成的。EDA工具已经成为设计师必不可少的武器,起着越来越重要的作用。从目前的EDA技术来看,其开展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。EDA技术开展迅猛,完全可以用日新月异来描述。EDA技术的应用广泛,现在已涉及到各行各业。EDA水平不断提高,设计工具趋于完美的地步。2.2VHDL语言介绍VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体〔可以是一个元件,一个电路模块或一个系统〕分成外部〔或称可视局部,及端口)和内部〔或称不可视局部〕,既涉及实体的内部功能和算法完成局部。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外局部的概念是VHDL系统设计的根本点。2.3VHDL语言的特点VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL语言主要具有以下优点:[1](1)VHDL语言功能强大,设计方式多样VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比较的。VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。(2)VHDL语言具有强大的硬件描述能力VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、存放器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL语言的强大描述能力还表达在它具有丰富的数据类型。VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。(3)VHDL语言具有很强的移植能力VHDL语言很强的移植能力主要表达在:对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。(4)VHDL语言的设计描述与器件无关采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。(5)VHDL语言程序易于共享和复用VHDL语言采用基于库(library)的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。3设计原理3.1编码器的设计VHDL是一种行为描述语言,其编程结构类似于计算机中的C语言,在描述复杂逻辑设计时,非常简洁,具有很强的逻辑描述和仿真能力,是未来硬件设计语言的主流。在本设计中,应用VHDL语言,在Altera公司的QuartusII7.2软件环境下,按照自顶而下的设计方法,对编译码器进行设计仿真。根据给定的(n,k)值选定生成多项式g(x),即从xn+1的因子中选一个(n-k〕次多项式作为,假设给定信息码组为m(x)=(mk-1,mk-2...m0),其次数小于k,那么xn-km(x)的次数必定小于n。用g(x)除xn-km(x),得到余式r(x),r(x)的次数必定小于g(x)的次数,即小于(n-k)。将此余式r(x)加于信息位之后作为监督位,即r(x)和xn-km(x)相加,得到多项式必定是一个码组多项式。因为它必定能被g(x)整除,且商的次数不大于(k-1)。根据以上原理,循环码的编码步骤可以归纳如下:〔1〕用xn-k乘信息码m(x),这一运算实际上是在信息码后附加上(n-k)个“0〞。〔2〕用g(x)除xn-km(x),得到商Q(X),(3)编出的码组T(x)=xn-km(x)+r(x)。由此可见,编码的核心是如何确定余式r(x),找到r(x)后,可直接将其所代表的编码位附加到信息位之后,完成编码。编码电路可采用〔n-k〕级反应移位存放器和异或门〔模2加〕组成的除法电路实现。以生成矩阵g(x)=x3+x+1生成〔7,4〕循环码的编码器为例,其除法电路如图1所示。图3.1除法电路图此移位存放器的个数与g(x)的次数相等,并且g(x)的系数1表示有反应,0表示无反应。每个存放器的初始值均为0,将码组m3m2m1m0依次串行送入电路的最高端,相当于对其后面补三个零,除法电路经过四次移位后,存放器D1D2D3里的数即为余式r(x)。因此,编出码组T(x)=(m3m2m1m0D1D2D3)。实际设计中,要有一个信号K来控制码组的输入与输出,在K3.2译码器的设计接收端译码的要求有两个:检错和纠错。〔1〕检错假设接收码组R(x)与发送码组相同,即R(x)=T(x),那么R(x)必定能被g(x)整除;假设在传输中发生错误,即R(x)≠T(x),那么R(x)被g(x)除时可能除不尽而有余项,从而发生错误。因此,可以以余项是否为零来判断接收码组中有无错误。但是,有错码的接收码组也有可能被g(x)整除,这时的错码就不能检出。这种错误称为不可检错误,其误码必定超过了此编码的检错能力。〔2〕纠错为了能够纠错,要求每个可纠正的错误图样必须与一个特定余式有一一对应关系。只有存在上述一一对应的关系时,才可能从上述余式唯一地决定错误图样,从而纠正错码。以下是为纠错而设计的。由于〔7,4〕循环码的最小码距为d0=3,由d0≥2t+1得,此循环码只能纠正一个错码。当经过信道传输后发生错误时,接收码组多项式R(x)不再是的倍式。其中S(x)是R(x)除以g(x)后的余式,是不大于r-1次的码组多项式,称为伴随多项式或校正子多项式。时接收码组多项式可表示为发送码组多项式T(x)与过失多项式E(x)之和,即:R(x)=T(x)+E(x)综合以上式子,我们由就可进一步确定E(x):S(x)=rem[T(x)+E(x)]=rem[E(x)]g(x)g(x)对于一个S(x),E(x)可能有多种形式。由S(x)确定E(x)时同样使用最大似然比准那么。对最小码重的过失多项式E(x),由上式求出对应的伴随多项式S(x),将E(x)与S(x)的对应关系列成译码表。当收到任一码组R(x)后,利用S(x)=rem[R(x)/g(x)]求出S(x),对照译码表找到E(x),再用R(x)=T(x)+E(x)求T(x),即T(x)=R(x)+E(x)为已经纠错的原发送码组。纠错完毕之后,只需要取纠错后的前四位,即为所译码元。而在实际电路设计过程中,由于二进制只有0与1两种状态,知道错误位置后,可以直接对该位置的码元取反即可。综上所述,纠错的步骤如下:〔1〕把接收码组R(x)送入除法电路,得到余数D1D2D3即为伴随矩阵S(x)。〔2〕由典型生成矩阵G和典型监督矩阵HT之间的关系可进一步求得,再由S=E.HT可得错误图样E(x),这样就可以确定错码的位置。〔3〕根据错误的码位,对该码位的码元取反输出便可得到原发送码组T(x)。其中,T(x)的前四位即为译出码元m(x)。图3.2译码器示意图在运用VHDL设计时,将接收码组进行串并转换,进入除法电路求其伴随式,让其并行输出之后送入错误图样识别器来确定E,以便确定出错码的位置,对其错码位取反即可。最后,通过并串转换将译码后的码组串行输出。4设计步骤4.1VHDL设计流程本设计是采用的是循环码编译码器,图4.1是一个典型的VHDL设计流程:图4.1VHDL语言设计流程图4.2系统分析本设计在Quartus2Ⅱ的EDA软件平台上,运用VHDL语言进行编程。程序流程图如图3所示:图4.2循环码编译码框架图循环码编译码系统结构图如图4.1所示。由定时单元(控制信号生成单元)、信码发生器、编码器单元、模拟错码发生器、错码位置计算单元、纠错单元组成。其中错码位置计算单元和纠错单元合在一起构成译码器。4.3程序流程分析图4.3程序流程图该程序流程主要通过输入一组四位信息码组,然后根据编码后的余数输出对编码进行检错判断,假设输出余数为000那么无错码,假设输出的余数为图4.22中,那么有错码。然后纠错并译码输出一个7位信息码组。4.4程序设计根据程序流程图编写程序,源程序如下所示:其中,为了增加译码器的可读性,增加了个judge信号,当为00时表示无错码,11时表示有错码。LIBRARYieee;USEieee.std_logic_1164.all;ENTITYcycleISPORT(datain:INSTD_LOGIC;clk,clr,clr2:INSTD_LOGIC;enable1:instd_logic;enable2:instd_logic;tout:outstd_logic_vector(6downto0);judge:outstd_logic_vector(1downto0));ENDcycle;ARCHITECTUREarc_cycleOFcycleISSIGNALd0,d1,d2:STD_LOGIC;signalq1,q2,q0:STD_LOGIC_vector(7downto0):="00000000";signaldataout:std_logic;signaldin:std_logic_vector(6downto0);signalrout:std_logic_vector(2downto0);--signaldin:std_logic_vector(6downto0):="0000000";BEGINu1:process(clk)variableg:std_logic;variablem:integerrange1to8;begin if(clk'eventandclk='1')then ifclr='1'then--初始状态 g:='0'; m:=1; dataout<='0'; else ifm<=8then ifm<=4then--输入四位信息位 dataout<=datain; casemis when1=>din(6)<=dataout; when2=>din(6)<=dataout; when3=>din(5)<=dataout; when4=>din(4)<=dataout; when5=>din(3)<=dataout; when6=>din(2)<=dataout; when7=>din(1)<=dataout; when8=>din(0)<=dataout; endcase; g:=datainXORd2; else dataout<=d2;--余数输出 casemis when1=>din(6)<=dataout; when2=>din(6)<=dataout; when3=>din(5)<=dataout; when4=>din(4)<=dataout; when5=>din(3)<=dataout; when6=>din(2)<=dataout; when7=>din(1)<=dataout; when8=>din(0)<=dataout; endcase; g:='0'; endif; d2<=d1; d1<=gXORd0; d0<=g; m:=m+1; endif; endif; endif;endprocessu1;u2:process(clk)begin if(clk'eventandclk='1')then ifenable1='1'then foriin1to7loop--各存放器按反应关系经七次移位后,各存放器中的数即为所求的伴随式 q2(i)<=q1(i-1); q1(i)<=q2(i-1)xorq0(i-1); q0(i)<=din(7-i)xorq2(i-1); endloop; rout(0)<=q0(7); rout(1)<=q1(7); rout(2)<=q2(7); endif; endif;endprocessu2; -- u3:process(clk)begin if(clk'eventandclk='1')then ifenable2='1'then--enable2信号用来控制开始纠错 if(clr2='1')then--初始状态 tout<="0000000"; judge<="00"; else caseroutis--rout为伴随式〔从低位到高位〕 when"100"=>--rout为100时,最低位码有错 tout<=din(6downto1)&(notdin(0));--错码位取反 judge<="11"; when"101"=>--rout为101时,最高位码有错 tout<=(notdin(6))&din(5downto0); judge<="11"; when"000"=>--rout为000时,无错码 judge<="00"; tout<=din;--纠错后输出 whenothers=> null; endcase; endif; endif; endif;endprocessu3;endarc_cycle;4.5系统仿真系统仿真是在实际系统上进行实验研究比较困难时适用的必不可少的工具,它是指通过系统模型实验去研究一个已经存在或正在设计的系统的过程,通俗地讲,就是进行模型实验。因而,系统仿真的结果断定整个课

温馨提示

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

评论

0/150

提交评论