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

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 / 1ps

module mydds(
 clk,led,dac_data 
 );
parameter CNT_W =  21;        // 参数控制存储计数器向量的宽度,如4Mhz约为22位
parameter LED_W =  18;        // 控制LED闪动频率的参数:时钟频率/2^{LED_W} HZ  2^18 = 262144

input clk;                 // 时钟                           
output led;                   // 指示状态的LED                             
output [9:0] dac_data;        // 10位数据输出给外部的DAC器件

reg [CNT_W:0] cnt;               // 计数器
always@(posedge clk) begin
    cnt <= cnt + 1'b1;
end

assign led= cnt[LED_W];          

lookup_tables u_lookup_tables(.address(cnt), .out(dac_data));// 简化代码,cnt输入香味值
 
endmodule

lookup_tables

`timescale 1ns / 1ps

module lookup_tables(address, out);
input  	[7:0] 	address;// 7位输入端口,地址
output 	[9:0] 	out;// 10位输出端口,值
reg      [9:0]    out;
 
always @(address)
	begin
			case(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;
				 endcase
		  end
endmodule
 

CG

资源限制

  • 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 at
   least 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 with
   the selected implementation options.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值