通过AWGN信道发送LDPC编码的QPSK调制比特流

通信链路:信源产生随机比特,经过LDPC编码、QPSK调制,通过AWGN信道传输,再经QPSK解调(软输出)和LDPC译码,最终恢复信息比特。


系统模型

1. 信源

2. LDPC编码

3. QPSK调制(格雷映射)

4. AWGN信道

5. QPSK解调(软判决,计算LLR)

6. LDPC译码(置信传播)

7. 性能指标


仿真步骤(MATLAB示例)

% 参数设置
k = 648;          % 信息比特长度(例如IEEE 802.11n)
n = 1296;         % 码字长度
R = k/n;          % 编码效率
EbN0_dB = 2;      % Eb/N0 (dB)
M = 4;            % QPSK

% 1. 生成随机信息比特
u = randi([0,1], 1, k);

% 2. LDPC编码(需要LDPC矩阵,此处简化,假设有编码函数)
% 例如使用Communications Toolbox的ldpcEncoder
% 这里用随机矩阵示意,实际应使用结构化矩阵
H = dvbs2ldpc(R);  % 例如DVB-S2标准矩阵
enc = comm.LDPCEncoder(H);
c = enc(u.').';    % 编码,得到1×n的码字

% 3. QPSK调制
c_reshape = reshape(c, 2, []);  % 每列两个比特
sym = (1/sqrt(2)) * ( (2*c_reshape(1,:)-1) + 1j*(2*c_reshape(2,:)-1) );

% 4. AWGN信道
EbN0 = 10^(EbN0_dB/10);
EsN0 = 2*R*EbN0;          % 因为QPSK每符号2个比特,且编码效率R
sigma2 = 1/(2*EsN0);      % 噪声方差,Es=1
sigma = sqrt(sigma2);
noise = sigma*(randn(size(sym)) + 1j*randn(size(sym)));
r = sym + noise;

% 5. QPSK解调(软判决,计算LLR)
LLR0 = (2/sigma2) * real(r);   % 对应第一个比特
LLR1 = (2/sigma2) * imag(r);   % 对应第二个比特
% 合并LLR,注意顺序与编码时一致
LLR = zeros(1, n);
LLR(1:2:end) = LLR0;
LLR(2:2:end) = LLR1;

% 6. LDPC译码
dec = comm.LDPCDecoder(H);
decodedBits = dec(LLR.').';   % 译码,得到估计的信息比特

% 7. 计算误比特数
numErr = sum(u ~= decodedBits);
BER = numErr / k;
disp(['BER = ', num2str(BER)]);

参考代码 通过AWGN信道发送LDPC编码的QPSK调制比特流 www.youwenfan.com/contentcsm/83310.html

关键公式总结

  1. 编码效率

  2. QPSK符号能量(归一化)。

  3. 噪声方差

  4. LLR计算(对于等概格雷映射QPSK):

  5. 信噪比转换


注意事项

 

专注于matlab/simulink,电子电路,编程