首页 > 其他分享 >(14)DDS基本原理与FPGA实现

(14)DDS基本原理与FPGA实现

时间:2024-09-07 10:47:05浏览次数:4  
标签:输出 14 FPGA 相位 DDS 32 频率 2N 1000

基本概念

DDS(Direct Digital Synthesizer),即数字合成器,是一种把一系列数字信号通过D/A转换器转化成模拟信号数字合成技术
DDS的实现有两种方式:查表法计算法,下面将主要介绍DDS查表法的FPGA实现
查表法:预先在ROM中存放不同相位对应的幅度序列,通过相位累加器的输出对其进行寻址,经过D/A转换与低通滤波器即可得到所需要的模拟信号


输入:频率控制字、相位控制字、系统时钟、复位信号
输出:幅度数据
关系:如果一个波形能用M个点完全采样,则:
Tout = M*Tclk
Fout = Fclk/M

原理分析


当FPGA控制DAC输出一个周期的正弦信号时,从图中可看到共32个采样点(最后一个点和第一个重合),若每1ms输出一个数值且每个点都输出,则输出一个完整的周期需要32ms,因此该信号的频率为1000/32(f=1/T)

现在若需要这样一组数据输出一个频率为2x(1000/32)的信号,即输出一个完整的周期为16ms,此时只能输出16个点来表示一个完整的周期,我们可以每隔一个点输出一个数据来完成,效果图如上所示,这样输出信号的时间缩短了一半,即频率增加了一倍
若现在需要输出一个频率为(1/2)x(1000/32)的信号,即输出一个完整的周期为64ms,此时我们可以每2ms输出一个值,即第1ms与第2ms都输出第一个点,第3ms与第4ms都输出第二个点,以此推例,即可实现周期加倍,频率减半的效果
通过上述分析,其中的计算过程如下:

Fclk=1000Hz(周期为1ms)
1.取点间隔为1
Fout=1000/32=1000/(2N) N=5
2.取点间隔为2,即频率翻倍
Fout=2000/32=1000/(2N/2) N=5
3.取点间隔为0.5,即频率减半
Fout=(1000/2)/32=1000/(2N/0.5) N=5

频率控制字Fword,也常写作B(步进)
故输出频率Fout=Fclk/M=BxFclk/2N

相位累加器位数N,相当于将一个正弦信号在相位上的精度定义为N位,因此其分辨率为1/2N

式中M是对一个波形取的所有的点数,受到ROM容量的影响

相位控制字:只需要在每个取样点的序号上加一个偏移量,即可实现对相位的控制,如上述将一个正弦的周期32等分,若我们在第1ms时从第9个点开始输出,则就将相位左移了90度,这就是相位控制的原理

后续这里工程代码讲的实在太难接受了,抱歉

标签:输出,14,FPGA,相位,DDS,32,频率,2N,1000
From: https://www.cnblogs.com/xuxuxu69/p/18401423

相关文章

  • FPGA状态机编程示例
     两段式状态机moduledetect_2(  inputclk_i,  inputrst_n_i,  outputout_o);regout_r;//状态声明和状态编码reg[1:0]Current_state;reg[1:0]Next_state;parameter[1:0]S0=2'b00;parameter[1:0]S1=2'b01;parameter[1:0]S2=2'b10;pa......
  • Luogu P2114 起床困难综合症
    LuoguP2114起床困难综合症由于这道题的三个操作都是位运算,所以我们可以按位考虑,即考虑初始攻击力和最后伤害的每一位分别是$0$还是$1$。因此我们可以先算出每一位分别取$0$和取$1$在经过所有防御门后最后得到的是什么,然后从高位向低位贪心即可。需要注意的是(也是被卡......
  • RAG与LLM原理及实践(14)---RAG Python 前端构建技术Flask
    目录背景Flask简介     Flask的特点flask安装Flaskpythonserver端处理app资源映射router概念Flask客户端处理Jinja2 概述具体语法实例python后端 代码前端相关代码代码解释运行check启动日志背景本专栏之前的文章都在描述RAG后台的......
  • 洛谷 P6419 [COCI2014-2015#1] Kamp
    洛谷P6419[COCI2014-2015#1]Kamp题意一颗树\(n\)个点,\(n-1\)条边,经过每条边都要花费一定的时间,任意两个点都是联通的。有\(K\)个人(分布在\(K\)个不同的点)要集中到一个点举行聚会。聚会结束后需要一辆车从举行聚会的这点出发,把这\(K\)个人分别送回去。请你回答,对......
  • JavaScript学习文档(14):深入对象、内置构造函数、综合案例
    目录一、深入对象1、创建对象三种方式2、构造函数(1)构造函数(2)说明:(3)利用构造函数创建多个对象(4)实例化执行过程3、实例成员和静态成员(1)实例成员:(2)静态成员:二、内置构造函数1、Object2、Array(1)数组常见实例方法-核心方法(2)员工涨薪计算成本案例(3)还有些数组常见方法(4......
  • CSS学习14[重点]--定位、边偏移、定位模式
    定位前言一、定位二、定位模式1.静态定位static2.相对定位relative3.绝对定位absolute4.子绝父相5.绝对定位的盒子水平居中6.固定定位(fixed)7.叠放次序(z)三、四种定位总结四、定位模式转换前言为什么学习定位?应用场景:图片上移动的物体、突出的部分、导航栏......
  • 修复Microsoft Visual C++ 2015中msvcp140_ATOMIC_WAIT.dll缺失的5大策略
    在电脑使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140_ATOMIC_WAIT.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,如何解决这个问题呢?一,原因分析msvcp140_ATOMIC_WAIT.dll是MicrosoftVisualC++2015运行时库的一部......
  • 信息学奥赛初赛天天练-84-NOIP2014普及组-基础题3-总线、存储器、邮件协议、二叉树、
    信息学奥赛初赛天天练-84-NOIP2014普及组-基础题3-总线、存储器、邮件协议、二叉树、满二叉树、顶点的度、无向图、有向图PDF文档公众号回复关键字:202409061NOIP2014普及组基础题36CPU、存储器、I/O设备是通过()连接起来的A接口B总线C控制线D系统文......
  • 高速背板连接器 249-4214-11V、249-4216-11V、249-4218-11V、249-4219-11V、249-421H-
    系列概述Paladin®HD系列延续了其作为行业领先的高速应用互连解决方案的传统。Paladin®HD2利用与PaladinHD相同的板连接、双轴电缆连接和配对接口实现向后兼容性,提供直接升级到224Gb/sPAM4的途径。分立屏蔽差分对和革命性的电路板技术实现了无与伦比的性能和密度。特性:世界级......
  • 20240906_142605 下午的课
    20240906_142624python异常捕获try...catch...finally..._鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1193789520240906_144853python应用题工作统计_鲸鱼编程pyhui的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1193802720240828_1......