收藏 分享(赏)

基于BCH码的快闪存储器控制器设计BCH.doc

上传人:HR专家 文档编号:11542115 上传时间:2020-06-19 格式:DOC 页数:56 大小:1.12MB
下载 相关 举报
基于BCH码的快闪存储器控制器设计BCH.doc_第1页
第1页 / 共56页
基于BCH码的快闪存储器控制器设计BCH.doc_第2页
第2页 / 共56页
基于BCH码的快闪存储器控制器设计BCH.doc_第3页
第3页 / 共56页
基于BCH码的快闪存储器控制器设计BCH.doc_第4页
第4页 / 共56页
基于BCH码的快闪存储器控制器设计BCH.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、毕 业 论 文(设 计)论文(设计)题目: 快闪存储器控制器设计姓 名 学 号 学 院 专 业 年 级 指导老师 2012年 5 月 4 日目录目录1摘要3Abstract4第1章 引言51.1 快闪存储器简介51.2 闪存中的纠错码(ECC)技术51.3 论文的研究内容与组织结构6第2章 ECC整体设计82.1 ECC简介82.2 功能要求82.3 本章总结10第3章 BCH码113.1 伽罗华域113.2 BCH码的编码133.3 BCH码的解码163.3.1 伴随式的求解方法163.3.2 错误位置多项式的高速求解法183.3.3 全并行钱氏搜索机203.4 本章总结21第4章 BCH编

2、解码器的设计234.1 BCH编码器234.2 BCH解码器254.2.1 伴随式计算模块264.2.2 错误位置多项式计算模块284.2.3 钱氏搜索机314.3 ECC模块的验证324.4 本章总结33第5章 总结35谢辞36参考文献37附录A 英文翻译原文39附录 B 译文48摘要论文对于 flash存储器控制器的设计,主要是针对于其中的错误检查与纠错(ECC)模块.ECC模块是存储器控制器的核心模块,主要对输入和输出数据进行编解码并纠正其中的错误。本论文中的ECC模块主要采用了BCH(15,7,2)码。对于编码采用了线性反馈电路移位寄存器的方法,对于解码采用了三个模块:伴随式计算模块、

3、错误位置多项式模块和钱氏搜索机。BCH码以其较强的纠错能力和构造方便的优点,在无线寻呼和无线数据通信中被广泛应用。利用单片机用软件的方法实现BCH(15,7,2)码的ECC模块很多资料都已经介绍。但由于采用单片机以软件的方法实现,其译码器具有速度慢、系统稳定性差等缺点,本论文介绍了采用FPGA设计的采用BCH(15,7,2)码的ECC模块。先对ECC模块进行VHDL代码的编写,然后利用ALTERA的QUARTUS II集成开发环境进行了综合、仿真。采用硬件的方法实现的ECC模块具有速度快、性能稳定以及易于大规模集成等优点。关键词:快闪存储器控制器;ECC模块;BCH码;FPGA;Abstrac

4、tThis thesis mainly introduced the module of the error correction code(ECC), which is the most important module in the flash controller. The module of ECC can accomplish the event that encode the data-in and decode the data-out and correct the error data. The module of ECC use the BCH(15,7,2) code i

5、n this thesis. For the encode, the module of linear feedback shift register can make it work. For the decode, it has three modules: finding polynomials, finding the coefficient of the error locator polynomial and chien. Because of its strong ability of correcting errors and convenient construction ,

6、the BCH code is widely used in the radio paging and Wireless data communication. Much material has introduced the way of accomplishing the BCH(15,7,2) code using the MCU in the software. Because the way of accomplishing the code of BCH(15,7,2) using the MCU in the software is very slow and the stabi

7、lity of the system is bad ,this thesis introduced the BCH(15,7,2) code in the module of ECC designed by FPGA. Firstly, we write the code of VHDL of the module of the ECC, then we will accomplish the synthesis and verification and so on. The advantage of using hardware to accomplish the module of ECC

8、 is the fast speed and good stability and easy large-scale integration and so on.Keywords: flash controller ; ECC ; BCH code ; FPGA第1章 引言1.1 快闪存储器简介在当今数字技术飞速发展的时代,flash因其非易失性和可擦除性,以及具有更小的体积、更快的写入和擦除速度、更多的可擦除次数以及更低廉的每比特价格等特点得到了迅速发展,在数码相机、手机、移动存储卡、掌上电脑和MP3播放器等设备中得到广泛的使用。随着flash单片存储容量的不断提升和当前flash擦写速度的

