本发明属于信道编码技术领域,具体说是一种码长自适应的llr-bp译码器。
背景技术:
ldpc码即低密度奇偶校验码(lowdensityparitycheckcode),由robertg.gallager博士于1962年提出的一类具有稀疏校验矩阵的线性分组码。不仅有逼近香农极限的良好性能,且译码复杂度较低、结构灵活,仍是近年信道编码领域的研究热点,在移动通信中具有良好的应用前景。
随着码长增加,ldpc译码矩阵维数大幅增加,算法复杂度大大增加,译码实现的硬件逻辑资源占用多。针对软硬判决算法和fpga实现等方面展开较为深入的研究,主要有以下几种算法。
(1)硬判决算法。主要算法有:比特翻转算法(bf)、基于软信息的加权比特翻转法(wbf)、klf加权位翻转译码(klf-wbf)算法、lp加权比特翻转(lp-wbf)算法、修正权重bf译码算法(imwbf)、可靠性比特加权翻转算法(rrwbf)、基于bf算法的联合概率比特反转(jpwbf)算法。
(2)软判决算法。主要算法有:基于软判决的ldpc译码算法、置信传播(bp)算法、llr-bp算法、改进llr-bp译码算法、最小和译码算法(min-sum)、归一化最小和算法(normalizedmin-sum)、bp改进算法、sbp(shuffled-bp,sbp)算法、交叠的shuffled-bp(overlappedshuffled-bp,osbp)译码算法。
ldpc码性能优越性通常在码长较长时才能体现,但码率不变,校验矩阵h结构固定,难以同时实现多码长的译码工作。另一方面,译码算法皆基于bp算法基础上做出的改进,但llr-bp具有最好的误码性能。
ldpc译码器的fpga实现结构主要有三种:全并行结构、串行结构和部分并行结构。在全并行译码器中,所有校验节点或者变量节点同时进行更新,译码速度非常快,但是译码器中节点处理单元的数目和和各处理单元与存储单元之间连线的复杂度随着码长的增长快速增加,因此只适合于中短码长和对译码速率要求极高的场合。串行译码器中校验节点或变量节点的更新是单个依次进行的,资源消耗比较少,但由于其译码速率过低小适合高速应用。由于部分并行结构既能快速实现译码,又能节省硬件资源优点而被广泛采用。但现有的ldpc译码器结构适应能力差、扩展能力有限,仅能进行单一码长的译码工作。
技术实现要素:
针对传统ldpc译码器适应能力差、扩展能力有限的缺点,本发明提出了一种码长自适应的llr-bp译码器,该译码器提高了译码速度、降低了硬件逻辑资源占有率,并解决了多码长同时译码的问题。
为实现上述目的,本申请采用的技术方案是:一种码长自适应的llr-bp译码器,包括:初始数据缓冲模块、校验节点处理模块、中间信息存储模块、变量节点处理模块、控制模块、输出缓存模块、译码判决模块;所述中间信息存储模块,包括:地址控制器和后验概率信息存储器;所述控制模块分别与初始数据缓冲模块、校验节点处理模块、中间信息存储模块、变量节点处理模块、输出缓存模块、译码判决模块相连。
进一步,初始数据缓冲模块是用来缓存信道的待译码数据,该模块用来存储量化后的初始数据,缓冲模块为12*24的存储矩阵,每个存储矩阵的大小z*z由码的长度n决定,z=n/24;鉴于这一特性,该模块根据码长自动调整存储矩阵中子方阵pij(i表示行,j表示列)的大小;设待译码数据为[v1,v2,...vn-1,vn],n个待译码数按列方向将数据存入校验矩阵h数值为1的pij,校验矩阵h数值为0的位置不存储数据,cnp的读写地址可以按照0~23的顺序进行;信道信息皆为浮点型,量化放大后存储,位宽为12bit,最高位为符号位,以16进制存储。例:0.52427,精确到2-11,为0.10000110001(二进制),然后按位左移得到12’h431,通过移位寄存器得到。缓冲模块如图2所示。
进一步的,校验节点处理模块完成校验节点信息更新功能,cnp的并行度为12,其中cnp的并行度是按ieee802.16e标准中校验矩阵行数最多的1/2码率来设定的。从存储矩阵中子方阵pij中读取数据进行校验节点更新,按照校验矩阵h每个比特节点所在的行进行更新。
更进一步的,将校验矩阵h划分为多个子块;在子块中,所有校验节点共用一个校验节点处理模块,所有变量节点共用一个变量节点处理模块;子块内进行串行译码,而子块与子块之间进行全并行译码;初始数据缓冲模块可以根据码长自动调整存储矩阵的大小。
更进一步的,控制模块给变量节点处理模块一个启动信号vnp_on(高有效)开始,变量节点处理模块从中间信息存储模块中的地址控制器里面读取按列存储的信息,vnp的读写地址按照rem((p(i,j))+n,24),n=0,1,2…23的顺序输出,p(i,j)为pij的子矩阵。rst=1’b0或vnp_on=1’b0,开始进行变量节点的更新;从中间信息存储模块中的后验概率信息存储器里面读取rji,根据下面公式进行更新,vnp的并行度为24;
l(pi)为初始概率似然比信息,i=1,2,…,n。
对每一个变量节点i和与其相邻的检验节点j∈c(i),设定变量节点传向校验节点的初始信息;
l(l)(rji)为变量节点传向校验节点的消息:
其中,设码字c=(c1,c2,…,cn),经过bpsk调制后,发送序列x=(x1,x2,…,xn),接收序列y=(y1,y2,…,yn),噪声为n0;译码序列
进一步的,控制模块为该译码器的核心,既管理译码器所有模块,且为存储模块提供读写地址信号。控制模块完成系统控制的功能,包括迭代次数的控制:
根据变量节点处理模块的结束信号donea1发出cnp_on=1’b0决定下一个状态工作的是校验节点处理模块;
根据校验节点处理模块的结束信号doneb0发出vnp_on=1’b0决定下一个状态工作的是变量节点处理模块;
success=1’b0为译码成功标志,可提前结束迭代,输出译码结果;last_iter信号(高有效)为最后一个迭代周期,译码结束。用verilog硬件语言对control模块进行描述,控制模块综合电路如图5所示。
更进一步的,译码判决模块接收来自输出缓存模块的信号result_out,通过公式
本发明由于采用以上技术方案,能够取得如下的技术效果:本申请采用提前终止迭代译码策略,有效降低了算法迭代次数;采用取极限方法实现llr-bp译码算法中复杂概率函数的运算,降低算法实现的复杂度。在保证误码率的前提下,本译码器有效提高了译码速度、降低了硬件逻辑资源占有率,并解决了多码长同时译码的问题。
附图说明
为了更清楚的说明本发明的实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的部分并行译码器结构框图;
图2为本发明实施例提供的初始数据缓冲模块;
图3为本发明实施例提供的cnp模块综合电路图;
图4为本发明实施例提供的vnp模块框图;
图5为本发明实施例提供的控制模块综合电路图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本实施例公开了一种码长自适应的llr-bp译码器,为实现不同码长的译码,本译码器以1/2码率为例,采用部分并行的结构。所述译码器,包括初始数据缓冲模块、校验节点处理模块(checknodeprocessor,cnp)、中间信息存储模块(mess_mem)、变量节点处理模块(variablenodeprocessor,vnp)、控制模块(control)、输出缓存模块、译码判决模块等;所述中间信息存储模块,包括:地址控制器rom和后验概率信息存储器ram;部分并行译码器结构框图如图1所示。
将校验矩阵h划分为多个子块。在子块中,所有校验节点共用一个cnp模块,所有变量节点共用一个vnp模块。子块内进行串行译码,而子块与子块之间进行全并行译码。中间信息存储模块可以根据码长自动调整存储矩阵的大小。
信道信息经过量化之后存入初始数据缓冲模块,控制模块发出指令cnp_on,译码开始。vnp模块和cnp模块在控制模块的控制下交替完成所有变量节点和校验节点的运算。vnp和cnp从中间信息存储模块中读取信息,并将节点更新结果重新写回中间信息存储模块。由于vnp和cnp是交替工作的,所以设计中可以通过地址控制模块合理安排访问,并且没有访问冲突问题。本译码器所有处理数据信息均采用12bit量化,最高位为符号位。
初始数据缓冲模块是用来缓存信道的待译码数据,该模块用来存储量化后的初始数据,缓冲模块为12*24的存储矩阵,每个存储矩阵的大小z*z由码的长度n决定,z=n/24。鉴于这一特性,该模块根据码长的自动调整存储矩阵中子方阵pij(i表示行,j表示列)的大小。设待译码数据为[v1,v2,...vn-1,vn],n个待译码数按列方向将数据存入校验矩阵h数值为1的pij,校验矩阵h数值为0的位置不存储数据,cnp的读写地址可以按照0~23的顺序进行。信道信息皆为浮点型,量化放大后存储,位宽为12bit,最高位为符号位,以16进制存储。例:0.52427,精确到2-11,为0.10000110001(二进制),然后按位左移得到12’h431,通过移位寄存器得到。缓冲模块如图2所示。
校验节点处理模块完成校验节点信息更新功能,cnp的并行度为12,其中cnp的并行度是按ieee802.16e标准中校验矩阵行数最多的1/2码率来设定的。从pij中读取数据进行校验节点更新运算,按照校验矩阵h每个比特节点所在的行进行更新。pij中的数据按列存储,便于cnp的读写地址顺序输出。
vnp模块框图如图4所示。control模块给vnp一个启动信号vnp_on(高有效)开始,vnp模块从中间信息缓存模块rom里面读取按列存储的信息,vnp的读写地址按照rem((p(i,j))+n,24),n=0,1,2…23的顺序输出,p(i,j)为pij的子矩阵。rst=1’b0或vnp_on=1’b0,开始进行变量节点的更新。
控制模块为该译码器的核心,既管理译码器所有模块,且为存储模块提供读写地址信号。控制模块完成系统控制的功能,包括迭代次数的控制,根据vnp(cnp)的结束信号donea1(doneb0)发出cnp_on=1’b0(vnp_on=1’b0)决定下一个状态工作的是cnp模块(vnp模块);success=1’b0为译码成功标志,可提前结束迭代,输出译码结果;last_iter信号(高有效)为最后一个迭代周期,译码结束。用verilog硬件语言对control模块进行描述,控制模块综合电路如图5所示。
译码判决模块接收来自输出缓冲模块(result_mem)的信号result_out,通过公式
本发明提供了一种码长自适应的llr-bp译码器,提高了译码速度、降低了硬件逻辑资源占有率,并解决了多码长同时译码的问题。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。