一种极化码译码方法与流程

文档序号:16886461发布日期:2019-02-15 22:41阅读:311来源:国知局
一种极化码译码方法与流程

本发明涉及编码技术领域,具体地说是一种极化码译码方法。



背景技术:

极化码由土耳其毕尔肯大学教授于2008年首次提出,从理论上严格证明了在二进制对称离散无记忆信道(binarysymmetricdiscretememorylesschannel,b-dmc)下,极化码的码率可以达到香农极限,并且极化码有着低的编码和译码复杂度。极化码译码的特点是采用sc译码算法,按照自然顺序对发送比特进行逐级判决译码,先判决的比特作为可靠信息参加后译比特的判决。在判决时,对于冻结比特位部分可直接译码,对于信息比特位部分则要根据接收到之前的所有已经被译码的比特和当前计算得到的似然比的值进行判决。

极化码译码过程涉及f函数节点和g函数节点运算,在对数似然比域译码时,f函数节点的运算采用基于双曲正切规则的和积运算。和积算法涉及双曲正切函数及其反函数计算,运算复杂度较高。对于中长码字,和积算法难以保证实时性,一般采用查表法计算双曲正切函数,但需要先将双曲正切函数值存储到只读存储器(rom)中,然后将输入转化为查表地址得到双曲正切函数的近似值,在一定精度下该方法需要消耗大量的硬件资源。



技术实现要素:

本发明所要解决的技术问题是提供一种极化码译码方法,解决目前极化码在对数似然比域译码运算复杂度较高的问题。

本发明为解决上述技术问题所采用的技术方案是:一种极化码译码方法,其特征在于:极化码参数为其中n表示极化码的码长,k表示信息位的长度,n-k表示冻结位的长度,a表示信息位位置的集合,令ac为a的补集,则ac表示冻结位位置的集合,表示长度为n-k的冻结位的二进制向量,一般将冻结位的值设置为0,即令设yi(0≤i<n)为经过二进制相移键控调制以及awgn信道后接收端接收到的信号,令矩阵ll表示(n+1)×n的对数似然比矩阵,矩阵b表示(n+1)×n的位矩阵,其中n=log2n,并将ll,b设置为非数值(nan),矩阵ll的更新函数为updatelll,i,(0≤l<log2n),其中l对应于译码阶段的列索引,i对应于行索引,lll,i表示索引为(l,i)的节点的对数似然比的值;矩阵b的更新函数为updatebl,i,(0≤l<log2n),bl,i表示索引为(l,i)的节点的位的更新值,部分和则极化码译码的具体步骤为:

步骤一、初始化:接收信号yi(0≤i<n)的对数似然比lln,i的值为:ebn0=10^(snr/10),其中n=log2n,snr为awgn信道的信噪比;设j(1≤j≤n)表示第j次译码循环,并令j=1;

步骤二、码位倒序计算:i=bitreversal(j-1),i表示(j-1)的比特反序,即将十进制(j-1)转化为二进制后,将得到的二进制数进行倒序,然后转化为十进制得到i;

步骤三、更新函数updatell0,i得到ll0,i和矩阵ll:函数updatell0,i是函数updatelll,i(0≤l<log2n)在l=0时的情况,更新函数updatell0,i即更新函数updatelll,i(0≤l<log2n)。

步骤四、判断i是否属于冻结位:若i属于冻结位,则令b0,i=0;若i不属于冻结位且ll0,i≥0,则b0,i=0,否则,b0,i=1。

步骤五、更新函数updateb0,i得到b0,i和矩阵b:函数updateb0,i是函数updatebl,i(0≤l<log2n)在l=0时的情况,更新函数updateb0,i即更新函数updatebl,i(0≤l<log2n)。

步骤六、判断j<n是否成立,若成立,令j=j+1,重复步骤二~步骤六,否则,执行步骤七。

步骤七:得到译码结果从矩阵b的第一行依次提取出信息位的值作为译码结果

本发明所述步骤三中函数updatelll,i(0≤l<log2n)的更新方法为:

步骤3.1、输入索引l,i;

