Turbo码编解码
- 格式:doc
- 大小:137.50 KB
- 文档页数:8
实验五Turbo码编码实验指导一、实验目的1、掌握TURBO码的编解码原理。
2、掌握TURBO码的软件仿真方法。
3、掌握TURBO码的硬件仿真方法。
4、掌握TURBO码的硬件设计方法。
二、预习要求1、掌握TURBO码的编解码原理和方法。
2、熟悉matlab的应用和仿真方法。
3、熟悉Quatus的应用和FPGA的开发方法。
三、实验原理1、Turbo码编码原理Turbo码是1993年法国人Berrou提出的一种新型编码方法。
它巧妙的将卷积码和随机交织器结合在一起;同时,采用软输出迭代译码来逼近最大似然译码。
Turbo码编码原理框图如图所示:a、编码器图中编码器的结构图如图输入为10010001时,输出为11100101、寄存器为00:输入为1,反馈位为1,状态为100,输出为1;2、寄存器为10:输入为0,反馈位为1,状态为110,输出为1;3、寄存器为11:输入为0,反馈位为0,状态为011,输出为1;4、寄存器为01:输入为0,反馈位为1,状态为101,输出为0;5、寄存器为10:输入为1,反馈位为0,状态为010,输出为0;6、寄存器为01:输入为0,反馈位为1,状态为101,输出为0;7、寄存器为10:输入为0,反馈位为1,状态为110,输出为1;8、寄存器为11:输入为1,反馈位为1,状态为111,输出为0;图中,两个方框为移位寄存器,⊕为异或器。
b、交织器交织可以将长的突发错误分散到每个行码中去。
以最常用的交织器-行列交织器为例,它的交织方式是采用行顺序写入、列顺序读出的方式,而解交织列顺序写入,行顺序读出。
交织时,输入序列为:a11 a12 a13 a14a21 a22 a23 a24a31 a32 a33 a34a41 a42 a43 a44通过行列交织后变为:a11 a21 a31 a41a12 a22 a32 a42a13 a23 a33 a43a14 a24 a34 a44上述序列为四组长度为四的码组。
假设每组码的纠错能力为1位,设码组1:a11,a12 ,a13,a14在传输信道中遇到突发错误,a12,a13,a14出错。
那么,码组一将不能正确纠错。
如果输入码组在输入突发信道前先交织,则遇到相同突发错误后,a21,a31,a41出错,在数据收到并解交织后,错误分散到了各码组中(二、三、四组),因此错误可以正常识别和纠正。
因此,通过交织器将信道中产生的突发错误随机化,信道抗突发错误的能力得到了增强。
通过交织,原有的只能纠随机错误的码,可以纠正较长的突发错误或突发错误与随机错误的组合。
c、开关单元开关单元输入为两个编码器的编码输出,通过开关器件用于选择输出某一路或两路编码输出。
当码率为1/3时,将两路编码输出一起输出;当码率为1/2时,轮流输出两路编码输出。
d、复接器复接器将两路或三路信号,串接起来变为一路信号,码率为原来码率的1/2或1/3。
设:编码器输入为:a1,a2,a3……;编码器1输出为b1,b2,b3……;编码器2输出为c1, c2, c3 ……。
当码率为1/2时,开关电路的输出为:b1,c2,b3,c4……复接器的输出为:a1,b1,a2,c2,a3,b3,a4,c4……当码率为1/3时,开关电路的输出为:b1,c1,b2,c2……复接器的输出为:a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4……。
2、Turbo码的译码原理由于Turbo码是由两个或多个分量码经过不同交织后对同一信息序列进行编码,Turbo码译码算法为了更好利用译码器之间的信息,译码算法所用的应是软判决信息而不是硬判决。
一个由两个分量码构成Turbo 码的译码器是由两个与分量码对应的译码单元和交织器组成的,将一个译码单元的软输出信息作为下一个译码单元的输入;为了获得更好的译码性能,将此过程迭代数次。
这就是Turbo 码译码器的基本工作原理。
Turbo 码的译码结构如下图所示:如图所示Turbo 码译码器的接收序列为Rk =(xk ,yk ),yk 经过开关电路,分离为y1k ,y2k 分别输入解码器1和解码器2中。
为了使译码后的比特错误概率最小,根据最大概率译码准则,应该根据Rk 计算后验概率(APP )P (dk )=P (dk|xk,yk ),但是当码较长时,计算复杂度太高。
因此,在Turbo 码中,采用了一种次最优译码的规则,将y1k ,y2k 分开考虑,由两个分量码译码器分别计算后验概率),|(11ek L y d P 和),|(22e k L y d P ,然后通过两个译码器之间的多次迭代,使它们收敛于P(dk),从而达到了近Shannon 限的性能。
e L 1和e L 2为附加信息。
其中e L 1为译码器2输出,作为译码器1的先验信息;其中eL 2为译码器1输出,作为译码器2的先验信息。
四、实验中的Turbo 码编解码框图1、Turbo 编码的实现 (1)端口设置cs_ turbo :输入turbo 编码使能位,’1’电平有效; datain :输入8位编码输入位,其中低5位为编码输入位;dataout :输出16位编码输出位,其中低15位为编码输出位(高5位为系统信息,中5位为第一路编码输出,低5位为第二路编码输出),最高位补’0’。
(2)主程序process(cs_turbo,datain)variable sys2,parity2,parity1 :std_logic_vector(4 downto 0);variable i : integer range 0 to 5;variable reg1,reg2 : std_logic_vector(1 downto 0);variable m1,m2 : std_logic;variable temp1,temp2 : std_logic;variable recept1 : std_logic_vector(4 downto 0);beginif cs_turbo='1' thenfor i in 0 to 5 loopif i=5 then--Initializereg1:="00";reg2:="00";--Interleaverecept1(4):=datain(4);recept1(3):=datain(2);recept1(2):=datain(0);recept1(1):=datain(1);recept1(0):=datain(3);sys2:=recept1;--Outputdataout<='0' & datain(4 downto 0) & parity1 & parity2;else--Encode onem1:=reg1(1) xor reg1(0) xor datain(i);temp1:=m1 xor reg1(0);reg1:=m1 & reg1(1);parity1:=temp1 & parity1(4 downto 1);--Encode twom2:= reg2(1) xor reg2(0) xor sys2(i);temp2:=m2 xor reg2(0);reg2:=m2 & reg2(1);parity2:=temp2 & parity2(4 downto 1);end if; --end if i=5end loop;elsedataout<="0000000000000000";end if; --end if cs_turboend process;3、编码输出结果datain[4..0]为编码输入,dataout[14..10]为编码系统位输出,dataout[9..5]为编码器1的校验位输出,dataout[4..0]为编码器2的校验位输出。
如图所示,对应输入为10001的编码输出位为100010011101100。
4、turbo码的解码实现2、解码部分如图为Turbo码的解码框图如图所示,解码输入位为110010*********,通过多次迭代后的解码输出位为10001,其中j为迭代次数。
五、实验操作说明开关置ON表明输入0,OFF表明输入1;LED亮表明输出1,暗表明输出0。
1、编码输入:由SW101-8,SW101-7,SW101-6,SW101-5,SW101-4,SW101-3,SW101-2,SW101-1可以输入由高位到低位的8位编码输入位。
2、编码方式选择3、信道选择(选择加错位置)4、加错数目选择从SW103-6,SW103-5,SW103-4,SW103-3指示的位置开始,每帧加错的位数有SW103-2,SW103-1的状态决定。
5、编码输出设置D116,D115,D114,D113,D112,D111,D110,D109,D108,D107,D106,D105,D104,D103,D102,D101为16位编码输出位。
TP102和TP103分别可以测量编码输出的帧和对应该帧的时钟信号。
6、解码方式选择7、解码数据输出端:D208,D207,D206,D205,D204,D203,D202,D201。
错误指示灯(当判断出数据有错码时就指示):D220。
8、其他:七段码显示表明维特比译码的四路路径度量。
六、实验内容1、用matalab中的simulink对(7,5)TURBO码进行软件仿真,绘制(7,5)TURBO码的误码率图,分析它的纠错能力;2、选择一种在移动通信中应用的TURBO码,通过simulnk进行软件仿真,绘制其误码率图,分析它的纠错能力;3、在Quatus中对(7,5)TURBO码的编码程序进行仿真,分析TURBO码的编解码过程;4、在实验系统中,分别置SW102-2,SW102-1,SW102-0为”101”和SW201-3,SW201-2,SW201-1为”101”,选择TURBO码编解码方式。
置SW103-6,SW103-5,SW103-4,SW103-3,SW103-2,SW103-1为”000000”,即不加任何错。
5、由SW101-5,SW101-4,SW101-3,SW101-2,SW101-1任意输入5位数据,观察并记录D115,D114,D113,D112,D111,D110,D109,D108,D107,D106,D105,D104,D103,D102,D101对应的编码后的15位输出数据。
6、用示波器分别测量TP102和TP103,观察并编码输出的帧的帧格式。
7、观察并记录解码数据输出端D208,D207,D206,D205,D204,D203,D202,D201的解码输出状态和错误指示灯(当判断出数据有错码时就指示)D220的输出状态。