am是幅度调制,因此只需要将基带信号与载波信号相乘;fm是频率调制,以频率的变化来表示基带信号。
好在fpga有nco ip核,其内部的原理,是将一个完整的正弦波信号分为2的32次方点数,将点数存放在rom内,然后使用频率控制字作为读数据地址,频率控制字越大,点数的跨度越大,输出的波形周期越小,频率越大。
所以只需要将基带信号的变化加入到载波频率控制字上,便可以达到频率调制的效果。nco的内容可以看之前的那篇讲述dds上变频的文章,xilinx称之为dds,altera称之为nco。
为了方便板上验证,这里使用nco产生基带信号,模拟整体过程。
使用50m时钟,nco的相位精度为32,基带信号使用200khz频率,算出的频率控制字为17179869;输出的基带信号位宽为16位;载波设为20mhz信号。输出的基带信号转为载波频率控制字的变化量,需要乘上一个倍数,倍数关系大致为:
将数值带入,算出倍乘因子是131。这里的倍数控制调制深度,不宜设的过大。将算出的数值与载波的频率控制字相加,代码如下:
module phi_control2( input clk, input rst, input [26:0]sig_phi, output reg [31:0]phi ); parameter phi_t =171798691 ; // //assign phi = phi_t + {{5{sig_phi[26]}},sig_phi}; always @ (posedge clk or posedge rst) begin if (rst) phi <= 'd0; else phi <= phi_t + {{5{sig_phi[26]}},sig_phi}; endendmodule由于变化量的数值与频率控制字不是相同位宽,而且变化量的值是有符号数,所以需要进行符号位扩展,将两个参数的位宽补至相同。将最终的频率控制字送入nco,输出的就是fm调制信号。
signaltapii 抓取的fm调制图
将数据保存为txt,在matlab读取并做频谱分析,结果如图,截位肯定会损失精度。
调制的结构图如下图所示:
Diodes LED驱动器降低照明产品的尺寸和成本
汽车毫米波雷达的规定和标准介绍
一周研报:被动元件行业高景气与本土厂商扩产节奏相匹配,国产替代持续推进
苹果15英寸MacBook Pro电脑电池存在着安全隐患被禁带上飞机
基于TIDA-00620的12V 至 24V、27A 刷式直流电机参考设计
简易FM信号调制的FPGA实现过程讲解
通过XtremeDSP视频入门套件加速FPGA上的视频应用开发
变压器中性点接地电阻值多少为标准
迷你晶圆厂会挤占台积电的市场吗?
海信持续创新助力夺下全球电视市场第三名
OpenVINO2022系统应用指南
回顾欧司朗2020年精彩时刻
汽车车身控制模块(BCM)
Openwrt开发指南 第18章 驱动开发之字符设备应用程序
Pasternack推出新型毫米波波导天线
SPI通讯协议的工作方式
通俗易懂讲讲通信原理 通信系统的原理和应用
最新国产激光雷达市场排名出炉!谁是第一?58家公司情况及动态
应用于运算放大器中的精密匹配电阻网络
浅谈D/A与A/D转换器的基本原理及分类