基于VHDL的循环码编译码器的设计毕业论文.doc
毕业设计报告(论文)报告(论文)题目:基于VHDL的循环码编译码器的设计 作者所在系部: 电子工程系 作者所在专业: 通信工程 作者所在班级: B08232 作 者 姓 名 : 作 者 学 号 : 指导教师姓名: 完 成 时 间 : 2012年 6月15日 北华航天工业学院教务处制 毕业设计(论文)任务书(理工类)学生姓名: 专 业: 通信工程 班 级: B08232 学 号: 指导教师: 职 称: 副教授 完成时间: 2012.6 毕业设计(论文)题目:基于VHDL的循环码编译码器的设计 题目来源教师科研课 题纵向课题()题目类型理论研究()注:请直接在所属项目括号内打“”横向课题()应用研究()教师自拟课题()应用设计()学生自拟课题()其 他()总体设计要求及技术要点:基本设计要求:对不同的设计方法进行分析和比较,选择优化的设计方法,利用VHDL分别设计(15,7)BCH码的编码器和译码器,并能够对两部分进行单独仿真调试,实现其相应的功能。较高设计要求:在实现基本功能的基础上,通过设计信源编码器、模拟信道产生误码,将信源编码器、编码器、误码产生电路和译码器连接起来,实现对整个编译码系统的仿真和性能的分析比较。工作环境及技术条件:PC机1台、quartus II 7.0 编译环境信道编码尤其是循环码理论基础、EDA技术开发基础工作内容及最终成果: 方案论证、画出组成方框图; 画出系统工作的时序图; 设计组成系统的各单元电路; 完成整个系统的设计; 进行部分电路的时序仿真,并对仿真结果进行分析; 完成整个系统的仿真调试和性能分析; 撰写毕业设计论文; 其他。时间进度安排: 第七学期第六周 根据学生选择情况,完成双向选择,下达毕业设计任务书; 第七学期六十五周 教师指导学生查阅文献,撰写开题报告,准备外文译文、文献综述; 第七学期第十六周 论证学生的开题报告,确定能否开始毕业设计; 第八学期五周 搜集相关资料,深入学习相关理论知识及开发工具等内容; 第八学期六七周 确定毕业设计方案,论述课题要求及涉及到的理论,画出系统原理草图; 第八学期第八十四周 模块功能分析、功能设计、程序编写、调试编译、功能验证分析; 第八学期第十五十七周 论文编写、修改等工作;毕业设计资料整理归档。指导教师签字: 年 月 日教研室主任意见:教研室主任签字: 年 月 日 本科生毕业设计(论文)原创性及知识产权声明本人郑重声明:所呈交的毕业设计(论文)基于VHDL的循环码编译码器的设计是本人在指导教师的指导下,独立进行研究工作取得的成果。除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品或成果。对本设计(论文)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。因本毕业设计(论文)引起的法律结果完全由本人承担。本毕业设计(论文)成果归北华航天工业学院所有。本人遵循北华航天工业学院有关毕业设计(论文)的相关规定,提交毕业设计(论文)的印刷本和电子版本。本人同意北华航天工业学院有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;可以采用影印、缩印、数字化或其它复制手段保存论文;在不以营利为目的的前提下,可以公布非涉密毕业设计(论文)的部分或全部内容。特此声明毕业设计(论文)作者: 指导教师: 年 月 日 年 月 日摘 要在本次设计中,使用Quartus II 7.0为系统开发平台,硬件描述语言VHDL为主要设计手段,以可编程逻辑器件为实现载体,设计方案中,从循环码编译码的原理出发,论证了BCH码编译码系统的设计方案,并利用VHDL语言加以实现。所设计的系统可以完成BCH码编码以及两位错码的纠错译码。依据设计方案和设计平台完成了程序编写和程序调试,通过运行程序及时序波形的仿真有效验证了设计的正确性,初步实现了设计目标。关键词 VHDL BCH码 编码器 译码器AbstractThis design takes the Quartus II 7.0 as the system development platform, and takes hardware description language VHDL as the main design means. It also uses programmable logic devices for the realization of the carrier。 In the design, it starts from the principle of cyclic code encoding and decoding, demonstrated the design of BCH codes encoding and decoding system, and then achieves with the VHDL language. The system designed can completed BCH codes encoding and of which the error correction decoding even with two errors. Programming and debugging is completed in accordance with the design and design platform in this design. Besides, it validates the correctness of the design effectively through running the program and the timing waveform simulation, and achieve the design goals preliminarily.Key words VHDL BCH code encoder decoder目 录摘 要I第1章 绪论11.1设计目的和要求11.2背景及国内外研究概况11.3本次设计完成的主要工作2第2章 EDA技术32.1EDA概述32.2VHDL语言介绍32.3VHDL语言的特点42.4可编程逻辑器件52.5Quartus II概述62.6Quartus II数字系统开发流程72.7小结8第3章 常用循环码简介93.1循环码93.2R-S码103.3非本原BCH码103.4小结11第4章 基于BCH码设计原理124.1编码器设计原理124.2译码器设计原理134.2.1由接收多项式r(x)求伴随式s134.2.2由伴随式求出错误位置154.2.3搜索法译码原理174.3主模块电路设计方框图184.3.1编码器电路184.3.2综合计算电路184.3.3迭代译码算法电路194.3.4钱氏搜索译码电路194.3.5差错定位电路204.3.6译码器电路(双纠错码)204.4小结21第5章 程序设计实现225.1程序设计总流程图225.2编码器顶层文件主程序235.3译码器顶层文件主程序245.4编码器顶层文件生成模块275.5译码器顶层文件生成模块285.6编码器仿真图285.7译码器仿真图295.8小结30第6章 结论31致 谢32参考文献33附 录34附录134附录243基于VHDL的循环码编译码器的设计第1章 绪论1.1 设计目的和要求BCH码是一种重要而有效的纠正多个随机错误的循环码。它的纠错能力很强,在短和中等码长下,其性能很接近于理论值,并且构造方便,编码简单。因此,在通信领域中,BCH码的应用极为广泛。本设计中将一组循环码输入,并且能编码,再纠错,再到解码输出的一个过程。(15,7)码是距离d= 5的本原BCH码,它能有效的纠正2位随机错误。对不同的设计方法进行分析和比较,选择优化的设计方法,利用VHDL分别设计(15,7)BCH码的编码器和译码器,并能够对两部分进行单独仿真调试,实现其相应的功能。作为通信工程专业的学生,通过这次循环码编译码方面的毕业设计,可以提高本人对编码领域及通信电路设计领域的认识,有利于培养我在通信编码方面的设计能力。一人一题特别有利于锻炼我独立分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养本人严谨的工作作风。1.2 背景及国内外研究概况提高信息传输的可靠性和有效性,始终是通信工作所追求的目标。纠错码是提高信息传输可靠性的一种重要手段。1948年香农(Shannon)在他的开创性论文“通信的数学理论”中,首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理,奠定了纠错码的基石。根据香农的思想,研究者先后给出了一系列设计好码和有效译码的方法。以后,纠错码受到了越来越多的通信和数学工作者,特别是代数学家的重视,使纠错码无论在理论上还是在实际中都得到了飞速发展,比如BCH、卷积码,Turbo码、LDPC码等。BCH码译码算法的研究一直是编解码领域的主要研究课题,至今已经提出了多种译码算法。但是这些传统的译码算法用硬件实现较为复杂,而且延时比较严重。而一种码在实际中能否得到广泛的应用,往往取决于译码器是否精简、快速。文中将讨论一种简单、快速的BCH译码器的VHDL设计方法。现代数据传输通信中,常常因传输差错造成误码错码,尤其在无线通信中,空中的突发或随机干扰噪声会造成编码差错。为了提高传输的正确率,往往采用一些校验方法,以检验纠正传输差错。通信中校验的方法很多,如BCH、卷积码,Turbo码、LDPC码等,其中的BCH编码有其独特的优点:它的纠错能力很强,特别在短和中等码长下,其性能很接近于理论值,构造方便,编码简单,不仅可以检纠突发性错误,还能检纠随机差错。因此,在通信系统中得到广泛应用,如在我国地面数字电视广播标准中就选用了BCH(762.752)码。循环码是在严密的代数理论基础上建立起来的,是线性分组码的一种。这种码的编码和解码设备都不太复杂,而且纠错的能力较强。顾名思义,循环码除具有线性码的一般性质之外,还有循环性,即任一码组循环移位以后,仍为该码中的一个码组。从信道编码定理的公式出发,不强调物理意义,只是从数学角度分析如何使不等式左边的减小。是负指数函数,从数值看欲减小可走增大码长N或增大可靠性函数E(R)两条路。而想增大E(R)又有加大信道容量C或减小码率R两条路。对于同样的码率R,信道容量大的,其可靠性函数E(R)也大;若信道容量C不变,码率减小时其可靠性函数E(R)增大。1.3 本次设计完成的主要工作本文设计中主要包括以下内容:方案论证、画出组成方框图;画出系统工作的时序图;设计组成系统的各单元电路;完成整个系统的设计;进行部分电路的时序仿真,并对仿真结果进行分析;完成整个系统的仿真调试和性能分析;撰写毕业设计论文。第2章 EDA技术2.1 EDA概述EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。电子设计自动化的重要特征就是要求采用形式化语言来描述硬件电子电路的功能,即使用硬件描述语言来描述硬件电子电路。目前,作为硬件描述语言之一的VHDL(Very_High_Speed Integrated Circuit Hardware Description Language)已经成为各家EDA工具和集成电路厂商所普遍认同和共同推广的标准化硬件描述语言。2.2 VHDL语言介绍VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分即端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。随着信息技术的不断发展,电子技术面临着严峻的挑战,为了跟上快速变化的步伐,电子产品的设计不得不非常快。模拟设计依然是很特殊的职业,数字设计已变得非常依赖于计算机辅助设计设计自动化(DA)或电子设计自动化(EDA)。2.3 VHDL语言的特点VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来 ,VHDL语言主要具有以下优点: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语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。2.4 可编程逻辑器件可编程逻辑器件英文全称为:programmable logic device 即PLD。PLD是由一种通用集成电路产生的,它的逻辑功能按照用户对器件编程来确定。一般的PLD的集成度很高,足以满足设计一般的数字系统的需要。这样就可以由设计人员自行编程而把一个数字系统“集成”在一片PLD上,而不必去请芯片制造厂商设计和制作专用的集成电路芯片了。可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。现在最新的FPGA器件,如Xilinx Virtex 系列中的部分器件,可提供八百万"系统门"(相对逻辑密度)。这些先进的器件还提供诸如内建的硬连线处理器(如IBM Power PC)、大容量存储器、时钟管理系统等特性,并支持多种最新的超快速器件至器件(device-to-device)信号技术。FPGA被应用于范围广泛的应用中,从数据处理和存储,以及到仪器仪表、电信和数字信号处理等。与此相比,CPLD提供的逻辑资源少得多,最高约1万门。但是,CPLD提供了非常好的可预测性,因此对于关键的控制应用非常理想。PLD与一般数字芯片不同的是:PLD内部的数字电路可以在出厂后才规划决定,有些类型的PLD也允许在规划决定后再次进行变更、改变,而一般数字芯片在出厂前就已经决定其内部电路,无法在出厂后再次改变,事实上一般的模拟芯片、混讯芯片也都一样,都是在出厂后就无法再对其内部电路进行调修。2.5 Quartus II概述Quartus II是Altera公司在21世纪初推出的CPLD/FPGA集成开发环境,是该公司前一代CPLD/FPGA集成开发环境MAX+PUS II的更新换代产品。Quartus II提供了一种与结构无关的设计环境,其界面使设计者能方便地进行设计输入、快速处理和器件编程。Quartus II还包含许多十分有用的参数化的模块库,它们是复杂或高级系统构建的重要组成部分。Quartus II加强了网络功能,它具有最新的Internet技术,设计人员可以直接通过Internet获得Altera的技术支持。Quartus II软件包是Altera公司专有知识产权的开发软件,适用于大规模逻辑电路设计。其界面友好,集成化程度高,易学、易用,深受业界人士好评。Quartus II软件的设计流程概括为设计输入、设计编译、设计仿真和设计下载等过程。该软件支持多种编辑输入法,包括图形编辑输入法,VHDL、Verilog、HDL和AHDL的文本编辑输入法,符号编辑输入法,以及内存编辑输入法。与MAX+PLUS II相比,Quartus II设计软件增加了网络编辑功能,提升了调试能力,解决了潜在的设计延迟,同时其直观易用的接口,深受数字系统设计者的青睐。Quartus II开发系统具有以下主要特点。1. Quartus II可以产生并识别EDIF网络表文件、VHDL网络表文件和Verilog HDL网络表文件,为第三方EDA工具提供了方便的接口。2. Quartus II支持一个工作组环境下的设计要求,包括支持基于Internet的协作设计,与Cadence、Exemplar Logic、Mentor Graphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。3. Quartus II作为一种设计环境,除支持Altera的APEX20KE、APEX20KC、APEX II、ARM-based Excalibur嵌入处理方案、Mercury、Stratix、FLEX10KE和ACEX1K外,还支持MAX3000A和MAX7000系列乘积项器件。4. Quartus II增加了一个新的快速适配器编译选项,可保留最佳性能的设置,加快了编译过程,可缩短50%的编译时间,对设计性能的影响最小。2.6 Quartus II数字系统开发流程用Quartus II软件进行数字系统开发的流程如包括以下步骤。如图2-1所示。图2-1 Quartus II设计开发流程(1)设计输入:包括原理图输入、HDL文本输入、EDIF网表输入、波形输入等几种方式。(2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。(3)仿真与定时分析:仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。仿真包括功能仿真和时序仿真。定时分析器可通过三种不同的分析模式分别对传播延时、时序逻辑性能和建立、保持时间进行分析。(4)编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。2.7 小结本章介绍了VHDL语言的特点及仿真软件工具Quartus II的简单介绍及其数字系统开发流程,VHDL语言具有众多的优点,受到业内人士尤其是通信领域的喜爱,应用广泛;Quartus II软件可理解为是MAX+PLUS II的加强版,具有更强更直观的仿真能力和效果,有兼容性强等更完善的特点,本次设计也主要使用VHDL语言进行代码编写,QuartusII软件进行模拟仿真。第3章 常用循环码简介3.1 循环码循环码是在严密的代数学理论基础上建立起来的,是线性分组码的一种。这种码的编码和解码设备都不太复杂,而且纠错的能力较强。顾名思义,循环码除具有线性码的一般性质之外,还具有循环性,即任一码组循环移位以后,仍为该码中的一个码组。在代数编码理论中,为了便于计算,经常将循环码表示成码多项式的形式,设码组为,则码多项式定义如下:在循环码除全“0”码组外,再没有连续k位均为“0”的码组,即连“0”的长度最多只有位。否则,在经过若干次循环移位后将得到一个k位信息位全为“0”,但监督位不全为“0”的一个码组。因此,必须是一个常数项不为“0”的次多项式,而且这个还是这种码中次数为的唯一一个多项式,称这唯一的次多项式为码的生成多项式。一旦确定了,则整个循环码就被确定了。由此,可以写出循环码的生成矩阵G.通常这时得到的循环码的生成矩阵不是典型矩阵,可通过线性变换转为典型矩阵,则循环码组可写成:所有的码组多项式都可被整除,而且任意一个次数不大于的多项式乘都是码多项式,该条性质用于编码,还可用于验证接收码组是否出错。由于任一循环码多项式都是的倍式,故可写成,而本身也是一个码组,即有。由于是一个次多项式,故是一个n次多项式,在模运算下,也是该编码中的一个许用码组。可以写成,又由于等式左端分子和分母都是n次多项式,故。因此,上式可化成。最后,可得到。由此说明,应该是的一个因子。3.2 R-S码R-S码以它的发现者理得(Reed)和索罗蒙(Solomon)的姓氏开头字母命名,是BCH码最重要的一种子类(q进制BCH码)。R-S码的每个码元取值于q元符号集,使用时通常选取q为2的幂次,使q元符号集的所有非零元素 是基于某个m次本原多项式扩域的元素。编码时,每m个信息比特映射为一个q进制码元,便于与具有4,8,16,32点数的PSK或QAM调制信号集相匹配。近年来采用最多的是m=8,即进制的R-S码,以便将整个8bit字节变为R-S码的一个码元。本原R-S码具有如下参数:码长,校验位n-k=2t,最小距离,生成多项式式中,的各次系数对照可知,RS码是极大最小距离码,从这种码的n、k值立即可断定其纠错能力R-S码的重量分布是已知的。在码重多项式第i次项的系数是:3.3 非本原BCH码非本原BCH码与本原BCH码的主要区别在于采用的根是否是本原元。本原多项式的根的阶,因此给定n后即可知道本原多项式的次数m,从而得到扩域;而非本原多项式的根的阶n是的因式,给定n后还需要计算m。若码长,但n是的因子;是域中的一个n阶元素但不是本原元;设是以为根的最低次多项式,则用生成的循环码称为非本原BCH码。给定码长n和纠错能力t后,二进制非本原BCH码的构造方法如下:(1) 找出满足n是的因子的最小m值。(2) 找出一个m阶本原多项式,生成二元扩域。(3) 求出的根,找出一个n阶的非本原元,。(4) 计算对应的最小多项式,并计算生成多项式。BCH码的基本特点是其生成多项式包含2t个连续幂次的根。若生成多项式含有2t个连续幂次的根,则该码的最小距离,也就是说该码纠错能力是,BCH的出现为通信系统设计者们在纠错能力、码长和码率的选择和控制上提供了很大的灵活性,一旦要求的纠错能力t给定,只要算出2t个连续幂次的根所对应的多项式作为生成多项式,就可以得到纠错能力符合要求的码。3.4 小结本章主要对循环码、R-S码、非本原BCH码做了简单介绍,同时也做了简单的分析比较,对本次设计优化方法选择起到关键作用,有关本原BCH码的介绍在下一章中有详细的内容,本原BCH码也是循环码中最具特殊性的码类之一,主要考虑本原BCH码的计算量小的特点,本次设计中应用的是本原BCH码。下面讨论的就是(15,7)本原BCH码编译码器的VHDL设计。第4章 基于BCH码设计原理4.1 编码器设计原理BCH(bose chaudhuri hocquenghem)码是循环码中的一大子类,它可以是二进制码,也可以是非二进制码。本次设计中主要讨论二进制本原BCH码。二进制本原BCH码具有下列参数,式中,和纠错能力是任意正整数。BCH码的基本特点是其生成多项式包含个连续幂次的根。若生成多项式含有个连续幂次的根,则该码的最小距离,也就是说该码纠错能力是。BCH码的出现为通信系统设计者们在纠错能力、码长和码率的选择和控制上提供了很大的灵活性,一旦要求的纠错能力t给定,只要算出个连续幂次的根所对应的多项式作为生成多项式,就可能得到纠错能力符合要求的码。已知码长n及纠错能力t,二元本原BCH码具体的设计步骤如下:1.由关系算出m,表查找m次本原多项式,用它产生一个扩域。2.以本原多项式的根为本原元,分别计算2t个连续幂次根所对应的二元域上的最小多项式。3.计算这些最小多项式的最小公倍式,得到生成多项式为。4.用关系式,导出系统码字,也可利用编出BCH码字。根据课题要求利用VHDL分别设计BCH码的编码器和译码器,代入上式,得,计算出 即(111010001),导出系统码字,将从0000000到1111111分别代入,得部份系统码字为4.2 译码器设计原理BCH码是一种循环码,因此线性分组码和循环码的译码方法对BCH码同样适用,其中伴随式译码仍是最为通用的译码方法。译码的具体步骤与循环码一样,包括:1. 由接收多项式计算出伴随式s。2. 由伴随式找出错误图样。3. 由得到发送码字的估值,完成译码。如果是非系统码,还须由计算出信息多项式。但鉴于BCH码自身的结构特点,BCH码的译码方法也具有一些特殊性。4.2.1 由接收多项式r(x)求伴随式s设BCH码的码多项式为由知,若是生成多项式的根,则必是的根,因此 (4-1)写成矩阵形式为 (4-2)设,代入式(4-2),得到 (4-3)即cA=0,将上式与相比较可以看出,式(4-3)中的矩阵A等效为校验矩阵的转置,即BCH码的校验矩阵为 (4-4)如果是的共轭元,则当且仅当时,有。也就是说,如果码字序列c和H矩阵第i行的内积为零,则c和H的第j行的内积也为零,因此可消去H的第j行。于是BCH码的校验矩阵H可以改写成为 (4-5)设接收多项式 (4-6)该接收多项式的伴随式为,将式(4-5)和式(4-6)代入s,得 (4-7)由此求出伴随式的各个分量。考虑码长n为15,纠2个错误的BCH码。令为的本原元,则该码的奇偶校验矩阵为。利用的四维向量表示法和等式,将H的每个元素都表示为它所对应的四维向量,得到该码的二进制奇偶校验矩阵如下:。接收多项式,接收多项式的伴随式,。4.2.2 由伴随式求出错误位置由于错误图样和伴随式一一对应,求出伴随式理论上就知道了错误位置。如前所述,与线性分组码中介绍的查表法译码原理一样,利用标准阵的陪集首与伴随式的关系,将其制成表格,在求得了伴随式后,通过查表就可以得到所对应的错误图样。标准阵中的陪集首通常按照错误的个数从小到大排列。对于循环码,产生1个传输错误的错误样图个数为,产生i个的个数为,等等。当码长n比较小且纠错能力t较小时,查表法简单有效。但是随着n和t的增大,查表法将变得复杂,这时可以采用通过求解错误位置多项式的方法来确定错误位置,从而避免复杂的查表过程。BCH码伴随式的各个分量可以表示为 (4-8)假设已由式(4-7)求出。设在位置上出错,即 (4-9)将(4-9)代入式(4-8),得,为方便起见,令,则上式可化简得 (4-10)式(4-10)中列出了个方程,其中是个已知数,是v个未知数,需要求解这个非线性方程,从而得到错误位置数。而实际上任何一种解方程的方法就是一种译码算法。下面用迭代算法解答(4-10)式。首先定义一个错误位置多项式,它的根是错误位置的倒数,即 (4-11)将式(4-10)的乘积展开,比较等式两边同幂次的系数,有(4-12)式4-10)给出了与的关系,式(4-11)给出了与的关系,将两者结合起来并利用式(4-10)式(4-12)可以得到与的关系(4-13)称为牛顿恒等式。如果和错误个数v已知,则利用上述v个方程组即可求出v个未知数;如果v未知,假设v=t,根据自回归建模技术,可以由伴随式构造出一个矩阵,利用前t个伴随式来得到下一个伴随式,经过数学运算,可得到有t个未知数的t个方程构成的一个线性方程组,用矩阵表示为 (4-14)该方程组有解的充要条件是系数矩阵满秩。在求得了伴随式后,利用上式即可求得。根据本此设计要求,代入数据整理得,再根据牛顿恒等公式得4.2.3 搜索法译码原理设接收多项式,判断第一位是否有错误,即确定是否对应着错误位置,这等效于检验是否是的根。若是的根,则即也就是说,在得到错误位置多项式后,为判断,译码器先计算,然后计算他们的和是否为-1。若是,则对应着错误位置,即码元出错;否则无错。类似地,为判断,译码器先计算,然后计算它们的和。若,则有错;,则无错。以此类推,逐次判断每个即得到的所有根,从而得到错误位置。这个方法将的各次方代入中计算其结果是否为-1,相当于错误位置多项式对域元素的全体搜索了一遍,因此称为搜索法,也称钱氏搜索法。搜索法避开了因式分解或其他求解高次方程方法在实现上的困难,而且每一步骤的方法都一样,特别适用于计算机编程或数字电路实现,是一种普通应用的译码方法。4.3 主模块电路设计方框图4.3.1 编码器电路此编码器电路主要利用线性反馈移位寄存器(LFSR)实现了式。如图4-1编码器电路所示。图4-1编码器电路4.3.2 综合计算电路此综合计算电路主要实现输入求出伴随多项式即在该电路的执行过程中,寄存器初试时为空。每次移位,将向量逐步移入该电路。在第一次移位之后,寄存器中含有。第二次,含有的向量表示式。第三次含有,最后一个移入电路时,寄存器中含有向量表示式。如图4-2 综合计算电路所示。图4-2 综合计算电路4.3.3 迭代译码算法电路此电路实现伯利坎普迭代算法(BMA),当错误位置多项式经过t-1次迭代后在C中得到确认。如图4-3 迭代译码算法电路所示。图4-3 迭代译码算法电路4.3.4 钱氏搜索译码电路此电路以一种简单、直接的方式实现错误位置校验过程。初始态,t个寄存器中存储着译码第二步得到的。在从缓冲区中读出之前,t个乘法器工作一次。乘法运算被执行,且被存储在寄存器中。如图4-4 钱氏搜索译码算法电路所示。图4-4 钱氏搜索译码算法电路4.3.5 差错定位电路寄存器和分别发起被和使用,如果没有错,则;如果有一个错,则;如果有两个错,则;如果,则有多于2个错误,因此错误不能纠正。如图4-5 差错定位电路所示。图4-5 差错定位电路4.3.6 译码器电路(双纠错码)此电路将实现双错误码的纠正。dsyn1,dsyn2为计算电路,dch1,dch3为钱氏搜索电路,deq为比较纠错电路,ffce为D触发器序列产生电路,dcount为n计数器模块,dbuf为缓冲器寄存器。如图4-6 双纠错电路所示。图4-6 双纠错电路4.4 小结本章主要介绍了基于BCH码的编译码原理,理论分析,数学推论,主模块电路设计样图,编码器运用反馈移