步骤3.2、令s=2n-l其中n=log2n,表示模2加运算;

步骤3.3、若m<s/2,且lll+1,i=nan,则更新函数updatelll+1,i得到lll+1,i,同时若lll+1,i+s/2=nan,则更新函数updatelll+1,i+s/2得到lll+1,i+s/2,然后根据公式(1)计算f函数节点对数似然比的值lll,i:

lll,i=2h2(h1(x1)h1(x2))(1);

其中变量变量x1,x2∈(-∞,∞),函数h1(x)的表达式为公式(2):

函数h2(x′)的表达式为公式(3):

若m<s/2不成立,则执行步骤(3.4);

步骤3.4、根据公式(4)计算g函数节点对数似然比的值,此时需要部分和部分和若bl,i-s/2=0,则根据公式(5)计算g函数节点对数似然比的值lll,i,若bl,i-s/2=0不成立,则根据公式(6)计算g函数节点对数似然比的值lll,i,计算f函数或g函数节点对数似然比的值lll,i后输出更新后的矩阵ll;

lll,i=lll+1,i+lll+1,i-s/2(5)

lll,i=lll+1,i-lll+1,i-s/2(6)。

本发明所述步骤五中函数updatebl,i(0≤l<log2n)的更新方法为:

步骤5.1、输入索引l,i;

步骤5.2、令s=2n-l其中n=log2n,表示模2加运算;

步骤5.3、若m<s/2不成立,则bl+1,i=bl,i,更新函数updatebl+1,i和updatebl+1,i-s/2,并输出更新后的矩阵b;若m<s/2成立,则执行步骤六。

本发明的有益效果是:本发明针对f函数节点的计算,用简单的折线逼近算法代替双曲正切函数及其反函数运算,仅需要加法运算与乘法运算,大大降低了运算复杂度,与查表法相比大大节约了内存资源,降低了硬件成本,解决了极化码在对数似然比域译码运算复杂度较高的问题。

附图说明

图1为本发明极化码sc译码方法主要流程示意图;

图2为本发明的f函数的实现结构图;

图3为本发明的折线逼近函数h1(x)的实现结构图;

图4为本发明的折线逼近函数h2(x′)的实现结构图;

图5为本发明g函数的实现结构图;

图6为本发明函数updatebl,i的更新流程图;

图7为本发明的折线逼近函数h1(x)与双曲正切函数函数的对比图;

图8为本发明的折线逼近函数h2(x′)与反双曲正切函数函数的对比图;

图9为本发明实施例n=8时极化码的编码图;

图10为本发明实施例n=8时极化码的译码图。

具体实施方式

下面结合说明书附图对本发明的具体实施方式(实施例)进行描述,使本领域的技术人员能够更好地理解本发明。

如图1所示,一种极化码译码方法,包括以下步骤:

步骤一、初始化:接收信号yi(0≤i<n)的对数似然比的值lln,i为:ebn0=10^(snr/10),其中n=log2n,snr为awgn信道的信噪比;设j(1≤j≤n)表示第j次译码循环,并令j=1;

步骤二、码位倒序计算:i=bitreversal(j-1),i表示(j-1)的比特反序,即将十进制(j-1)转化为二进制后,将得到的二进制数进行倒序,然后转化为十进制得到i;

步骤三、更新函数updatell0,i得到ll0,i和矩阵ll:函数updatell0,i是函数updatelll,i(0≤l<log2n)在l=0时的情况,更新函数updatell0,i即更新函数updatelll,i(0≤l<log2n),其步骤为:

步骤(a)、输入索引l,i。

步骤(b)、令s=2n-l其中n=log2n,表示模2加运算。

步骤(c)、若m<s/2,且lll+1,i=nan,则更新函数updatelll+1,i得到lll+1,i,同时若lll+1,i+s/2=nan,则更新函数updatelll+1,i+s/2得到lll+1,i+s/2,然后根据公式(1)计算f函数节点对数似然比的值lll,i。f函数的实现结构用如图2所示的结构实现,包括h1(x1)实现单元、h1(x2)实现单元和h2(x′)实现单元,由于x1,x2∈(-∞,∞),所以h1(x1)和h1(x2)实现单元都用h1(x)的实现结构。

