删余卷积码编码器的实现

作者&投稿:侨骂 (若有异议请与网页底部的电邮联系)
急---交织器的工作原理?~

  交织器的工作原理:
  交织器从其本质上来说就是一种实现最大限度的改变信息结构而不改变信息内容的器件。从传统上来 讲就是使信道传输过程中所突发产生集中的错误最大限度的分散化。因此,具体来讲也许数据置乱器这个称呼更加符合交织器其本质,会让人们对交织器的基本工作 机理有更多的感性认识。
  假定由一些4比特组成的消息分组,把4个相继分组中的第1个比特取出来,并让这4个第1比特组 成一个新的4比特分组,称作第一帧,4个消息分组中的比特2~4,也作同样处理。
  然后依次传送第1比特组成的帧,第2比特组成的帧,……。在传输期间,帧2丢失,如果没有交 织,那就会丢失某一整个消息分组,但采用了交织,仅每个消息分组的第2比特丢失,再利用信道编码, 全部分组中的消息仍能得以恢复,这就是交织技术的基本原理。概括地说,交织就是把码字的b个比特分散到n个帧中,以改变比特间的邻近关系,因此n值越大, 传输特性越好,但传输时延也越大,所以在实际使用中必须作折衷考虑。

Turbo 码最先是由C. Beηou等提出的。它实际上是一种并行级联卷积码(Parallel Concatenated Convolutional Codes)。Turbo 码编码器是由两个反馈的系统卷积编码器通过一个交织器并行连接而成,编码后的校验位经过删余阵,从而产生不同的码率的码字。如图所示:信息序列u={u1,u2,……,uN}经过交织器形成一个新序列u'={u1',u2',……,uN'}(长度与内容没变,但比特位经过重新排列),u 和u'分别传送到两个分量编码器(RSC1与RSC2) ,一般情况下,这两个分量编码器结构相同,生成序列X和X,为了提高码率,序列X和X需要经过删余器,采用删余(puncturing)技术从这两个校验序列中周期的删除一些校验位,形成校验序列X,X,与未编码序列X'经过复用调制后,生成了Turbo码序列X. Turbo 码的一个重要特点是它的分量码采用递归系统卷积码(RSC,Recursive Systematic Convolutional code) ,这也是它性能优越的一个重要原因。之所以选择RSC编码器作为Turbo码的子码主要有以下原因:首先,RSC码具有系统码的优点。这一特性使用户在译码时无需变换码字而直接对接收的码字进行译码,所以,递归系统卷积码(RSC)对于非系统卷积码(NSC)而言译码简单、快速。其次,从差错控制编码的相关文献中可知,非系统卷积码(NSC)的BER性能在高信噪比时比约束长度相同的非递归系统码要好,而在低信噪比时情况却正好相反。递归系统卷积码综合了NSC码和非递归系统卷积码的特性,且然它与NSC码具有相同的trellis结构和自由距离,但是在高码率(R≥2/3)的情况下,对任何信噪比,它的性能均比等效的NSC码要好。由于系统递归卷积码具有以上特点,并且能改善误码率,所以通常选择RSC码作为Turbo码的子编码器。递归系统卷积码(RSC)不同于一般的卷积码器在于其结构中不仅有向前结构,还有向后反馈结构,在下图中可以看出。RSC 编码器一般有2-5 级移位寄存器, 用生成多项式表示为:式中,1表示系统比特,gl 和g2分别表示编码器的前馈多项式和反馈多项式。用RSC码构成Turbo码的分量码的码率R为:式中:R1,R2为构成Turbo 码的分量码的码率,在经删余后,分量RSC1和RSC2的码率可以不同。Turbo 码的最大似然译码性能分析出,Turbo 码在高信噪比下的性能主要由它的自由距离所决定。因为Turbo码的自由距离主要由重量为2的输入信息序列所产生的码字间的最小距离所决定,用本原多项式作为反馈连接多项式的分量编码器所产生的码字的最小重量为最大,因此当Turbo码交织器的大小给定后,如果分量码的反馈连接多项式采用本原多项式,则Turbo码的自由距离会增加,从而Turbo码在高斯信噪比情况下的“错误平层(errorfloor)”会降低。错误平层效应指的是在中高信噪比情况下,误码曲线变平。也就是说,即使是再增大信噪比,无码率也降不下来(一般的系统,比如说是BPSK的误码曲线,误码率随着信噪比的增大是单调下降的)。 交织器是影响Turbo码性能的一个关键因素,它可以便Turbo码的距离谱细化,即码重分布更为集中。它的特性的好坏直接关系着Turbo码的性能。编码器中交织器的使用是实现Turbo码近似随机编码的关键。交织器实际上是一个一一映射函数,作用是将输入信息序列中的比特位置进行重置,以减小分量编码器输出校验序列的相关性和提高码重。通常在输入信息序列较长时可以采用近似随机的映射方式,相应的交织器称为伪随机交织器。由于在具体的通信系统中采用Turbo码时交织器必须具有固定的结构,同时是基于信息序列的,因此在一定条件下可以把Turbo码看成一类特殊的分组码来简化分析。交织是对信息序列加以重新排列的一个过程。如果定义一个集合A , A={1,2,…,N}。则交织器可以定义为一个一一对应的映射函数π(A-->A):J=π(i),(i,j属于A) 这里的i ,j 分别是未交织序列C 和交织序列C' 中的元素标号。映射函数可以表示为πN = (π⑴,π⑵,π⑶,…,π(N))。其原理如图在交织器的设计中,基本上是遵循下列原则:1)最大程度的置乱原来的数据排列顺序,避免置换前相距较近的数据在置换后仍然相距较近,特别是要避免相邻的数据在置换后仍然相邻。2) 尽量提高最小码重码字的重量和减小低码重码字的数量。3) 尽可能避免与同一信息位直接相关的两个分量编码器中的校验位均被删除;4) 对于不归零的编码器,交织器设计时要避兔出现尾效应 图案。在设计交织器时,应考虑具体应用系统的数据的大小,使交织深度在满足时延要求的前提下,与数据大小一致,或是数据帧长度的整数倍。交织器和分量码的结合可以确保Turbo码编码输出码字都具有较高的汉明重量。在Turbo编码器中交织器的作用是将信息序列中的比特顺序重置。当信息序列经过第一个分量编码器后输出的码字重量较低时,交织器可以使交织后的信息序列经过第二个分量编码器编码后以很大的概率输出较高重码字,从而提高码字的汉明重量:同时好的交织器还可以奇效地降低校验序列间的相关性。因此,交织器设计的好坏在很大程度上影响着Turbo码的性能。交织器的类型可以分为两大类,一是规则交织器,也称确定性交织器,其交织器的映射函数可以由一个确定的解析函数给出。二是随机交织器,其映射函数不能由-个确定的解析表达式给出。Turbo 码常用的交织器包括以下几种:分组交织器、随机交织器、s-随机交织器等等。 对于数字通信领域日益紧张的带宽资源,提高码率就意味着节省带宽和降低通信费用。删余(Puncturing)是目前提高Turbo码码率的主要方法。Turbo 码中,删余器通常比较简单,因为在一般的应用中,码率都是在1/2 或者1/3 ,因此即使有删余器,它一般也只是周期性的从两个分量编码器中选择校验比特输出即可。其具体做法是:从两个RSC编码生成的校验序列中周期地删除一些校验位,然后再与未编码的信息序列复用重组成最后的编码输出序列,调制后进入信道传输。若信息序列为d1 =(C11) ,长度为N ,那么两个RSC分量编码器的输出为:图3. 6 所示示为采用了删余技术的编码结构,若取RSC1输出的奇比特和RSC2的偶比特,即采用删余矩阵P= [ 10,01] , 那么编码输出长度为2N,码率提高为1/2的序列为Cp.两个分量码编码器的输出经过删余得到的序列被称为奇偶序列,是校验序列。一个好的删余算法应该符合以下几点要求:1) 不能删除信息位.删除信息位会造成较大的信息损失,从而使误码率有较大的损失;2) 删余应该在时间域上均匀进行,删余同一时刻所有的比特位会造成此时刻信息损失较大,影响误码率;3) 删余应该对于各分量码均匀进行,从而使信息的损失均匀分布在各分量码上,避免由于信息损失不均匀导致分量码译码性能下降。 典型的Turbo码编码器由两个递归系统卷积码(RSC,Recursive Systematic Convolutional codes)并行级联而成,因此Turbo码又被称为并行级联卷积码(PCC,Parallel Concatenated Convolutional codes)。Turbo码编码器的基本结构如图3-33所示。Turbo码编码器一般包括两个结构相同的递归系统卷积编码器和一个随机交织器。长度为N的信息序列u一方面直接进入第1个分量编码器RSC1,另一方面经过随机交织器处理后送入第2个分量编码器RSC2。随机交织器的处理是输入序号至输出序号的一映射,它的输出为长度相同,但比特位置经随机排列的交织序列。两个分量编码器RSC1和RSC2分别产生两个不同的校验比特序列x和x。为了提高Turbo码的码率,除可以选用高码率的分量码外,还可以采用打孔(Puncturing)技术从这两个校验序列中删除一些校验位,然后再与信息序列x复用在一起输出。例如,假定图3-33中两个分量编码器的码率均是1/2,为了得到1/2码率的Turbo码,可以采用打孔矩阵,即删去来自RSC1的校验序列x的偶数位置比特与来自RSC2的校验序列x的奇数位置比特。为了处理更加简单,在TD-LTE中采用了循环缓存速率匹配技术(CBRM,Circular Buffer Rate Matching),具体内容见3.5.2.2节相关描述。Turbo码的两个分量编码器结构为递归形式,而卷积码一般都采用非系统、非递归形式。从相关文献中可知,RSC码与非系统卷积码(NSC,Non-Systematic Convolutional codes)具有相同的Trellis结构和自由距离,但是在低码率时,NSC码的误码性能在高信噪比时比RSC码更好;而在低信噪比时情况却正好相反。另外,在高码率的情况下,对任何信噪比,RSC码的性能往往优于NSC码。因此,Turbo码编码器采用RSC码作为分量码。例如,(37,21)Turbo码的分量编码器的生成多项式包括反馈多项式g0=37和前馈多项式g1=21,如图3-34所示。Turbo码的译码复杂度一般随分量编码器的寄存器个数呈现指数级增长。例如,(37,21)Turbo码使用4个寄存器,译码复杂度一般是16的倍数。在TD-LTE系统中,Turbo的分量编码器的生成多项式为(g0=13,g1=15),使用了3个寄存器,因此译码复杂度较小。 Turbo码内置的交织器是在第2个分量编码器RSC2编码处理之前将信息序列的N个比特的位置进行随机排列,它起着关键的作用,很大程度上影响着Turbo码的性能。通过随机交织,使得编码由简单的短码得到了近似长码。当交织器充分大时,Turbo码就具有近似于随机长码的特性。在E-UTRA系统中,Turbo码的交织器采用二次置换多项式函数(QPP,Quadratic Permutation Polynomials),即 其中,x代表交织后的序号,f(x)代表交织器输入的序号,f1和f2为设计参数。这个交织器,又称QPP交织器,它的主要优点是无冲突交织处理,能够支持并行译码,提高译码速度。Turbo码译码器采用迭代译码方法,其中使用两个分量译码器,并在第一分量译码器与第二分量译码器之间传递软译码信息,如图3-35所示。无冲突交织器支持并行译码的主要原理是:在进行迭代译码时,第一分量译码器将信息序列进行分段,每个分段使用单独的一个专用的译码处理单元独立地进行译码,各分段译码过程可以并行进行,提高译码速度。但是第二分量译码器也需要采用相同的、并行的分段译码方法,这就要求第二分量译码器的每个独立专用的译码处理单元同一时刻访问不同的分段,这样才能避免信息序列分段地访问冲突,从而实现第二分量译码器的并行分段译码,提高整个迭代译码的速度。图3-36所示为无冲突交织器的示意图,4个窗口(Windows)A、B、C、D分别代表独立的分段译码,它们需要通过交织器获取各自的原始数据,此时4个窗口A、B、C、D在读取原始数据时,不会出现在同一时刻访问同一分段,不会发生资源访问冲突的问题,这样保证了4个窗口A、B、C、D可以并行地分段译码。 为了支持灵活的系统结构,同时保证鲁棒的系统性能,在TD-LTE系统中优化设计了188种QPP交织器长度,可以支持相应的188种Turbo编码块大小。这里,列举其中的3种交织器。例1:当N=40时,则f1=3,f2=10。例2:当N=1008时,则f1=55,f2=84。例3:当N=6144时,则 f1=263,f2=480。TD-LTE Turbo码的QPP交织器长度N的每个因子都可以作为分段大小和并行度,比如例3中,N=6144=8×768,对应的Turbo译码器可以使用8个并行的分段译码器,每个分段译码器的译码长度是768bit。QPP交织器除了支持并行译码,还有其他的优点,例如计算复杂度较小,实现非常简单等,因此被应用于TD-LTE系统中。 为了便于分析Turbo码的理论性能的上界(Upper Bound),一般使用误比特率(BER)来统计性能,并假设最大似然译码(ML)、BPSK调制和加性高斯白噪声信道(AWGN)。Turbo码的性能上界就可以使用联合界(Union Bound)来确定,即(3-19)其中,是首一输入序列对应的所有重量为的码字中信息位的全部重量之和。式(3-19)还可以进一步写成(3-20)其中,wd代表码字重量为d的每个码字的平均信息位重量,Nd代表码字重量为d的码字数目,即码字多样性(Multiplicity)。另外,还定义一个等效的多样性(Effective Multiplicity),即(3-21)当信噪比较高时,式(3-20)可以进一步简化,获得Turbo码的渐近性能(Asymptotic Performance),即(3-22)式(3-22)说明,Turbo码的渐近性能主要是由自由距离()决定的。为了进一步解释Turbo的性能界,以上述(37,21)Turbo码为例,交织器大小为65536,它的码率R=1/2,自由距离dfree=6,平均重量wfree=2,等效的多样性为(3-23)Turbo码的渐近性能为(3-24)图3-37给出了这个式(3-24)对应的渐近性能曲线,同时给出了(2,1,14)卷积码的渐近性能曲线作为对比。Turbo码性能界出现的平坦特征主要由较小的自由距离决定,而卷积码的性能界出现陡峭特征主要由较大的自由距离决定。Turbo码的性能优势主要出现在较低的信噪比范围,此时渐近性能曲线位置相对较低,其原因是Turbo码具有很小的等效多样性,这在很大程度上决定了Turbo码的优异性能。显然,交织器长度越大,对应的信息比特长度N越大,Turbo码的性能增益就越大。

