DDS设计信号发生器

 

 

 

module DDS(clk,rst,freq,pha,key,data); 

 input wire clk;              //时钟 

 input wire rst;              //复位信号(低电平有效)

input wire [6 : 0] freq;     //频率控制信号 

input wire [6 : 0] pha;      //相移变量信号

input wire key;             //使能开关信号(高电平有效)

output wire [7 : 0] data;    //ROM查找表数据 

 reg  [6 : 0] addr;

 reg  [6 : 0] phase; 

reg  [6 : 0] frequency; 

always @(posedge clk) 

begin

if(key == 1) 

 begin 

phase <= pha;       //将相移变量值赋给寄存器phase

frequency <= freq;  //将频率控制变量值赋给frequency  

      end

end

always @(posedge clk or negedge rst)

 begin

 

 if(!rst)

 begin

addr <= 0;            //复位 

end

else

begin

if(key == 1)

 

addr <= phase; //将寄存器phase存储的相值赋给addr 

else

 addr <= addr + frequency; //ROM地址产生

      end

end

rom1 rom_1(      .address(addr),      .clock(clk),       .q(data)        );     //实例化调用rom1波形查找表endmodule