9、不断提高,数据存储与读取的可靠性变得越来越低,迫切需要一种实时、高速的技术对flash中存储和读取的数据进行纠错以保证数据的可靠性。在flash的差错类型设计中错误是以位的形式分散在整个数据块中的,所以具有可控、随机错误纠错能力的BCH码适用于flash的纠错。目前大部分flash的PER为,为使PER低于这个行业安全标准,需要的纠错能力为15 bit左右。因此必须提高编码译码器的纠错能力。1.2 闪存中的纠错码(ECC)技术ECC校验是一种内存纠错技术,它是现在比较先进的内存错误检查和更正手段。ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查

10、和纠正”。ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更加趋于安全稳定。在ECC技术出现以前,内存中应用最多的是奇偶校验(Parity)。但Parity有个缺点,当内存查到某个数据有错误时,并不一定能确定在哪一个位,也就不一定能修正错误,所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并能纠正部分简单的错误。Parity内存是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检验

11、,当数据位为32位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就显得力不从心了,因此出现了一种新的错误检查与纠正(ECC)技术,这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。总之,在内存中ECC能

12、够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力。 1.3 论文的研究内容与组织结构随着快闪存储器工艺技术的不断进步,快闪存储器单元的可靠性严重下降,因此通过设计方法提高系统的可靠性变得愈加严重。纠错码作为一种能够有效提高系统可靠性的技术,虽然广发应用于通信系统中,但快闪存储器在数据存储过程中产生错误的机制与通信系统在数据传输过程中产生错误的机制并不同,因而两者的错误率特点有着明显的差别。随着快闪存储器的不断使用,错误比特率呈现出单调递增的趋势。快闪存储器中的纠错系统必须采用硬件实现。快闪存储器的随机访问时间短,对解码器的解码延迟,数据吞吐量

13、等指标有着非常苛刻的要求,ECC有更强的纠错性能和动态可调节的能力。论文的后续章节就应用于快闪存储器控制器中的ECC模块进行了深入的分析和研究。采用了BCH(15,7,2)码,可对7位的信息码纠正2比特的错误,生成15位的码字。第1章是引言。第2章主要介绍整个ECC模块的顶层原理图设计,介绍顶层模块的组成以及各个底层模块在顶层模块中的位置和作用。第3章主要介绍ECC模块中BCH编解码器的原理和相应的运算。第4章主要介绍ECC模块中BCH编解码器的电路结构设计,对于编码器采用了线性反馈移位寄存器的方法,避免了复杂的除法运算。对于解码器采用了三级流水线的方法,先对解码器的三个模块:伴随式计算模块、

14、错误位置多项式计算模块和钱氏搜索机进行设计,再将三个模块与编码器进行连接,并进行了仿真验证。其中,伴随式计算模块采用了线性反馈移位寄存器的方法;错误位置多项式计算模块采用了基于PETERSON矩阵的直接求解法,整个电路有AND和XOR逻辑实现,设计简单,速度高;钱氏搜索机采用了全并行的方法,由XOR树实现,提高了速度。第5章为本论文的总结。 第2章 ECC整体设计2.1 ECC简介 ECC第一次提出是在1948年Claude Shannon的论文“A Mathematical Theory of Communication ” 中,经过几十年的发展,ECC技术目前已广发应用于通信系统、无线应用

15、、光盘存储等领域。ECC技术的原理是:向原始的信息数据中添加冗余位,进行编码;对接收到的信息,利用冗余位能够找出接收信息中的错误位置,并进行纠正,从而恢复原始的存储数据,这个过程也称为解码。纠错码通常分为两大类:线性码和卷积码。线性码的特点是进行数据处理的单位是码字(codeword),码字是具有固定长度的信息块。一个n位线性码的码字是由原始的k位信息加上相应的冗余位组成,如图2.1所示。另外,对于线性码,码字中每位信息受到的噪声相互独立,因此码字中的错误具有随机性的特点。相反,卷积码是将信息数据看成连续的比特流,因而卷积进行数据处理的单位是比特。在存储系统中,存储器以码字为单位进行数据的写入