(2,1,2)卷积码输出为3路,v0--原始信息,V1--卷积码中加法器1输出信息,V2--卷积码中加法器2输出信息,比如
流为:S=(v0(0) V1(0) v2(0),v0(1) V1(1) v2(1),v0(2) V1(2) v2(2),v0(3) V1(3) v2(3),...)
经过删余矩阵后,原始信息V0保留,v1,v2删除,P=[1 1;1 0],

处理后的流为 S=(v0(0) V1(0) v2(0),v0(1) V1(1) ,v0(2) V1(2) v2(2),v0(3) V1(3) ,...),即只删除了V2的偶数位。
matlab代码为S'=[S(1,:);S(2-3,:)*P].
PS:你这个删余矩阵好奇怪,一般P=[1 0;0 1]等等常见,各冗余流删除一个位,为了保持码率一致。


删余卷积码编码器的实现
(2,1,2)卷积码输出为3路,v0--原始信息,V1--卷积码中加法器1输出信息,V2--卷积码中加法器2输出信息,比如 流为:S=(v0(0) V1(0) v2(0),v0(1) V1(1) v2(1),v0(2) V1(2) v2(2),v0(3) V1(3) v2(3),...)经过删余矩阵后,原始信息V0保留,v1,v2删除,P=...

卷积码编码原理
在编码通信领域,卷积码编码器起着关键作用。以二进制码为例,其工作原理可以直观地通过一个简单的图示来理解。输入的信息序列u,如(u0, u1, ..., ul),可以表示为多项式形式u(x) = u0 + u1x + ... + ulxl + ...。编码器的设计利用特定的子生成多项式,如g(1,1)(x) = 1 + x + ...

