dds频率控制字和频率的关系_基于单片机的dds信号发生器[通俗易懂]

dds频率控制字和频率的关系_基于单片机的dds信号发生器[通俗易懂]DDS发生器的频率控制字原理和基本结构(二)在正弦波发生器的verilog实现(一)中已经实现了最基本的功能,这篇文章将主要讲解DDS发生器的频率控制字原理和基本结构

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

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

在这里先给出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=1时的仿真结果

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

M=2时的仿真结果

目标频率 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频率控制字和频率的关系_基于单片机的dds信号发生器[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/76476.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注