实验、循环码编译码系统
一、 实验目的:
1、熟悉循环码的编译码原理;
2、掌握Quartus Ⅱ开发软件的运用,在该软件下熟练的运用多种输入方式完成各种电路设计的要求;
3、初步掌握VHDL 语言,能够运用该语言编写简单的程序,完成设计要求;
4、熟悉对PLD 的下载和仿真,学会观察测试结果的正确性;
5、学会运用各方面知识,设计并实现一个系统。
二、 实验要求:
使用Quartus Ⅱ软件,用m 序列发生器作为信号源设计循环码编译码,速率可自定,并在实验箱上调试出编码和译码波形,比较信号源和译码后的信号波形。
三、实验设备:
Quartus II 软件、Modelsim 软件、FPGA 实验箱、微机1台、示波器1台
四、实验原理:
1、 循环码的编码
循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。
若(1n a - 2n a -…… 1a 0a )为一循环码组,则(2n a - 3n a -……0a 1n a -)、(3n a - 4n a -……1n a - 2n a -)、……还是许用码组。
也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。
表1-2给出了一种(7,3)循环码的全部码字。
可以将循环码码组用代数多项是来表示,这个多项式被称为码多项式,对于表1-2中的任一码组可以表示为:
654326543210()A x a x a x a x a x a x a x a =++++++ (1-4)
表1-2一种(7,3)循环码的全部码字
在码多项式运算中采用按模运算法则。
若一任意多项式F (x )被一个n 次多项式N (x )除,得到商式Q (x )和一个次数小于n 的余式R (x ),也就是:
()()
()()()
F x R x Q x N x N x =+ (1-5) 则可以写为:F (x )≡R (x )(模N (x ))。
这时,码多项式系数仍按模2运算,即只取值0和1,假设:计算x 4+x 2+1除以x 3+1的值可得:
4223311
11
x x x x x x x ++++=+++ (1-6)
循环码的生成多项式和生成矩阵:(全0码字除外)称为生成多项式,用g (x )表示。
可以证明生成多项式g (x )具有以下特性:
(1)g (x )是一个常数项为1的r=n-k 次多项式; (2)g (x )是1n
x +的一个因式;
(3)该循环码中其它码多项式都是g (x )的倍式。
一旦生成多项式g (x )确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。
以表1-2的(7,3)循环码为例,来构造它的生成矩阵和生成多项式,这个循环码主要参数为,n =7,k =3,r =4。
从表中可以看到,其生成多项式可以用第1码字构造:
421()()1g x A x x x x ==+++ (1-7)
2643253242()()()()1x g x x x x x G x xg x x x x x g x x x x ⎡⎤⎡⎤
+++⎢⎥⎢⎥
==+++⎢⎥⎢⎥⎢⎥⎢⎥+++⎣⎦⎣⎦
(1-8)
一个较简单的系统循环码编码方法:设要产生(n ,,k )循环码,m (x )表示信息多项式,则其次数必小于k ,而()n k
x
m x -•的次数必小于n ,用()n k x m x -•除以g (x ),
可得余数r (x ),r (x )的次数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统
循环码。
下面就将以上各步处理加以解释。
(1)用n k
x
-这一运算实际上是把信息码后附加上(n-k )个“0”。
例如,信息码为110,
它相当于2
()m x x x =+。
当n-k =7-3=4时,65()n k
x
m x x x -•=+,它相当于1100000。
而希望的到得系统循环码多项式应当是()()()n k
A x x
m x r x -=•+。
(2)求r (x )。
由于循环码多项式A (x )都可以被g (x )整除,也就是:
()()()()()
()()()()()
n k n k A x x m x r x x m x r x Q x g x g x g x g x --•+•===+ (1-9) 因此,用()n k
x
m x -•除以g (x ),就得到商Q (x )和余式r (x ),即
()()
()()()
n k x m x r x Q x g x g x -•=+ (1-10)
这样就得到了r (x )。
(3)编码输出系统循环码多项式A (x )为:
()()()n k A x x m x r x -=•+ (1-11)
例如,对于(7,3)循环码,若选用4
2
()1g x x x x =+++,信息码110时,则:
6522
4242()1(1)()11
n k x m x x x x x x g x x x x x x x -•++==+++++++++ (1-12)
上式相当于:
11000000101
11110111100111
=+
这时的编码输出为:1100101。
上述三步编码过程,在硬件实现时,可以利用除法电路来实现,这里的除法电路采用一些移位寄存器和模2加法器来构成。
下面将以(7,3)循环码为例,来说明其具体实现过程。
设该(7,3)循环码的生成多项式为:4
2
()1g x x x x =+++,则构成的系统循环码编码器如图1-1所示,图中有4个移位寄存器,一个双刀双掷开关。
当信息位输入时,开关位置接“2”,输入的信息码一方面送到除法器进行运算,一方面直接输出;当信息位全部输出后,开关位置接“1”,这时输出端接到移位寄存器的输出,这时除法的余项,也就是监督位依次输出。
当信息码为110时,编码器的工作过程如表1-3:
图1-1(7,3)循环码编码器
表1-3 编码器工作过程
2、循环码译码
对于接收端译码的要求通常有两个:检错与纠错。
达到检错目的的译码十分简单,可以由式(1-11),通过判断接收到的码组多项式B(x)是否能被生成多项式g(x)整除作为依据。
当传输中未发生错误时,也就是接收的码组与发送的码组相同,即A(x)=B(x),则接收的码组B(x)必能被g(x)整除;若传输中发生了错误,则A(x)≠B(x),B(x)不能被g(x)整除。
因此,可以根据余项是否为零来判断码组中有无错码。
需要指出的是,有错码的接收码组也有可能被g(x)整除,这时的错码就不能检出了。
这种错误被称为不可检错误,不可检错误中的错码数必将超过这种编码的检错能力。
在接收端为纠错而采用的译码方法自然比检错要复杂许多,因此,对纠错码的研究大都集中在译码算法上。
我们知道,校正子与错误图样之间存在某种对应关系。
如同其它线性分组码,循环码的译码可以分三步进行:
(1)由接收到的码多项式B(x)计算校正子(伴随式)多项式S(x);
(2)由校正子S(x)确定错误图样E(x);
(3)将错误图样E(x)与B(x)相加,纠正错误。
上述第(1)步运算和检错译码类似,也就是求解B(x)整除g(x)的余式,第(3)步也很简单。
因此,纠错码译码器的复杂性主要取决于译码过程的第(2)步。
基于错误图样识别的译码器称为梅吉特译码器,它的原理图如图1-2所示。
错误图样识别器是一个具有(n-k)个输入端的逻辑电路,原则上可以采用查表的方法,根据校正子找到错误图样,利用循环码的上述特性可以简化识别电路。
梅吉特译码器特别适合于纠正2个以下的随机独立错误。
图1-2中k级缓存器用于存储系统循环码的信息码元,模2加电路用于纠正错误。
当校正子为0时,模2加来自错误图样识别电路的输入端为0,输出缓存器的内容;当校正子不为0时,模2加来自错误图样识别电路的输入端在第i位输出为1,它可以使缓存器输出取补,即纠正错误。
循环码的译码方法除了梅吉特译码以外,还有捕错译码、大数逻辑译码等方法。
捕错译码是梅吉特译码的一种变形,也可以用较简单的组合逻辑电路实现,它特别适合于纠正突发错误、单个随机错误和两个错误的码字。
大数逻辑译码也称为门限译码,这种译码方法也很简单,但它只能用于有一定结构的为数不多的大数逻辑可译码,虽然在一般情形下,大数逻辑可译码的纠错能力和编码效率比有相同参数的其它循环码(如BCH 码)稍差,但它的译码算法和硬件比较简单,因此在实际中有较广泛的应用。
图1-2 梅吉特译码器原理
五、实验内容:
1. 根据循环码编码规则和译码原理框图,在QuartusⅡ环境下设计编译码电路及其他外围电路模块。
2. 观察仿真波形图,列出5阶M序列的31位信码,参照循环码编码规则,将其进行循环编码,看是否符合编码规则。
3、对编码后的信号进行译码,最后观测信源、编码、译码后的信号,看是否正确。
4、硬件下载:在仿真波形正确后,通过QuartusⅡ软件的下载功能将电路模块下载到FPGA 实验板上,验证循环码编码和译码的正确性。
5、总结实验结果,完成实验报告。
六. 注意事项:
在电路设计中注意时钟频率。