卷积码(Convolutional Code)
卷积码,这个看似复杂的通信技术,其实蕴含着独特的构造与工作原理。它是由一组关键组件构成的,包括(n, k, K)的移位寄存器和模2加法器(输出发生器)。编码过程的奇妙之处在于,每个输出比特不仅受当前输入k比特影响,还与之前K-1个输入密切相关,这就赋予了卷积编码器独特的"记忆"特性。深入理解卷积...

Turbo码的编码原理
Turbo 码编码器是由两个反馈的系统卷积编码器通过一个交织器并行连接而成,编码后的校验位经过删余阵,从而产生不同的码率的码字。如图所示:信息序列u={u1,u2,……,uN}经过交织器形成一个新序列u'={u1',u2',……,uN'}(长度与内容没变,但比特位经过重新排列),u和u'分别传送到两个分量编码器(RSC1与RSC2)...

如何用网格图来描述卷积码编码器过程?
描述卷积码编码器过程的方法有很多,如矩阵法、多项式、码树和网格图等,这里我们主要介绍和卷积码编码器结构密切相关的多项式法,以及与卷积码译码密切相关的网格图法。结构图 多项式法就是由卷积码的生成多项式直接得出其编码器的结构图。如前面例子中的(2,1,2)卷积码的生成多项式矩阵为:G(D)=[...

卷积码(Convolutional Code)
卷积码,一种具有记忆特性的编码方式,由K个k级移位寄存器和n个模2加法器构成。编码过程中的n比特不仅依赖于当前输入的k比特,还受之前K-1个k位的影响。编码器的复杂特性可通过多种方式表示,包括连接图、连接矢量、多项式、冲激响应、状态图、树图和网格图等。连接矢量和多项式是描述(2,1,3)卷积...

Turbo码编码原理
Turbo码,最初由C. Beηou等人提出,是一种并行级联卷积码结构。编码过程涉及两个反馈的系统卷积编码器通过交织器连接,信息序列u={u1,u2,……,uN}经过交织形成u'={u1',u2',……,uN'},分别输入两个分量编码器RSC1和RSC2,通常这两个编码器结构相同。为了提高码率,通过删余(puncturing)技术...

