ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

FM立体声仿真链路拆解:从复合基带到Simulink建模

FM立体声仿真链路拆解:从复合基带到Simulink建模 简介通信原理课程设计调频仿真系统是一份面向通信工程专业本科生的课程设计论文范例基于MATLAB/Simulink搭建调频立体声广播系统的发射端与接收端仿真模型内容涵盖FM调制解调原理、频分复用思想、左右声道信号处理及参数设置方法适合正在完成通信原理课程设计或学习Simulink仿真的学生参考。资源为单个doc文档共1个文件总大小396KB文档结构包含答辩书、设计总结、目录、原理概述、设计方案与参考文献等整体层次清晰。目前已有376人学习浏览在同类设计资料中具有一定参考热度。通过阅读这份文档可以直观了解FM立体声系统从理论分析到模型仿真的全过程获得具体建模思路与调试经验对撰写课程设计论文、巩固通信原理实践能力均有帮助。1. FM立体声仿真从单声道到复合基带的一次链路拆解通信原理课程设计里安排调频立体声系统建模这个题目比普通单声道FM仿真难在它不是一个调制器的事而是一次完整的频分复用链路要在200kHz信道间隔里同时放下左右声道信息、导频和辅助通道而且每个频段之间不能串扰。用Simulink搭这套系统能顺带把滤波器过渡带选择、副载波恢复、鉴频后信噪比分配这些书本上容易跳过的问题过一遍。适合正在做通信原理课设的本科生也适合想快速复习模拟调制链路的老工程师。本文围绕这套调频仿真系统把收发两端的信号布局、Simulink参数设置和常见翻车点串起来讲。2. 复合基带频谱布局与副载波参数设计的账2.1 单声道FM的200kHz频道间隔是怎么算出来的先回到单声道FM的参数。调制信号最高频率fm15kHz最大频偏Δf75kHz按卡森公式B 2(Δf fm) 2 × (75 15) 180kHz所以频道间隔取200kHz多出的20kHz是留给相邻电台频谱泄漏的保护带。在Simulink里对应FM调制模块的Frequency deviation参数这个数值别直接照抄它决定的是瞬时频率偏移范围跟载波频率、采样率之间的比例关系直接影响仿真能否稳定跑完后面发射端部分会具体说。单声道时期这180kHz带宽只服务一路音频信道利用率并不高。如果直接用两个独立FM发射机传左右声道一个电台就要占两条信道这不现实。立体声广播的解决思路是在进入FM调制器之前先把两路音频变换成一个复合基带信号再对FM载波调频。2.2 立体声复合基带各频段的划分复合基带的构造方式如下左声道L与右声道R都是50Hz到15kHz的音频信号先做加减变换得到和信号(LR)和差信号(L-R)。和信号保留在0到15kHz频段差信号对38kHz副载波做抑制载波双边带调制DSB-SC搬到23kHz到53kHz频段。19kHz处插入一个单频导频供接收端恢复38kHz相干载波。54kHz以上留出16kHz给辅助通信通道。频段承载信号带宽用途0 – 15 kHzLR15 kHz单声道兼容信号19 kHz导频极窄恢复38kHz副载波23 – 53 kHz(L-R) DSB-SC30 kHz立体声差信号59 – 75 kHz辅助通道16 kHz备用数据等三个主要频段互不交叠接收端用带通滤波器就能把它们分离出来这就是频分复用的核心逻辑。这里要注意的是23kHz到53kHz并非左右对称分布在38kHz两侧下边带到23kHz上边带到53kHz两个边带各15kHz带宽正好对应差信号的最大频率。这段频谱布局要在发射端仿真模型的Spectrum Scope里能够直接辨认出来如果看不到三个明显的频谱块说明基带构造环节的参数设置有问题。2.3 为什么差信号选DSB-SC而不是带载波AM如果把差信号用普通AM调制38kHz载波本身会消耗掉大部分发射功率而这部分功率在接收端毫无信息量。FM立体声广播的频偏总量固定复合基带信号的功率分配直接决定各通道最终的信噪比把功率浪费在副载波上实际听到的立体声分离度会明显变差。DSB-SC把功率全部集中在两个边带上代价是接收端需要本地恢复38kHz载波才能解调。19kHz导频就是为这个目的设置的。接收端把导频滤出来二倍频后得到38kHz相干载波再与23-53kHz带通滤波器的输出相乘低通滤波后就能恢复差信号。在Simulink仿真里频率是精确已知的所以导频提取可以直接用窄带滤波器加Frequency Multiplier模块或放大二倍频实现不需要做锁相环。但如果是实际硬件接收机导频必须做锁定才能保证解调质量这是纯仿真环境容易忽略的差异。3. 发射端仿真模型搭建从左右声道到FM已调波3.1 左右声道测试信号怎么生成设计任务要求左右声道可以用同频单音信号只是幅度、相位不同。Simulink里直接放两个Sine Wave模块最简单也可以用MATLAB脚本生成波形后再通过From Workspace模块导入。后一种做法的好处是信号参数一目了然调起来方便后续做定量误差分析时也能复用同一组数据。% 生成左右声道测试信号 fs 2e6; % 采样率2MHz为FM已调波留够过采样 Duration 0.05; % 仿真时长50ms t (0:1/fs:Duration-1/fs); f_audio 1e3; % 音频频率1kHz L 1.0 * sin(2*pi*f_audio*t); % 左声道 幅度1 R 2.0 * cos(2*pi*f_audio*t); % 右声道 幅度2与L相差90度 % 写入工作区Simulink的From Workspace模块按两列读取 in_L [t, L]; in_R [t, R];这段代码的关键在采样率选择。FM调制后信号的理论带宽按复合基带最高频率53kHz计算B 2×(7553) 256kHz采样率必须远大于2倍带宽2MHz能保证后续滤波器设计有足够的过渡带空间。幅度设为1和2是为了在频谱上能清楚区分两路信号的能量差异相位差90度则让LR与L-R都保持非零避免某一支路信号消失。3.2 复合基带生成的模块链路在Simulink里按顺序串接以下模块步骤模块作用1From Workspace ×2 或 Sine Wave ×2左右声道信号源2Sum / Sum1计算 LR 与 L-R3ProductL-R 与 38kHz 副载波相乘实现DSB-SC4Gain导频幅度缩放一般取基带信号幅度的0.1倍5Sum2叠加 LR、DSB-SC信号、导频得到复合基带6Zero-Order Hold将连续信号采样成离散序列供频谱分析7Spectrum Scope观察复合基带频谱DSB-SC的实现可以直接用Product模块把差信号与Sine Wave输出的38kHz正弦相乘也可以用Communications Toolbox里的DSBSC AM Modulator Passband模块。前者更直观后者参数更规范我一般用前者因为在课设环境里减少模块依赖比追求规范更有价值。38kHz副载波的Sine Wave参数中幅度设为1频率设为38000采样时间建议与系统采样率一致。导频的叠加位置在Sum2模块中用一个Gain模块把19kHz正弦缩放到合适幅度再接进来。导频幅度过大会挤占有效调制深度过小则接收端不容易滤波提取0.1倍左右的幅度是常见做法。3.3 FM调制模块的参数设置复合基带信号构建完成后接入FM Modulator Passband模块。这里建议用通带模型而不用基带模型因为后面接收端要直接观察已调波频谱通带模型更接近真实射频链路。参数设置如下参数数值说明Carrier frequency500 kHz仿真用载波远小于采样率一半Frequency deviation75 kHz对应实际广播标准最大频偏Initial phase0载波初始相位Sample time1/fs与全局采样率保持一致载波频率选500kHz、采样率2MHz时FM已调波的瞬时频率范围大致在375kHz到625kHz之间加上复合基带扩展后上下边带也远低于1MHz的Nyquist频率不会出现频谱混叠。如果采样率设太低比如100kHzFM已调波会直接折叠到基带内Spectrum Scope里的显示将完全不可用。FM调制前最后确认一遍复合基带的频谱形状。如果Spectrum Scope里0-15kHz、19kHz、23-53kHz三个特征清晰可见再接FM调制器如果频谱糊成一片优先检查Sum2模块的符号方向L-R接反或导频被减法器减去是最高频的接错情形。4. 接收端解调链路分路滤波与副载波恢复的实现要点4.1 接收端整体通路结构接收端Simulink模型可以封装成一个子系统输入是发射端输出的FM已调波输出是重建的左右声道。链路顺序是FM Demodulator Passband模块完成鉴频得到复合基带信号之后分三路并联——低通滤波器提取LR带通滤波器提取23-53kHz的DSB-SC信号窄带滤波器提取19kHz导频导频二倍频后与DSB-SC信号相乘再经过低通滤波器恢复L-R最终用Sum和Gain模块做矩阵运算L (LR) (L-R) R (LR) - (L-R)这里的加减运算是代数运算不是功率合成。Simulink里可以直接用两个Sum模块完成增益分别为0.5因为前面得到的是和与差需要除以2才还原原始幅度。4.2 滤波器参数设计16阶够不够用课设原文里滤波器都用了16阶这个阶数在采样率较低、过渡带要求宽松的前提下可行但在2MHz采样率下16阶FIR滤波器的过渡带宽度远远不够。16阶等波纹FIR在2MHz采样率下过渡带大概有几十千赫兹不可能在15kHz和19kHz之间做出足够陡的衰减。实际做的时候需要把阶数提高到64阶以上或者改用IIR滤波器。滤波器类型通带阻带/截止阶数建议LPF1 提取LRFIR等波纹0 – 15 kHz18 kHz 衰减60dB64BPF 提取DSB-SCFIR等波纹23 – 53 kHz19kHz、57kHz 衰减60dB128导频窄带BPFIIR Butterworth19 kHz ± 100 Hz-4LPF2 提取L-RFIR等波纹0 – 15 kHz18 kHz 衰减60dB64这些滤波器可以在FDATool里设计也可以用MATLAB脚本直接生成系数再导入到Digital Filter Design模块。脚本方式的好处是参数留痕论文里能写清楚设计过程。导频滤波器不建议用FIR19kHz中心频率、200Hz带宽在2MHz采样率下需要上千阶FIR性能差且仿真极慢4阶IIR带通就够用。4.3 用脚本验证滤波器是否真的分得开频段在连完整的解调链路之前先用MATLAB脚本验证滤波器设计是否满足分离要求这一步能省下大量Simulink排错时间。Fs 2e6; % 采样率 lpFilt designfilt(lowpassfir, ... SampleRate, Fs, ... PassbandFrequency, 15e3, ... StopbandFrequency, 18e3, ... PassbandRipple, 0.1, ... StopbandAttenuation, 60); [H, f] freqz(lpFilt, 2048, Fs); plot(f/1e3, 20*log10(abs(H))); xlabel(频率 (kHz)); ylabel(幅度 (dB)); title(LPF 0-15kHz 频率响应); grid on;这段代码用designfilt设计等波纹FIR低通滤波器PassbandFrequency是通带边缘15kHzStopbandFrequency是阻带起点18kHz在19kHz导频位置已经有60dB以上衰减。StopbandAttenuation设60dB是为了保证LR通道里基本看不到导频和DSB-SC残留。如果这个响应曲线不达标后面的声道分离度一定会出问题先调滤波器而不是先调Simulink模型。4.4 导频恢复38kHz副载波的实现细节导频经过窄带带通滤波后得到一个19kHz正弦二倍频可以用三种方式Simulink的Math Function模块选pow2、Frequency Multiplier模块、或者直接把导频信号自己乘自己再经带通滤波。自己乘自己的方式会产生19kHz的二次谐波38kHz同时还有直流分量需要再接一个高通或带通滤波器筛出38kHz分量。后两种方式在原理上等价仿真结果也基本一致。相干解调的乘法器输出包含38kHz附近的寄生分量必须再接LPF2恢复0-15kHz的差信号。LPF2的参数与LPF1一致因为差信号与和信号带宽相同。这里还有一个容易被忽略的点如果导频恢复的38kHz载波与发射端副载波存在相位差φ解调输出会乘上cosφ幅度衰减左右声道立体声分离度随之下降。在Simulink里相位差来自滤波器群延迟解决办法是给LR支路也串联相同延迟量的滤波器让两路时延对齐。5. 从频谱与重建波形验证仿真系统是否真能分离左右声道仿真跑完不能只看波形大概像就收工课设答辩时老师最常问的就是“你怎么证明你解出来的确实是左声道和右声道”。验证分两步先看频域特征再看量化误差指标。频谱验证看三点。第一复合基带频谱在0-15kHz、19kHz、23-53kHz三个位置是否有清晰的谱峰19kHz处应该是单根谱线如果有带宽扩展说明导频信号被意外调制了。第二DSB-SC频段中心38kHz处应该是频谱凹陷不应有残留载波谱线若出现明显谱峰说明副载波泄漏通常是Product模块参数中载波幅度没归零或混入了直流偏置。第三FM已调波的Spectrum Scope中频谱应该以载波500kHz为中心左右各扩展约128kHz形状类似钟形分布。这三项都正常再进入波形对比。波形验证建议在Simulink里用To Workspace模块把重建的L、R导出到MATLAB工作区与原始信号做对齐后计算SINAD和串扰。% 计算左右声道重建质量 L_rec L_out; % 从Simulink导出的重建信号 R_rec R_out; % 幅度归一化后计算SINAD L_hat L_rec / rms(L_rec) * rms(L); SINAD_L 10*log10(mean(L.^2) / mean((L - L_hat).^2)); % 串扰重建R中混入的L成分 crosstalk 10*log10(mean((R_rec - R).^2) / mean(R.^2)); fprintf(左声道SINAD: %.2f dB\n, SINAD_L); fprintf(右声道串扰: %.2f dB\n, crosstalk);SINAD在40dB以上说明重建信号与原始信号基本一致串扰低于-30dB说明左右声道分离度可以接受。若串扰过大优先检查两路滤波器的群延迟是否一致其次检查导频倍频后的38kHz载波是否存在谐波污染。还有一个实际仿真中常见的坑是Simulink变步长求解器在滤波器阶数较高时步长会变得极小仿真速度骤降这时在Solver配置里把求解器固定为ode4、步长设为1/fs速度和稳定性都能改善。本文还有配套的精品资源点击获取
返回列表