新闻详情

新闻详情

首页 / 资讯中心 / 详情

11 FM调制与解调的仿真

发布时间:2026/9/30 6:58:57来源:尧图网络
11 FM调制与解调的仿真
调频简介FM调制即调频是使载波的频率随调制信号即原始信号也叫基带信号的大小变化而变化而振幅保持不变的调制方式其数学公式如下调频的主要指标要实现频率调制(FM)就要保证基带信号与瞬时频率偏移成线性对应关系。DDS信号发生器的补充DDS信号发生器框图如下由上图可以看出DDS发生器主要由相位累加器、相位量化器、波形ROM表、 D/A 转换器构成相位累加器宽度为N位它按相位步进K进行累加运算并向相位量化器输出结相位量化器将相位累加器输出的N位相位控制字和外部输入的N位相位控制字P相加然后在进行截断输出M位结果到波形ROM表波形ROM表一共存储有2^M个波形参数它根据相位量化器输出的值从ROM中取出数据并输出到DA转换器D/A 转换器将数字量转换为模拟量输出相位累加器每来一个时钟就会按相位步进(K)进行一次累加运算溢出后又从零开始进行累加如此往复相位累加器完成一次溢出便对应着的完成了一次波形ROM的遍历所以相位累加器的溢出频率就是DDS信号发生器的输出频率DDS相位增量使用DDS进行FM调制FM解调FM调制后的信号如下对信号做IQ分解matlab音频信号FM调制解调仿真以音频信号的FM调制解调为例编写matlab仿真程序仿真代码如下clc;clear;close all;%载波采样率,16M Fsc16e6;%载波中心频率,1M Fc1e6;%载波幅度 Ac1024;%音频的采样率,16K Fsm16e3;%最大频偏,75K dF75e3;%%音频信号加载%读取音频文件 filefopen(v3edu.pcm,r);audiofread(file,int16);fclose(file);%显示音频数据波形figure(1);plot(audio);%计算仿真长度以音频扩展到16M采样率后的长度为仿真长度 sim_lenlength(audio)*Fsc/Fsm;%%将音频信号扩为16M采样 mzeros(1,sim_len);fori1:length(audio)forj1:fix(Fsc/Fsm)%将一个16K采样率得到的采样点复制fix(Fsc/Fsm)次(这里应该是1000次)就得到16M采样率的采样点m((i-1)*fix(Fsc/Fsm)j)audio(i);end end%%波形ROM表%生成波形ROM表共1024个波形参数 n0:1/1024:1023/1024;sin_romsin(2*pi*n);cos_romcos(2*pi*n);%%已调信号非载波部分%利用DDS进行FM调制的参数 dK(2^32*dF)/Fsc;Kf(((2*pi)/2^32)*dK*Fsc)/(2^15-1);KfsKf/Fsc;KfddsKfs/((2*pi)/2^32);%相位累加器 w0;%生成已调信号非载波部分 dac_izeros(1,sim_len);dac_qzeros(1,sim_len);fori1:sim_len%相位累加 wwKfdds*m(i);%做32位累加器的溢出判断 wmod(w,2^32);%将相位转换为波形ROM地址通过除以2^22来截断低22位保留高10位 rrom_addrfix(w/2^22)1;%IQ通道非载波部分dac_i(i)Ac*cos_rom(rrom_addr);dac_q(i)Ac*sin_rom(rrom_addr);end%Q路取反 dac_q-1*dac_q;%%已调信号载波部分,实际工程中载波由AD9361产生%载波相位步进采样率16M频率1M相位控制字32位 k(2^32*Fc)/Fsc;%相位累加器 w0;%生成1M的载波信号 cos_wavezeros(1,sim_len);sin_wavezeros(1,sim_len);fori1:sim_len%相位累加 wwk;%32位相位溢出处理 wmod(w,2^32);%将相位转换为波形ROM地址通过除以2^22来截断低22位保留高10位 rrom_addrfix(w/2^22)1;%载波cos_wave(i)cos_rom(rrom_addr);sin_wave(i)sin_rom(rrom_addr);end%%正交调制输出实际工程中载波由AD9361进行正交调制 fmzeros(1,sim_len);fori1:sim_len%i_ch(i)是I通道q_ch(i)是Q通道fm(i)cos_wave(i)*dac_i(i)sin_wave(i)*dac_q(i);end%%对已调信号做正交分解%正交解调实际工程中载波由由AD9361进行正交解调 Izeros(1,sim_len);Qzeros(1,sim_len);fori1:sim_lenI(i)fm(i)*cos_wave(i);Q(i)fm(i)*sin_wave(i);end%%对IQ数据进行低通滤波把高频分量滤除%进行低通滤波 NUM[-7.894e-05,-2.483e-04,-4.516e-04,-7.089e-04,-1.035e-03,-1.435e-03,-1.903e-03,-2.417e-03,-2.938e-03,-3.415e-03,-3.778e-03,-3.948e-03,-3.837e-03,-3.357e-03,-2.42e-03,-9.524e-04,1.106e-03,3.791e-03,7.113e-03,1.105e-02,1.554e-02,2.051e-02,2.583e-02,3.135e-02,3.691e-02,4.233e-02,4.742e-02,5.199e-02,5.588e-02,5.894e-02,6.105e-02,6.213e-02,6.213e-02,6.105e-02,5.894e-02,5.588e-02,5.199e-02,4.742e-02,4.233e-02,3.691e-02,3.135e-02,2.583e-02,2.051e-02,1.554e-02,1.105e-02,7.113e-03,3.791e-03,1.106e-03,-9.524e-04,-2.42e-03,-3.357e-03,-3.837e-03,-3.948e-03,-3.778e-03,-3.415e-03,-2.938e-03,-2.417e-03,-1.903e-03,-1.435e-03,-1.035e-03,-7.089e-04,-4.516e-04,-2.483e-04,-7.894e-05];adc_i_lpfconv(I,NUM);adc_q_lpfconv(Q,NUM);%前面部分滤波器未收敛将其去掉 adc_i_lpfadc_i_lpf(32:end-32);adc_q_lpfadc_q_lpf(32:end-32);%Q路取反 adc_q_lpf-1*adc_q_lpf;%%FM解调 denominatorzeros(1,sim_len);numeratorzeros(1,sim_len);fm_tempzeros(1,sim_len);fori2:sim_len%I(n-1)*Q(n)-I(n)*Q(n-1)numerator(i)adc_i_lpf(i-1)*adc_q_lpf(i)-adc_i_lpf(i)*adc_q_lpf(i-1);%I(n)^2Q(n)^2denominator(i)adc_i_lpf(i)*adc_i_lpf(i)adc_q_lpf(i)*adc_q_lpf(i);%(I(n-1)*Q(n)-I(n)*Q(n-1))/(I(n)^2Q(n)^2)ifabs(denominator(i))0.000001fm_temp(i)0;elsefm_temp(i)(numerator(i)/denominator(i))*2^16;end end%%降采样%采用取均值的方式来完成降采样将采样率由16M降低到16K sum0;sum_cnt0;data_cnt1;fm_outzeros(1,fix(sim_len*(Fsm/Fsc)));fori1:sim_len sumsumfm_temp(i);sum_cntsum_cnt1;%完成了Fsc/Fsm(这里应该是1000)次的累加进行平均并且存储到fm_outif(sum_cntfix(Fsc/Fsm))fm_out(data_cnt)sum/sum_cnt;data_cntdata_cnt1;sum_cnt0;sum0;end end%显示解调结果%figure(2);hold onplot(fm_out*17,b);仿真输出如下所示可见解调出来的信号与原始信号基本重叠。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

面向新能源汽车4S店的数据可视化分析系统 2026/9/30 7:53:24

面向新能源汽车4S店的数据可视化分析系统

一、毕业论文目的对大学期间所学基础和专业知识的全面检验与总结;提高综合运用所学专业知识分析、解决实际问题的能力;掌握文献检索、资料查询的基本方法以及获取新知识的能力;提高学生解决电子通信、计算机领域复杂工程问题的设计和开发能力…

阅读更多 →
如何养一个越用越聪明的AI智能体:OpenClaw部署与调教实战 2026/9/30 7:53:18

如何养一个越用越聪明的AI智能体:OpenClaw部署与调教实战

先把话说前面:如果你只是把AI当成一个随用随走的问答框,那你大概率感受不到“越用越聪明”这件事。但如果你把OpenClaw这类智能体当成一个长期共事的搭档,每天让它处理邮件、整理笔记、跟进项目、甚至替你回消息,你会发现它真的会…

阅读更多 →
Unity渲染优化:看懂状态切换,把SetPass Calls压下去 2026/9/30 7:53:18

Unity渲染优化:看懂状态切换,把SetPass Calls压下去

你有过这种经历吗?项目做到中后期,功能不增不减,场景也谈不上多豪华,突然一夜之间帧率掉了一半。我遇过最典型的一次:一辆拖车,上面堆了六十多个“长得一模一样”的货箱,美术同学为了调色方便&a…

阅读更多 →
从 fork 到进程池:进程创建原理与实战排查 2026/9/30 7:53:18

从 fork 到进程池:进程创建原理与实战排查

进程的创建这件事,看起来是操作系统课里最不起眼的一个练习,真到生产环境里翻起车来,能让人整宿睡不着。我在带团队做后端服务的时候,见过太多"程序明明启动起来了,进程却莫名消失""父子进程互相卡死&q…

阅读更多 →
HTTP 2xx状态码全解析:从200到206,避开接口设计那些坑 2026/9/30 7:53:18

HTTP 2xx状态码全解析:从200到206,避开接口设计那些坑

先说一个我自己的经历。早些年排查一个下载服务故障,用户反馈大文件下载到一半总损坏,抓包一看,服务器对Range: bytes1024-这段请求直接回了200 OK,而且把整个文件当响应体发了出来。下载工具倒是没报错,但文件拼接出来…

阅读更多 →
Node.js+Vue+协同过滤:招聘平台推荐系统全栈实战复盘 2026/9/30 7:53:17

Node.js+Vue+协同过滤:招聘平台推荐系统全栈实战复盘

拿到这个项目需求的时候,对方说得很直接:“我们要做一个招聘求职平台,职位列表、简历投递这些基础功能都还好办,但推荐这块必须跟传统搜索不一样——用户进来之后,应该看到的是系统推给他的职位,而不是他自…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