CN111130572A - Turbo码快速实现方法 - Google Patents
Turbo码快速实现方法 Download PDFInfo
- Publication number
- CN111130572A CN111130572A CN202010010775.2A CN202010010775A CN111130572A CN 111130572 A CN111130572 A CN 111130572A CN 202010010775 A CN202010010775 A CN 202010010775A CN 111130572 A CN111130572 A CN 111130572A
- Authority
- CN
- China
- Prior art keywords
- sequence
- interleaving
- data
- component
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000004080 punching Methods 0.000 claims abstract description 14
- 239000011159 matrix material Substances 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 230000000295 complement effect Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 230000009897 systematic effect Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000007476 Maximum Likelihood Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005562 fading Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
- H03M13/296—Particular turbo code structure
- H03M13/2972—Serial concatenation using convolutional component codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2732—Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2739—Permutation polynomial interleaver, e.g. quadratic permutation polynomial [QPP] interleaver and quadratic congruence interleaver
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2771—Internal interleaver for turbo codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
- H03M13/2975—Judging correct decoding, e.g. iteration stopping criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0002—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
Abstract
本发明公开的一种Turbo编码快速实现方法,旨在提供一种硬件实现简单,实用性强,运算量低的Turbo编码实现方法,本发明通过下述技术方案实现:数据交织时,待编码的二进制序列输入信息数据写入伪双口RAM,根据存储于ROM表中的交织关系读出数据完成交织;待编码的码字序列输入数据信息分为两路,一路输入信息X1输入分量编码器1,得到输出序列O1,另一路输入信息通过交织器交织,对得到的信息序列X2输入分量编码器2进行编码,输出序列O2;将两个分量编码器的输出序列O1、O2送入打孔器进行码率调整,打孔器根据所需的码率进行打孔编码,并与原始信息序列输出OO进行复用,产生码字输出。本发明可以兼容不同交织关系。
Description
技术领域
本发明属于通信领域,更进一步涉及信道编码技术,可用于下一代宽带无线通信系统Turbo码译码器,尤其是基于FPGA的Turbo码快速实现信道编码的方法。
背景技术
信道编码是通信系统的一个重要组成部分,是提高通信系统可靠性的重要手段,其性能的好坏直接影响到通信的质量。由于Turbo码很好地应用了香农信道编码定理中的随机性编译码条件,从而获得几乎接近香农理论极限的译码性能,香农用信道编码定理说明了逼近信道容量好码的存在性,但并没有给出构造“好码”的实用方法。实际中,当要求通信的差错概率很低时,将迫使通信系统采用码长很长的编码,从而使得译码算法复杂化,以至于难以实现。经过大量的研究,1993年ICC国际会议上,C.Berrou,A.Glavieux和P.Thitimajshiwa提出了一种称之为TurboCode的编、译码方案。该方案将卷积编码和随机交织器巧妙地结合在一起,实现了随机编码的思想,并且采用了软输出迭代译码来逼近最大似然译码。但反馈结构的TurboCode译码器,由于交织环节的存在必然引起时延,使得不可能有真正意义上的反馈,而是流水线式的迭代结构。也正是这种流水线结构,使得译码器可由若干完全相同的软输入软输出的基本单元构成。Turbo码以其优异的纠错性能被广泛应用于宽带无线通信领域。Turbo码由于性能接近Shannon理论限,在低信噪比的应用环境下比其它编码好。因而移动通信系统多种方案中,通常考虑将Turbo码作为无线信道的编码标准之一。Turbo码不仅在低信噪比的高噪声环境下性能优越,而且具有很强的抗衰落和抗干扰能力。3GPPLTE及Wimax等无线标准组织纷纷将其作为其信道编码方式。同时,卫星移动通信系统由于其受移动性及环境影响,更需要Turbo码这类纠错性能强大的信道编码来进行保障。由于Turbo编码采用级联的结构,其将短码变为长码,从而扩展了其应用范围。
Turbo码是级联码的一种,全称并行级联卷积码(ParallelConcatenatedConvolutionalCode,PCCC),是两个独立递归系统卷积码的并行级联。由于交织器的存在,Turbo编码中加入了近似随机的编码,使得其得到了非常接近香农限的性能。Turbo编码的基本原理是通过交织器把两个分量编码器进行并行级联,两个分量编码器分别输出相应的校验位比特;而译码时,译码器在两个分量译码器之间进行迭代译码,分量译码器之间传递去掉正反馈的外信息,这样整个译码过程类似涡轮(Turbo)工作。因此,这个编码方法又被形象地称为Turbo码。不过Turbo码的固有缺点---有较大的延时,在很大程度上限制了它的更广泛应用。Turbo编码的计算量大,要得到高码率,往往需要很大的交织器,这就增加了译码的复杂性,而较短的交织器不可能达到高码率,因此往往要根据实际需要来确定码率和计算复杂性之间的平衡来设计相应的Turbo码。在对编码无延时要求或编码延时在总延时中可忽略的系统中,Turbo码的作用就很明显了,如数据通信和卫星通信等。另外,在常见的带干扰环境下,只要接收机能够检测到哪些频点受干扰,对信号进行删除纠错译码,则能得到其它码难以达到的性能。
Turbo码采用交织器将信息序列与交织之后的序列分别经过卷积分量编码器得到并行级联卷积码,然后采用软信息反复迭代译。Turbo码译码算法主要有:逐序列译码的软输出的维特比译码算法(SOVA)和逐比特译码的最大后验概率译码算法MAP算法。由于其相对于香农容量,在Eb/N0小于1dB时,便可得到可接受的译码性能,得到了广泛应用。虽然MAP算法被认为是最佳的译码算法,但MAP算法存在一个固有的缺点,就是需要来平衡硬件消耗、译码时延与性能损失,且其算法复杂度太高。尽管业界对Turbo码的理论研究已经相对比较成熟,但其硬件实现相对比较困难,现有方法均存在吞吐率低,硬件资源消耗大等缺陷,不利于Turbo码在实际中的应用推广。Turbo码中交织器的存在使得其具有良好的纠错抗突发错误能力,但其对硬件实现带来不小的困难,若直接对输入数据进行交织,则实现难度较大,占用资源较多。
一种典型的Turbo码编码器是由2个相同的系统递归卷积码(RSC)编码器和交织器等构成。分量编码器又称为成员码,是非循环非系统卷积码编码器。当码率R大于2/3时,在任何信噪比情况下,由于系统递归卷积编码器RSC的自由距离都比非系统卷加码NSC(NonsystematicConvolutional)大,BER比其小,显出更好的性能,因而Turbo码中采用了RSC分量编码器。但是,循环编码后输出码字的重量增加了。RSC分量编码器只输出编码的校验序列,通过打孔,码率调整,与输入信息序列一起输出得到Turbo码编码输出序列。例如,对于生成矩阵为g=[g1,g2]的(2,1,2)卷积码,编码后,如果不进行任何操作,则会得到码率为1/3的编码输出序列;而如果进行了增信删余操作,则会得到码率为1/2的编码序列。
对于卷积码而言,要使其编码网格终止比较简单,仅仅通过在输入信息序列后加入m(编码约束长度个0即可。但是对于系统递归卷积码编码器,由于有反馈的存在,分量编码器的状态很难确定,添0的策略不能达到网格终止的目的。另一方面,由于交织器的存在,分量编码器1回到全0状态时,分量编码器2却不一定回到全0状态。为使分量编码器初始状态置于全零状态,需在信息序列之后增加m比特尾信息(未必全是零),而要使两个分量编码器同步置零,也可以在不进行交织的两路加上延时。
除了分量编码器,交织器是实现Turbo编码时必不可少的器件,它对Turbo编译码器的整体性能有着重要影响。因此,Turbo码中交织器的设计非常重要。交织是排序的一种,即按照某种排序规则,将原序列的元素进行重新排列,得到一个元素不变,但元素顺序不同的新序列。交织的目的是尽可能使新序列中元素的位置顺序与原序列中的不同。对于Turbo码而言,交织器的作用是:一、可以产生长码。二、使两个RSC分量编码器的输入不相关,编码过程趋于独立。交织使编码产生随机度,使码随机化、均匀化,起着对码重量整形的作用,直接影响Turbo码的距离谱和性能。Turbo码中常用的交织器有分组交织器与随机交织器两大类。随机交织指交织格式是随机分配的,是理论上性能最好的交织方式,但是由于要将整个交织信息位置信息传送给译码器,降低了编码效率。
既然交织器对Turbo编码有着重要影响,那么如何设计好的交织器也是一个非常重要的问题。Berrou等人指出,一个良好交织器所应该具备特性和准则主要有以下两点:
1)交织长度要合理;增加交织长度能够让输入编码比特的相关范围更大,从而进一步提升Turbo码的性能。
2)为了使编码随机化,交织器应当最大限度的改变原有比特的顺序。
交织器的存在使得Turbo码将信道传输过程中产生的突发差错转化为随机差错,在很大程度上提高了码的性能,但同时也带来了一定的编、译码延时。随着交织长度的不断增大,Turbo码的性能也就越来越接近理论极限,但是由此引发的译码延时也将随之不断变大,增加了译码实现的复杂度。因此在实际使用时,交织器的设计要在性能和译码复杂度之间进行权衡。
本质上来讲,信道编码是通过舍弃一部分信道容量来实现纠错能力的提升。舍弃部分信道容量主要表现为在分量编码器的输出中加入了部分与输入比特相关的校验比特,因此码率和误比特率是一对无法调和的冲突。删余作为提高码率的一种主要方法,本质上是按照某种规律固定地删除分量编码器输出信息中的部分比特,删除比特的多少最终决定Turbo码的码率。为了便于接收端能够更准确的译码,删余器需要准确地指出被删除校验比特的位置,一般情况下采用删余矩阵来表示。为了能够提高编码速率,两个分量编码器的校验比特序列经删余和复用后输出,信息比特序列一般不进行删余处理。在无线移动通信系统对时延要求较高。如果先设计一个低码率码,在传输时删去的某些校验比特(即删余)而让它成为一个高码率码,通过这种途径可以避免高码率卷积码译码运算时所固有的计算复杂度。删余处理可以形容成是从分量编码器输出中周期地删除被选择的比特,这样,就产生了一个周期性时变的网格码。通过删除所有的的奇比特和偶比特,整个分量编码器的码率变为R=1/2。由于Turbo码自身的迭代译码是一种并行级联循环系统卷积码,编译码原理使其在VLSI实现中要求大量的硬件资源,因由两个循环系统卷积码编码器(RSC)通过一个交织此必须考虑硬件消耗与译码性能的折衷。
发明内容
本发明的目的是针对Turbo编码硬件实现比较难的问题,提供一种结构简单,便于扩展,硬件实现简单,实用性较强,运算量低,基于FPGA的Turbo编码快速实现方法,本发明的上述目的可以通过以下技术方案实现。一种Turbo编码快速实现方法,具有如下技术特征:基于现场可编程门阵列FPGA,利用MATLAB算法数学工具软件,生成第二路编码所用的交织关系,用于时序控制和两路编码数据对齐的延迟器、分量编码器,特定码率Turbo码编码输出的打孔器,用于寄存器清零的输入先入先出队列FIFO,用于时序控制及输出数据调整的输出FIFO,并串转换器,以及交织器和用于交织路分量编码器编码的交织ROM表;交织时,将待编码的二进制序列x顺序写入一个伪双口RAM;而读的地址由交织器对应的交织ROM表提供;根据交织ROM表提供的地址一次读出RAM中的信息即完成交织,得到交织序列X2;待编码的二进制序列x的码字序列输入数据信息分为两路,一路信息经过延迟器,得到信息X1输入分量编码器1,输出序列O1,另一路输入信息通过交织器,交织之后的信息序列X2输入分量编码器2进行编码,得到输出序列O2;两个分量编码器编码后,将输出序列O1、O2送入打孔器进行码率调整,根据所需的码率进行打孔编码,通过打孔器打孔复接成需要的码序列,并和原始信息序列输出OO进行复用,产生最终的码字输出,实现不同码率的Turbo码编码。
本发明相比于现有技术具有如下有益效果。
结构简单,便于扩展。本发明基于FPGA,利用MATLAB算法数学工具软件,在FPGA上对Turbo码进行编码,生成用于时序控制和两路编码数据对齐的延迟器、分量编码器,得到特定码率Turbo码编码输出的打孔器,结构简单,可以兼容不同交织关系,便于扩展,可扩展性良好,硬件实现简单。
实用性强。本发明利用现场可编程门阵列(FPGA)器件非常适合进行乘法和累加(MAC)等重复性的工作,实现Turbo码解码器高速数字信号处理任务,采用MATLAB生成交织之后的序列交织关系,在FPGA实现交织算法时,将交织关系存储于交织ROM表,方便调用。在数据交织时,数据通过一个伪双口RAM,顺序写入,而读出时则根据ROM表输出的数据读出。因为ROM表中的数据其实是原始信息下标的交织序列,对应RAM的读出地址。不同的交织关系,只需替换对应的ROM表即可。交织器仅完成对信息序列的交织,对信息序列后面的补充数据不做交织。所以ROM表中的前面K个数据是交织数据,而后面m个数据并没有交织。这样做,每一帧编码完之后,两个分量编码器的状态都归零,可以将两个分量编码器同时归于特定状态,性能更好,实用性较强。
运算量低。本发明针对Turbo码译码实现中硬件消耗、时延和纠错性能之间的矛盾,在FPGA上对Turbo码编码器的设计关键在于RSC编码模块的设计、交织模块的设计、打孔模块的设计,以及由MATLAB生成、存储在ROM中的交织矩阵表。打孔时,可根据所要求的码率按照尽量均匀的方式打孔,即删除的校验比特在整个校验序列中最好均匀分布。输入数据首先经延迟模块延迟后送入分量编码器1进行编码;其次,输入数据经过交织器得到交织之后的数据后送入分量编码器2编码;最后,两个编码器的输出送入打孔器,根据所需的码率进行打孔编码,通过打孔器打孔复接成需要的码序列。在编码时,对Turbo码硬件实现中的若干关键问题进行了优化,可以根据不同的码率输出需要的数据,实现不同码率的Turbo码编码,大大降低算法复杂度,减少运算量。
本发明可以适应任何码率及码长的Turbo编码。
附图说明
图1是本发明快速实现Turbo码编码的示意图。
图2是本发明Turbo码对应的分量编码器结构示意图。
图3是本发明Turbo码编码流程图。
图4是本发明RSC编码流程图。
具体实施方式
参阅图1。根据本发明,基于FPGA,利用MATLAB算法数学工具软件,生成第二路编码所用的交织关系,用于时序控制和两路编码数据对齐的延迟器、分量编码器,特定码率Turbo码编码输出的打孔器,用于寄存器清零的输入FIFO,用于时序控制及输出数据调整的输出FIFO,并串转换器,以及交织器和用于交织路分量编码器编码的ROM表。交织时,将待编码的二进制序列x顺序写入一个伪双口RAM;而读的地址由交织器对应的ROM表提供。根据交织ROM表提供的地址一次读出RAM中的信息即完成交织,得到交织序列X2。待编码的二进制序列x的码字序列输入数据信息分为两路,一路信息经过延迟器,得到信息X1输入分量编码器1,输出序列O1,另一路输入信息通过交织器,交织之后的信息序列X2输入分量编码器2进行编码,得到输出序列O2;两个分量编码器编码后,将输出序列O1、O2送入打孔器进行码率调整,之后和原始信息序列输出OO进行复用,产生最终的码字输出。
首先将帧长为486比特的输入信息块暂存于信息缓冲区,然后分量编码器1得输入为顺序输入的信息块,分量编码器2的输入为顺序输入信息块经过交织之后的数据。
在FPGA实现交织算法时,将交织关系存储于交织ROM表,方便调用。在数据交织时,Turbo待编码数据通过伪双口RAM顺序写入,读出时则根据交织ROM表输出的数据读出。交织ROM表中的数据是原始信息下标的交织序列,交织ROM表中的前面K个数据是交织数据,后面m个数据没有交织,对应交织RAM的读出地址,不同的交织关系,替换对应的交织ROM表。交织器完成对信息序列的交织,对信息序列后面的补充数据不做交织,每一帧编码完之后,两个分量编码器的状态都归零,将两个分量编码器同时归于特定状态。交织时,首先,将两个分量编码器的所有寄存器初始化为0,运行486+4比特为一个周期,产生一个长为980的码块。每个编码周期的前486个比特,与分量编码器相关的输入开关在低位时,接收输入数据,而最后四比特,开关切换到高位,从分量编码器的移位寄存器中接收反馈信号,该反馈信号和最左边的加法器反馈抵消,从而对寄存器进行清零操作。寄存器清零期间,两个分量编码器仍将继续输出非零编码序列。
假设分量编码器1的输出序列O1=[O1,1 O1,2 O1,3 … O1,490],分量编码器2的输出序列O2=[O2,1 O2,2 O2,3 … O2,490],之后打孔器结合信息序列打孔复用后得到整体输出980个比特的码字。
本发明采用的Turbo码和LTE标准的类似,具有两个分量编码器以及一个交织器,同时打孔器的存在使得Turbo码的码率能够进行调整。
如图1所示,典型的Turbo码编码器由2个相同的RSC分量编码器和一个交织器构成。编码时,假设原始输入信息X,经过延迟器输出X1,送入分量编码器1进行编码,输出序列O1;原始信息X经过交织器进行交织操作得到交织后的序列X2,将X2送入分量编码器2进行编码,得到输出序列O2。由于分量编码器1和分量编码器2使用了相同的编码器,所以在FPGA实现时只需要例化两次即可。分量编码器1和分量编码器2的输出送入打孔处理模块生成特定码率的Turbo码,打孔之后的数据和原始信息序列复用生成最后的码字。
参阅图2。Turbo码的分量编码器是其非常重要的一环,其设计的好坏直接决定了Turbo码的纠错性能。在可选的实施例中,采用了最常见的LTE标准分量编码器设计Turbo码RSC分量编码器的结构,可以采用分量编码器具有记忆深度为4,对应16种状态的四个寄存器及后向连接多项式和前向连接矢量共同实现分量编码器,其对应的多项式生成矩阵为:
其中,D表示延迟。由于伪随机交织器可以获得更好的编码性能,本实施例采用伪随机交织器,具体而言,采用二次置换多项式交织器。
假设Turbo码的分量编码器的输入信息块X的长度为k,对输入信息下标进行排序为1,2,3,…,k,则本实施例的交织算法如下:
n=(s-1)mod 2,
q=t mod 4+1,
c=(pqj+21n)mod k2,
参阅图3。在实现Turbo编码时,首先在输入数据的信息比特末尾补4个1得到新的信息序列,使得每一帧编码完毕后分量编码器移位寄存器的状态均归零,然后对该信息序列分别进行编码,两个分量编码器同时进行编码,分量编码器2的输入数据先通过一个伪双口RAM,根据交织ROM提供的交织关系进行交织,交织的输出会有一定的延迟,为对齐两个分量编码器的输入数据,在利用分量编码器1进行编码之前,将输入信息先送入一个延迟模块进行数据延迟,对齐数据,数据对齐之后,两个分量编码器同时进行编码,分量编码器1通过右侧编码路径,使用递归卷积码进行编码,分量编码器2通过左侧编码路径,使用递归卷积码进行编码;两路编码输出数据同时送入打孔器进行打孔。为了得到不同码率的Turbo码和连续的比特输出,打孔器每次输出多个比特,将打孔之后的数据通过输出FIFO隔断使能信号,控制编码器的时序,经后面的串转换器串并转换,将使能不连续的并行数据转化为使能连续的串行数据输出。
参阅图4。给出了分量编码器的实现RSC编码的细节。分量编码器的编码是以bit为单位的,每一次输入一比特,按不同的码率输出多个比特。两个分量编码器编码从第i=1个比特开始,输入1比特信息之后,首先计算反馈多项式的反馈量Fd,Fd=lfsr(3)xorlfsr(4),其中“xor”表示异或。采用四阶编码线性反馈移位寄存器lfsr(4)、lfsr(3)、lfsr(2)、lfsr(1)对应四个延迟单元,计算线性反馈移位寄存器本次计算的反馈量ad=Fdxorlfsr(4),得到反馈量Fd为lfsr(4)与lfsr(3)的异或结果,接着计算线性反馈移位寄存器的更新量ad=Fdxordin和两个分量编码器的串行数据输出值Dout,得到Dout1=din,Dout2=adxorlfsr(1)xorlfsr(3)xorlfsr(4),其中,din表示输入信息比特,Dout2是寄存器更新值ad与lfsr(4)、lfsr(3)、lfsr(1)异或的结果。得到输出之后,更新线性反馈移位寄存器lfsr,利用线性反馈移位寄存器lfsr更新值ad替换线性反馈移位寄存器lfsr(1)的值,线性反馈移位寄存器lfsr中的原1,2,3个位置的值左移,则线性反馈移位寄存器lfsr(4to3)=lfsr(3to1),lfsr(1)=ad。此时,分量编码器完成了输入1比特的信息的编码,继续下一比特的编码,i=i+1。考虑到对移位寄存器的清零,此时需要对输入数据的数量进行判断,判断是否i<Len+1,是则还未到对寄存器清零时,输入下一个比特继续上边的编码过程,否则,首先计算反馈量Fd=lfsr(4)xorlfsr(3),其次计算线性反馈移寄存器更新值ad=0;之后计算两个分量编码器的输出值Dout1=fd和Dout2=adxorlfsr(1)xorlfsr(3)xorlfsr(4),然后更新线性反馈移位寄存器lfsr:i=i+1,由新线性反馈移位寄存器更新值ad替换lfsr(1)的值,原1,2,3位置的值左移,lfsr(4to3)=lfsr(3to1),lfsr(1)=ad。此时ad的值永远为零,即ad=0。之后对输入信息数量进行判断,如果i<Len+4,则继续下一个比特的编码,如果不然,则说明已经完成当前所有比特信息的编码,并且分量编码器状态已经清零,编码结束,直到下一帧数据到来再继续以上编码。
以上所述为本发明较佳实施例,应该注意的是上述实施例对本发明进行说明,然而本发明并不局限于此,并且本领域技术人员在脱离所附权利要求的范围情况下可设计出替换实施例。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (10)
1.一种Turbo编码快速实现方法,具有如下技术特征:基于现场可编程门阵列FPGA,利用MATLAB算法数学工具软件,生成第二路编码所用的交织关系,用于时序控制和两路编码数据对齐的延迟器、分量编码器,特定码率Turbo码编码输出的打孔器,用于寄存器清零的输入先入先出队列FIFO,用于时序控制及输出数据调整的输出FIFO,并串转换器,以及交织器和用于交织路分量编码器编码的交织ROM表;交织时,将待编码的二进制序列x顺序写入一个伪双口RAM;而读的地址由交织器对应的交织ROM表提供;根据交织ROM表提供的地址一次读出RAM中的信息即完成交织,得到交织序列X2;待编码的二进制序列x的码字序列输入数据信息分为两路,一路信息经过延迟器,得到信息X1输入分量编码器1,输出序列O1,另一路输入信息通过交织器,交织之后的信息序列X2输入分量编码器2进行编码,得到输出序列O2;两个分量编码器编码后,将输出序列O1、O2送入打孔器进行码率调整,根据所需的码率进行打孔编码,通过打孔器打孔复接成需要的码序列,并和原始信息序列输出OO进行复用,产生最终的码字输出,实现不同码率的Turbo码编码。
2.如权利要求1所述的Turbo编码快速实现方法,其特征在于:在FPGA实现交织算法时,将交织关系存储于交织ROM表;在数据交织时,Turbo待编码数据通过伪双口RAM顺序写入,读出时则根据交织ROM表输出的数据读出。
3.如权利要求1所述的Turbo编码快速实现方法,其特征在于:交织ROM表中的数据是原始信息下标的交织序列,交织ROM表中的前面K个数据是交织数据,后面m个数据没有交织,对应交织RAM的读出地址,不同的交织关系,替换对应的交织ROM表;交织器完成对信息序列的交织,对信息序列后面的补充数据不做交织,每一帧编码完之后,两个分量编码器的状态都归零,将两个分量编码器同时归于特定状态。
4.如权利要求1所述的Turbo编码快速实现方法,其特征在于:交织时,首先,将两个分量编码器的所有寄存器初始化为0,运行486+4比特为一个周期,产生一个长为980的码块。
5.如权利要求5所述的Turbo编码快速实现方法,其特征在于:每个编码周期的前486个比特,与分量编码器相关的输入开关在低位时,接收输入数据,而最后四比特,开关切换到高位,从分量编码器的移位寄存器中接收反馈信号,该反馈信号和最左边的加法器反馈抵消,对寄存器进行清零操作;寄存器清零期间,两个分量编码器仍将继续输出非零编码序列。
6.如权利要求1所述的Turbo编码快速实现方法,其特征在于:分量编码器1的输出序列O1=[O1,1 O1,2 O1,3 … O1,490],分量编码器2的输出序列O2=[O2,1 O2,2 O2,3 … O2,490],之后打孔器结合信息序列打孔复用后得到整体输出980个比特的码字。
7.如权利要求1所述的Turbo编码快速实现方法,其特征在于:Turbo码编码器由2个相同的RSC分量编码器和一个交织器构成;编码时原始输入信息X,经过延迟器输出X1,送入分量编码器1进行编码,输出序列O1;原始信息X经过交织器进行交织操作得到交织后的序列X2,将X2送入分量编码器2进行编码,得到输出序列O2;分量编码器1和分量编码器2的输出送入打孔处器生成特定码率的Turbo码,打孔之后的数据和原始信息序列复用生成最后的码字。
9.如权利要求1所述的Turbo编码快速实现方法,其特征在于:在实现Turbo编码时,首先在输入数据的信息比特末尾补4个1得到新的信息序列,使得每一帧编码完毕后分量编码器移位寄存器的状态均归零,然后对该信息序列分别进行编码,两个分量编码器同时进行编码,分量编码器2的输入数据先通过一个伪双口RAM,根据交织ROM提供的交织关系进行交织,并且利用分量编码器1进行编码之前,将输入信息先送入一个延迟模块进行数据延迟,对齐数据,数据对齐之后,两个分量编码器同时进行编码,分量编码器1通过右侧编码路径,使用递归卷积码进行编码,分量编码器2通过左侧编码路径,使用递归卷积码进行编码;两路编码输出数据同时送入打孔器进行打孔,打孔器每次输出多个比特,将打孔之后的数据通过输出FIFO隔断使能信号,控制编码器的时序,经后面的串转换器串并转换,将使能不连续的并行数据转化为使能连续的串行数据输出。
10.如权利要求1所述的Turbo编码快速实现方法,其特征在于:分量编码器以bit为单位编码,每一次输入一比特,按不同的码率输出多个比特,两个分量编码器编码从第i=1个比特开始,输入1比特信息之后,首先计算反馈多项式的反馈量Fd,Fd=lfsr(3)xorlfsr(4),其中“xor”表示异或,并且采用四阶编码线性反馈移位寄存器lfsr(4)、lfsr(3)、lfsr(2)、lfsr(1)对应四个延迟单元,计算线性反馈移位寄存器本次计算的反馈量ad=Fd xorlfsr(4),得到反馈量Fd为lfsr(4)与lfsr(3)的异或结果,接着计算线性反馈移位寄存器的更新量ad=Fdxordin和两个分量编码器的串行数据输出值Dout,得到Dout1=输入信息比特din,寄存器更新值ad与lfsr(4)、lfsr(3)、lfsr(1)异或的结果Dout2=adxorlfsr(1)xorlfsr(3)xorlfsr(4),得到输出之后,更新线性反馈移位寄存器lfsr,利用线性反馈移位寄存器lfsr更新值ad替换线性反馈移位寄存器lfsr(1)的值,线性反馈移位寄存器lfsr中的原1,2,3个位置的值左移,则线性反馈移位寄存器lfsr(4to3)=lfsr(3to1),lfsr(1)=ad,此时,分量编码器完成了输入1比特的信息的编码,继续下一比特的编码,i=i+1;然后对移位寄存器的清零,并对输入数据的数量进行判断,判断是否i<Len+1,是则还未到对寄存器清零时,输入下一个比特继续上边的编码过程,否则,首先计算反馈量Fd=lfsr(4)xorlfsr(3),其次计算线性反馈移寄存器更新值ad=0;之后计算两个分量编码器的输出值Dout1=fd和Dout2=adxorlfsr(1)xorlfsr(3)xorlfsr(4),然后更新线性反馈移位寄存器lfsr:i=i+1,由新线性反馈移位寄存器更新值ad替换lfsr(1)的值,原1,2,3位置的值左移,lfsr(4to3)=lfsr(3to1),lfsr(1)=ad,如果i<Len+4,则继续下一个比特的编码,完成当前所有比特信息的编码,编码器状态清零,编码结束,直到下一帧数据到来再继续以上编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010010775.2A CN111130572B (zh) | 2020-01-06 | 2020-01-06 | Turbo码快速实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010010775.2A CN111130572B (zh) | 2020-01-06 | 2020-01-06 | Turbo码快速实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111130572A true CN111130572A (zh) | 2020-05-08 |
CN111130572B CN111130572B (zh) | 2024-04-23 |
Family
ID=70486926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010010775.2A Active CN111130572B (zh) | 2020-01-06 | 2020-01-06 | Turbo码快速实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111130572B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113258940A (zh) * | 2021-06-15 | 2021-08-13 | 成都星联芯通科技有限公司 | turbo译码方法、装置、译码设备及存储介质 |
CN114553371A (zh) * | 2022-01-19 | 2022-05-27 | 北京理工大学 | 柔性低码率编译码系统、编译码方法、设备及介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990013245A (ko) * | 1997-07-30 | 1999-02-25 | 윤종용 | 적응형 채널 부호화 방법 및 장치 |
CN101060339A (zh) * | 2006-04-20 | 2007-10-24 | 北京信威通信技术股份有限公司 | 一种在SCDMA系统中实现Turbo编译码方案的装置和方法 |
CN101083512A (zh) * | 2006-06-02 | 2007-12-05 | 中兴通讯股份有限公司 | 一种双二进制咬尾Turbo码编码方法和装置 |
CN101674094A (zh) * | 2009-10-16 | 2010-03-17 | 中山大学 | 一种Turbo码信道自适应实现方法 |
CN101753154A (zh) * | 2008-12-10 | 2010-06-23 | 大唐移动通信设备有限公司 | 一种Turbo码编码器、译码器及编码、译码方法 |
CN101777925A (zh) * | 2009-01-09 | 2010-07-14 | 大唐移动通信设备有限公司 | 一种数据处理装置及其方法 |
CN101867451A (zh) * | 2010-06-02 | 2010-10-20 | 北京邮电大学 | 具有高速并行编译码结构的多用户网络编码通信的方法 |
US20100287453A1 (en) * | 2009-02-02 | 2010-11-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Encoding and decoding methods for expurgated convolutional codes and convolutional turbo codes |
CN102111163A (zh) * | 2009-12-25 | 2011-06-29 | 中兴通讯股份有限公司 | Turbo编码器及编码方法 |
CN107196666A (zh) * | 2017-04-12 | 2017-09-22 | 西安电子科技大学 | 一种通用Turbo编译码器快速验证方法 |
CN110474649A (zh) * | 2019-04-01 | 2019-11-19 | 西安电子科技大学 | 基于FPGA的宽带电力线载波通信Turbo编码方法 |
-
2020
- 2020-01-06 CN CN202010010775.2A patent/CN111130572B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990013245A (ko) * | 1997-07-30 | 1999-02-25 | 윤종용 | 적응형 채널 부호화 방법 및 장치 |
CN101060339A (zh) * | 2006-04-20 | 2007-10-24 | 北京信威通信技术股份有限公司 | 一种在SCDMA系统中实现Turbo编译码方案的装置和方法 |
CN101083512A (zh) * | 2006-06-02 | 2007-12-05 | 中兴通讯股份有限公司 | 一种双二进制咬尾Turbo码编码方法和装置 |
CN101753154A (zh) * | 2008-12-10 | 2010-06-23 | 大唐移动通信设备有限公司 | 一种Turbo码编码器、译码器及编码、译码方法 |
CN101777925A (zh) * | 2009-01-09 | 2010-07-14 | 大唐移动通信设备有限公司 | 一种数据处理装置及其方法 |
US20100287453A1 (en) * | 2009-02-02 | 2010-11-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Encoding and decoding methods for expurgated convolutional codes and convolutional turbo codes |
CN101674094A (zh) * | 2009-10-16 | 2010-03-17 | 中山大学 | 一种Turbo码信道自适应实现方法 |
CN102111163A (zh) * | 2009-12-25 | 2011-06-29 | 中兴通讯股份有限公司 | Turbo编码器及编码方法 |
CN101867451A (zh) * | 2010-06-02 | 2010-10-20 | 北京邮电大学 | 具有高速并行编译码结构的多用户网络编码通信的方法 |
CN107196666A (zh) * | 2017-04-12 | 2017-09-22 | 西安电子科技大学 | 一种通用Turbo编译码器快速验证方法 |
CN110474649A (zh) * | 2019-04-01 | 2019-11-19 | 西安电子科技大学 | 基于FPGA的宽带电力线载波通信Turbo编码方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113258940A (zh) * | 2021-06-15 | 2021-08-13 | 成都星联芯通科技有限公司 | turbo译码方法、装置、译码设备及存储介质 |
CN113258940B (zh) * | 2021-06-15 | 2021-10-08 | 成都星联芯通科技有限公司 | turbo译码方法、装置、译码设备及存储介质 |
CN114553371A (zh) * | 2022-01-19 | 2022-05-27 | 北京理工大学 | 柔性低码率编译码系统、编译码方法、设备及介质 |
CN114553371B (zh) * | 2022-01-19 | 2024-02-13 | 北京理工大学 | 柔性低码率编译码系统、编译码方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111130572B (zh) | 2024-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8443265B2 (en) | Method and apparatus for map decoding and turbo decoder using the same | |
JP3494994B2 (ja) | 通信システムで直列鎖相構造を有する符号化及び復号化装置 | |
JP4101653B2 (ja) | インターリーバ・メモリ内の復調データのスケーリング | |
Burr | Turbo-codes: the ultimate error control codes? | |
US6606724B1 (en) | Method and apparatus for decoding of a serially concatenated block and convolutional code | |
JPH11508439A (ja) | 並列連結のテイルバイティング・コンボルーション・コード及びその復号器 | |
KR100374787B1 (ko) | 대역 효율적인 연쇄 티.씨.엠 디코더 및 그 방법들 | |
US20010039636A1 (en) | System and method employing a modular decoder for decoding turbo and turbo-like codes in a communications network | |
CN100571046C (zh) | 一种在SCDMA系统中实现Turbo编译码方案的装置和方法 | |
CN111130572B (zh) | Turbo码快速实现方法 | |
US6477678B1 (en) | Method and device for error correcting coding for high rate digital data transmissions, and corresponding decoding method and device | |
KR101051933B1 (ko) | 트렐리스의 버터플라이 구조를 이용한 맵 디코딩을 위한메트릭 계산 | |
KR100515472B1 (ko) | 채널 부호화, 복호화 방법 및 이를 수행하는 다중 안테나무선통신 시스템 | |
CN101252409B (zh) | 基于符号级超格图的联合信源信道解码新算法 | |
KR20160031781A (ko) | 이진 직렬 연결된 부호를 사용하는 시스템에서 복호 방법 및 장치 | |
KR100628201B1 (ko) | 터보 디코딩 방법 | |
US8627187B2 (en) | Decoding of recursive convolutional codes by means of a decoder for non-recursive convolutional codes | |
KR101177142B1 (ko) | 고속 데이터 전송에 적합한 터보 부호화 방법 및 장치 | |
KR100306478B1 (ko) | 통신시스템에서연집에러감소시스템 | |
Zhou et al. | Blind recognition of binary BCH codes for cognitive radios | |
Zbaid et al. | Design and Implementation of Convolutional Encoder and Viterbi Decoder Using FPGA. | |
Singh | TURBO CODE RE-ANALYSIS USING DIFFERENT ALGORITHMS | |
KR100651473B1 (ko) | 파이프 라인을 이용한 고속 터보 부호 복호기 | |
JP4991481B2 (ja) | 反復復号装置及び反復復号方法 | |
Feroz | A Novel Turbo Codec Encoding and Decoding Mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |