赞
踩
Direct Digital Synthesis 直接数字频率合成。是一种 信号发生器 ,可以产生各种波形,且其产生的波形处于调制状态可随时修改。
如图可以看出主要有四部分:① 相位 累加器;②相位调制器;③波形数据表ROM;④D/A转换器。
有三个输入端:系统时钟CLK;频率字输入(后面用K表示);相位字输入(后面用P表示)。一个输出端:信号输出。
(1) 在相位累加器和相位调制器之前的两个累加寄存器的作用是,使频率字和相位字输入的时候不会影响到相位累加器和相位调制器的运行。
(2) 相位累加器位数为N,相位调制器位数为M。
(3) 相位调制器的位数与ROM地址线位数相同,即输出时按照相位调制器输出的值对照ROM地址,输出该地址对应数据。
(4) N一般大于M,所以N使用时将高M位传入相位调制器,低N-M位用于K值计数。
(5) 波形数据已存于ROM内。
DDS系统运行流程为:K值输入暂存于累加寄存器,在相位累加器中不断累加直到计满低N-M位后溢出,将高M位传入相位调制器,相位调制器接到P值再在此基础上加上P值(P值为定值的时候输出波形的形状不变,相位平移P值),此时根据相位调制器输出的M位值查找对应ROM地址,输出地址对应数据。
设输入K=1,N=32,M=12,ROM地址线12位,ROM数据线8位,P值暂不考虑。
数据传输如下:
(1)相位累加器
N-M=20,即N低20位用来K值(频率字输入)自加,直至累加到220后溢出到高12位。共需要累加220/1次。
即得到一个进位所需时间T=Tclk*(2^(N-M)/K)。(Tclk为系统时钟周期)
(2)相位调制器
接到相位累加器高12位数据,与P相加后寻址。12位计满(相位调制器计满)需要212次进位。经过212次进位后将储存在ROM内的波形完全读出,所以:
输出周期Tout=T*2M=Tclk*2(N-M)*2M/K=Tclk*2N/K
输出频率Fout=1/Tout=K/Tclk*2N=K*Fclk/2N
目标频率 f0 = fc * M / 2^n
当已知目标频率,求频率控制字M时,M = f0 * 2^n / fc
。
PS:最后说一下P值
假如ROM内存储的是sin信号,但是想输出cos信号的时候,只需要将每个输出点的相位向右平移四分之三个地址即可,假如地址线位数是12,地址共有2^12=4096个,4096*3/4=3072。即P=3072时可实现该功能。
module DDS_Module( Clk, Reset_n, Fword, //频率控制字 Pword, //相位控制字 Data //输出数据 ); input Clk; input Reset_n; input [31:0] Fword; input [11:0] Pword; output [13:0] Data; //频率控制字同步寄存器 reg [31:1] Fword_r; always@(posedge Clk) Fword_r <=Fword; //相位控制字同步寄存器 reg [31:1] Pword_r; always@(posedge Clk) Pword_r <=Pword; //相位累加器 reg [31:0] Freq_ACC; always@(posedge Clk or negedge Reset_n) if(!Reset_n) Freq_ACC <= 0; else Freq_ACC <= Fword_r + Freq_ACC; //相位累加器与相位控制字的结果输出 reg [31:0] Freq_ACC_out; always@(posedge Clk or negedge Reset_n) if(!Reset_n) Freq_ACC_out <= 0; else Freq_ACC_out <= Freq_ACC + Pword_r; //波形数据表地址 wire [11:0] Rom_Addr; assign Rom_Addr = Freq_ACC_out[31:20]; blk_mem_gen_0 blk_mem_gen_0_u0 ( .clka (Clk), .addra(Rom_Addr), .douta(Data) ); endmodule
频率控制字的高位决定分频系数,assign Rom_Addr = Freq_ACC_out[31:20],频率控制字的第20位开始分频,不到20位倍频
相位控制字就是给地址加一个偏置值,因为波形的值存放在rom当中,只需要改变rom的地址就可以改变波形的相位。
phaseWidth的值n决定输出信号的精度,是将一个周期的正弦信号分为2^n份。
Phase Generator and SIN/COS LUT (DDS):
在IP核内部集成好相位累加器与sin/cos模块,只需要在GUI中配置好需要生成的频率即可,可选择单独输出sin,或cos,也可以两个曲线正交输出。
Phase Generator only:
例化的 IP 核只有一个相位累加器,IP核不断输出相位累加的结果
SIN/COS LUT only模式:
例化的IP核只有一个sin/cos模块,需要外部不断的输入累加的相位
②System clock 系统时钟(同时也是采样频率),直接影响DDS输出波形的频率
③Number of channels 通道数,一般默认为1
分为两种模式,详情可翻阅Xilinx的官方手册,一般选择标准operation模式
标准operation模式下,输出频率频率=已知时钟频率*频率控制字(相位增量)/2^相位累加器位宽。
rasterized模式下,把分母换成可直接调控的M,方便输出一些整数频率波形。
分为两种模式,Hardware Parameter 和 System Parameter
Hardware Parameter模式下需要选择是否需要整形噪声Noise Shaping以及输出的相位位宽核数据位宽
System Parameter模式包含Spurious Free Dynamic Range(SFDR)、Frequency Resolution(频率分辨率)、Noise Shaping三种需要配置的参数,SFDR与输出的数据位宽有关,Frequency Resolution与相位位宽有关,如下图所示,根据期望得到的数据位宽与相位位宽利用公式设定SFDR及Frequency Resolution的值,详情可参考Xilinx的官方手册
①Phase Increment Programmability与Phase Offset Programmability,相位增量(即频率控制字)和相位偏移量(即相位控制字)控制模式选择,一般选择可编程模式,该模式下在valid有效时可对相位增量和相位偏移量进行配置
②Output sin、cos、sin&cos根据需要选择即可,在输出的output_data数据线上,sin\cos的位置关系如图,需要注意的是sin&cos模式下输出数据位宽增大一倍
其余参数保持默认即可
在Summary页面上可以查看DDS IP核配置的所有信息
一、任务
设计制作信号调制度测量装置,该装置测量并显示信号源输出的被测信号调制度等参数,识别并显示被测信号的调制方式,输出解调信号。测量系统如图1所示。
**二 **、 要求
(4)其他(10分)
(5)设计报告(20分)
项 目 | 主要内容 | 满分 |
---|---|---|
方案论证 | 比较与选择,方案描述。 | 3 |
理论分析与计算 | 系统相关参数设计 | 5 |
电路与程序设计 | 系统组成,原理框图与各部分电路图,系统软件与流程图。 | 5 |
测试方案与测试结果 | 测试结果完整性,测试结果分析。 | 5 |
设计报告结构及规范性 | 摘要,正文结构规范,图表的完整与准确性。 | 2 |
总分 | 20 |
三、说明
(1)题中“普通单音调幅波”是指:载波为正弦波,调制信号为单频正弦信号,其频谱包括完整的载频与上、下边频分量。题中“单音调频波”是指:载波为正弦波,调制信号为单频正弦信号。
(3)如测量装置需对被测信号进行A/D变换,应借鉴适用于对高频窄带信号抽样的“带通抽样定律”。“奈奎斯特抽样定律”亦称为“低通抽样定律”,它适于对基带信号的抽样。
(4)测试时可自带具有AM/FM调制信号输出功能的信号源,并以自带信号源输出信号的参数设置值作为测量基准值。
(5)要求第(3)项的操作必须是一键启动,装置应连续完成调制方式识别与调制度等参数的测量和显示,测量过程中不得有人工介入。
参考B站开源资料
已调信号通过载波正交信号变为I(n)和Q(n),可以计算出调制信号的关于其的公式。
FM调制模块本质上也是一个DDS,不过区别就在于其输出频率是关于基带信号幅度的函数,为了让其输出频率不断变化。我们可以回到DDS的代码中的Freq
,这个变量就决定了DDS的输出频率,所以实际上我们只需要在载波频率后面加上一个不断变化的值,也就实现了FM调制。
可以看到频率的明显变化
x(n) = I(n-1)Q(n) - I(n)Q(n-1)
fm的实现也有点问题,没有继续实现,详细请参考网站1
不同模块的时钟域要注意:
需要使用两个dds模块合成am调幅波,两个dds信号的相乘,时钟域不一样相乘的结果的时钟域为两者最大公约数。因此内部只能使用一个主控时钟。
一个FPGA搞定2022年电赛F题:调制度测量装置_哔哩哔哩_bilibili
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。