DDS产生双频正弦波及叠加
DDS产生双频正弦波
- DDS简介
- 时钟设置
- DDS设置
- 频率叠加
- 测试代码
- 部分程序
- 部分仿真程序
- 仿真结果查看
- MATLAB验证
- 参考网页
DDS简介
直接数字式频率合成器(Direct Digital Synthesizer)
在参考频率时钟的驱动下,DDS模块开始工作;当每来一个参考时钟时,累加器就把频率控制字FW与寄存器输出的值进行累加,将相加后的结果再输入到寄存器中,而累加寄存器就将在上一个参考时钟作用时产生的数据通过反馈的方式输送到累加器中。这样,在时钟的作用下,就可以不停的对频率控制字进行累加。此时,用相位累加器输出的数据作为地址在波形存储器中通过查找地址所对应的幅值表,就可以完成其从相位到幅值之间的转化。
相位累加器 Phase = Phase + fre_word,可以暂且理解为i = i + 1一样的东西。
频率控制字 fre_word,这个东西的值直接影响输出信号的频率。
DDS核频率分辨率:fout =fclk2Bθ(n)ΔθDDS核频率分辨率 : f_{\text {out }}=\frac{f_{c l k} }{2^{B_{\theta(n)}}}\Delta \theta DDS核频率分辨率:fout =2Bθ(n)fclkΔθ
其中Δθ:频率控制字,取值后文用fre_word表示。Bθ(n)B_{θ(n)}Bθ(n):相位累加器位宽,后文用B表示。fclk:DDS工作时钟。频率分辨率就是当Δθ=1时的fout。
在参考信号与加法器或寄存器的位数给定时,信号最终的输出频率主要由频率控制字决定。故当频率控制字变化时,输出频率也跟着变化,从而可以实现调频的基本功能。
先假如我们需要的信号频率范围:1M-10MHz,分辨率10KHz。
取Δθ=1,fout=0.01MHz,B=10bit,我们可得DDS工作时钟fclk=10.24MHz。
同理1KHz-8.192MHz,分辨率1KHz。
取Δθ=1,fout=1KHz,B=13bit,我们可得DDS工作时钟fclk=8.192MHz。
即产生一个正弦波信号需要2部分:
1. 时钟分频器
2. DDS IP核
时钟设置
IP Catalog->Clocking Wizard
Input Frequency 50MHz (根据自己板子选)
Output Clocks根据需求输出10.24MHz和8.192MHz
DDS设置
IP Catalog->DDS Compiler->Component Name
这个做的比较简单,暂时不对相位做出要求
13位的DDS设置方法类似,最终Summary大概是这样:
频率叠加
本质:有符号数相加
测试代码
部分程序
/*************************************************************************PLL IP calling
**************************************************************************/
clk_wiz_0 clk_wiz_0_inst
(// Clock in ports
.clk_in1 (sys_clk ), // IN 50Mhz
// Clock out ports
.clk_out1 (CLK_10240K ), // OUT 200Mhz
.clk_out2 (CLK_8192K ), // OUT 200Mhz
// Status and control signals
.reset (~rst_n ), // RESET IN
.locked (locked )
); /*************************************************************************DDS IP calling
**************************************************************************/
DDS_10KHZ DDS_10_inst (.aclk(CLK_10240K ), // input wire aclk.s_axis_config_tvalid( fre_word_en ), // input wire s_axis_config_tvalid.s_axis_config_tdata( fre_word_10 ), // input wire [15 : 0] s_axis_config_tdata.m_axis_data_tvalid(m_axis_data_tvalid10), // output wire m_axis_data_tvalid.m_axis_data_tdata( rdata_10 ) // output wire [7 : 0] m_axis_data_tdata
);DDS_1KHz DDS_13_inst (.aclk(CLK_8192K ), // input wire aclk.s_axis_config_tvalid( fre_word_en ), // input wire s_axis_config_tvalid.s_axis_config_tdata( fre_word_13 ), // input wire [15 : 0] s_axis_config_tdata.m_axis_data_tvalid(m_axis_data_tvalid13), // output wire m_axis_data_tvalid.m_axis_data_tdata( rdata_13 ) // output wire [7 : 0] m_axis_data_tdata
);/*************************************************************************Multi-frequency add
**************************************************************************/
// 由于最高位存在符号位,因此不能直接叠加
// 相当于加一个有符号数的加法always@(posedge sys_clk)beginrrdata_10 <= { rdata_10[7],rdata_10[7:0]};rrdata_13 <= { rdata_13[7],rdata_13[7:0]};rdata_add = rrdata_13+ rrdata_10 ; endassign data_add = rdata_add ;
部分仿真程序
pll_test uut (.sys_clk(sys_clk), .rst_n(rst_n), .clk_out(clk_out),.fw_10(fw_10),.fw_13(fw_13),.data_10(data_10),.data_13(data_13),.data_add(data_add));initial begin// Initialize Inputssys_clk = 0;rst_n = 0;fw_10 = 10'b00_0000_0001;fw_13 = 10'b0_0000_0000_0001;// Wait 100 ns for global reset to finish#100;rst_n = 1; // Add stimulus here#20000;// $stop;end
仿真结果查看
波形设置:右键单击
MATLAB验证
f1=110^3; %1KHz
f2=1010^3; %10KHz
y1 = sin(2pif1.t);
y2 = sin(2pif2.t);
y = sin(2pif1.t)+sin(2pi*f2.*t);
参考网页
1.FPGA学习(一)——产生频率可控的正弦波
2.Vivado DDS IP配置与仿真(1)正弦、余弦信号发生器
附:本文程序下载链接
DDS产生双频正弦波及叠加相关推荐
- 双千兆和双频千兆哪个好_关于千兆路由器的那些事儿!赶紧收藏
无线Wi-Fi已成为现代人生活.工作的标配,随着百兆乃至千兆的光纤网络普及,传统路由器已跟不上时代的速度了.不少用户的眼光已投向速度更快的千兆路由器,那么大家真的了解什么是千兆路由器吗?千兆路由器有哪 ...
- rtklib 天线相位中心_(原文链接错,重发)用于WiMAX和WLAN的紧凑型共面波导馈电双频线极化和圆极化单极天线(原载于微波杂志19年7/8月号)...
点击上方actMWJC关注<微波杂志> Compact CPW-Fed Dual-Band Linearly and Circularly Polarized Monopole Anten ...
- 实时双频Wi-Fi如何实现下一代车内连接
实时双频Wi-Fi如何实现下一代车内连接 How real simultaneous dual band Wi-Fi enables next-generation in-vehicle connec ...
- 多屏互动电脑版_MAXHUB无线双频同屏器HDMI连接投影仪手机电视机笔记本电脑投屏器多屏互动 MAXHUB传屏盒子WB01标配2个无线传屏...
▲左右滑动查看更多 MAXHUB无线双频同屏器HDMI连接投影仪手机电视机笔记本电脑投屏器多屏互动 MAXHUB传屏盒子WB01标配2个无线传屏 ·无线传屏 一拖二 ·一键传屏 ¥4999.00元 ...
- 混合SSVEP-P300 BCI生产双频SSVEP
目录 简介 实验与结果 结论 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 简介 首尔国立首尔大学医学院的科研人员介绍了一种新的混合SSVEP- P300 ...
- 的路由放在本地_支持双频+WiFi 6,穿墙力强,领势AX3200路由器体验
网络的普及,彻底改变了我们的生活,比如移动支付,网购等等,每天都离不了网络.目前网络也更新迭代了好几拨,从最初的WiFi,WiFi 4.WiFi 5,到现在的第六代WiFi 6技术,大大减少了网络延迟 ...
- 华硕无线网卡测试软件,家用无线网卡王者 华硕PCE-AC88 双频3100网卡测试
本帖最后由 VincentWEN 于 2016-6-16 00:36 编辑 2016年各大网络设备厂商更新了802.11ac Wave 2旗舰路由 ,新一代的路由都采用了4x4 MU-MIMO技术,而 ...
- 双频无线网安装设置(5g ) for linux
为了在局域网实现远程wifi调试,例如调试需要图像数据传输,则需要搭建局域网5g无线网络. 1.硬件要求 a. TP-Link(型号:TL-WDR6500,AC1300双频无线路由器,支持5g,2.4 ...
- ap设置 维盟660g_New丨维盟双频百兆11ac入墙AP:WAP-3018穿墙效果不一样!
新的9月,维盟新品 bulingbuling闪亮登场 看这里 维盟WAP-3018 WAP-3018是一款入墙式无线AP,64M内存,8M闪存,支持智能无线技术,2.4G和5G双频并发,无线传输速率1 ...
- 2.4g和5g要不要合并_请问千兆路由器,2.4g与5g是双频合一还是分开,该选择哪个?...
虽然很多人的路由器有2.4G和5G这两个频段,但是他们一般使用的是2.4G频段的信号,可能他们不会设置或许他们根本不在意这些.那么,路由器5g和2.4g区别是什么?下面将会为大家介绍. 路由器5g和2 ...
最新文章
- Oracle中分页查询语句
- U盘安装Linux CentOS 6.5 64位操作系统(来自互联网)
- 【DIY】光剑(一):炽焰长剑的诞生
- SDNU 1430.十六进制转八进制(python)
- Scala-Actor并行wordcount
- android中设置控件的搞,Android中如何自定义控件
- Python-爬虫-针对有frame框架的页面
- P2617 Dynamic Rankings
- lucene的基础入门
- 一些技术大牛的博客集锦(转)
- Tomcat SSL Configuration
- linux下可执行文件无法执行问题定位排查
- pyboard :红外遥控模块,class UART
- FPGA 优秀学习代码
- 华为2019年3月软件开发工程师机考题解答 C++实现
- C语言 逻辑运算符及其优先级
- LabVIEW编程基础:条件结构编程
- 雷电模拟器一直android正在启动,雷电安卓模拟器启动后没反应、无法启动、闪退的3种解决办法-针对2020年4月4号出现的...
- nodejs Log4js v2.x配置使用
- 《股票大作手操盘术》读书笔记