函数h1(x)的实现结构如图3所示,包括区间检测电路、参数存储器、旁路缓冲器、加法器、乘法器。在区间检测电路的ram中存入区间转折点的集合x1,x1={-∞,-7.0,-3.0,-1.6,-0.8,0.8,1.6,3.0,7.0,∞},在参数存储器中存入各分段的系数k1(k)和b1(k),k1={0,0.0012,0.0524,0.322,0.83,0.322,0.0524,0.0012,0},b1={-1.0000,-0.9914,-0.8378,-0.4064,0,0.4064,0.8378,0.9914,1.0000},根据x1中元素值将(-∞,∞)分为9个区间,(x1(k),x1(k+1)],k=1,…8为第k区间,(x(9),x(10))为第9区间。

函数h1(x)的具体实现步骤为:

(1)将输入值x同时送入旁路缓冲区和区间检测电路,在区间检测电路中与x1中的值逐个比较,若x∈(x1(k),x1(k+1)],k=1,…8,则x属于第k个区间。若输入值x∈(x(9),x(10)),则x属于第9个区间。

(2)根据k值在参数存储单元中取出k1(k)和b1(k)。

(3)将k1(k)与接收缓冲器中的x相乘并将所得结果与b1(k)相加,得到输出值h1(x)。

函数h1(x)的计算平均需要5次比较操作,1次加法操作和1次乘法操作。

函数h2(x′)的实现结构如图4所示,包括区间检测电路、参数存储器、旁路缓冲器、加法器、乘法器。在区间检测电路的ram中存入区间转折点的集合x2,x2={-∞,-0.999998,-0.9951,-0.9217,-0.6640,0.6640,0.9217,0.9951,0.999998,∞},在参数存储器中存入各分段的系数k2(k′)和b2(k′),k2={0,833.3333,19.0840,3.1056,1.2048,3.1056,19.0840,833.3333,0},b2={-7.0000,826.1667,15.9885,1.2621,0,-1.2621,-15.9885,-826.1667,7.0000}根据x2中元素值将(-∞,∞)分为9个区间,(x2(k′),x2(k′+1)],k′=1,…8为第k′区间,(x(9),x(10))为第9区间。

函数h2(x′)的具体实现步骤为:

(1)将输入值x′同时送入旁路缓冲区和区间检测电路,在区间检测电路中与x2中的值逐个比较,若x′∈(x2(k′),x2(k′+1)],k′=1,…8,则x′属于第k′个区间。若输入值x′∈(x(9),x(10)),则x′属于第9个区间。

(2)根据k′值在参数存储单元中取出k2(k′)和b2(k′)。

(3)将k2(k′)与接收缓冲器中的x′相乘并将所得结果与b2(k′)相加,得到输出值h2(x′),即h2(x′)=k2(k′)*x2(k′)+b2(k′)。

函数h2(x′)的计算平均需要5次比较操作,1次加法操作和1次乘法操作。

由以上函数h1(x)和函数h2(x′)的计算可以得到f函数节点对数似然比的值:lll,i=2h2(h1(x1)h1(x2))。

若m<s/2不成立,则执行步骤(d)。

步骤(d)、根据公式(4)计算g函数节点对数似然比的值,此时需要部分和部分和若bl,i-s/2=0,则根据公式(5)计算g函数节点对数似然比的值lll,i,若bl,i-s/2=0不成立,则根据公式(6)计算g函数节点对数似然比的值lll,i。g函数的实现结构如图5所示。计算f函数或g函数节点对数似然比的值lll,i后输出更新后的矩阵ll。

步骤四、判断i是否属于冻结位,若i属于冻结位,则令b0,i=0;若i不属于冻结位且ll0,i≥0,则b0,i=0,否则,b0,i=1。

步骤五、更新函数updateb0,i得到b0,i和矩阵b:函数updateb0,i是函数updatebl,i(0≤l<log2n)在l=0时的情况,更新函数updateb0,i即更新函数updatebl,i(0≤l<log2n),函数updatebl,i(0≤l<log2n)的更新流程图如图6所示,其步骤为:

