📄 sinewave.v
字号:
module top(clkin, rst, // B, NCS0_n, NWE_n, addr, DataIN, SINE1, SINE2, SINE3, SINE4,
SINE5, SINE6, clk_out );input clkin; //50M clock;input rst;//input B;//input CE; //input SCLR; //asynchronism clear//input MCK; //input NCS0_n;input NWE_n; //input [4:0] addr;input [15:0] DataIN; output [10:0]SINE1; //output sin waveoutput [10:0]SINE2;output [10:0]SINE3;output [10:0]SINE4;
output [10:0]SINE5;output [10:0]SINE6;output clk_out; //D/A clkreg [15:0] DATA_FRE1,DATA_PHA1,PHA_ACC1; //频率控制字、相位控制字、相位步长reg [15:0] DATA_FRE2,DATA_PHA2,PHA_ACC2;reg [15:0] DATA_FRE3,DATA_PHA3,PHA_ACC3;reg [15:0] DATA_FRE4,DATA_PHA4,PHA_ACC4;
reg [15:0] DATA_FRE5,DATA_PHA5,PHA_ACC5;reg [15:0] DATA_FRE6,DATA_PHA6,PHA_ACC6;wire CLK0;//wire CLK180t;wire CLKDV_OUT;
my_dcm1 instance_name (
.LOCKED_OUT(),
.CLKIN_IN(clkin),
.CLK180_OUT(),
.CLKFX_OUT(CLKDV_OUT), // 输入时钟50M,输出50M
.CLK0_OUT(CLK0),
.CLKIN_IBUFG_OUT()
);reg [15:0] CONTROL; //控制通道开关
reg [15:0] trig; //触发开关
parameter wordwidth_data=16,memsize_data=32;reg [wordwidth_data-1:0] ram_data [memsize_data-1:0];always @(posedge NWE_n or posedge rst)if(rst)beginram_data[0]<=16'b0000001111110000;
ram_data[1]<=16'b0000100011110110;ram_data[2]<=16'b0000100011110110; // 频率控制字ram_data[3]<=16'b0000100011110110;ram_data[4]<=16'b0000100011110110;ram_data[5]<=16'b0000100011110110;ram_data[6]<=16'b0000100011110110;
ram_data[7]<=0; //相位控制字ram_data[8]<=0;ram_data[9]<=0;ram_data[10]<=0;ram_data[11]<=0;ram_data[12]<=0;
ram_data[13]<=0;ram_data[14]<=0; //相位步长控制字ram_data[15]<=0;
ram_data[16]<=0;ram_data[17]<=0;
//ram_data[17]<=16'b0000011111111111;ram_data[18]<=0;
ram_data[19]<=0; ram_data[20]<=0;ram_data[21]<=0;ram_data[22]<=0;ram_data[23]<=0;ram_data[24]<=0;
ram_data[25]<=0;ram_data[26]<=0;ram_data[27]<=0;ram_data[28]<=0;ram_data[29]<=0;
ram_data[30]<=0;ram_data[31]<=1; //31用于存放触发字endelse if(NCS0_n==0)
begin
//ram_data[1]<=16'b0000010011110111;
ram_data[addr]<=DataIN;
end else
begin ram_data[addr]<=ram_data[addr];
end
always @ (posedge CLK0 or posedge rst)
if(rst)
trig<=1;
else
trig<=ram_data[31];
always @ (posedge CLK0 or posedge rst) //50M时钟if(rst)beginCONTROL<=0;
DATA_FRE1<=0;DATA_FRE2<=0;DATA_FRE3<=0;DATA_FRE4<=0;
DATA_FRE5<=0;DATA_FRE6<=0;
DATA_PHA1<=0;DATA_PHA2<=0;DATA_PHA3<=0;DATA_PHA4<=0;
DATA_PHA5<=0;DATA_PHA6<=0;
PHA_ACC1<=0;
PHA_ACC2<=0;
PHA_ACC3<=0; //控制字初始化
PHA_ACC4<=0;
PHA_ACC5<=0;
PHA_ACC6<=0;end//else if(NCS0_n==1)else if(trig==1)begin CONTROL<=ram_data[0];
//trig<= ram_data[31] DATA_FRE1<=ram_data[1];
//DATA_FRE1<=16'b0000010011110111;
DATA_FRE2<=ram_data[2]; DATA_FRE3<=ram_data[3]; // 频率控制字 DATA_FRE4<=ram_data[4];
DATA_FRE5<=ram_data[5]; DATA_FRE6<=ram_data[6]; DATA_PHA1<=ram_data[7]; DATA_PHA2<=ram_data[8]; //相位控制字 DATA_PHA3<=ram_data[9]; DATA_PHA4<=ram_data[10];
DATA_PHA5<=ram_data[11]; DATA_PHA6<=ram_data[12];
PHA_ACC1<=ram_data[13];
PHA_ACC2<=ram_data[14];
PHA_ACC3<=ram_data[15]; //相位步长控制字
PHA_ACC4<=ram_data[16];
PHA_ACC5<=ram_data[17];
PHA_ACC6<=ram_data[18];
end
else
begin CONTROL<=CONTROL;
//trig<= ram_data[31] DATA_FRE1<=DATA_FRE1;
//DATA_FRE1<=16'b0000010011110111;
DATA_FRE2<=DATA_FRE2; DATA_FRE3<=DATA_FRE3; // 频率控制字 DATA_FRE4<=DATA_FRE4;
DATA_FRE5<=DATA_FRE5; DATA_FRE6<=DATA_FRE6; DATA_PHA1<=DATA_PHA1; DATA_PHA2<=DATA_PHA2; //相位控制字 DATA_PHA3<=DATA_PHA3; DATA_PHA4<=DATA_PHA4;
DATA_PHA5<=DATA_PHA5; DATA_PHA6<=DATA_PHA6;
PHA_ACC1<= PHA_ACC1;
PHA_ACC2<= PHA_ACC2;
PHA_ACC3<= PHA_ACC3; //相位步长控制字
PHA_ACC4<= PHA_ACC4;
PHA_ACC5<= PHA_ACC5;
PHA_ACC6<= PHA_ACC6;
end
dds4 my_dds4( .DATA_FRE1(DATA_FRE1), .DATA_FRE2(DATA_FRE2), .DATA_FRE3(DATA_FRE3), .DATA_FRE4(DATA_FRE4),
.DATA_FRE5(DATA_FRE5), .DATA_FRE6(DATA_FRE6),
.DATA_PHA1(DATA_PHA1), .DATA_PHA2(DATA_PHA2), .DATA_PHA3(DATA_PHA3), .DATA_PHA4(DATA_PHA4),
.DATA_PHA5(DATA_PHA5), .DATA_PHA6(DATA_PHA6),
.PHA_ACC1(PHA_ACC1),
.PHA_ACC2(PHA_ACC2),
.PHA_ACC3(PHA_ACC3),
.PHA_ACC4(PHA_ACC4),
.PHA_ACC5(PHA_ACC5),
.PHA_ACC6(PHA_ACC6),
.CONTROL(CONTROL), //.BUTTON(B), .RST(rst), .CLK0(CLKDV_OUT),
.SINE1(SINE1), .SINE2(SINE2), .SINE3(SINE3), .SINE4(SINE4),
.SINE5(SINE5), .SINE6(SINE6) );assign clk_out=~CLKDV_OUT;endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -