module sine (clk, Txen,rst1, rst, addr);
input clk, // clock input
Txen,
rst1; // active-low reset
output reg[4:0] addr=0; // 8-bit output
output rst;
// ROM address
always @(posedge clk)
begin
if (Txen)
addr = addr+1;
end
assign rst=rst1;
endmodule
module ram (address,rst,data);
output [11:0] data;
input [4:0]address;
input rst;
reg [11:0] data;//数据存储器,从men中得到的数据
reg [11:0] memory [0:31];//16位*256个=4096
always @(posedge rst)
begin
memory[0]=12'h7FF;
memory[1]=12'h000;
memory[2]=12'h764;
memory[3]=12'h30F;
memory[4]=12'h5A8;
memory[5]=12'h5A8;
memory[6]=12'h30F;
memory[7]=12'h764;
memory[8]=12'h000;
memory[9]=12'h7FF;
memory[10]=12'hCF0;
memory[11]=12'h764;
memory[12]=12'hA57;
memory[13]=12'h5A8;
memory[14]=12'h89C;
memory[15]=12'h30F;
memory[16]=12'h800;
memory[17]=12'h000;
memory[18]=12'h89C;
memory[19]=12'hCF0;
memory[20]=12'hA57;
memory[21]=12'hA57;
memory[22]=12'hCF0;
memory[23]=12'h89C;
memory[24]=12'h000;
memory[25]=12'h800;
memory[26]=12'h30F;
memory[27]=12'h89C;
memory[28]=12'h5A8;
memory[29]=12'hA57;
memory[30]=12'h764;
memory[31]=12'hCF0;
end
always @(address)
data=memory[address];
endmodule
只有sine的。。。别的可以加上去。。。查表就行啦。。
其实波形关键在于波表那里,你修改一下波表就行!
具体的你可以上百度搜基于FPGA的DDS信号发生器!
波表用winTC生成,然后导入到FPGA内部ROM!