本发明涉及编码技术领域,具体地说是一种极化码译码方法。
背景技术:
极化码由土耳其毕尔肯大学
极化码译码过程涉及f函数节点和g函数节点运算,在对数似然比域译码时,f函数节点的运算采用基于双曲正切规则的和积运算。和积算法涉及双曲正切函数及其反函数计算,运算复杂度较高。对于中长码字,和积算法难以保证实时性,一般采用查表法计算双曲正切函数,但需要先将双曲正切函数值存储到只读存储器(rom)中,然后将输入转化为查表地址得到双曲正切函数的近似值,在一定精度下该方法需要消耗大量的硬件资源。
技术实现要素:
本发明所要解决的技术问题是提供一种极化码译码方法,解决目前极化码在对数似然比域译码运算复杂度较高的问题。
本发明为解决上述技术问题所采用的技术方案是:一种极化码译码方法,其特征在于:极化码参数为
步骤一、初始化:接收信号yi(0≤i<n)的对数似然比lln,i的值为:
步骤二、码位倒序计算: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,重复步骤二~步骤六,否则,执行步骤七。
步骤七:得到译码结果
本发明所述步骤三中函数updatelll,i(0≤l<log2n)的更新方法为:
步骤3.1、输入索引l,i;
步骤3.2、令s=2n-l,
步骤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);
其中变量
函数h2(x′)的表达式为公式(3):
若m<s/2不成立,则执行步骤(3.4);
步骤3.4、根据公式(4)计算g函数节点对数似然比的值,此时需要部分和
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,
步骤5.3、若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为:
步骤二、码位倒序计算: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,
步骤(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函数节点对数似然比的值,此时需要部分和
步骤四、判断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,
步骤(c)、若m<s/2不成立,则
步骤六、判断j<n-1是否成立,若成立,令j=j+1,重复步骤二~步骤六,否则,执行步骤七。
步骤七:得到译码结果
本发明简化后的折线逼近函数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},冻结比特向量
步骤一、初始化:逐位计算接收信号yi(0≤i<n)的对数似然比的值lln,i:
步骤二、码位倒序计算:i=bitreversal(j-1)。
步骤三、更新函数updatell0,i得到ll0,i和矩阵ll:更新函数updatell0,i即更新函数updatelll,i(0≤l<log2n),其步骤为:
步骤(a)、输入索引l,i;
步骤(b)、令s=2n-l,
步骤(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函数节点对数似然比的值,此时需要部分和
步骤四、判断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,
步骤(c)、若m<s/2不成立,则
步骤六、判断j<n-1是否成立,若成立,令j=j+1,重复步骤二~步骤六,否则,执行步骤七。
步骤七:得到译码结果