16、和读取操作的,因而采用线性码实现存储系统的纠错。本论文所关注的是线性码在快闪存储器控制器中的应用。本论文所采用的BCH码就是线性码的一种。 图2.1 ECC码字的组成2.2 功能要求应用于快闪存储器中的ECC模块主要由编码器和解码器两部分组成。本论文中的ECC技术采用了BCH(15,7,2)码。BCH(15,7,2)码实现对7位的信息码字进行2位的纠错,生成8位的校验码。将7位的数据写入到闪存时,首先编码器产生相应的冗余位,形成一个15位的码字。读取时,解码器搜索码字中的错误,并在其纠错能力范围内纠正相应的错误,从而恢复正确的数据信息,输出7位的信息码。论文中的ECC整体设计如图2.2所示。图

17、2.2 快闪存储器控制器的ECC系统编码器主要对输入信息进行编码,对输入的7比特信息位按照BCH码的标准增加8比特的校验位组成一个15比特的码字,含有2比特的纠错能力。编码器采用线性反馈移位寄存器的方法实现,实现数据的串行输入和串行输出。对数据进行编码之后,当输出数据时,需要先进行解码和纠错。BCH解码器能够实现解码和纠错的功能。本论文中的BCH解码器包括三个模块:伴随式计算模块,错误位置多项式系数计算模块和钱氏搜索机模块。伴随式模块的作用是通过接收码字和校验矩阵来计算伴随式S,伴随式也是采用线性反馈移位寄存器的方法实现,实现对数据的串行输入和串行输出。由于错误位置多项式系数采用的是并行输入,

18、而它的输入是伴随式模块的输出,所以在伴随式模块和错误位置多项式模块之间加了一个串并转换电路。实现了端口的匹配。错误位置多项式系数采用了直接求解法,整个电路有AND和XOR逻辑组成,编码简单,易于实现。错误位置多项式系数模块的输入是伴随式模块的输出经串并转换电路后的输出,使用的是并行输入和并行输出。解码部分的最后一个模块式钱氏搜索机。本论文采用了全并行的方法实现钱氏搜索。钱氏搜索机的作用是寻找错误位置多项式的根,便于确定错误的位置并纠正码字中的错误。钱氏搜索模块是由XOR逻辑实现的。2.3 本章总结本章介绍了快闪存储器控制器的ECC模块的顶层电路设计。介绍了ECC的组成和ECC的各模块的功能和在

19、ECC中的位置。介绍了各个模块的实现方法和中间转换电路。第3章 BCH码二进制BCH码是建立在伽罗华域(Galois field, GF)的基础上的,本章将详细阐述BCH码编解码的原理。3.1 伽罗华域闪存中存储的数据信息均为二进制数,因而应用在闪存中的BCH码为二进制BCH码。二进制BCH码建立在伽罗华域(GF)的基础上。伽罗华域是有限域,因Evariste Galois 首先发明而得名,其数学理论广泛的应用在纠错码系统、密码系统中。下面首先介绍伽罗华域的相关理论。伽罗华域是有限域,其数学理论属于群论范畴。伽罗华域有以下性质:(1) 伽罗华域具有有限性。伽罗华域中有有限个元素。(2) 伽罗华

20、域具有封闭性。伽罗华域定义了“加”和“乘”两种操作。将域中任意两个元素进行相加或相乘的结果仍然是这个域中的元素,其中,域中有一个零元素“0”,对域中的任意元素,有;域中有一个单位元素 “1”,对域中任意元素,有。(3) 伽罗华域具有可逆性。对于域中的任意元素,存在可逆的逆加元素,使得;存在可逆的逆乘元素,使得。(4) 伽罗华域满足结合律,交换律和分配律。结合律:;交换律: ;分配律:;闪存中存储的数据为二进制数,因此应用于闪存中的纠错码技术均基于阶伽罗华域,其中为伽罗华域的度(degree),这时伽罗华域可以表示为。是的扩域,是最简单的有限域,只有两个元素,其上的加法和乘法就是布尔加法和布尔乘

21、法。即 表3.1 中的加法和乘法运算 + 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1共有个元素。中存在一个称为本原域元素的,使得构成伽罗华域中的全部个非零个元素。其中 定义3.1:对于,如果满足,则称为伽罗华域的本原元。定义3.2:表示一组多项式的集合,其中多项式的系数为中的元素。结果多项式除了常数和本身外,不能再被其他多项式除尽,则称多项式为不可约多项式。定义3.3: 对于最高次幂为的不可约多项式,若是的因子,并且的最小值为,则称为上的本原多项式。定义3.4:中任一元素的最小多项式定义为以该元素为根的具有最小阶数的多项式。的本原多项式是本原域元素的最小多项式。通过上述的定

