基于Simulink的DPCM+2PSK频带传输系统仿真与误码率分析

发布时间:2026/9/20 0:59:26
基于Simulink的DPCM+2PSK频带传输系统仿真与误码率分析 简介这是一份围绕语音信号频带传输通信系统仿真设计的PDF文档适合通信工程、电子信息类学生及需要完成课程设计或MATLAB/Simulink仿真的学习者。资源基于DPCM编码与PSK调制完整呈现了从信源编码、频带调制到加性高斯白噪声信道传输、接收端解调解码的全过程。PDF共1个文件大小880KB内容精炼便于快速阅读目前已有138人学习浏览。文档详细描述了设计原理、模块搭建和仿真结果包含DPCM编解码、2PSK调制解调、误码率分析等关键知识点并配有Simulink模型设计思路与波形观察可帮助读者掌握频带传输系统的基本理论、理解DPCM与PSK的原理同时为独立完成课程设计报告提供参考。1. 频带传输的起点语音不能直接过信道一段1 kHz的语音直接变成电信号送进无线信道通常在接收端什么都听不到。原因在于语音基带信号的能量集中在低频段而无线信道呈现带通特性低频分量被直接滤除。工程上通用的做法是先对信源做压缩编码再把码流调制到载波上这就是数字频带传输。本套仿真方案选择 DPCM2PSK 的组合在 MATLAB/Simulink 里搭出一条从信源编码到相干解调的完整链路。它不追求先进算法胜在每个模块都能单独观察中间波形适合用来建立“编码-调制-信道-解调解码”的系统级直觉。对于正在做通信原理课设、或者想把课本上的相位调制落实到可运行模型的读者这是一套可以直接复现的参考方案。2. DPCM编码不传绝对值只传预测差值2.1 DPCM原理与选型理由2.1.1 为什么要用DPCM而不是直接PCM先看PCM路径对每个采样点做8位量化传输的是幅度绝对值。优点是直观缺点是语音信号相邻采样点高度相关前后差值的动态范围远小于绝对值本身。DPCM把这个相关性利用起来用前一个样值做预测只对当前样值与预测值的差值做量化编码。差值编码后统计能量比原信号低得多同样比特率下量化噪声更小反过来维持同样失真只需要更低的码率。增量调制DM也可以看作DPCM的1比特特例但语音瞬时斜率变化大简单DM容易过载——信号斜率超过阶梯跟踪速度时重建波形出现斜率过载失真。DPCM把差值量化成多个电平相当于一个多级台阶的增量量化器既保留了差值编码的动态范围优势又不会像DM那样频繁过载。这就是课程设计里选DPCM而不选DM或PCM的理由。2.1.2 预测差值的基本计算DPCM编码器核心是一阶预测器e[n] x[n] - x_hat[n] q[n] quantize(e[n]) x_hat[n1] x_hat[n] q[n]编码器输出的是量化后的差值序列 q[n]解码端做累加还原x_rec[n] x_rec[n-1] q_rec[n]。x_hat 是编码器内部预测状态等价于解码端重建值。发送端和接收端各自维护一个累加器只要 q[n] 在信道中没有出错重建序列就和发送端预测值完全一致。这里也埋下一个隐患任何一端预测状态失步重建波形都会整体偏移后面联调时要求收发端参数完全对称原因就在这里。2.2 Simulink中的DPCM编码链路原文模型里DPCM编码模块直接接在正弦信源后面参数使用默认值。默认配置对应一阶预测器加均匀量化器量化电平数决定差值细粒度。电平数越多差值量化越接近无损但编码位数随之增加。语音信源场景下量化电平数在8~16之间时恢复语音已经听不出明显杂音。量化电平数编码位数差值量化效果适用场景42差值精度粗语音有颗粒感低码率演示83差值精度适中语音清晰课程设计默认档164差值精度高码率增加高质量恢复模型搭建顺序添加 Sine Wave 模块Frequency 设为 2π rad/s即 1 Hz低频基带信号在示波器上能看到完整周期添加 DPCM Encoder 子系统预测器阶数保持 1连接 Scope 观察编码输出。输出波形有两个明显特征差值信号幅度集中在零点附近波形不再像正弦编码输出呈台阶状但包络与原始信号一致。如果看到差值序列被削顶说明量化器满量程偏小需要调大电平范围。2.3 用脚本复现DPCM路径确认量化参数Simulink模型观察波形只能定性看到效果想确认量化步长对恢复信号的影响用 MATLAB 脚本跑一遍更直接。下面是一阶 DPCM 的等价实现fs 8000; dt 1/fs; t (0:fs-1)*dt; x sin(2*pi*1*t) 0.5*sin(2*pi*3*t); % 合成语音近似信号 step 0.125; % 量化步长对应8电平均匀量化 pred 0; % 一阶预测器状态 idx zeros(size(x)); % 输出的编码索引 xq zeros(size(x)); % 本地重建序列 for k 1:length(x) e x(k) - pred; % 差值 idx(k) round(e / step); % 量化到整数格子 dq idx(k) * step; % 反量化 pred pred dq; % 更新预测状态 xq(k) pred; end % 解码端仅用idx恢复验证累加器重建 x_rec zeros(size(x)); for k 2:length(x) x_rec(k) x_rec(k-1) idx(k) * step; end fprintf(编码后差值动态范围: %.3f, 原信号动态范围: %.3f\n, ... max(abs(diff(x))), max(abs(x)));这段脚本把 DPCM 降到最朴素的形式idx 是真正送入信道的内容step 控制量化精度。量化步长越小重建波形误差越小但 idx 取值范围变大编码位数变多。脚本最后对比原信号与差值的动态范围可以验证 DPCM 的核心收益。实际 Simulink 模型把这一步封装成子系统调整参数时关注量化电平数而不是 step 本身。3. PSK调制与相干解调让码流坐上载波3.1 从双极性码到相位键控DPCM输出的是多电平差值码要先变成二进制码流才能做 PSK。2PSK 规则很简单二进制“1”对应载波相位 0二进制“0”对应载波相位 π。用双极性不归零码与正弦载波相乘即可实现——双极性码取 1 时载波保持原相位取 -1 时载波反相。调制原理有两条实现路径。模拟调制法先做码型变换再进乘法器课程设计里采用的就是这种好处是链路清晰每个模块对应原理框图的一步。键控法用开关在 0 相位和 π 相位之间切换工程实现更接近实际调制器但在 Simulink 里需要额外处理相位切换时刻的毛刺调试体验不如前者。2PSK 时域表达式为s_psk(t) d(t) * cos(ω_c t)其中 d(t) 是双极性矩形脉冲序列。接收端相干解调时先乘同频同相载波再低通滤波得到基带码流。注意 2PSK 有相位模糊问题接收端载波如果锁定在 π解调结果会 0、1 互换。课程设计直接用同一个载波源分发到调制和解调两侧这个隐患被绕开了。3.2 Simulink搭建码型变换与载波参数原文模型把码型变换封装成 BingChuanBianHuan 子系统内部由 Integer to Bit Converter、Buffer、Unipolar to Bipolar Converter 三个模块串联。核心参数是三处联动参数位置设定值说明Integer to Bit Converter2位DPCM差值码宽度Buffer输出位宽2与编码器位宽匹配Unipolar to Bipolar Converter2单极性转双极性载波频率40π rad/s远高于码元基波频率Integer to Bit Converter 设定为 2 位对应 DPCM 量化电平数 4 个区间。如果 DPCM 编码器电平数超过 4这里的位宽也要同步扩大否则码字被截断接收端恢复的差值序列整体偏小。Buffer 的作用是把串行比特流重组为固定宽度向量位宽不匹配会导致后续乘法器维度错误模型直接报维度不匹配。载波 40π rad/s20 Hz是这套设计里值得注意的选择。输入正弦为 2π rad/s载波取 20 倍频一个码元内能容纳多个完整载波周期示波器可以清楚看出相位跳变。原文所说的“载波必须是输入信号频率的两倍”实际指奈奎斯特意义上的最低约束工程上取 5 到 20 倍更常见低于两倍时一个码元内连一个完整载波周期都放不下解调端低通滤波器无法分离基带和载波分量。用脚本实现同一条调制路径可以更直观看到相位反转% 2PSK模拟调制法脚本等价实现 fc 20; % 载波频率单位Hz对应40π rad/s fs 8000; % 采样率 sps round(fs / (fc*2)); % 每个码元采样点数 data [1 0 1 1 0 0 1 0]; % 待调制二进制码 dd repelem(2*data-1, sps); % 单极性转双极性并保持sps个采样点 t (0:length(dd)-1)/fs; carrier cos(2*pi*fc*t); % 同频载波 psk dd .* carrier; % 乘法器实现相位键控发送“1”时 dd 为 1载波相位不变发送“0”时 dd 为 -1载波相位反转 180 度。接收端用同一载波相乘再经过低通滤波器正负极性包络就能恢复。注意这里载波用 cos 而不用 sin是为了解调端相乘后直接得到实值基带信号不引入额外的 90 度相移。3.3 相干解调链路与低通截止频率接收端按“相乘-低通-抽样判决”三步还原码流。乘法器把已调信号与本地载波相乘输出包含基带分量和 2ω_c 高频分量低通滤波器把高频分量滤除。关键参数低通滤波器截止频率设为 40π rad/s等于载波频率。这里不能设成基带信号频率 2π否则基带码流的高频边缘会被切掉抽样判决时码元边界变模糊。抽样判决器在每个码元中心采样输出 0 或 1判决阈值设在 0 电平。Buffer 与 Bit to Integer Converter 参数与调制端一致同为 2 位。常见做法是在低通后加一个零阶保持器在每个码元周期内锁定判决值避免在电平翻转瞬间采样造成误判。相干解调的前提是本地载波与发送端载波同频同相。课程设计用同一信号源分两路避开了同步问题实际工程需要 Costas 环或平方环做载波恢复那就是另一套设计内容了。4. 高斯白噪声信道与端到端联调4.1 AWGN信道模块与噪声方差控制在调制器和解调器之间插入 AWGN Channel 模块就完成了“发送-传输-接收”闭环。AWGN 参数里噪声数字直接对应噪声方差。原文的做法是先设为 0 跑通全链路再把噪声调大观察劣化。以采样率 8 kHz、信号幅度归一化到 ±1 为例噪声方差与现象的对应关系如下噪声方差信道输出现象解调后语音效果0无叠加噪声波形干净完全清晰0.5载波波形出现细小毛刺基本无感知损失2相位跳变被毛刺覆盖出现明显咔哒声2PSK 相干解调的理论误码率公式是 Pe 0.5·erfc(√(Eb/N0))。在信噪比 10 dB 以上误码率降到 1e-3 量级语音已经可懂低于 6 dB 时误码率快速上升恢复语音出现明显的间歇噪声。Simulink 里如果只观察波形效果方差设在 0.5 到 1 之间就能直观看到相位跳变被毛刺覆盖方差超过 2判决点大量错判解调输出面目全非。4.2 端到端延迟补偿DPCM 编码、Buffer 重组、低通滤波器滤波都会引入固定群延迟。接收端示波器上看到的恢复波形比输入信号晚到几个采样周期这不是系统错误而是各级滤波器阶数带来的固有延迟。原文在参考信号路径上加 Delay 模块对齐波形测延迟用互相关最省事% 计算端到端延迟 [c, lag] xcorr(x_rec, x_orig); [~, i] max(abs(c)); delay lag(i); fprintf(端到端延迟: %d 个采样点\n, delay);测出延迟后在比较支路加上等量的 Delay 模块两个波形就能重合。注意不要试图用低通滤波器的相位响应去“校准”延迟那会改变信号形状也让链路失去可对比性。每改一次滤波器阶数或 Buffer 位宽延迟都可能变化需要重新测量。4.3 语音信源替换与参数重调正弦验证通过后把 Sine Wave 模块替换成语音信号即可。Simulink 里推荐用 From Multimedia File 模块读取 wav 文件采样率与 DPCM 编码器保持一致。录制测试语音可以用下面的脚本% 录制一段测试语音并导出wav recObj audiorecorder(8000, 16, 1); disp(开始录音); recordblocking(recObj, 2); disp(录音结束); voice getaudiodata(recObj); audiowrite(voice_test.wav, voice, 8000);语音信号幅度要归一化到 ±1 之间否则超过 DPCM 量化器满量程会产生削波失真。如果录音音量偏小差值序列动态范围变小接收端恢复信号发闷可以在输入前加增益模块。语音恢复质量的主观判断标准是“可懂而不是保真”误码率低于 1e-3 时清音辅音能分辨浊音自然高于 1e-2 时语句连贯性明显受损能听出字但听不懂整句。5. 误码率验证与三个最容易翻车的参数坑5.1 误码率统计脚本Simulink 里把发送端码流和接收端判决输出分别导出到工作空间再用脚本对比% 从工作空间读取仿真记录变量后执行 err_cnt 0; for k 1:length(tx_bits) if tx_bits(k) ~ rx_bits(k) err_cnt err_cnt 1; end end ber err_cnt / length(tx_bits); fprintf(误码率: %.3e\n, ber);对照 2PSK 理论曲线观察实测误码率与理论值在 1 个数量级内都算正常。偏差过大时检查两点抽样判决点是否落在码元中心以及噪声方差是否设置得过大导致判决器在翻转瞬间采样。5.2 三个最容易翻车的参数坑第一个是载波频率与低通截止频率不联动。解调端低通频率必须跟踪载波设置改了一处不改另一处输出就是一条直线或者高频振荡叠加基带的混合波形。可以用 Spectrum Analyzer 模块直接看低通输出确认只有基带分量再接判决器。第二个是 Integer to Bit Converter 位宽与 DPCM 电平数不匹配。DPCM 量化电平数 M 和编码位数 n 满足 M 2^n两边对不上时差值序列被截断或扩展恢复波形出现台阶状失真。修改后要把 Buffer、Unipolar to Bipolar Converter、Bit to Integer Converter 三处同步改掉任何遗漏都会报维度错误。第三个是 Buffer 重组引入的码元延迟。Buffer 把串行比特攒成固定宽度向量每次重组都会让对齐偏移一个块长度。示波器直接对比输出和输入时看起来像“完全错误”实际只是相位偏移。先用 xcorr 测出延迟再决定 Delay 模块的采样点数。验证达标顺序建议先置零噪声观察波形确定链路通再逐级增大噪声观察波形劣化与理论误码率曲线是否同趋势最后换语音信号主观确认可懂度。每一步失败都能缩小到具体模块而不是在全链路里无头绪排查。最终对比波形时用snr(x_rec - x_orig, x_orig)输出量化噪声信噪比这个数值直接反映 DPCM 量化步长与信道噪声的联合影响比只看波形更定量。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询