首页 / 一种基于FPGA的Turbo编码设备及解码设备

一种基于FPGA的Turbo编码设备及解码设备公开 发明

技术领域

[0001] 本申请属于数据链通信技术领域,更具体地,涉及一种基于FPGA的Turbo编码设备及解码设备。

相关背景技术

[0002] 随着通信技术的不断发展,在数据链领域,物理层通信技术也越来越受到人们的广泛关注,尤其是信息处理方面,不同信息处理方式不同,信息处理内容一般包括信息校验、信道纠错编码和信道交织三个方面的处理。
[0003] 其中,信道纠错编码是保证信息传输速率接近理想信道容量的关键。目前,在数据链通信技术领域,为保证系统具有较好的误码率性能,信道编解码技术常用turbo码编解码来实现。如何基于现场可编程门阵列(Field Programmable Gate Array,FPGA)实现turbo编解码是本领域亟待解决的技术问题。

具体实施方式

[0056] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0057] 本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一存储器和第二存储器等是用于区别不同的存储器,而不是用于描述存储器的特定顺序。
[0058] 在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0059] 在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
[0060] 下面结合本申请实施例中的附图对本申请实施例进行描述。
[0061] 图1是本申请实施例提供的基于FPGA的Turbo编解码设备的结构示意图,如图1所示,在Turbo编码设备的FPGA上配置有主控模块、第一存储器(Meg_RAM)、交织模块、第一RSC编码模块、第二RSC编码模块和删余复接模块;
[0062] 第一存储器用于缓存第一信息序列(Ck);
[0063] 交织模块用于缓存第一信息序列,并基于交织地址,对第一信息序列进行交织映射,获取第二信息序列(C′k);
[0064] 第一RSC编码模块用于从第一存储器读取第一信息序列,并基于第一信息序列进行Turbo编码,获取第一系统序列(Xk)和第一校验序列(Zk);
[0065] 第二RSC编码模块用于从交织模块读取第二信息序列,并基于第二信息序列进行Turbo编码,获取第二系统序列(X′k)和第二校验序列(Z′k);
[0066] 删余复接模块用于基于第一系统序列、第一校验序列、第二系统序列和第二校验序列,进行删余处理以及复接处理,获取Turbo编码结果;
[0067] 主控模块用于控制各个编码模块的工作状态以及控制本设备中各个存储器的读写地址。
[0068] 可以理解的是,通过在Turbo编码设备的FPGA上配置主控模块、第一存储器(Meg_RAM)、交织模块、第一RSC编码模块、第二RSC编码模块和删余复接模块,可以获取第一信息序列,进而基于交织地址,对第一信息序列进行交织映射,获取第二信息序列,进而基于第一信息序列进行编码,获取第一系统序列和第一校验序列;以及基于第二信息序列进行编码,获取第二系统序列和第二校验序列,进而基于第一系统序列、第一校验序列、第二系统序列和第二校验序列,进行删余处理以及复接处理,获取编码结果,能够基于FPGA实现turbo编码。
[0069] 如图1所示,在Turbo解码设备的FPGA上配置有序列分离模块(decoder_algorithm模块)、迭代译码模块(decoder_maxlogmap模块)和主控模块;
[0070] 序列分离模块用于接收待解码的第三信息序列,从接收到的第三信息序列中分离出系统序列和校验序列,并输出系统序列和校验序列至迭代译码模块;
[0071] 迭代译码模块用于基于系统序列、校验序列和先验信息,进行SISO迭代译码,获取Turbo解码结果;
[0072] 主控模块用于控制各个解码模块的工作状态以及控制本设备中各个存储器的读写地址。
[0073] 在一种可能的实现方式中,SISO迭代译码具体采用Max‑Log‑MAP算法。
[0074] Max‑Log‑MAP算法是一种用于Turbo译码的具体实现方法,它基于最大后验概率的原则,通过对接收到的信号进行处理,估计出最可能的发送信息。它是Log‑MAP算法的简化版本,具有较低的复杂度和较好的性能。Max‑Log‑MAP算法的基本内容如下:(1)初始化,为每个信息位分配一个初始的似然比(LLR),通常设为接收信号的初始对数似然比;(2)前向和后向递推,利用前向和后向递推计算每个状态的概率,这里的概率是指状态为真时的概率;(3)分支度量计算,分支度量是根据接收信号和先验信息计算得到的,反映了从一个状态转移到另一个状态的可能性;(4)输出似然比更新:根据前向、后向递推结果和分支度量,更新每个信息位的似然比。
[0075] SISO迭代译码是Turbo译码的核心,其迭代过程包括:在每个译码器组件中,利用Max‑Log‑MAP算法计算信息位的似然比;将一个译码器组件的输出作为另一个译码器组件的先验信息,进行下一次迭代;迭代多次,直到满足停止条件(如达到最大迭代次数或译码性能达到预设阈值)。经过多次迭代后,输出最终的译码结果。
[0076] 可以理解的是,通过在Turbo解码设备的FPGA上配置有序列分离模块(decoder_algorithm模块)、迭代译码模块(decoder_maxlogmap模块)和主控模块,可以获取待解码的第三信息序列,进而从第三信息序列中分离出系统序列和校验序列,进而基于系统序列、校验序列和先验信息,进行SISO迭代译码,获取解码结果,能够基于FPGA实现turbo解码。
[0077] 因此,通过在Turbo编码设备的FPGA上配置有主控模块、第一存储器(Meg_RAM)、交织模块、第一RSC编码模块、第二RSC编码模块和删余复接模块,以及通过在Turbo解码设备的FPGA上配置有序列分离模块(decoder_algorithm模块)、迭代译码模块(decoder_maxlogmap模块)和主控模块,能够基于FPGA实现turbo编解码。采用本申请提供的turbo编解码设备,能够提高系统信息处理能力,同时能保证系统获得较好的误码率性能;本申请结构简单,可以使用硬件描述语言Verilog语言,搭建硬件环境实现,具有较高的实用性。
[0078] 下面结合若干示例,对本申请提供的基于FPGA的Turbo编码设备及解码设备进行示例性说明。
[0079] 本申请采用如图2所示编码器结构,Turbo码编码器中使用了两个递归系统卷积码(Recursive Systematic Convolutional,RSC)并行级联,编译码器中使用了交织器和解交织器,图2中D表示延时器。其中RSC编码器本申请采用系数为[13,15]的8状态递归系统卷积码作为分量码,存储级数m=3。
[0080] 编码器总体实现框图如图3所示,本申请中Turbo编码是对数据帧0或1进行编码,所以不需要考虑定点化的问题。整个编码过程包括五个模块,主控模块、Interleave交织模块、RSC_1编码模块、RSC_2编码模块、delete删余复接模块等。
[0081] 编码器整体工作流程为,主控模块对接收到的输入信息序列Ck帧头类型进行有效信号判断后,将输入信息比特分为两路信号分别缓存到两个RAM中,一路直接缓存到存储器Meg_RAM中,一路缓存到存储器RAM_0中,再提取存储在ROM中的交织地址(后续需要进行交织处理时将直接调用ROM中已存储的交织地址)。其中,将信息序列写入RAM的过程称为信息存储状态,当信息序列输入完成后,编码器工作状态从信息存储状态转变为预编码状态。工作在预编码状态时,由主控模块给出RAM读地址,将信息序列从RAM中读出,而按交织地址映射的输入序列变为C′k,最后再将两个信息序列Ck、C′k分别输入RSC_encoder1/2(分量编码器RSC模块)进行正式编码,此时编码器的工作状态也从预编码状态转变为编码状态。RSC编码模块输出的编码序列为(系统序列,校验序列)的形式,并将编码序列缓存到后级RAM中,随后将两个编码器得到的4路编码序列从RAM中读出送入后续delete删余复接模块,再根据码率选择进行打孔删余(数据输出选择),将处理后的结果进行输出,作为turbo码编码器的编码结果,上述整个编码流程如图4所示。
[0082] 主控模块起牵头作用,对整个turbo编码工作流程进行控制,包括控制各个编码模块状态信息以及各个存储器模块读写地址。
[0083] Interleave交织模块根据主控模块给出的交织地址,计算得到交织后的信息序列并将其输出到RSC_2编码模块。并将交织地址存储在ROM中。
[0084] RSC_1/2编码模块分别接收未交织数据和交织数据,进行逐比特(bit)处理,并输出系统序列Xk、X′k,校验序列Zk、Z′k。
[0085] 具体地,RSC_1/2编码模块对接收到的信息序列,进行逐bit处理,其中RSC_1编码模块接收到原始信息序列后,首先根据输入序列编码结构,计算在信息序列未全部接收时的系统序列和校验序列,此时系统序列等于输入信息序列,校验序列是基于生成多项式连接的移位寄存器+模2处理结构生成。当信息序列全部接收之后,进行尾比特计算处理,根据尾比特编码结构,此时的系统序列是基于反馈多项式连接的移位寄存器+模2处理结构生成,校验序列则是基于前馈多项式连接的移位寄存器+模2处理结构生成。移位寄存器+模2处理结构的硬件实现方式为:先进行按位与运算实现多项式与移位寄存器的连接,再对结果进行缩减异或运算实现模2运算。RSC_2编码模块与RSC_1编码模块有相同的编码处理过程,不同的是RSC_2编码模块的输入是经过交织后的信息序列,最后将两个编码器得到的4路编码序列送入后续delete删余复接模块。
[0086] delete删余复接模块根据码率不同进行打孔删余(数据选择输出),获取turbo码编码器的最终编码结果。
[0087] 具体地,delete删余复接模块接收RSC_1/2编码模块输出的系统序列和校验序列并将其存入双端口RAM中,然后根据不同码率在主控模块控制下发送读地址到存储器,根据地址在时钟周期控制下将并行数据转串行输出。
[0088] 下面结合图3和图4,对本申请编码器具体工作流程进行一个详细描述。
[0089] 步骤1,主控模块处于空闲等待状态,等待编码数据输入;
[0090] 步骤2,检测到编码信息输入,主控模块控制RAM存储器接收数据,开启写模式,同时开启写计数,直至写完成最后一个数据,跳转到步骤3;
[0091] 步骤3,主控模块使能Interleave交织模块;
[0092] 步骤4,Interleave交织模块按照给定公式计算出交织地址,并传给主控模块;
[0093] 步骤5,主控模块使能存储器读信号,开启读计数,顺序读出数据地址。其中,主控模块控制原始信息产生的递增顺序地址和Interleave交织模块按公式递推产生的交织地址分别输入Meg_RAM和RAM_0存储器;
[0094] 步骤6,主控模块使能RSC_1/2编码模块;
[0095] 步骤7,存储器Meg_RAM和RAM_0根据接收到的递增顺序地址和递推产生的交织地址输出未交织数据和交织数据,RSC_1/2编码模块从存储器Meg_RAM和RAM_0中分别接收未交织数据和交织数据并进行RSC编码;
[0096] 步骤8,主控模块控制RAM存储器接收数据,开启写模式,同时开启写计数,将完成RSC编码的码字序列存入到后级RAM中,直至写完成最后一个码字,跳转到步骤9;
[0097] 步骤9,主控模块使能存储器读信号,开启读计数,顺序读出RAM中数据地址,同时使能删余复接模块;
[0098] 步骤10,主控模块控制删余复接模块根据码率选择不同打孔规则进行数据选择输出,至此编码过程结束。
[0099] 关于解码器设计,考虑到硬件端实现难易性,本申请中Turbo译码采用Max‑Log‑MAP算法实现,使用SISO(Soft Input Soft Output)迭代译码,整个译码(解码)迭代结构如图5所示。整个解码过程分为三个模块,decoder_algorithm模块、decoder_maxlogmap模块、主控模块。
[0100] SISO译码器1和SISO译码器2具有相同的结构,它们在译码过程中,依据码元的对数概率比进行译码。SISO译码器共有三个输入(系统序列、校验序列、先验信息),两个输出(软信息输出、外信息,其中软信息输出仅在迭代结束之后作为有效输出,用于硬判决)。
[0101] 对于某一码元,SISO译码器1以接收到的信息位、对应于分量编码器1输出的校验位以及SISO译码器2给出的先验信息作为输入,译码后输出SISO译码器2需要的先验信息。同样SISO译码器2以接收到的交织后信息位、对应于分量编码器2输出的校验位以及SISO译码器1给出的先验信息进行译码。
[0102] 根据解码迭代结构框图5,整个解码工作流程为,假设SISO译码器1的输入为接收序列中的系统序列ys第一校验序列y1p和先验信息序列Le21。SISO译码器2的输入为接收序列中的系统序列ys的交织、第二校验序列y2p和先验信息序列Le12的交织。对于第一次迭代,输入给SISO译码器1的先验信息Le21置为0。SISO译码器1完成译码后,输出可靠性信息序列Le12,对Le12按映射函数重新排序后,传递给SISO译码器2。这里,交织器和编码中的交织器是完全一样的。对于SISO译码器2,它的处理过程和SISO译码器1是相似的,不同之处在于它的输出经过的是解交织而不是交织。在Turbo码的解码中,往往会规定一个迭代次数,以停止解码器工作并且输出信息比特的对数似然比。在某些应用中,也会采用停止准则的方式来终止译码。最后,将经过一个硬判决电路,输出信息比特的估计值,这样,解码就完成了。
[0103] 由于编码器在编码完成后需回到初始零状态,所以进行了添加尾码的处理。那么如果编码长度为K,则SISO译码器的输入序列和输出序列的长度均为L=K+m,(m=4)。这就造成在译码时,SISO译码器1与SISO译码器2在进行可靠性信息传递时,对应尾比特的部分必须做清零的处理。也就是说,交织器(或解交织器)需要对可靠性信息中的前K个符号进行交织(或解交织),最后m个符号全部清零,然后传递给下一级的译码器,作为它的先验信息输入。
[0104] decoder_algorithm模块接收输入信息序列、QPP交织地址、译码迭代次数和译码算法模块选择标志位,并从接收序列中分离出系统序列和校验序列,后将其作为输入送入到迭代译码MAX‑LOG‑MAP模块中,对两个译码器进行迭代完成译码操作,其中实际算法的选择是通过输入算法模块选择标志位来确定。
[0105] decoder_maxlogmap模块计算分支度量、前向度量以及后向度量,再利用计算所得三部分,根据公式计算对数似然比LLR,依次循环往复至译码迭代次数,最后将迭代完成输出的数据进行最后一次解交织与硬判决后作为译码结果输出,上述整个解码流程如图6所示。
[0106] 示例性地,decoder_maxlogmap模块以加尾的系统序列、校验序列和先验信息作为输入,for循环从1到序列长度,计算分支度量、前向分量,随后逆向计算,循环从序列长度到1,计算后向分量,再根据计算所得三部分,根据公式计算对数似然比LLR,同时计算出外信息作为译码模块输出,为下一译码器的先验信息进行迭代,以此循环往复,完成解码。
[0107] 下面结合图6和图7,对本申请解码器具体工作流程进行一个详细描述。
[0108] 步骤1,主控模块处于空闲等待状态,等待待解码数据输入;
[0109] 步骤2,主控模块使能decoder_algorithm模块;
[0110] 步骤3,decoder_algorithm模块从上游模块中接收输入序列、QPP交织地址、译码迭代次数和译码算法的选择标志位,并从接收序列中分离出系统序列Xk和校验序列Zk、Z′k;
[0111] 步骤4,主控模块控制RAM存储器接收数据,开启写模式,同时开启写计数,直至写完成最后一个数据,跳转到步骤5,其中系统序列Xk需经过交织处理得到X′k后添0加尾存入RAM_6中;
[0112] 步骤5,主控模块使能存储器读信号,开启读计数,顺序读出数据地址。
[0113] 步骤6,主控模块使能decoder_maxlogmap模块;
[0114] 步骤7,在第一次迭代译码之前,译码器初始化SISO译码器1的先验信息序列Le21,将其置0;
[0115] 步骤8,decoder_maxlogmap模块接收到加尾的系统序列、校验序列和先验信息后,此时进行第一次解码;
[0116] 步骤9,根据公式,计算出分支度量、前向分量值,主控模块控制RAM存储器接收数据,开启写模式,同时开启写计数,将其存入后级RAM中,直至写完成最后一个数据,跳转到步骤10;
[0117] 步骤10,主控模块使能存储器读信号,开启读计数,逆序读出数据地址;
[0118] 步骤11,存储器根据逆序递减地址输出对应分支度量值,随后计算出后向分量;
[0119] 步骤12,基于分支度量、前向分量值以及后向分量,根据公式计算对数似然比LLR;
[0120] 步骤13,主控模块控制RAM存储器接收数据,开启写模式,同时开启写计数,将对数似然比LLR计算结果存入后级RAM中,直至写完成最后一个数据,跳转到步骤14;
[0121] 步骤14,存储器根据逆序递减地址输出对数似然比,并计算出外信息作为译码模块输出,为下一译码器的先验信息进行迭代,以此循环往复,直至达到设置迭代次数,跳转到步骤15,否则,跳转到步骤9;
[0122] 步骤15,将迭代完成输出的数据进行最后一次解交织与硬判决输出,至此解码过程结束。
[0123] 可以理解的是,本申请提供的turbo码编解码设备结构简单,可以使用硬件描述语言Verilog语言,完成通过FPGA硬件实现,turbo码编解码器,并将FPGA实现工程嵌入到控制系统(上位机)与FPGA联合测试平台中进行性能测试,具有较高的实用性。同时本申请在解码器设计中,单次迭代内采用分时分块复用并行译码原则,在降低资源使用的同时可以进一步降低译码复杂度。
[0124] 本申请还提供一种基于FPGA的编解码系统,该系统包括:基于FPGA的Turbo编码设备和基于FPGA的Turbo解码设备,Turbo编码设备和Turbo解码设备通信连接,通过Turbo编码设备和Turbo解码设备实现对信息比特的一个编解码处理。
[0125] Turbo编码设备具体用于:获取第一信息序列;基于交织地址,对第一信息序列进行交织映射,获取第二信息序列;基于第一信息序列进行编码,获取第一系统序列和第一校验序列;以及基于第二信息序列进行编码,获取第二系统序列和第二校验序列;基于第一系统序列、第一校验序列、第二系统序列和第二校验序列,进行删余处理以及复接处理,获取Turbo编码结果;
[0126] Turbo解码设备具体用于:获取待解码的第三信息序列;从第三信息序列中分离出系统序列和校验序列;基于系统序列、校验序列和先验信息,进行SISO迭代译码,获取Turbo解码结果。
[0127] 可以理解的是,在本申请实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
[0128] 本领域的技术人员容易理解,以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本申请的保护范围之内。

当前第1页 第1页 第2页 第3页