22、义可以看出,为的根,即。令 ,由于上的减法操作等同于加法操作,可以得到:,该式表明,对于伽罗华域中的任何一个元素(),可以转换为一个最高次幂不超过的多项式。因此伽罗华域中的元素可以有三种表示形式:指数形式,多项式形式,以及由多项式各项系数组成的二进制矢量表达式。作为例子,表3.2中给出上一些元素的三种表达方式。对于,本原多项式为。 表3.2 上元素不同的表达方式指数形式二进制形式多项式形式00000000000000010000000000001010000000000000000000000011101100000000011011000000000110110000003.2 BCH码的编

23、码BCH码是循环码的一个重要子类,它具有纠多个错误的能力,BCH码有严密的代数理论,是目前研究的最透彻的一类码。BCH 码是1959 年由Hocquenghem、1960 年由Bose和Chandhari 分别独立提出的。BCH码是纠正多个随机错误的循环码,可以用生成多项式的根来描述。 给定任一有限域及其扩域, 其中是素数或素数的幂, 为某一正整数。 若码元取自上的一循环码,它的生成多项式的根集合中含有以下个连续根:1、 时, 则由生成的循环码称为进制BCH码。 设和分别是()元素的最小多项式和级, 则BCH码的生成多项式和码长分别是: (3.1) (3.2) 其中为的最小多项式,LCM表示最

24、小公倍数 (least common multiple)。 如果生成多项式的根中,有一个中的本原域元素, 则, 称这种码长的BCH码为本原BCH码;否则,称为非本原BCH码。 中元素的级一定是的因子,所以非本原BCH码的码长也一定是的因子。二进制BCH码是建立在域上的,加法可以用异或表示,除法可以用移位表示。BCH(n,k, t)码的定义如下:码字长度: 数据的长度: 校验信息的长度: 纠错能力: 所有小于或等于位错误的情况。有些情况下实际应用中的信息数据长度并不恰好等于BCH(n, k,t)码定义中的信息数据长度。例如,在快闪存储器中通常信息个数为而根据上述BCH码的定义所计算出的,在这种情

25、况下,可以使用缩短的BCH码。所谓缩短的BCH码,是指在BCH(n, k, t)码的码字中使最高位的个信息位均置为0,这样传输时就可以不用送它们,只要传递后面的位码字即可,这样构成了一个(,)的码,称为BCH的缩短码。需要指出的是BCH缩短码有着与BCH码同样的纠错能力,均为,即BCH(n-p, k-p, t)。此外,BCH码属于循环码。循环码是线性码的一个重要子类,顾名思义,循环码的码字具有循环的特性。其循环特性使它的编码算法变得比较简单,编码电路也易于实现。对于二进制BCH码,和的最小多项式相同,所以式(3.1)可以写成如式(3.3)的形式: (3.3)由于最小多项式的最高次幂为,所以生成

26、多项式的最高次幂为.同时BCH码为循环码,因此对于任何BCH码的码字,都是的倍式,即。假设BCH的信息数据为,其对应的多项式为;相应的生成多项式为:;码字为,则码字多项式可以表示为 (3.4) 式中。显然的最高次幂小于,通过移项上式可以变为:。其实就是BCH码中的冗余位多项式。另外,在伽罗华域中,减法操作等同于加法操作,将等式两边同除以,可以得到计算的表达式: (3.5) 所以BCH(15,7,2)码的编码的产生步骤为:(1) 将信息多项式预乘;(2) 将除以,得余式,此余式就是编码需要得到的校验位多项式;(3) 得到循环码的码字多项式为的形式。由上述BCH(15,7,2)码编码的产生过程可以

27、看出:构造一个BCH(15,7,2)码的关键是要找出该码的生成多项式。当码长及纠错能力给定后可以用MATLAB求出生成多项式。下面是求解生成多项式的MATLAB代码: Gen_gf=bchgenpoly(15,7).3.3 BCH码的解码3.3.1 伴随式的求解方法如前所述,BCH码的生成多项式是个最小多项式的乘积,因而含有个连续幂次的根:。而BCH码的码字又是生成多项式的倍式,因此码字也是这些连续幂次的根,即: for (3.6)写成矩阵的形式为: (3.7) 其中H定义为BCH码的检验矩阵,为码字矢量。设接收到的码字多项式为:,则BCH码伴随式S的定义如下: (3.8)如果个伴随式均为零,

