DVB-C DEMOD 传输速率计算

本文介绍了64QAM调制技术的基本原理及应用,详细解释了符号率D的计算公式及其与信道带宽的关系。通过具体数值演示了如何计算总传输速率和有效传输速率,并对里德-所罗门编码的编码效率进行了说明。

符号率D=W(1+a)=8/(1+0.16)=6.8966Ms/s
a低通滤波滚动系数 一般为0.16
W信道带宽 一般为8MHz

64QAM 总传输速率S=D*N=6.8966*6=41.379Mbps
N频带利用率log2(QAM) 16QAM 32QAM 64QAM 128QAM 256QAM 对应4 5 6 7 8

64QAM 有效传输速率 SS=S*188/204=38.134Mbps
188/204是DVB-C所使用的里德-所罗门编码RS(204,188)的编码效率
也就是188字节后附加16字节RS码,构成(204,188)RS码,这也可以称为外编码.

clc; clear; %% =================== 参数设置 =================== fs = 640000; % 采样率 (Hz) sample_num =20; % 每个符号的采样点数 Rb = fs / sample_num; % 符号速率 (bps) len_symbol = 100; % 符号个数 bits_per_symbol = 1; len = len_symbol * bits_per_symbol; Fc = Rb * 2; % 载波频率,设为符号速率整数倍 N = len_symbol * sample_num; % 总采样点数 dt = 1/fs; t = (0:N-1)' * dt; % 时间轴列向量 %% =================== 1. 生成原始数据 =================== dataBit = randi([0, 1], 1, len); %% =================== 2. 差分编码 =================== diff_encoded = zeros(1, len); prev = dataBit(1); % 初始参考位可任意设定 for i = 1:len diff_encoded(i) = xor(dataBit(i), prev); prev = diff_encoded(i); end %% =================== 3. 双极性不归零码型变换 =================== % {0,1} -> {-1, +1} polar_levels = 2 * diff_encoded - 1; % 0->-1, 1->+1 %% =================== 4. BPSK 调制(乘法器实现)=================== % 将每个符号扩展成 sample_num 个采样点(保持电平不变) baseband_signal = kron(polar_levels, ones(1, sample_num))'; % 列向量 % 与载波相乘完成调制 carrier = cos(2*pi*Fc*t); modSignal = baseband_signal .* carrier; %% =================== 5. 加入 AWGN 噪声 =================== Snr_dB = 10; % 信噪比 modSignal = awgn(modSignal, Snr_dB, 'measured'); %% =================== 6. 接收端处理 =================== % --- (1) 带通滤波器(BPF)--- [b_bpf, a_bpf] = butter(4, [Fc-Rb/2, Fc+Rb/2]/(fs/2), 'bandpass'); received_filtered = filtfilt(b_bpf, a_bpf, modSignal); % --- (2) 相乘器:与本地同频同相载波相乘 --- local_carrier = cos(2*pi*Fc*t); % 假设完全同步 multiplied = received_filtered .* local_carrier; % --- (3) 低通滤波器(LPF)--- [b_lpf, a_lpf] = butter(4, Rb/(fs/2), 'low'); % 截止频率为符号速率 lpf_out = filtfilt(b_lpf, a_lpf, multiplied); % --- (4) 抽样判决器(每符号中点抽样)--- demod_polar = []; for k = 1:len_symbol center_idx = round((k - 0.5) * sample_num + 1); % 中点索引 sample_val = lpf_out(center_idx); if sample_val > 0 demod_polar = [demod_polar, 1]; else demod_polar = [demod_polar, -1]; end end % --- 极性转比特 --- demod_bits = (demod_polar + 1) / 2; % {-1,+1} -> {0,1} % --- (5) 差分解码 --- demod_final = []; prev_bit = demod_bits(1); for k = 2:length(demod_bits) decoded_bit = xor(demod_bits(k), prev_bit); demod_final = [demod_final, decoded_bit]; prev_bit = demod_bits(k); end %% =================== 7. 误码统计 =================== if length(demod_final) ~= len - 1 error('恢复数据长度异常,请检查差分解码逻辑'); end errorNum = sum(demod_final ~= dataBit(1:end-1)); % 第一个比特无法恢复 BER = errorNum / (len - 1); fprintf('误码数: %d, 误码率: %.6f\n', errorNum, BER); %% =================== 8. 绘图显示 =================== figure; subplot(3,1,1); plot(dataBit, 'o-'); title('原始数据序列'); xlabel('比特序号'); ylabel('值'); axis([0 len+1 -0.1 1.1]); subplot(3,1,2); plot(t(1:10*sample_num), modSignal(1:10*sample_num)); title('DBPSK 调制信号局部波形(前10个符号)'); xlabel('时间 (s)'); ylabel('幅度'); subplot(3,1,3); plot(demod_final, 'o-'); title('解调后数据'); xlabel('比特序号'); ylabel('值'); axis([0 length(demod_final)+1 -0.1 1.1]); % 波特图观察(基带信号) figure; plot(lpf_out(1:2*sample_num*10)); grid on; title('低通滤波器输出(前20个符号)'); xlabel('采样点'); ylabel('电压'); % 星座图(仅展示符号判决点) decision_points = lpf_out(round((0.5:1:len_symbol-0.5)*sample_num)); figure; plot(decision_points, zeros(size(decision_points)), 'bo', 'MarkerFaceColor', 'b'); grid on; title('DBPSK 解调星座图(实轴投影)'); xlabel('判决电平'); ylabel(''); xlim([-2 2]); 在这个系统的双极性不归零码型转换中低通滤波器中加入srrc
最新发布
11-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值