一种用于MCU的LDPC码纠错方法及纠错模块与流程

文档序号:19791565发布日期:2020-01-24 14:21阅读:498来源:国知局
一种用于MCU的LDPC码纠错方法及纠错模块与流程

本发明涉及电子通信技术领域,更具体地说,涉及一种用于mcu的ldpc码纠错方法及纠错模块。



背景技术:

微控制单元(microcontrollerunit;mcu),又称单片微型计算机(singlechipmicrocomputer)或者单片机,是把中央处理器(centralprocessunit;cpu)的频率与规格做适当缩减,并将内存(memory)、计数器(timer)、usb、a/d转换等周边接口,甚至lcd驱动电路都整合在单一芯片上,形成芯片级的计算机。为了提高通信的可靠性,mcu内部配备了误码校正(ecc)模块,传统的ecc模块使用的是汉明码和bch码来纠正错误。随着mcu的不断发展,人们正在将mcu用于各种各样的新型和更加复杂的计算任务;但是汉明码和bch码的纠错能力有限,无法满足更加复杂的计算任务和更加庞大的数据通讯量。

低密度奇偶检验码(lowdensityparitycheckcode;ldpc)是一类性能逼近香农限的好码,由于它具有纠错能力强、译码复杂度低等诸多优点,是取代汉明码和bch码的理想方案,但是ldpc码在mcu技术领域上的应用仍然空白。



技术实现要素:

为克服现有技术中的缺点与不足,本发明的一个目的在于提供一种用于mcu的ldpc码纠错方法;该方法具有更强的纠错能力,使mcu具有更高的可靠性,降低了译码的迭代次数和复杂度。本发明的另一个目的在于提供一种实现上述ldpc码纠错方法、纠错能力强、可靠性高、可降低译码迭代次数和复杂度的ldpc码纠错模块。

为了达到上述目的,本发明通过下述技术方案予以实现:一种用于mcu的ldpc码纠错方法,其特征在于:包括如下步骤:

s1步,根据设定ldpc码长和码率构造ldpc的校验矩阵h,由校验矩阵h转换得到生成矩阵g,并将校验矩阵h和生成矩阵g进行储存;

s2步,输入长度为k的信息序列x;基于生成矩阵g,将信息序列x进行编码得到码字y;将码字y编制成码字信息并向外传输;

s3步,接收码字信息,得到带噪码字y′;使用深度学习译码法将带噪码字y′直接译码成码字x。

优选地,所述s1步中,校验矩阵h的构造方法是:设定ldpc码长为n,校验位长度为m,码率为r=k/n;利用maykay构造法,构造出校验矩阵h。

优选地,所述s1步中,由校验矩阵h转换得到生成矩阵g,是指:将校验矩阵h的右半部分h2求逆,再乘校验矩阵h的左半部分h1,得到生成矩阵g的右半部分g2;生成矩阵g的左半部分g1设定为大小为k×k的单位矩阵i:

其中,生成矩阵g的大小为k×n。

优选地,所述s2步中,基于生成矩阵g,将信息序列x与生成矩阵g相乘得到长度为n的码字y:

y=x×g。

优选地,所述s3步中,使用深度学习译码法将带噪码字y′直接译码成码字x,是指:包括以下分步骤:

s31步,构建深度学习模型:采用dnn模型,设定模型输入层维度、隐藏层层数以及各层网络的神经元个数、输出层神经元个数,在隐藏层的输出部分添加激活函数,设定模型的损失函数;

s32步,训练模型:构建数据集,数据集为多组的带噪码字y′,标签为原始码字的信息序列x;将数据集按设定比例分为训练集和验证集;将训练集输入到dnn模型,通过反向传播算法来更新模型的参数使损失函数收敛,当验证集的准确率和损失函数趋于稳定时停止训练,保存模型;

s33步,将保存的模型作为纠错模型,带噪码字y′通过纠错模型后译码为码字x。

一种实现上述用于mcu的ldpc码纠错方法的ldpc码纠错模块,其特征在于:包括:

ldpc矩阵储存模块,用于根据设定ldpc码长和码率构造ldpc的校验矩阵h,由校验矩阵h转换得到生成矩阵g,并将校验矩阵h和生成矩阵g进行储存;

ldpc编码模块,用于基于生成矩阵g,将长度为k的信息序列x进行编码得到码字y;

以及ldpc译码模块,用于接收带噪码字y′,使用深度学习译码法将带噪码字y′直接译码成码字x。

优选地,所述ldpc矩阵储存模块中,设定ldpc码长为n,校验位长度为m,码率为r=k/n;利用maykay构造法,构造出校验矩阵h。

优选地,所述ldpc矩阵储存模块中,由校验矩阵h转换得到生成矩阵g,是指:将校验矩阵h的右半部分h2求逆,再乘校验矩阵h的左半部分h1,得到生成矩阵g的右半部分g2;生成矩阵g的左半部分g1设定为大小为k×k的单位矩阵i:

其中,生成矩阵g的大小为k×n。

优选地,所述ldpc编码模块中,基于生成矩阵g,将信息序列x与生成矩阵g相乘得到长度为n的码字y:

y=x×g。

与现有技术相比,本发明具有如下优点与有益效果:

1、相比于传统方式采用汉明码和bch码,本发明使用ldpc码作为差错控制码,在相同码长和码率的条件下具有更强的纠错能力,使mcu具有更高的可靠性;

2、本发明使用深度神经网络译码,相比传统的bp迭代译码进一步提升了ldpc的性能,并且降低了译码的迭代次数和复杂度。

