DDS

DDS(Direct Digital Systhesize 直接数字频率合成器)具有相对带宽很宽、频率捷变速率快、频率分辨率高、输出相位连续、可输出带宽的正交信号、可编程、全数字化和便于集成的优越性。

DDS的理论是根据奈奎斯特采样定理,对于一个周期连续信号,可以沿其相位轴方向,以等量的相位间隔对其进行相位或幅度的采样,得到周期信号的离散相位幅度序列,并对模拟幅度值进行量化,量化后的幅值采用相应的二进制编码。将编固化到ROM中,每个存储单元的地址就是相位采样的地址,存储单元的内容就是周期信号的幅值。

代码:

module dds_module
(
	input			clk_50m,
	input			rst_n,

	input [31:0]	pid_frequency,
	input [31:0]	pid_phase,
	input [2:0]		pid_type,
	
	input			pic_ce,
	input			pic_we,
	output [7:0]	pod_dds
);

reg [31:0]	add_a,n_add_a;
reg [31:0]	add_b,n_add_b;
reg [31:0]	add_c,n_add_c;
wire [31:0]	add;
wire [9:0]	addr;
wire [7:0]	Sawtooth_data;
wire [7:0]	Sine_data;
wire [7:0]	Square_data;
wire [7:0]	Triangular_data;

always @ (posedge clk_50m)
begin
	if (!rst_n)
		add_a <= 32'd0;
	else
		add_a <= n_add_a;
end

always @ (*)
begin
	if (pic_we)
		n_add_a = pid_frequency;
	else
		n_add_a = 32'd0;
end

always @ (posedge clk_50m)
begin
	if (!rst_n)
		add_b <= 32'd0;
	else
		add_b <= n_add_b;
end

always @ (*)
begin
	if (pic_ce)
		n_add_b = pid_phase;
	else
		n_add_b = 32'd0;
end

always @ (posedge clk_50m)
begin
	if (!rst_n)
		add_c <= 32'd0;
	else
		add_c <= n_add_c;
end

always @ (*)
begin
	if (pic_ce)
		n_add_c = add_c + add_a;
	else
		n_add_c = 32'd0;
end

assign add = add_c + add_b;

assign addr = add[31:22];

assign pod_dds = (pid_type[2] == 1'b0) ? 8'd0 : ((pid_type[1]) ? ((pid_type[0]) ? Sawtooth_data : Sine_data) : ((pid_type[0]) ? Square_data : Triangular_data));

rom_Sawtooth	rom_Sawtooth_inst 
(
	.address ( addr ),
	.clock 	( clk_50m ),
	.q 		( Sawtooth_data )
);
	
rom_Sine	rom_Sine_inst  
(
	.address ( addr ),
	.clock 	( clk_50m ),
	.q 		( Sine_data )
);
	
rom_Square	rom_Square_inst 
(
	.address ( addr ),
	.clock 	( clk_50m ),
	.q 		( Square_data )
);

rom_Triangular	rom_Triangular_inst 
(
	.address ( addr ),
	.clock	( clk_50m ),
	.q 		( Triangular_data )
);


endmodule



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值