一种快速译码方法、设备及存储设备技术

技术编号:24862122 阅读:46 留言:0更新日期:2020-07-10 19:13
本发明专利技术提供了一种快速译码方法、设备及存储设备,其方法包括:对1024个比特数据进行译码处理,每次执行单元函数译码4个,接着将数组password的元素值传入switch语句,password的每一个元素都代表一种控制函数的选项,并将当前单元函数的最低行值传入function_back函数的形参j,执行function_back函数,执行结束后单元译码函数行数增加4,password数组读取至下一个元素;循环执行,直到所有数据译码完成;最终得到译码后的数据。一种快速译码设备及存储设备,用于实现一种快速译码方法。本发明专利技术的有益效果是:本发明专利技术提出中快速译码方法,以4个比特数据为一个单元,对码长为1024的数据进行快速译码,误码率低,运行速度快;使用bool数据替代整形数据,提高了存储空间的利用率。

【技术实现步骤摘要】
一种快速译码方法、设备及存储设备
本专利技术涉及通信领域,尤其涉及一种快速译码方法、设备及存储设备。
技术介绍
信道编码一直是通信领域的基础和核心问题,其每一次重大突破,都会引起通信系统的新一轮演进或变革。在过去的二三十年里,无线通信技术发展十分迅速,人们对于无线通信,移动通信的业务需求也急剧增加。随着无线通信的发展,数据传输越来越快,这对于传输信号的处理要求越来越高,要保证信息在随机信道上高效和可靠传输,随之而来更多更新的编译码算法不断被提出,Polar码便是其中之一,并且有极高的研究价值。比如在无人机的图像传输应用上,由于信号的限制无人机只能在距离基站三公里的范围内活动,并且传输的图像质量不够清晰,远远无法满足我们的需要。这就需要优化编译码算法,让图像信息传输更加有效。
技术实现思路
为了解决上述问题,本专利技术提供了一种快速译码方法、设备及存储设备,一种快速译码方法,主要包括以下步骤:S101:获取码长为1024的待译码比特数据;并定义数组a和数组b;其中,数组a为一个1024行11列的浮点型二维数组,数组b为一个1024行11列的bool型二维数组;S102:将所述的码长为1024的待译码比特数据从第一位开始依次读入数组a的第10列中;然后从数组a的第10列开始,根据译码原理,依次对数组a的各列进行f运算,并将运算结果存入数组a的对应的元素中;S103:定义数组password,并将数组password初始化为预设值;所述数组password为大小为255的一维数组;S104:定义单元译码函数:所述单元译码函数根据译码原理,以4个比特数据为一个译码单元进行译码;S105:定义反推函数function_back:所述反推函数function_back的形参为j和v;所述反推函数function_back用于根据译码原理及j、v的值,对数组a和数组b中的对应元素进行异或运算、f运算和g运算;其中,形参j的实参为行值clue_k;其中,k∈[0,7]中的整数;且k=v-2,代表需要对数组b中的元素进行异或运算的次数;S106:使用switch语句执行所述数组password中的对应元素对所述单元译码函数和所述反推函数function_back的调用操作;具体如下:1)case0:调用单元译码函数1次,单元译码函数的行值clue自增4;调用反推函数function_back1次,形参v为2;调用完后,clue_0自增8;然后继续调用单元译码函数1次,单元译码函数译码的4个比特数据的第一个比特数据在数组a中所对应的行值clue自增4;其中,clue的初始值为0,所述反推函数function_back的形参j对应行值clue_0,且clue_0的初始值为0;2)casek:调用反推函数function_back1次,每次调用反推函数function_back后clue_k自增2^(v+1);其中,k=1,2,…,7;反推函数function_back的形参v=k+2,形参j=clue_k,clue_k在首次被调用的值为0;clue_k为定义的中间变量;S107:对数组a中第10列的1024个待译码比特数据进行译码处理,具体为:从数组a的第1行开始,每4行为一组待译码比特数据,使用所述单元译码函数进行译码,每次对一组待译码比特数据进行译码;每次使用所述单元译码函数对一组待译码比特数据译码完成后,将数组password的对应元素的值传给控制单元译码函数和function_back函数的switch语句,按照S106所述的规则调用单元译码函数与反推函数function_back,每次执行结束后,password数组读取至下一个元素,然后进入下一个译码循环;循环有序的调用单元译码函数与反推函数function_back,直到所有待译码比特数据译码完成;最终得到译码后的数据,即b[0][0]~b[1023][0]。进一步地,步骤S102中,对数组a的各列进行f运算,并将运算结果存入数组a的对应的元素中;具体如下:首先,根据译码原理对数组a的第10列元素a[i][10]进行f运算,得到a[0][9]~a[511][9]的对数似然比LLR值;然后根据译码原理对数组a的第9列元素进行f运算,得到a[0][8]~a[255][8]的对数似然比LLR值;再根据译码原理对数组a的第8列元素进行f运算,得到a[0][7]~a[127][7]的对数似然比LLR值;依次类推,直至a[0][0];其中,i=1,2,…,1023。进一步地,a[0][0]是固定比特,它的译码值为0,以false的形式存入bool型数组b[0][0]中。进一步地,数组password初始化为:password[255]={0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0}。进一步地,步骤S104中,对于数组a的第i~i+3行对应的四个待译码比特数据x1、x2、x3和x4,使用所述单元译码函数进行译码的具体方法,i=clue;包括:S201:将a[i+0][0]、a[i+0][1]和a[i+1][1]进行g运算,并对g运算的结果进行译码,译码结果作为x2的译码值,并将译码值以布尔数据的形式存入b[i+1][0];且后续的b数组存储均遵循此数据形式;S202:将b[i+0][0]和b[i+1][0]进行异或运算,结果存入b[i+0][1],将b[i+1][0]的值直接存入b[i+1][1];S203:将b[i+0][1]、a[i+0][2]、a[i+2][2]进行g运算,结果存入a[i+2][1];将b[i+1][1]、a[i+1][2]、a[i+3][2]进行g运算,结果存入a[i+3][1];S204:将a[i+2][1本文档来自技高网...

【技术保护点】
1.一种快速译码方法,其特征在于:包括以下步骤:/nS101:获取码长为1024的待译码比特数据;并定义数组a和数组b;其中,数组a为一个1024行11列的浮点型二维数组,数组b为一个1024行11列的bool型二维数组;/nS102:将所述的码长为1024的待译码比特数据从第一位开始依次读入数组a的第10列中;然后从数组a的第10列开始,根据译码原理,依次对数组a的各列进行f运算,并将运算结果存入数组a的对应的元素中;/nS103:定义数组password,并将数组password初始化为预设值;所述数组password为大小为255的一维数组;/nS104:定义单元译码函数:所述单元译码函数根据译码原理,以4个比特数据为一个译码单元进行译码;/nS105:定义反推函数function_back:所述反推函数function_back的形参为j和v;所述反推函数function_back用于根据译码原理及j、v的值,对数组a和数组b中的对应元素进行异或运算、f运算和g运算;其中,形参j的实参为行值clue_k;其中,k∈[0,7]中的整数;且k=v-2,代表需要对数组b中的元素进行异或运算的次数;/nS106:使用switch语句执行所述数组password中的对应元素对所述单元译码函数和所述反推函数function_back的调用操作;具体如下:/n1)case 0:调用单元译码函数1次,单元译码函数的行值clue自增4;调用反推函数function_back 1次,形参v为2;调用完后,clue_0自增8;然后继续调用单元译码函数1次,单元译码函数译码的4个比特数据的第一个比特数据在数组a中所对应的行值clue自增4;其中,clue的初始值为0,所述反推函数function_back的形参j对应行值clue_0,且clue_0的初始值为0;/n2)case k:调用反推函数function_back1次,每次调用反推函数function_back后clue_k自增2^(v+1);其中,k=1,2,…,7;反推函数function_back的形参v=k+2,形参j=clue_k,clue_k在首次被调用的值为0;clue_k为定义的中间变量;/nS107:对数组a中第10列的1024个待译码比特数据进行译码处理,具体为:从数组a的第1行开始,每4行为一组待译码比特数据,使用所述单元译码函数进行译码,每次对一组待译码比特数据进行译码;/n每次使用所述单元译码函数对一组待译码比特数据译码完成后,将数组password的对应元素的值传给控制单元译码函数和function_back函数的switch语句,按照步骤S106所述的规则调用单元译码函数与反推函数function_back,每次执行结束后,password数组读取至下一个元素,然后进入下一个译码循环;/n循环有序的调用单元译码函数与反推函数function_back,直到所有待译码比特数据译码完成;最终得到译码后的数据,即b[0][0]~b[1023][0]。/n...

