DDS发生器的频率控制字原理和基本结构(二)

在正弦波发生器的verilog实现(一)中已经实现了最基本的功能,这篇文章将主要讲解DDS发生器的频率控制字原理和基本结构。

在这里先给出DDS发生器的结构框图:

下面对结构框图的各部分进行解释:

  1. RAM部分:在正弦波发生器的verilog实现(一)部分,我们使用matlab产生了一个周期的正弦波信号,并且在一个周期中采集了256个样点,然后通过导入.coe文件,将这256个样点保存到RAM中,即:RAM中存放的是离散的正弦波信号(一个周期,256个样点),RAM使用的规格是256*8bit;
  2. fc采样时钟:在FPGA中使用的是一个50MHZ的采样时钟,也就是在仿真时,每隔20ns,从RAM中读出一个采样值。
  3. 相位累加寄存器:相位累加器是整个DDS系统的核心,在这里完成相位累加功能。假设使用的是一个N为的寄存器(当我们采集的样点为256个,则可以使用一个8位的寄存器)。每来一个时钟脉冲fc,加法器(位于频率控制字和相位累加器寄存器之间)将频率控制字K和相位累加寄存器输出的结果相加,把相加后的结果送到相位累加寄存器中。相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。对应到我的上一个文章,相位累计寄存器中的值就相当于RAM的地址(addr),通过该地址就可以找到波形的抽样值。
  4. 频率控制字M:频率控制字控制着DDS 所输出的正弦波的频率。为了便于理解,还是对应到前一篇文章,频率控制字就相当于ex_dds模块中给addr所加的步长值,比如我们定义的是addr <= addr + 1'b1,其中,后面的1'b1就可以理解为频率控制字M。

为了便于理解,我们从FPGA的角度说明。假设使用的FPGA的时钟频率是fc=50MHZ,则每隔20ns从RAM中读出一个采样,而我们在RAM中从放的是离散的正弦波信号,存放了一个周期,一共256个样点。所以,在读取RAM时,读完256个样点所用的时间是固定的(所用时间是256*20ns = 5120ns,单位就不换算了,影响不大),当频率控制字M=1时,即:addr <= addr + 1'b1,则在5120ns内,我们可以输出一个周期的正弦波信号;但是当我们改变频率控制字M=2时,即:addr <= addr + 2'd2,则同样在5120ns内,我们可以输出两个周期的正弦波信号(因为此时addr的变化值是:0,2,4,…,254,当addr第一次到达254时,输出了一个周期的正弦波信号,用时2560ns;接着addr因为溢出,所以又从0开始变化,当第二次到达254时,输出了一个周期的正弦波信号,用时2560ns,所以在5120ns内一共输出了两个周期的正弦波信号);所以通过改变频率控制字M的值,就可以改变DDS输出的正弦波的频率。

M=1时的仿真结果:可以看到5120ns内输出了一个周期

M=2时的仿真结果:可以看到5120ns内输出了两个周期

目标频率 f0

下面我们推倒DDS 输出的正弦波的频率公式:

假设采样时钟的频率为fc,频率控制字为M,相位累加寄存器的位宽为n,则相位累加器中的最大值为2^n-1,当超过该值时,相位累加寄存器中的值就会溢出,然后从0开始计数。

因为采样时钟的频率为fc,频率控制字为M,则每隔1/fc,相位累计寄存器中的值就增加M,所以,在1s内,相位累加寄存器中的值增加的大小为(1/(1/fc))*M = fc * M,又因为寄存器中最大表示的值为2^n-1,所以可以计算出1s内溢出的次数为fc * M / 2^n,因为寄存器中的值从0增加到2^n-1,刚好输出一个周期的正弦波信号。所以,寄存器溢出的次数就是输出正弦波的周期数。

1s内输出正弦波的周期数就为DDS输出的正弦波的频率,也就是我们的目标频率 f0 = fc * M / 2^n

比如我们上一篇中,fc = 50Mhz,M = 1,n = 8,所以可以计算出目标频率f0 = 195Mhz;当M = 2时,f0 = 390MhzM = 2刚好是M = 1时目标频率的2倍,

当已知目标频率,求频率控制字M时,M = f0 * 2^n / fc

下一篇将介绍DDS发生器的verilog实现

DDS发生器的频率控制字原理和基本结构(二)相关推荐

  1. 浅谈DDS IP核之频率控制字与相位控制字

    1.概述 本文是用于记录vivado中DDS IP核输出任意频率,与任意相位的关键点,即频率控制字与相位控制字的设置. 2.参考文档 <pg141-dds-compiler> <基于 ...

  2. DDS发生器的verilog实现(三)

    DDS发生器的verilog实现(三) 前面讲解了正弦波发生器和DDS基础知识,这篇文章主要讲解如何在fpga上实现DDS发生器,同时对上一篇的文章进行补充. 确定频率控制字的DDS发生器 首先对初始 ...

  3. Socket 套接字原理详解

    Socket 套接字原理详解 socket 编程介绍 Socket编程封装了常见的TCP.UDP操作,可以实现非常方便的网络编程. socket() 函数介绍 # socket.socket(fami ...

  4. Cocos2d-x中图字原理之深入分析

    [Cocos2d-x相关教程来源于红孩儿的游戏编程之路 CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加 ...

  5. 深入理解Socket套接字原理

    Socket套接字原理 1.什么是Socket 在计算机领域,套接字Socket作为计算机之间进行通信的固定的约定方式之一存在.这种太抽象了,我举个例子,我们要是用笔记本电脑前需要先对电脑供电,那供电 ...

  6. Taro多端开发实现原理与项目实战(二)

    Taro多端开发实现原理与项目实战(二) 多端电商平台项目概述及开发准备 学习了前面的基础知识和进阶后是否跃跃欲试?我们准备了一个电商平台的项目来和大家一起实践使用 Taro 开发电商平台. 项目概述 ...

  7. ASP.NET页面与IIS底层交互和工作原理详解 (二)

    第三回: 引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了Http请求在服务器端的处理流程,随后我们知道Http请求最终会由实现了IHttpHandler ...

  8. 3.1.9 OS之二级页表的原理和地址结构

    文章目录 0.思维导图 1.为什么引入二级页表? 2.二级页表的原理和地址结构 3.如何实现二级页表的地址变换? 4.几个小细节 0.思维导图 1.为什么引入二级页表? 因为单级页表存在一些问题,所以 ...

  9. 数据库原理—数据库基础(二)

    数据库原理-数据库基础(二) 一.数据和信息 (一).信息 信息是客观存在的,是关于现实世界事物的存在方式或运动状态反映的综合 信息与材料和能源一个层次,是人类社会赖以生存和发展的三大资源之一 (二) ...

最新文章

  1. PanoNet3D:一种3D目标检测方法
  2. linux 扩展zhu分区,Linux分区调整(LVM和非LVM环境中扩容和缩小)
  3. 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
  4. Android Studio 错误集
  5. 5G的7大用途,你知道几个?
  6. python 定义变量_python-003-变量
  7. How can I force Python's file.write() to use the same newline format in Windows as in Linux (“\r\n”
  8. 精通Android开发 0
  9. iOS:xxx referenced from
  10. cfa三级真题和mock_cfa三级要看哪些书?
  11. 华为路由器配置NAT
  12. 单相全桥逆变电路工作过程
  13. Linux重置root 密码
  14. 自动化测试工具 Selenium WebDriver 入门教程
  15. 电子商务网站设计的艺术
  16. 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMP...
  17. 微信小程序轮播图(焦点图)-swiper 横向轮播、纵向轮播
  18. 【愚公系列】2022年09月 微信小程序-WebGL纹理材质的使用
  19. 深圳住房公积金制度即将施行 非深户也可缴存
  20. opencv opencv contrib

热门文章

  1. 用python整个活(4)——哥德巴赫猜想
  2. 【组合逻辑电路】如何从真值表中求解逻辑函数?
  3. wps office 2010 Wps文字文档保存及自动保存方法介绍
  4. 4G无线遥控器RC遥控器方案【免费开源】DIY
  5. 中年人学C语言Windows程序设计,9 窗口绘图:直线的画法
  6. 【算法思考】三维视觉常见问题
  7. 苹果系统tft选哪个服务器不卡,tft和ips选哪个 tft和ips区别介绍【图文】
  8. toad for oracle如何执行sql文件,toad执行sql语句
  9. CCF-GAIR 2020 源创专场 | 免费领取学术票
  10. 服务器系统部署方案,服务器 部署方案