基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx

上传人:b****1 文档编号:10324229 上传时间:2023-05-25 格式:DOCX 页数:20 大小:247.13KB
下载 相关 举报
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第1页
第1页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第2页
第2页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第3页
第3页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第4页
第4页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第5页
第5页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第6页
第6页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第7页
第7页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第8页
第8页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第9页
第9页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第10页
第10页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第11页
第11页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第12页
第12页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第13页
第13页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第14页
第14页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第15页
第15页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第16页
第16页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第17页
第17页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第18页
第18页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第19页
第19页 / 共20页
基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx

《基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx》由会员分享,可在线阅读,更多相关《基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx(20页珍藏版)》请在冰点文库上搜索。

基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分.docx

基于VHDL循环码编译码器包含编码部分和纠错部分还有译码部分

目录

目录1

摘要2

1引言3

1.1课程设计目的4

1.2课程设计平台4

2应用工具介绍5

2.1EDA技术介绍5

2.2VHDL语言介绍6

2.3VHDL语言的特点6

3设计原理8

3.1编码器的设计8

3.2译码器的设计9

4设计步骤11

4.1VHDL设计流程11

4.2系统分析11

4.3程序流程分析12

4.4程序设计12

4.5系统仿真15

4.6结果分析17

5结束语18

6致谢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来控制码组的输入与输出,在K的控制下,输入的信息码元,一方面串行输入信道,另一方面进入除法电路进行计算。

当输入最末一位信息码元结束时,K信号也为零,在时钟脉冲作用下,移位寄存器将计算结果送往信道,即在最末一位信息码元后附加监督码。

3.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;

ENTITYcycleIS

PORT(

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_cycleOFcycleIS

SIGNALd0,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";

BEGIN

u1:

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;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2