附图说明

图1是本发明用于mcu的ldpc码纠错方法的流程图;

图2是本发明用于mcu的ldpc码纠错模块的结构图;

图3是实施例中ldpc码的深度神经网络结构图;

图4是实施例中ldpc码与传统bch码的性能比较图。

具体实施方式

下面结合附图与具体实施方式对本发明作进一步详细的描述。

实施例一

本实施例一种用于mcu的ldpc码纠错方法,其流程如图1所示,包括如下步骤:

s1步,根据设定ldpc码长和码率构造ldpc的校验矩阵h,由校验矩阵h转换得到生成矩阵g,并将校验矩阵h和生成矩阵g进行储存。

具体地说,设定ldpc码长为n,待输入信息序列x的长度为k,校验位长度为m,码率为r=k/n;利用maykay构造法,构造出校验矩阵h。

由校验矩阵h转换得到生成矩阵g,是指:将校验矩阵h的右半部分h2求逆,再乘校验矩阵h的左半部分h1,得到生成矩阵g的右半部分g2;生成矩阵g的左半部分g1设定为大小为k×k的单位矩阵i:

其中,生成矩阵g的大小为k×n。

s2步,输入长度为k的信息序列x;基于生成矩阵g,将信息序列x进行编码得到码字y;将码字y编制成码字信息并向外传输。

具体地说,基于生成矩阵g,将信息序列x与生成矩阵g相乘得到长度为n的码字y:

y=x×g。

s3步,接收码字信息,得到带噪码字y′;使用深度学习译码法将带噪码字y′直接译码成码字x。

具体地说,使用深度学习译码法将带噪码字y′直接译码成码字x,是指:包括以下分步骤:

s31步,构建深度学习模型:采用dnn模型,设定模型输入层维度、隐藏层层数以及各层网络的神经元个数、输出层神经元个数,在隐藏层的输出部分添加激活函数,设定模型的损失函数;

s32步,训练模型:构建数据集,数据集为多组的带噪码字y′,标签为原始码字的信息序列x;将数据集按设定比例分为训练集和验证集;将训练集输入到dnn模型,通过反向传播算法来更新模型的参数使损失函数收敛,当验证集的准确率和损失函数趋于稳定时停止训练,保存模型;

s33步,将保存的模型作为纠错模型,带噪码字y′通过纠错模型后译码为码字x。

相比于传统方式采用汉明码和bch码,本发明使用ldpc码作为差错控制码,在相同码长和码率的条件下具有更强的纠错能力,使mcu具有更高的可靠性;本发明使用深度神经网络译码,相比传统的bp迭代译码进一步提升了ldpc的性能,并且降低了译码的迭代次数和复杂度。

为实现上述ldpc码纠错方法,本实施例提供一种ldpc码纠错模块,其结构如图2所示,包括:

ldpc矩阵储存模块,用于根据设定ldpc码长和码率构造ldpc的校验矩阵h,由校验矩阵h转换得到生成矩阵g,并将校验矩阵h和生成矩阵g进行储存;

ldpc编码模块,用于基于生成矩阵g,将长度为k的信息序列x进行编码得到码字y;

以及ldpc译码模块,用于接收带噪码字y′,使用深度学习译码法将带噪码字y′直接译码成码字x。

具体地说,所述ldpc矩阵储存模块中,设定ldpc码长为n,校验位长度为m,码率为r=k/n;利用maykay构造法,构造出校验矩阵h。

所述ldpc矩阵储存模块中,由校验矩阵h转换得到生成矩阵g,是指:将校验矩阵h的右半部分h2求逆,再乘校验矩阵h的左半部分h1,得到生成矩阵g的右半部分g2;生成矩阵g的左半部分g1设定为大小为k×k的单位矩阵i:

其中,生成矩阵g的大小为k×n。

所述ldpc编码模块中,基于生成矩阵g,将信息序列x与生成矩阵g相乘得到长度为n的码字y:

y=x×g。

实施例二

本实施例以码率为7/15的ldpc码为例进行来说明。一种用于mcu的ldpc码纠错方法,包括如下步骤:

s1步,设定ldpc码长n为15bit,待输入信息序列x的长度k为7bit,校验位长度m为8bit,码率r=7/15;根据码长和码率使用maykay构造法构造ldpc的校验矩阵h,维度为8×15。

将校验矩阵h转换为对应的生成矩阵g,生成矩阵g维度7×15。

s2步,通过编码前长度为7的信息序列x与ldpc码生成矩阵g相乘得到编码后长度为15的码字y;将码字y编制成码字信息并向外传输。

s3步,接收码字信息,得到带噪码字y′;使用深度学习译码法将码字y′直接译码成码字x。是指包括以下步骤:

s31步,构建深度学习模型:采用dnn模型,设定模型输入层维度为15,隐藏层层数为3以及各层网络的神经元个数分为别2048、1024、1024,输出层神经元个数为128,模型结构如图3所示。在隐藏层的输出部分添加激活函数为relu函数,设定模型的损失函数为交叉熵;

s32步,训练模型:构建数据集,数据集为多组的带噪码字y′,标签为原始码字的信息序列x;将数据集按7:3的比例分为训练集和验证集;将训练集输入到dnn模型,通过反向传播算法来更新模型的参数使损失函数收敛,当验证集的准确率和损失函数趋于稳定时停止训练,保存模型;

s33步,将保存的模型作为纠错模型,带噪码字y′通过纠错模型后译码为码字x,完成译码。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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