【技术特征摘要】
1.一种快速译码方法,其特征在于:包括以下步骤:
S101:获取码长为1024的待译码比特数据;并定义数组a和数组b;其中,数组a为一个1024行11列的浮点型二维数组,数组b为一个1024行11列的bool型二维数组;
S102:将所述的码长为1024的待译码比特数据从第一位开始依次读入数组a的第10列中;然后从数组a的第10列开始,根据译码原理,依次对数组a的各列进行f运算,并将运算结果存入数组a的对应的元素中;
S103:定义数组password,并将数组password初始化为预设值;所述数组password为大小为255的一维数组;
S104:定义单元译码函数:所述单元译码函数根据译码原理,以4个比特数据为一个译码单元进行译码;
S105:定义反推函数function_back:所述反推函数function_back的形参为j和v;所述反推函数function_back用于根据译码原理及j、v的值,对数组a和数组b中的对应元素进行异或运算、f运算和g运算;其中,形参j的实参为行值clue_k;其中,k∈[0,7]中的整数;且k=v-2,代表需要对数组b中的元素进行异或运算的次数;
S106:使用switch语句执行所述数组password中的对应元素对所述单元译码函数和所述反推函数function_back的调用操作;具体如下:
1)case0:调用单元译码函数1次,单元译码函数的行值clue自增4;调用反推函数function_back1次,形参v为2;调用完后,clue_0自增8;然后继续调用单元译码函数1次,单元译码函数译码的4个比特数据的第一个比特数据在数组a中所对应的行值clue自增4;其中,clue的初始值为0,所述反推函数function_back的形参j对应行值clue_0,且clue_0的初始值为0;
2)casek:调用反推函数function_back1次,每次调用反推函数function_back后clue_k自增2^(v+1);其中,k=1,2,…,7;反推函数function_back的形参v=k+2,形参j=clue_k,clue_k在首次被调用的值为0;clue_k为定义的中间变量;
S107:对数组a中第10列的1024个待译码比特数据进行译码处理,具体为:从数组a的第1行开始,每4行为一组待译码比特数据,使用所述单元译码函数进行译码,每次对一组待译码比特数据进行译码;
每次使用所述单元译码函数对一组待译码比特数据译码完成后,将数组password的对应元素的值传给控制单元译码函数和function_back函数的switch语句,按照步骤S106所述的规则调用单元译码函数与反推函数function_back,每次执行结束后,password数组读取至下一个元素,然后进入下一个译码循环;
循环有序的调用单元译码函数与反推函数function_back,直到所有待译码比特数据译码完成;最终得到译码后的数据,即b[0][0]~b[1023][0]。


