《第10章编码与译码课件》由会员分享,可在线阅读,更多相关《第10章编码与译码课件(38页珍藏版)》请在金锄头文库上搜索。
1、第第10章章 编码与译码编码与译码 10.1 伪随机序列伪随机序列 10.2 帧同步检出帧同步检出 10.3 RS码码 10.4 Viterbi译码译码 10.1 伪随机序列伪随机序列 对于数字信号传输系统,传送的数字基带信号(一般是一个数字序列)由于载有的信息,在时间上往往是不平均的(比如数字化的语音信号),对应的数字序列编码的特性不利于数字信号的传输。我们可以通过对数字基带信号预先进行“随机化”(加扰)处理,使得信号频谱在通带内平均化,改善数字信号的传输;在接收端进行解扰操作,恢复到原来的信号。 伪随机序列广泛应用于这类加扰、解扰操作中。下面以一类伪随机序列m序列为例,用DSP Build
2、er构建一个伪随机序列发生器。 10.1.1 m序列序列 m序列即最长线性反馈移位寄存器序列,是一种比较常见的伪随机序列发生器,可由线性反馈寄存器(Linear Feedback Shift Registers,LFSR)来产生。如图10-1所示。图图10-1 线性反馈移位寄存器的构成线性反馈移位寄存器的构成 图10-1中涉及的乘法和加法都是指模二运算中的乘法和加法,即逻辑与和逻辑异或。 要产生最长的线性反馈移位寄存器序列的n级移位寄存器,其特征多项式必须是n次本原多项式。 比如,可以生成m序列的5级LFSR的特征多项式为 m序列的特征多项式可表示为上式可生成的m序列的周期为 。 10.1.2
3、 m序列发生器模型序列发生器模型 以 为例,利用DSP Builder构建一个伪随机序列发生器。 图10-2显示了上式的DSP Builder模型表示。这里采用相连的延时单元组作为移位寄存器,用异或(XOR)完成模二加运算,输出为mout。图10-2 m序列发生器模型 不过图10-2所示的电路可能无法正常工作,这是由于DSP Builder默认的延时单元在开始工作时存储内容为0,而对于m序列来说,起始序列为全0,那么根据多项式,输出序列将为全0,全0序列不是正常的m序列。因此只要起始时寄存器中有一个为1,m序列就可以正常输出。为此,对图10-2的模型进行修改,修改后的模型见图10-3所示。 对
4、图10-3的模型进行仿真,可得到一个伪随机序列,如图10-4所示。图10-3 修改后的m序列发生器模型图10-4 m序列发生器的Simulink仿真结果10.2 帧同步检出帧同步检出 在数字通信系统中,同步是非常关键的。由于信号的远距离传输,不可避免地存在信号延时、干扰、非线性失真、收发两端的时钟偏差等。为保证数字传输信号的有效性,必须进行同步。 根据同步作用可以分为:载波同步、位同步、帧同步、网同步。本节以帧同步设计为例进行介绍。 在数字通信中,信号流的最小单元是码元,若干码元构成一个帧,若干个帧再构成一个复帧,。在接收端,必须分辨出每个帧的起始和接收,否则将无法正确恢复信息。这种同步被称为
5、帧同步(又称群同步)。 帧同步有很多实现方法,在此列举一种:连贯插入法。即在每一帧的开头连续插入一个特殊码组,比如巴克码。若在收端检测到该特殊码组的存在,就意味着帧开始了。 10.2.1 巴克码巴克码 巴克码是一个有限长的数字序列。一个n位巴克码序列 ,其中1in,取值为+1或者-1,其局部自相关函数满足:n,j=00,1,0jn0,jn 即当j=0时,巴克码的局部自相关函数达到峰值;j为其它值时,在附近波动,可以用作帧同步的特殊码组。符合上述自相关特性的码组是存在的,比如+1,+1,+1,-1,-1,+1,-1就是7位巴克码序列。 当j=0时, ,达到峰值; 当j=1时,R(i)=1; 当j
6、=3、5、7时,R(i)=0; 当j=2、4、6时,R(i)=-1。 10.2.2 巴克码的检出模型巴克码的检出模型 根据10.2.1小节介绍的原理,若需要在数字信号流中检出巴克码组,只要检测序列的自相关函数即可。 在Simulink环境中,建立一个DSP Builder模型,检出7位巴克码,序列为+1,+1,+1,-1,-1,+1,-1,如图10-5所示。图10-5 帧同步检出模型 由Shift Taps模块完成输入序列存储,由bxp1m、bxn1m子系统模块完成运算。7输入加法器模块完成求和运算。注意,若要求帧同步输出脉冲没有延时,不能选择参数“Pipeline(流水线)”。 由Compa
7、rator比较器模块和Constant常数模块构成判决电路,Constant模块的值设为6,即只要序列局部自相关函数输出大于6,就认为检出巴克码了。 对于输入的数字序列值是0或者1,而对于巴克码则是+1和-1。我们在这里规定输入数字信号序列中的0对应于巴克码的-1。据此可以建立两个子系统模块bxp1m和bxn1m,分别完成 、 。子系统模块图见图10-6和图10-7。图中只用了一个选择器和几个常数模块就实现了要求的 的功能。图图10-6 bxp1m子系统子系统图10-7 bxn1m子系统 在 Simulink中 仿 真 时 通 过 From Workspace1模 块 从MATLAB的工作区获
8、得输入序列:1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 1仿真结果检测到了用于帧同步的巴克码,请见图10-8。图图10-8 仿真结果仿真结果10.3 RS 码码 在实际的数字通信传输信道上,信号发生错误是不可避免的。可以采用信道编码来尽可能地降低误码率。在信道编码中除了需要传送的信息之外,还加入了一些冗余信息,以便在收端检测出错误。 对于检出错误的处理方式常用的有三种:检错重发(ARQ)、前向纠错(FEC)、混合纠错(HEC)。对于前向纠错是不需要反馈信道的,在信道编码中含有纠错信息,实时性较强。 RS编码在前向纠错中的使用比较常见。 10.3.1 RS码简介码
9、简介 RS码是Reed Solomon码的简称,是属于循环码BCH码的一种,对于突发错误,RS码具有很好的纠错能力。 一个RS码,输入信号分成比特一组,每组包括个符号,每个符号由个比特构成。 对于一个可以纠正个符号错误的RS码,其参数如表10-1所示。表10-1 RS码的参数参数名称参数值单 位码长符号信息段符号监督段符号最小码距符号符号比特 10.3.2 使用使用IP Core设计设计RS编码器编码器 对于RS码的编码器,可以用带反馈的移位寄存器来实现,不过实现起来比较复杂。Altera为RS码提供了IP CoreRS Compiler来简化RS编码/译码器的设计。RS Compiler除了
10、可在QuartusII中使用外,还可与DSP Builder配合使用(见图10-9)。图10-9 RS Compiler与DSP Builder集成 按照图10-9新建一个模型,放置一个Reed Solomon模块。 双击该模块,出现RS Compiler对话框,如图10-10所示。选择“Encode”编码器,然后点击“Next”按钮,进行RS编码器的参数设置(见图10-11)。设置完成后就可以在Simulink中,如其它DSP Builder模块一样调用RS编码器来完成更大的设计了。图10-10 选择类型为RS的编码器 图10-11 确定参数 10.3.3 使用使用IP Core设计设计RS
11、译码器译码器 RS Compiler这个核也可以设计RS译码器。同设计RS编码器时一样调用RS Compiler,选择类型为“Decoder”的译码器,见图10-12所示。 接着的参数设置与RS编码器相同,这里不再赘述。最后设计好的RS译码器见图10-13。图10-12 选择类型为Decoder译码器图10-13 RS译码器模块10.4 Viterbi 译译 码码 10.4.1 卷积码的卷积码的Viterbi译码译码 卷积码与RS码不同,卷积码编码后的个码元不但与当前段的个信息相关,而且与前面段的信息相关,即编码后相互关联的码元为个。因而,在相同码元个数下,卷积码的纠错能力更强,但译码的复杂性
12、也随之提高。 在卷积码的三种译码方式:门限译码、Viterbi译码、序列译码中,Viterbi译码的性能最好。Viterbi译码基于最大似然译码原理,而且在译码时无须反馈操作。Viterbi译码器的实现比较复杂,具体的Viterbi译码原理请参见相关书籍。 10.4.2 用用IP Core设计设计Viterbi译码器译码器 为了简化Viterbi译码器在FPGA上的实现,Altera提供了Viterbi译码器的IP CoreViterbi Compiler,可在DSP Builder上集成使用(见图10-14)。具体的Viterbi Compiler的使用方法请参考Altera的使用手册。图10-14 Viterbi译码器IP Core