28、则说明接收到的码字没有错误,反之,则说明接收到的码字中有错误。此外,伴随式S还可以通过另外一种方法获得:先用对应的最小多项式除接收到的码字多项式: for (3.9)再根据最小多项式的定义,可以得到,将上式移项带入后得: for (3.10)可以看出,对于伴随式的每一个分量,式(3.8)和(3.10)的表达式一致,因此两种方法均可以用来计算伴随式。另外,对于式(3.9)求解伴随式的运算与BCH编码的表达式(3.5) 有着相似的数学表达式,都需要多项式的除法运算。因此硬件实现也有着相似的电路结构,在电路中均采用线性反馈移位寄存器结构实现。本论文中求解BCH(15,7,2)码的伴随式,采用的是式(

29、3.9),即通过线性反馈移位寄存器的方法来求得伴随式S。但是硬件实现与式(3.5)不同。BCH编码是先将输入量乘以因子进行除法取余操作,而伴随式的产生是直接将接收量进行除法取余操作。这在电路实现上反映出的差别是前者电路的输入端与最高位的寄存器进行相加后形成反馈信号,并连接到最低位的寄存器上,而后者电路的输入端则是与最低位的寄存器相加后形成反馈信号。最终寄存器中的内容就是伴随式的值。由于BCH码是二进制BCH码,因而偶数项的伴随式等于前项伴随式的平方,即。所以可以减少计算量和复杂度。上述BCH(15,7,2)是建立在伽罗华域上的,最小多项式可以用 MATLAB生成,其中产生最小多项式的代码为:m

30、=4,t=2;x=gf(2,m);for i=1:2 :(2*t-1)minpol_gf=minpol(xi);end;得到,。3.3.2 错误位置多项式的高速求解法BCH解码中的错误位置多项式为: (3.11)错误位置多项式的个根就是码字中错误位置的倒数。错误位置多项式的系数与伴随式分量之间的关系有下列牛顿恒等式给出: (3.12) 该步的任务就是通过上述牛顿恒等式,计算出的各项系数。1960年Peterson首次提出了通过矩阵运算求解多项式系数的方法,然而由于需要计算矩阵的逆运算,实现较为复杂。1966年Berlekamp提出了采用迭代运算求解多项式系数的方法,1969年Massey将此算

31、法进行了简化,使其实现比较简单,成为了著名的B-M(Berlekamp-Massey)算法。该算法的核心思想是:先给出最低次多项式,让其系数满足第一个牛顿恒等式;在检验是否满足第二个牛顿恒等式,若不满足,则向中添加一个修正项构成,以满足第二个牛顿恒等式;反之则使,迭代过程一直进行下去,直到得到为止。B-M算法中需要求逆运算,而求逆运算的硬件实现较为复杂,为了便于硬件实现,后来者对Berlekamp迭代算法进行了相应的改进,并提出了免求逆的运算,目前较为广泛的是RiBM(Reformulated Inversionless B-M)算法,RiBM算法具有硬件实现时单元结构有很好的规则性的优点。

32、本论文中的BCH(15,7,2)码的错误位置多项式的表达式,如下: (3.13) 通常求解错误位置多项式的系数的方法是采用RiBM算法。RiBM算法的核心思想是将本次时钟周期计算出的值与上一个时钟周期的值进行比较,根据比较的结果决定下一个时钟周期表达式系数的值,这样经过2t个时钟周期的迭代,最后计算出关键方程系数的值。显然,这种RiBM算法,不适于闪存高速解码的要求,因此,我们提出了一种直接求解法来计算错误位置多项式的系数。直接求解法的数学理论源于Peterson矩阵。Peterson矩阵是Peterson于1960年提出的矩阵求解错误位置多项式系数的方法,Peterson矩阵的表达式为式(3

33、.14),可以看出,求解需要用到矩阵的逆运算,并且随着纠错位数t的增加,矩阵运算复杂度急剧增加,因此实际应用中的BCH码译码时没有采用Peterson矩阵的方法。 (3.14)然而,对于t=2的BCH(15,7,2)码,Peterson矩阵的变量很少,因此一个可行的方法是根据矩阵方程直接求解出系数、的值。采用这种直接求解法时,求解出的关键系数和的表达式为 (3.15) 因此,错误位置多项式的表达式为 (3.16) 可见,通过采用直接求解法,避免了传统RiBM算法的迭代过程,然而上述表达式中仍然存在着伽罗华域的除法运算,除法运算的硬件复杂度高、延迟大。为了进一步减少解码的延迟,需要通过正确的且适

