这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » DDS信号发生器,verilog源程序,就这么简单

共1条 1/1 1 跳转至

DDS信号发生器,verilog源程序,就这么简单

工程师
2013-05-24 14:20:30     打赏

DDS源程序就这么简单,想输出多少频率的信号就输出多少频率的信号。

至于灵和运用,还需要学习DDS的原理。

DDS原理每本教程讲的都大致一样,这里就不提出来了,对照原理看程序应该很明了的。


`timescale 1ns / 10ps

//DDS 信号发生器,一个时钟对应一个输出值,输出值根据频率的要求在正弦波中查找
//R=fclk/(2^N)  %DDS分辨率,由累加器位数决定,
//FrequencyKey=floor(fout/R)

module DDS_SC(             //singal carrier
input CLK_IN,
input RESET,
input [27:0] FRE_Key,     //频率控制字:FRE_Key= 2^28*f_out/f_in
input [27:0] PH_Key,      //相位控制字
output reg [1:0] SC_OUT  //singal carrier output
);

reg [27:0] pha_acc;     //28bits Phase accumulator 268435456


//信号发生器查找表
reg [1:0] rom_add;      //CA信号查找表地址,可以取更多位数,然后根据需要取高位。
wire [1:0] rom_out;     //CA信号查找表对应值
assign rom_out = rom_add;


// 产生信号
always@(posedge RESET or posedge CLK_IN)
begin
if(RESET)
    begin
    pha_acc<=PH_Key; //初始相位    
    SC_OUT<=0;
    end
else
    begin
    pha_acc<=pha_acc+FRE_Key;
    rom_add<=pha_acc[27:26];
    SC_OUT<=rom_out;
    end
end
endmodule




关键词: verilog     DDS     信号发送器    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]