通信原理板块——卷积码(原理、代数和几何表示、编码和解码)
卷积码是一种线性非分组码,适用于前向纠错。其原理在于将k比特的信息段转变成n个比特的码组,每个码组中的监督码元与当前信息段以及前面m=(N-1)个信息段有关,N称为编码约束度,nN称为编码约束长度,码组记作(n,k,N)。编码器由Nk级移存器、n个模2加法器和一个旋转开关构成,k比特信息每...

为什么说信号与系统是不可分割的整体?
割成子集,是的子集内的信号间具有更大的空间距离,用编码效率为k\/(k 1)的卷积码选择子集,用其余位选择子集中的点。在DSL数字用户环路中用16状态的4维网格编码的编码器结构如图2所示。 其中的卷积编码部分如图3所示。 图2中每两个子带抽取的位数z′=x y-1(x为第一个子带所带的位数,y为第二个子带所带...

8PSK的调制解调
7、截尾卷积译码由于截尾卷积码在进行编码前没有对编码器的移位寄存器进行复位操作,所以在接收端对其进行解码的情况下,如果不清楚其初始状态,那么就要付出额外的代价才能对其进行解码。目前主要的截尾卷积译码方法包括循环维特比译码算法(CAV)和BCJR译码算法。通常在进行截尾卷积编码时,会将一段数据序列的后m个码字初始化...

红安县19158528517: 删余卷积码编码器的实现 -
侯晓威锐: (2,1,2)卷积码输出为3路,v0--原始信息,V1--卷积码中加法器1输出信息,V2--卷积码中加法器2输出信息,比如 流为:S=(v0(0) V1(0) v2(0),v0(1) V1(1) v2(1),v0(2) V1(2) v2(2),v0(3) V1(3) v2(3),...) 经过删余矩阵后,原始信息V0保留,v1,v2删除...

红安县19158528517: 卷积码编译码器的Matlab仿真实现 -
侯晓威锐: 卷积程序我还是有的: function [f,k]=conv_m(f1,k1,f2,k2) %计算连续信号卷积积分f(t)=f1(t)*f2(t) % f: 卷积积分f(t)对应的非零样值向量 % k:f(t)的对应时间向量 % f1: f1(t)非零样值向量 % f2: f2(t)的非零样值向量 % k1: f1(t)的对应时间向量 % k2: f2(t)...

红安县19158528517: 卷积码的原理? -
侯晓威锐: 原发布者:喔喔喔喔3161卷积码编译码实现(1)在实际应用中怎样去建立网格图?(2)怎样计算最小汉明距离?(3)在找到最优路径后怎样去译出原始的信息码?内容简介卷积码简单介绍卷积码编码实现卷积码译码实现总结卷积码简单介...

红安县19158528517: 卷积码的表示方法 -
侯晓威锐: 描述卷积码编码器过程的方法有很多,如矩阵法、多项式、码树和网格图等,这里我们主要介绍和卷积码编码器结构密切相关的多项式法,以及与卷积码译码密切相关的网格图法.结构图 多项式法就是由卷积码的生成多项式直接得出其编码器的...

红安县19158528517: 基于单片机C语言的卷积码编码与维特比译码的实现谁会做啊 -
侯晓威锐: VHDL实现也可以,编码器我会做,主要是译码器的设计,采用回溯算法 通过打孔方法可以获得1/2编码速度的编码.递归系统编码器的实现比较直接,然而基于,qmVCCV,

红安县19158528517: 用c语言实现卷积码的编码译码过程?那位高手有程序源代码?? -
侯晓威锐: c语言实现(2,1,3)卷积码 http://wenku.baidu.com/view/646def1052d380eb62946d0f.html

红安县19158528517: 哪位高手知道如何实现卷积码的编码及译码软件设计 -
侯晓威锐: 卷积码是什么? 如果是一种编码方法自己慢慢写应该可以实现吧

红安县19158528517: 咬尾卷积码的原理 -
侯晓威锐: 1、咬尾卷积码的原理是尾卷积码保证格形起始和终止于某个相同的状态.它具有不要求传输任何额外比特的优点.Viterbi译码器受格形状态概率和分支度量的约束.传输的数据通常由一串0比特结尾,以强制编码器回到0状态,这样泽码器能从已...

红安县19158528517: fpga中卷积编码1/2码率是什么意思 -
侯晓威锐: 过程:(1)对输入的数据进行e68a84e79fa5e9819331333363366162卷积编码,编码速率为1/2,即每输入1个比特编码输出2个比特.(2)将每次编码输出的2个比特量化为相应的数值,通过每一组数值计算出该组4个状态(s0,s1,s2,s3)的分支...

红安县19158528517: 什么是卷积编码 -
侯晓威锐: 参考资料:http://hi.baidu.com/wuruide/blog/item/33d28bbf1b34940818d81f26.html在一个二进制分组码(n,k)当中,包含k个信息位,码组长度为n,每个码组的(n-k)个校验位仅与本码组的k个信息位有关,而与其它码组无关.为了达到一定...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网