34、当的变换消除伽罗华域的除法运算。 有文献证明,对于任意的BCH码,如果码字中存在错误,则有,因此可以将上述等式的两边同时乘以系数,从而消除了伽罗华域的除法运算,生成的新表达式为 : (3.17) BCH解码的最后一步钱氏搜索是在伽罗华域中寻找错误位置多项式的根,也就是满足的。显然,当, 同样也有,因此错误位置多项式经过消除除法的变换后与变换前有着相同的根,也就是仍搜索到相同的错误位置,从而保证了消除除法变换的正确性。在伽罗华域上,每个伴随式矢量都可以表示成相对应的多项式的形式: 根据伽罗华域的封闭性,可以求出系数,如下: (3.18) (3.19) (3.20) 可以看出,上述的系数计算表达式

35、中只包含了模2的加法运算和模2的乘法运算,而模2的加法运算和乘法运算可以分别用XOR逻辑和AND逻辑实现。因此,对于应用于t=2的BCH(15,7,2)码,采用直接求解法计算错误位置多项式的系数时,消除了传统RiBM算法的迭代运算及伽罗华域复杂的除法运算,使最终可以用组合逻辑电路中的XOR和AND逻辑就能够实现多项式系数的求解,最终实现了高速的系数求解。3.3.3 全并行钱氏搜索机BCH解码的最后一步就是寻找错误位置。错误位置多项式的根就是错误位置的倒数。然而,工程上实现的求解伽罗华域的多项式的根非常困难。1964年华裔科学家钱闻天了易于工程实现的求解根的方法。其思想是将求解错误位置多项式的根

36、转化为检验错误位置多项式的根。将伽罗华域的元素()依次带入到错误位置多项式中,如果该元素是的根,即存在,那么就可以找到码字中的一个错误,错误位置为,这种方法称为钱氏搜索(Chien search),已成为BCH解码过程中寻找错误位置多项式的最常用的方法。钱氏搜索机的运行过程如下:对接收到的码字多项式,先检验第一位比特是不是有错误,也就是检查是否为的根,即 如果,则比特为错误的比特,否则该比特正确。由于钱氏搜索的方法是从第一位比特开始检测,一直遍历到整个码字空间,因此具有逐位译出,先译先出的特点。这一特点也使得BCH译码的过程可以采用三级流水线的方法实现,从而显著的提高了译码器的吞吐率,通过钱氏

37、搜索机寻找出码字中的所有错误用矢量表示,将与接收到的矢量相加,便完成了BCH的译码。下面针对于BCH(15,7,2)码,对钱氏搜索机做一介绍。对于BCH(15,7,2)码,计算出错误位置多项式的系数之后,就进入钱氏搜索。钱氏搜索通过在伽罗华域中搜寻多项式的根来确定错误位置,表达式如下: for (3.21)假设通过搜索发现,那么就是错误的位置。3.4 本章总结本章首先介绍了伽罗华域的基本概念和相应的理论,接着介绍了BCH码编码的原理和编码的实现步骤。对于BCH码解码,采用了三级流水线的形式,所以分别介绍了伴随式计算的原理和方法、错误位置多项式的高速求解的方法和并行钱氏搜索机的方法。第4章 BC

38、H编解码器的设计本章将阐述BCH码编码器的设计,采用了线性反馈移位寄存器(linear feedback shift register)的电路结构来实现串行BCH(15,7,2)码编码器的设计。论文中ECC模块的BCH(15,7,2)码解码器的设计采用了三级流水线的方法,解码分三个模块:伴随式模块、错误位置多项式模块、钱氏搜索模块。论文先对各个模块进行设计和VHDL代码的编写,仿真通过后,将解码器与编码器连接起来,实现总的功能。利用这种方法实现编解码,运算程序大为简化,具有解码速度快,硬件实现复杂度低等特点。4.1 BCH编码器BCH码的编码可以用硬件实现也可以用软件实现,硬件实现法速度快,适