步骤(a)、输入索引l,i;

步骤(b)、令s=2n-l其中n=log2n,表示模2加运算;

步骤(c)、若m<s/2不成立,则bl+1,i=bl,i,更新函数updatebl+1,i和updatebl+1,i-s/2,并输出更新后的矩阵b;若m<s/2成立,则执行步骤六。

步骤六、判断j<n-1是否成立,若成立,令j=j+1,重复步骤二~步骤六,否则,执行步骤七。

步骤七:得到译码结果从矩阵b的第一行依次提取出信息位的值作为译码结果

本发明简化后的折线逼近函数h1(x)与双曲正切函数tanh(x)的对比图如图7所示,从图7可以看出h1(x)与tanh(x)函数非常逼近,所以可以用折线逼近函数代替双曲正切函数进行运算;简化后的折线逼近函数h2(x′)与反双曲正切函数tanh-1(x′)的对比图如图8所示,从图8可以看出h2(x′)与tanh-1(x′)函数非常逼近,所以可以用折线逼近函数代替反双曲正切函数进行运算。

实施例

如图9所示,若已知极化码的码长为n=8,信息位的长度为k=4,冻结位的长度为n-k=4,冻结比特序号的集合ac={0,1,2,4},信息比特序号的集合a={3,5,6,7},冻结比特向量信息比特向量ua=(i0,i1,i2,i3),则混合后得到编码后的符号为(x0,...,x7)。将编码后的符号经过bpsk调制后送到awgn信道下,则接收机接收到信息(y0,...,y7),然后将(y0,...,y7)送到数据缓冲区。n=8,k=4时极化码的译码可由图10来表示,简化译码的具体步骤为:

步骤一、初始化:逐位计算接收信号yi(0≤i<n)的对数似然比的值lln,i:ebn0=10^(snr/10),其中n=log2n,snr为awgn信道的信噪比;设j(1≤j≤n)表示第j次译码循环,并令j=1;

步骤二、码位倒序计算:i=bitreversal(j-1)。

步骤三、更新函数updatell0,i得到ll0,i和矩阵ll:更新函数updatell0,i即更新函数updatelll,i(0≤l<log2n),其步骤为:

步骤(a)、输入索引l,i;

步骤(b)、令s=2n-l其中n=log2n,表示模2加运算;

步骤(c)、若m<s/2,且lll+1,i=nan,则更新函数updatelll+1,i得到lll+1,i,同时若lll+1,i+s/2=nan,则更新函数updatelll+1,i+s/2得到lll+1,i+s/2,然后根据公式(1)计算f函数节点对数似然比的值lll,i。若m<s/2不成立,则执行步骤(d);

步骤(d)、根据公式(4)计算g函数节点对数似然比的值,此时需要部分和部分和若bl,i-s/2=0,则根据公式(5)计算g函数节点对数似然比的值lll,i,若bl,i-s/2=0不成立,则根据公式(6)计算g函数节点对数似然比的值lll,i。计算f函数或g函数节点对数似然比的值lll,i后输出更新后的矩阵ll。

步骤四、判断i是否属于冻结位,若i属于冻结位,则令b0,i=0;若i不属于冻结位且ll0,i≥0,则b0,i=0,否则,b0,i=1。

步骤五、更新函数updateb0,i得到b0,i和矩阵b:更新函数updateb0,i即更新函数updatebl,i(0≤l<log2n),其步骤为:

步骤(a)、输入索引l,i;

步骤(b)、令s=2n-l其中n=log2n,表示模2加运算;

步骤(c)、若m<s/2不成立,则bl+1,i=bl,i,更新函数updatebl+1,i和updatebl+1,i-s/2,并输出更新后的矩阵b;若m<s/2成立,则执行步骤六。

步骤六、判断j<n-1是否成立,若成立,令j=j+1,重复步骤二~步骤六,否则,执行步骤七。

步骤七:得到译码结果从矩阵b的第一行依次提取出信息位的值作为译码结果

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1