制作DDS信号发生器(FPGA部分)

制作DDS信号发生器(FPGA部分)

功能

img

组件

32位寄存器

  • 这里采用2个16位寄存器拼接
  • 代码如下
module REG16B(CLK,D,Q);
input[15:0] D;
input CLK;
output[15:0] Q;
reg[15:0] Q;
always @(posedge CLK)
	begin
	  Q <= D;
	end				
endmodule

相位累加器

  • 代码如下
module PHASE_ACC(CLK,FREQIN,ROMADDR);
input CLK;
input [31:0]FREQIN;
output [7:0]ROMADDR;
wire [7:0]ROMADDR;
reg [31:0]ACC;
always@(posedge CLK)
begin
ACC<=ACC+FREQIN;//在时钟上升沿时,累加相位
end
assign ROMADDR=ACC[31:24];//对AD芯片仅输出高8位
endmodule

地址锁存器

  • 代码如下
module DLATCH8(CLK,D,Q);
input CLK;
input [7:0]D;
output reg [7:0]Q;
always@(CLK or D)
	begin
		if(CLK==0)
			Q<=D;	
	end
endmodule

双口RAM

配置方式

img

img

img

img

img

img

锁相环

配置方式

img

img

img

img

img

img

img

img

拼接模块

32位寄存器

img

  • 使用2个16位寄存器拼接而成

双口RAM

img

img

  • 在获得确定相位后查找ROM表中当前时刻的信号幅值
  • 将幅值的数据读取后向AD芯片输出高8位数据

AD芯片仅能读取8位数据

锁相环

img

相位累加器

img

滤波板通讯引脚

img

posted @ 2026-03-26 00:41  奶龙大王  阅读(22)  评论(0)    收藏  举报