当前位置: 首页> 健康> 知识 > 电路笔记(信号) : 一个极简的DDS信号发生器

电路笔记(信号) : 一个极简的DDS信号发生器

时间:2025/7/10 17:42:21来源:https://blog.csdn.net/ResumeProject/article/details/141826565 浏览次数:0次

DDS原理

  • 直接数字合成(DDS)是一种利用数字技术生成精确频率和波形的信号的技术。一般有高精度、快速频率切换以及良好的相位噪声性能。

在这里插入图片描述

相位-幅度查找表(图中使用的ROM)

  • ROM起一个字典作用,根据相位值输出对应的幅值。

相位累加器

  • 相位累加

    • 相位累加器由一个M位宽的寄存器和一个M位宽的加法器组成。
    • 每个时钟周期,加法器将当前的相位值(寄存器中的值)与一个增量值(K)相加。
    • 结果被存储回寄存器,并用作下一个时钟周期的相位值。
  • 频率计算

    • DDS生成的输出信号频率 f o u t f_{out} fout可以通过相位累加器的增量值 K K K 和系统时钟频率 f c l k f_{clk} fclk计算。

    • 频率 f o u t f_{out} fout 的公式是:
      f o u t = K × f c l k 2 M f_{out} = \frac{K \times f_{clk}}{2^M} fout=2MK×fclk
      其中, 2 M 2^M 2M 是相位累加器的最大值加1(即累加器的计数范围)。

    • 相位累加器的位宽(M)影响频率分辨率。位宽越大,能够精确表示的频率增量越小,从而提供更高的频率分辨率。

    • 位宽越大,生成的频率范围也越广,但同时也要求更高的硬件资源和更复杂的设计。

DAC的作用

  • DAC的作用:为什么通过FPGA实现正弦波形信号发生器还需要通过FPGA驱动ADC?
    • 因为FPGA本身只能生成数字信号。要生成连续不断的模拟波形,通常需要将FPGA产生的数字信号通过DAC转换为模拟信号。8/10/12位、高带宽、并行接口乘法DAC
    • 常用的DAC芯片包括AD9708、MAX5216、DAC8568、MCP4725和LTC1668等。具体选择会根据精度、分辨率和速度等需求来决定。

实现

mydds

`timescale 1ns / 1psmodule mydds(clk,led,dac_data );
parameter CNT_W =  21;        // 参数控制存储计数器向量的宽度,如4Mhz约为22位
parameter LED_W =  18;        // 控制LED闪动频率的参数:时钟频率/2^{LED_W} HZ  2^18 = 262144input clk;                 // 时钟                           
output led;                   // 指示状态的LED                             
output [9:0] dac_data;        // 10位数据输出给外部的DAC器件reg [CNT_W:0] cnt;               // 计数器
always@(posedge clk) begincnt <= cnt + 1'b1;
endassign led= cnt[LED_W];          lookup_tables u_lookup_tables(.address(cnt), .out(dac_data));// 简化代码,cnt输入香味值endmodule

lookup_tables

`timescale 1ns / 1psmodule lookup_tables(address, out);
input  	[7:0] 	address;// 7位输入端口,地址
output 	[9:0] 	out;// 10位输出端口,值
reg      [9:0]    out;always @(address)begincase(address)	7'h0: out=10'd0;// 数值根据想显示的波形确定7'h1: out=10'd10;7'h2: out=10'd100;7'h3: out=10'd1000;7'h4: out=10'd2000;7'h5: out=10'd3000;7'h6: out=10'd4000;7'h7: out=10'd5000;7'h8: out=10'd6000;7'h9: out=10'd7000;7'ha: out=10'd7000;7'hb: out=10'd8000;7'hc: out=10'd9000;7'hd: out=10'd10000;7'he: out=10'd9000;7'hf: out=10'd8000;7'h10: out=10'd7000;default: out = 10'd6000;endcaseend
endmodule

CG

  • 参考视频:DDS原理详解与实现

资源限制

  • XC9572 System frequency up to 178 MHz,但是存储资源有限,如果存储太多数据会报错:
Considering device XC9572XL-5-PC44.
Flattening design..
Multi-level logic optimization...
Timing optimization....................................................................................................................................................
Timing driven global resource optimization
General global resource optimization........
Re-checking device resources ...
ERROR:Cpld:853 - Insufficient number of product terms.  This design needs atleast 451 but only 360 left after allocating other resources.
Device 9572XL44PC was disqualified.
ERROR:Cpld:868 - Cannot fit the design into any of the specified devices withthe selected implementation options.
关键字:电路笔记(信号) : 一个极简的DDS信号发生器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: