up目录
一、理论基础
基于LDPC(低密度奇偶校验码)和64QAM(64调制解调)的通信链路是一种在数字通信系统中常见的配置,旨在实现高速数据传输和可靠性。下面将介绍这种通信链路的基本原理和结构:
1. LDPC 编码: LDPC 是一种通道编码技术,用于提高数据传输的可靠性。它是一种纠错码,通过在数据中添加校验位来检测和纠正传输过程中的错误。LDPC 码的主要特点是具有低密度奇偶校验矩阵,这使得编解码的复杂度相对较低,但具有出色的纠错性能。
2. 64QAM 调制: 64QAM 是一种调制技术,用于将数字数据映射到模拟信号中。它可以在有限的频带宽度内传输更多的数据,因此适用于高速数据传输。64QAM 将输入的数字比特流分成若干组,每组编码为一个复数点,其中64 表示了复数点的数量。每个点可以在正交调制的I(实部)和Q(虚部)分量上具有不同的振幅和相位,从而可以传输更多的比特。
3. 通信链路结构: 基于 LDPC + 64QAM 的通信链路包括以下主要组件:
-
数据源: 这是要传输的数字数据源,通常是用户生成的信息。
-
LDPC 编码器: 数据从数据源经过 LDPC 编码,增加冗余信息以进行错误检测和纠正。
-
调制器(Modulator): LDPC 编码后的数据经过 64QAM 调制,将数字数据映射到模拟信号。
-
信道: 信号在通信信道中传输,可能会受到噪声、失真和干扰等影响。
-
解调器(Demodulator): 接收端的解调器负责将接收到的信号从模拟信号还原为数字数据。
-
LDPC 解码器: 解调后的数据经过 LDPC 解码,以检测和纠正传输中的错误。
-
数据接收: 最终的解码数据被发送给数据接收器,用于后续的数据处理或显示。
信道编码是数字通信系统的重要组成部分。LDPC信道编码技术是编码界的重要成果之一。1/2码率的二元LDPC码在AWGN信道下的性能距信息理论中的Shannon极限仅差0.0045dB,它是目前距Shannon极限最近的纠错码。Gallagar在1962年提出LDPC码,1996年经过Mackey、Spielman和Wiberg等人的再发现后,LDPC码以其性能优越、全并行迭代译码结构、便于硬件实现等优点,在无线通信、存储工业等领域得到了广泛应用。
LDPC 码作为纠错能力最强的信道编码,在深空通信中具有广泛的应用前景。研究了LDPC 码的BP 译码算法,并对该算法进行了仿真,分析了LDPC 码的误码率随BP 译码迭代次数的演化情况,提出了一种改进的B P 译码算法。经过仿真验证,改进的BP 译码算法,在信噪比低于译码阈值时能够大幅地减少译码迭代次数,降低运算复杂度,而性能却几乎没有降低。
校验矩阵的构造是编码的前提,采用了随机构造法构造,并对矩阵的多种变换方法进行分析,比较了优缺点。译码算法是LDPC码的关键,译码复杂度的大小直接影响系统的实现。主要分硬判决译码、软判决和复合译码。
一个LDPC码v vv 是一种(n nn,k kk)线性分组码,码长为n nn,信息序列长度为k kk,可由其校验矩阵H所唯一确定,校验矩阵中1的数目远小于0的数目,具有稀疏性。H的维数是m × n m\times nm×n,每一行对应一个校验方程(也称校验节点),每一列对应码字的一位(也称变量节点)。每一行中非零元素的个数称为行重,每一列中非零元素的个数称为列重。
DPC码的译码方法可以分为两大类:基于硬判决的译码和基于软判决的译码。基于硬判决的译码运算量小比较实用;而软判决译码采用了后验概率信息,并通过迭代运算,使得LDPC码的性能得以逼近香农限。本博文主要关注基于软判决的译码及其改进算法。
概率域上的BP算法包含了大量的连乘运算,硬件实现时具有较高的计算复杂度,资源消耗大。将概率信息用似然比表示,就得到对数域上的BP算法,大量的乘法运算可以转化为加法运算。
(1)信道初始消息:
(2)校验节点传递给变量节点的外信息:
(3)变量节点传递给校验节点的外信息:
(4)译码判决,经过迭代后变量节点的后验概率相应的修改为:
故后验概率大于0,将vi判决为0,反之判决为1。(对数值大于0,说明真数大于1,及分子对应的vi为0的概率大于分母对应vi为1的概率,故将vi判决为0)
二、核心程序
%******************************************************
for EbN0=start:step:finish;
Liner_EbN0=10^(EbN0/10);
pe_number=0;
variance=0.5*(Eb/Liner_EbN0)/r; % 噪声方差, 来源于a^2/(2*delta^2)=Liner_EbN0,a^2信息幅值的平方即比特能量, 2*delta^2=N0. N0/r得到编码后的噪声功率谱密度
for number_frame=1:1:n_frame % variance是单独加在同相(正交相)的噪声功率普密度
[EbN0,number_frame]
x_msg = (sign(randn(1,size(G,1)))+1)/2; % random bits
x_code_msg= mod(x_msg*G,2); % coding
in=x_code_msg;
x_tx_msg= QAM64m(in); % 16QAM modulation
real_tx=real(x_tx_msg); imag_tx=imag(x_tx_msg);
waveform= x_tx_msg+sqrt(variance)*( randn(size(real_tx)) + randn(size(imag_tx))*i ) ; % AWGN transmission
[f0,f1]=QAM64d(waveform,2*variance);
LLR=log(f0./(f1+eps));
[z_hat, success, k] = log_ldpc_decode(H,LLR,max_iter);; % likelihoods
x_dec_msg = z_hat(1:size(G,1)); % 码率1/2 时使用
pe_number=pe_number+sum(x_msg~=x_dec_msg);
current_time=fix(clock);
fprintf('i am working %g,total(%g) %g年 %g月 %g日 %g时 %g分 %g秒\n\n',Q,(((finish-start)/step)+1)*n_frame,current_time(1),current_time(2),current_time(3),current_time(4),current_time(5),current_time(6))
Q=Q+1;
fprintf('\n\n')
end
pe=pe_number/(L_frame*n_frame);
plot_pe=[plot_pe,pe];
end
up29
三、测试结果
matlab2021a测试结果如下