39、用于实时处理,但是需要反复实验,制作周期长;用软件实现,可以利用计算机模拟,节省时间,提高效率,但是运行速度慢,需要寻找最佳算法进行最优化。BCH码是线性循环码的一种,其编码方式和一般的循环码编码方式相同,容易实现的方式是将信息码多项式升次幂后除以生成多项式,然后将所得余式置于升幂后的信息多项式之后,即采用式(3.5)的方法进行编码。 将生成多项式和信息码字带入式(3.5), 就可构造BCH(15,7,2)循环码的编码方式。求解需要伽罗华域的除法运算,除法电路通常是使用线性反馈移位寄存器来实现的。BCH(15,7,2)循环码编码器的电路结构如图4.1所示。 图4.1 BCH(15,7,2)码的

40、编码器的电路结构图图中代表模2的相加,可以用异或门实现。第一步:当rst=1时,信息数据移入线路中,同时送出。信息从线路的前段移入等价于用乘信息多项式。当k位信息数据全部移入线路,在寄存器中的个数据就够成了余项,所以它们就是校验码。第二步:移出校验码,并把它们送出。这个校验码与k个信息一起构成一个完整的数据码字。 BCH(15,7,2)码编码器电路模块包括输入数据data_in,输出数据data_out,控制信号rst,时钟信号clk和除法电路五部分组成。当rst=1时,实现对数据的编码,rst=0时实现复位。BCH(15,7,2)的电路框图如图4.2所示。 图4.2 BCH(15,7,2)码

41、的编码器的电路框图电路的工作方式如下:先使得控制信号rst=1,反馈回路开始工作,每个时钟周期串行输入1位的信息data_in,这样经过8个时钟周期,各寄存器的值就是BCH码字的冗余位,此时改变控制信号,令rst=0,再经过n-k个时钟周期就可以输出冗余位,这样就生成BCH(15,7,2)码的一个长度为15的码字。对于BCH(15,7,2)码,输入0011001,经过编码后输出001100111110110,利用ALTERA的QUARTUSII软件对BCH(15,7,2)码编码器的进行时序仿真,结果如图4.3所示。 图4.3 BCH(15,7,2)码编码器的时序仿真结果 对于BCH(15,7,

42、2)码,输入信息位0011000,经过编码后输出001100000100111,利用ALTERA的QUARTUSII软件对BCH(15,7,2)码编码器的时序进行仿真,结果如图4.4所示: 图4.4 BCH(15,7,2)码编码器的时序仿真结果以上仿真结果看出,第2到8个时钟周期输出的是信息码,第9到16个时钟输出的校验码,实现了串行输入和串行输出。4.2 BCH解码器论文采用了三级流水线的方法进行BCH(15,7,2)码的解码码,解码分三个模块:伴随式模块、错误位置多项式模块、钱氏搜索模块。4.2.1 伴随式计算模块根据上一章的介绍,伴随式的求解方法有两种。一种是基于矩阵的运算,一种是除法运

43、算。除法运算可以采用线性反馈移位寄存器的方法来实现,简单,复杂度低。所以本论文的伴随式的求解是用线性反馈移位寄存器实现的。DDDDd_inrst 根据式(3.9),采用线性反馈移位寄存器的方法来构建BCH(15,7,2)码伴随式产生器,电路结构图如图4.5所示。a. 伴随式S1产生器的电路结构图DDDDd_inrstb. 伴随式S3产生器的电路结构图图4.5 伴随式产生器的电路结构图开始时4级移位寄存器中的寄存数据全部清零;接着输入接收的码字,同时输出,经过16个周期后,寄存器内的数据就是错误位置多项式;最后通过移位,再经过4个周期,伴随式的值被移出。伴随式产生器模块包括输入数据data_in,实际上是编码器的输出,时钟信号clk, 控制信号rst, 输出数据data_out和除法电路五部分,当rst=0时实现复位,当rst=1时,由输入15位信息,求出伴随式S,模块结构如图4.6。 图4.6 伴随式S1产生器的电路模块图 图4.7 伴随式S3产生器的电路模块图电路的工作方式如下:先使得控制信号rst=

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

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报