ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

基于System View的2ASK调制解调器设计与仿真分析

基于System View的2ASK调制解调器设计与仿真分析 简介基于System View的2ASK调制解调器设计文档是一份面向通信工程、电子信息类专业学生的毕业设计论文围绕2ASK调制解调器仿真建模与性能评估展开可解决课程设计或毕设中仿真方案搭建、波形观察与指标分析的难题。文档完整阐述2ASK调制原理、System View平台操作方法并对调制、解调的两种实现方式进行介绍和比较压缩包仅含1个doc文件大小约1.99MB可直接阅读全文涵盖摘要、绪论、System View应用、2ASK原理、系统设计、测试结果及小结等章节。该文档已有886人学习浏览内容从通信系统模型与数字通信技术出发逐步深入到2ASK功率谱密度和抗噪声性能并通过示波器输出前后波形记录给出调制、解调、性能评估的完整仿真过程便于读者快速搭建模型、验证设计方案也能借鉴其论文结构与写作思路。1. 为什么2ASK值得在System View里重做一遍做通信系统仿真的人多半在System View和MATLAB之间摇摆过。MATLAB灵活但搭一个完整的调制解调链路要写的代码量不小System View的思路完全不同它把所有环节抽象成图标拖出来连上线、设好参数就能跑。对于课程设计或者方案验证这种图形化方式能让你把注意力放在信号流本身而不是语法上。这篇博文要拆的是一个经典题目基于System View的2ASK调制解调器设计。2ASK是最老的数字调制方式也是FSK、PSK、QAM这些后续调制的基础弄懂它的建模方法后面做2FSK、QPSK基本就是换参数的事。文中会给出调制端和解调端的完整建图思路、参数设置表和排查经验照着搭就能出波形。2. System View的仿真环境与系统定时设置2.1 图标库与数据流建模方式System View的设计窗口里左侧竖排的是器件图标库常用的有信号源Source、加法器Adder、乘法器Multiplier、算子Operator、函数Function、接收器Sink和连接节点MetaSystem。每个图标本质上是一个处理模块输入输出端口用连线表示数据流方向。搭建2ASK系统时核心路径是信号源产生基带数字信号 → 乘法器与载波相乘 → 接收器Analysis观察波形。这条链路里不需要写代码但每个模块的参数对话框里填什么直接决定波形对不对。实际操作时从库中拖出图标后双击进入参数设置对话框。信号源库里有周期信号、脉冲序列、PN序列等2ASK调制端的基带信号一般选PN序列伪随机序列因为它能模拟真实的二进制数据流且频谱特性接近随机信号。PN序列的参数页里需要设置幅度Amplitude、码速率Rate、电平数Levels和偏移Offset。常见做法是幅度设为1V码速率设为1000Hz这样每个码元宽度是1ms便于在示波器上直接读时间轴。接收器图标要设置为Analysis属性相当于示波器它只有输入没有输出。分析窗里可以同时放置多个接收器分别接在基带信号输出端、调制信号输出端和解调信号输出端这样运行一次仿真就能对比三级波形。需要注意的是接收器图标会占用一个Token编号后续在分析窗里切换波形时靠的是这个编号所以最好按信号流向依次放置避免编号混乱。2.2 系统定时与采样率的工程设置System View是离散时间系统运行前必须设置系统定时System Time这个步骤在搭建2ASK系统时最容易出错。单击工具栏上的System Time按钮弹出的对话框里有几个关键参数起始时间Start Time、终止时间Stop Time、采样率Sample Rate、采样点数No. of Samples和频率分辨率Freq.Res.。这些参数不是孤立的它们之间满足采样点数 仿真时长 / 采样间隔如果不对System View会自动调整但自动调整的结果往往不是我们想要的。关于采样率System View文档里的经验值是系统信号最高频率的5到7倍当采样率超过最高频率10倍时仿真波形几乎没有失真。但这里有一个细节常被忽略2ASK信号是基带信号与载波的乘积信号最高频率应该是载波频率加上基带信号带宽而不是只看基带信号的频率。举个例子如果载波频率设为10kHzPN序列码速率设为1000bps那么2ASK信号的带宽大约是2kHz主瓣宽度信号最高频率约11kHz。按5到7倍的经验值采样率至少要设到55kHz以上保险起见我习惯设成载波频率的10倍即100kHz以上。采样率设得太低调制波形会出现明显的包络失真解调端误码率会异常偏高设得太高则仿真速度变慢文件体积变大。频率分辨率这个参数与采样率、采样点数直接相关Freq.Res. Sample Rate / No. of Samples。如果要在分析窗里观察2ASK信号的功率谱密度需要保证频率分辨率小于信号带宽的十分之一否则频谱上的谱线会糊在一起。一般来说仿真时长至少取几十个码元周期比如PN序列码速率为1000bps一个码元1ms仿真时长取0.1s100个码元采样率100kHz那么采样点数是10000频率分辨率10Hz足够看清2ASK频谱的细节。表2ASK仿真系统定时参数推荐值参数推荐值说明Start Time0s从零时刻开始仿真Stop Time0.1s覆盖约100个码元便于统计Sample Rate100kHz约为载波频率的10倍Time Spacing10us采样间隔为采样率的倒数No. of Samples10000由仿真时长与采样率计算得到No. of System Loops1单次运行后续可做循环统计2.3 信号源与接收器的参数配置调制端的三个核心图标分别是PN序列源、正弦载波源和乘法器。PN序列源在Source库的Periodic/Noise分类下参数设置时有几个选项要特别注意Rate码速率、Levels电平数和Offset偏移。Levels设为2就是二进制序列输出幅度默认在0到1V之间如果希望输出正负对称的波形可以把Offset设为-0.5这样输出就是±0.5V更接近双极性不归零码。双极性码的好处是直流分量为零后续经过带通滤波器时不会因为直流成分产生额外损耗。正弦载波源选择Source库里的Sine Wave频率设为10kHz幅度设为1V相位设为0度。这里要注意System View中的正弦源默认输出是余弦形式还是正弦形式取决于库的实现但2ASK调制对载波初始相位不敏感只要解调端的本地载波与发送端载波同频同相即可这个约束会在相干解调里体现出来。乘法器图标没有可调的参数它只是把两个输入信号做乘积运算。在System View中乘法器的符号是一个圆内有乘号它要求两个输入都是模拟信号。PN序列输出的是数字电平但在System View的信号流里它仍是模拟量电平值所以可以直接连到乘法器。如果后续要做更严格的数字仿真可以用逻辑库里的Gate把PN序列转成真正的数字信号再经过D/A转换器变成模拟波形但在课程设计层面直接相乘已经能正确表达2ASK信号。接收器Sink库中的Analysis图标在仿真结束后会自动打开分析窗口显示波形。若希望同时观察频谱可以在接收器参数对话框里选择不同的显示类型或者用分析窗口菜单中的Spectrum功能对已采集的波形做FFT。System View的接收器还支持把数据导出为文本文件这个功能在做误码率统计时很有用——把解调输出和原始PN序列都导出来在外部用脚本比对比在System View里手动数误码要可靠得多。3. 2ASK信号模型与调制端两种实现方法3.1 2ASK的数学表达与带宽估算2ASK二进制振幅键控用载波幅度的有和无来表示二进制信息数学表达式写为s(t) A·m(t)·cos(ω_c·t)其中m(t)是单极性基带信号取值为0或1cos(ω_c·t)是载波。当m(t)1时输出载波当m(t)0时输出为零。这个表达式也揭示了2ASK的本质它就是一个由基带信号控制的通断开关所以2ASK也常被称为OOKOn-Off Keying。这里有一个值得注意的点如果基带信号是双极性码±1同样的乘法器结构输出的其实是2PSK而不是2ASK。设计时区分这一点很重要。从频域角度看2ASK信号的功率谱由两部分组成连续谱和离散谱。连续谱是基带信号功率谱搬移到载频处的结果离散谱出现在±f_c处由基带信号的直流分量产生。2ASK信号的带宽是基带信号带宽的两倍即B_2ASK 2·R_B其中R_B是码速率。按照这个公式码速率1000bps时带宽约2000Hz。在实际仿真中观察功率谱密度时预期的主瓣宽度就是2000Hz第一旁瓣比主瓣低约13dB。如果你测出来的主瓣宽度明显大于这个值多半是PN序列的码速率设置和预设不一致或者用了过陡的脉冲波形导致频谱扩展。System View中查看功率谱的方法是在分析窗中选中接收器Token选择Analysis菜单下的Spectrum功能。此时可以看到以载波频率为中心的频谱结构。验证带宽是否合理可以把光标放在功率谱主瓣边缘读取频率差应与2倍码速率吻合。3.2 乘法器法建图与参数设置乘法器法是2ASK最直接的实现方式基带信号与载波直接相乘。前面已经提过在System View中的建图步骤是从Source库拖出PN序列源Token 0从Source库拖出正弦载波源Token 1从算子库拖出乘法器Token 2从Sink库拖出接收器Token 3按信号流方向依次连线。在System View中有一种常见误用是把PN序列的电平范围设为0和1V而载波幅度设为1V这样乘法器输出波形在1码期间就是完整的正弦波在0码期间为零。波形上看是断断续续的正弦振荡这正是2ASK的时域特征。如果PN序列设为0和1V但又想让载波只输出正半周那说明把载波源设成了半波整流输出这是另一个错误不要混淆。参数设置完成后运行仿真双击Token 3打开分析窗应该能看到1kHz方波与10kHz正弦波相乘后的包络波形。观察要点有四个一是1码期间正弦波幅度恒定没有寄生调幅二是0码期间输出为零没有残留载波三是码元切换点处相位连续——这里因为是同一载波源直接相乘相位自然是连续的如果换成键控法用两个独立载波源切换相位是否连续取决于两个源的初始相位是否一致四是波形包络能明显看出1000bps的码速率。System View提供的连接检查功能在运行前会扫描悬空端口和不合法连接如果PN序列源或载波源没有输出或者乘法器输出没有连到接收器会给出提示。我一般在连线前先在草稿纸上标好Token编号和各端口的信号类型再动手拖图标能省不少排查时间。特别注意连线时不要误把载波源输出接到PN序列源输入——信号源只有输出端口连线时System View会拒绝但有时会弹出不明显警告所以养成连完线随手F5运行、有错先看错误定位的习惯比较好。3.3 键控法实现及其与乘法器法的差异除乘法器法外2ASK还可以用键控法实现。键控法的思路是本地产生一个持续振荡的载波用一个电子开关控制载波的通断基带信号作为开关控制信号。在System View中实现键控法可以用Source库中的脉冲串或者逻辑库中的门控开关。常见做法是用两个信号源——一个输出固定高电平一个直接输出载波——再接一个Switch图标由PN序列控制切换。这样做出来的波形和乘法器法几乎一致但有一个细微区别理想键控法在0码期间完全断开载波通路没有残余信号而乘法器法在PN序列的0电平不为绝对零时会有一小段残余载波漏过去。System View中PN序列的电平可以设成0V所以乘法器法也能做到完全通断把Offset设成0即可。比较两种方法乘法器法结构简单、参数少适合课程演示键控法更接近实际硬件实现——现实中很少用模拟乘法器做ASK更多是用射频开关或晶体管导通/截止来实现通断键控。做设计论文时一般两种方法都建出来对比波形和功率谱这样在答辩时能说清楚为什么选乘法器法以及键控法在硬件上的优势是什么。我的建议是System View仿真用乘法器法因为图标少、参数直观论文里补充键控法的原理框图说明在实际系统中键控法更常用即可。4. 2ASK解调端建模相干解调与包络检波4.1 相干解调器结构与本地载波同步2ASK的解调分为相干解调和非相干解调两大类。相干解调的出发点是既然发送端是基带信号与载波相乘接收端再用一个同频同相的本地载波相乘一次就能把基带信号从载频搬回零频附近。这个过程称为同步解调或相干解调数学上可以写为s(t)·cos(ω_c·t) A·m(t)·cos²(ω_c·t) 0.5·A·m(t)·[1 cos(2ω_c·t)]相乘结果中包含两部分零频附近的基带分量A·m(t)/2以及二倍载频分量A·m(t)·cos(2ω_c·t)/2。后者用低通滤波器滤除前者保留下来就是基带信号的幅度缩小版。System View中的建图方法是乘法器输出Token 4接一个正弦载波源Token 5频率与发送端相同10kHz相位0度再进乘法器Token 6乘法器输出接低通滤波器Token 7最后接接收器Token 8。滤波器的设计可以直接从Operator库中调用Linear Sys Filters也可以使用滤波器设计工具Filter Design自动生成我这里用的是Butterworth低通滤波器。这里最容易被忽视的问题是相干解调要求本地载波与发送载波同频同相。仿真中为了方便直接让两个载波源参数一致这当然是理想情况实际系统里本地载波是从接收信号中提取的涉及载波同步环。System View中有锁相环库PLL可以在载波提取模块中构建Costas环但在课程设计文档里一般会说明假设收发端载波已同步。低通滤波器的截止频率设置在相干解调中直接决定解调质量。2ASK基带信号的带宽等于码速率R_B一阶低通的截止频率不能低于码速率否则码元边沿被削平。我习惯设到1.2kHz到1.5kHz之间既能滤除二倍载频分量又不至于让基带信号失真太多。Butterworth滤波器阶数设4比较合适阶数太低的话阻带衰减不够二倍载频分量滤不干净阶数太高又会在通带边缘引入相位畸变。表相干解调链路参数设置模块参数值发送端载波源频率10kHz发送端载波源幅度1V本地载波源频率10kHz本地载波源相位0度低通滤波器类型Butterworth低通滤波器截止频率1.2kHz低通滤波器阶数44.2 包络检波器建模与门限效应非相干解调即包络检波不需要本地载波结构上比相干解调简单。包络检波的基本思想是提取2ASK信号的幅度包络再经过低通滤波和抽样判决来恢复基带信号。System View中实现包络检波的常见做法是接收信号经过一个整流器取绝对值再经过低通滤波器滤掉载波频率中的毛刺。整流器在System View的算子库中实现选择Abs函数即可或者用乘法器把信号与自身相乘但由于平方运算会改变信号的统计特性我不建议在课程设计里用这种方法。Abs函数后接一个截止频率为1.2kHz、阶数为2的Butterworth低通滤波器。注意这里的滤波器阶数不需要太高因为整流后包络的谐波分量主要集中在2倍载频附近4阶滤波器的阻带衰减足够把10kHz以上的分量压掉。包络检波与相干解调的性能对比有一个重要的理论结论在相同信噪比下相干解调的误码率优于包络检波。2ASK相干解调的误码率公式为Pe 0.5·erfc(√(r/4))非相干解调的误码率公式为Pe 0.5·exp(-r/4)其中r是信噪比。当r较大时指数项的衰减速度慢于erfc函数所以相干解调优势更明显当r较小时两者相差不大但包络检波会出现门限效应——信噪比低于某个值后误码率急剧恶化。如果你想在System View中验证这个结论可以在接收端加入高斯噪声源Token 9和加法器Token 10把噪声叠加到调制信号上再分别接相干解调链路和包络检波链路。用一个正弦波的幅度和噪声功率来设定信噪比然后观察两种解调器输出的眼图。眼图张开度大的那条链路误码率必然更低。4.3 功率谱密度分析与噪声下的误码观测在System View的分析窗里对接收器Token 3调制信号做FFT频谱分析可以看到2ASK信号功率谱。2ASK功率谱的一个经典特征是在载频f_c处存在一个离散谱线这个离散谱的功率与基带信号的直流分量成正比。用PN序列且占空比为50%时直流分量平均功率为1/4离散谱线的能量可观。这也是2ASK的缺点之一——部分功率浪费在离散谱线上不携带信息所以功率效率低于2PSK和2FSK。在System View中做频谱分析时要注意选择适当的FFT点数。接收器采集了10000个采样点FFT点数选4096频率分辨率约为24Hz选8192频率分辨率约12Hz。前面说过由于Freq.Res. Sample Rate / No. of Samples想看得更精细就要增加采样点数保持采样率不变延长仿真时长。一旦发现频谱泄漏严重主瓣两侧拖尾明显先检查接收器是否采集了整数个码元周期如果不是加窗函数Hamming或Blackman能改善。噪声下的误码观测是System View 2ASK仿真中相对高级的部分。System View提供了BER接收器Bit Error Rate sink它可以直接把解调输出与参考信号比对输出误码率曲线。用法是把原始PN序列接到BER接收器的参考输入端把判决后的解调输出接到信号输入端设置好阈值和码速率运行仿真后在接收器输出窗中可以看到误码率数值。如果不用BER接收器也可以用分析窗中的接收器导出波形再在外部用MATLAB脚本比对码序列计算误码率。下面给出一段用MATLAB验证2ASK理论误码率的示例代码它可以和System View的仿真结果做交叉验证。这段代码算的是相干解调与非相干解调的理论误码率曲线计算出数值后可以和System View仿真中测到的误码率进行对比% 2ASK 相干与非相干解调的理论误码率与仿真对比 snr_dB 0:0.5:12; % 信噪比范围单位 dB r 10.^(snr_dB/10); % 线性信噪比 % 相干解调理论误码率Pe 0.5 * erfc(sqrt(r/4)) Pe_coherent 0.5 * erfc(sqrt(r/4)); % 非相干解调理论误码率Pe 0.5 * exp(-r/4) Pe_noncoherent 0.5 * exp(-r/4); % 绘制理论曲线 figure; semilogy(snr_dB, Pe_coherent, b-o, LineWidth, 1.5); hold on; semilogy(snr_dB, Pe_noncoherent, r-s, LineWidth, 1.5); grid on; xlabel(信噪比 SNR (dB)); ylabel(误码率 Pe); legend(相干解调理论值, 非相干解调理论值, Location, southwest); title(2ASK 相干与非相干解调误码率对比);代码的逻辑是先把dB单位的信噪比转换为线性值r然后代入两种解调方式的误码率公式。相干解调用erfc函数非相干解调用指数函数。把它和System View中实测的误码率点画在同一张图上如果仿真链路设置正确实测点会贴着对应颜色的理论曲线。如果实测误码率明显偏离理论值常见原因是采样率不足、低通滤波器截止频率设置不当或噪声源幅度设置与实际信噪比不一致。5. 测试过程与System View调参排错技巧5.1 仿真时长与频率分辨率的配合System View中一个容易让新手栽跟头的点是仿真时长越长频率分辨率越细但采样数据量也越大。在做2ASK调制解调测试时我的经验是仿真时长至少取50到100个码元周期。前面用了0.1s100个码元在分析窗里既能数出码元个数也能看到足够的频谱细节。如果你只跑10个码元功率谱上主瓣会明显变宽——这是时域截断效应不是信号本身带宽变了。遇到谱线变宽优先增加仿真时长而不是增加FFT点数。系统定时窗口中还有一个No. of System Loops参数。把它设成2以上时System View会循环运行整个系统每次运行可以改变参数比如信噪比这在批量测误码率时非常有用。不过对于课程设计场景单次运行然后手动改变噪声幅度多跑几组把数据点记下来画曲线比配置Loop更直观也不容易出错。5.2 低通滤波器截止频率的选择策略解调链路的低通滤波器截止频率是2ASK仿真中最影响误码率的一个参数。截止频率设得太低基带信号的码元边沿被平滑掉判决时码间串扰增大设得太高二倍载频分量和噪声带宽内的噪声得不到抑制输出信噪比下降。理论上的最优截止频率是码速率R_B的0.5到0.7倍之间——这个结论从匹配滤波的角度可以推出来但实际仿真中如果滤波器阶数不高建议取码速率附近的值比如1kHz码速率对应1.2kHz截止频率。如果你发现解调输出波形包络有严重的拖尾先检查是不是滤波器阶数太高导致相位失真。Butterworth滤波器的相位响应在截止频率附近会急剧变化阶数越高相位失真越严重。如果解调波形看起来两边翘起来可以换Bessel滤波器它在通带内的群延迟更平坦对码元波形的影响更小。System View的滤波器设计工具支持多类型的切换调起来很方便。提示在System View中修改低通滤波器参数后一定要重新运行仿真不要直接看历史波形。分析窗中的数据是上一次运行的结果不会自动更新这是新手最容易困惑的地方。5.3 常见问题与排查清单我整理了一份查错清单按出现概率排列搭2ASK系统遇到异常时可以逐项排查。第一PN序列输出不是预期的0101序列。检查PN序列的Levels参数它确定序列的比特模式还要看Rate参数是否设成了码速率而不是符号速率。System View的PN序列Rate参数的物理含义是每秒钟输出的码元个数对2ASK来说一个码元就是一位二进制信息所以Rate就是码速率。第二乘法器输出波形显示为一条直线。多半是载波源或PN序列源的输出没出来双击对应图标检查参数对话框是否有警告信息或者看接收器Token编号是否正确。另外确认一下乘法器的两个输入是否接反——乘法器没有方向限制但如果把接收器误当作中间节点接入乘法器输入整条链路的信号流就断了。第三解调输出波形正确但幅度偏小。这是正常的相干解调的输出幅度是发送端的0.5倍因为cos²项展开后有一个1/2因子。在做判决时阈值要随之调整通常取解调输出最大幅度的一半作为判决门限。第四频谱分析窗中看不到预期的主瓣。先检查接收器是不是只采集了很短一段信号导致频率分辨率太粗再确认显示的是功率谱密度而不是功率谱。System View的Spectrum功能菜单有两三个不同的谱分析选项选错会看到完全不同的曲线。第五加入噪声后误码率不随信噪比变化。这是噪声源参数设置的问题检查噪声源的方差或功率是否在每次循环中被重置。System View中噪声源的Seed参数如果不固定每次运行结果都会不同要对比不同信噪比下的误码率时固定Seed能减少随机性干扰。System View的噪声源参数中有Noise Power或Variance选项直接设置噪声功率后按公式计算信噪比即可。如果你在System View 5.0之后的新版本里运行界面和库组织可能略有不同但核心参数逻辑完全一致。遇到图标库找不到时右键设计窗口空白处选择Add Library把需要的库加载进来。调通一条2ASK链路后把载波频率从10kHz改成20kHz、把PN序列码速率从1000bps改成2000bps重跑一遍主瓣宽度从2kHz变成4kHz本地载波频率同步修改到20kHz这一套动作做完你对数字调制的带宽概念会比读十页教材都记得牢。本文还有配套的精品资源点击获取
返回列表