2.如权利要求1所述的一种快速译码方法,其特征在于:步骤S102中,对数组a的各列进行f运算,并将运算结果存入数组a的对应的元素中;具体如下:
首先,根据译码原理对数组a的第10列元素a[i][10]进行f运算,得到a[0][9]~a[511][9]的对数似然比LLR值;然后根据译码原理对数组a的第9列元素进行f运算,得到a[0][8]~a[255][8]的对数似然比LLR值;再根据译码原理对数组a的第8列元素进行f运算,得到a[0][7]~a[127][7]的对数似然比LLR值;
依次类推,直至a[0][0];其中,i=1,2,…,1023;数组从第0行、第0列数起。


3.如权利要求2所述的一种快速译码方法,其特征在于:a[0][0]是固定比特,它的译码值为0,以false的形式存入bool型数组b[0][0]中。


4.如权利要求1所述的一种快速译码方法,其特征在于:数组password初始化为:
password[255]={0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0}。


5.如权利要求1所述的一种快速译码方法,其特征在于:步骤S104中,对于数组a的第i~i+3行对应的四个待译码比特数据x1、x2、x3和x4,使用所述单元译码函数进行译码的具体方法,i=clue;包括:
S201:将a[i+0][0]、a[i+0][1]和a[i+1][1]进行g运算,并对g运算的结果进行译码,译码结果作为x2的译码值,并将译码值以布尔数据的形式存入b[i+1][0];且后续的b数组存储均遵循此数据形式...

【专利技术属性】
技术研发人员:沈立人谢靖愉蔡炜文
申请(专利权)人:中国地质大学武汉
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1