99 lines
1.8 KiB
Coq
99 lines
1.8 KiB
Coq
|
module TB();
|
||
|
|
||
|
initial
|
||
|
begin
|
||
|
$fsdbDumpfile("TB.fsdb");
|
||
|
$fsdbDumpvars(0, TB);
|
||
|
end
|
||
|
|
||
|
reg clk;
|
||
|
reg rstn;
|
||
|
reg en;
|
||
|
reg [15:0] din_in;
|
||
|
reg [21:0] cnt;
|
||
|
|
||
|
|
||
|
initial begin
|
||
|
|
||
|
#0;
|
||
|
rstn = 1'b0;
|
||
|
clk = 1'b0;
|
||
|
din_in = 1'b0;
|
||
|
en = 1'b0;
|
||
|
#300;
|
||
|
rstn = 1'b1;
|
||
|
|
||
|
end
|
||
|
|
||
|
always #200 clk = ~clk;
|
||
|
|
||
|
|
||
|
always@(posedge clk or negedge rstn)
|
||
|
if(!rstn)
|
||
|
cnt <= 22'd0;
|
||
|
else
|
||
|
cnt <= cnt + 22'd1;
|
||
|
|
||
|
|
||
|
initial begin
|
||
|
wait(cnt[17]==1'b1)
|
||
|
$finish(0);
|
||
|
end
|
||
|
always@(posedge clk or negedge rstn)
|
||
|
begin
|
||
|
if(cnt >= 2047 )
|
||
|
begin
|
||
|
en <= 1'b1;
|
||
|
end
|
||
|
else
|
||
|
begin
|
||
|
en <= 1'b0;
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
reg [47:0] fcw;
|
||
|
|
||
|
initial begin
|
||
|
fcw = 48'h0840_0000_0000;
|
||
|
end
|
||
|
|
||
|
wire [15:0] cos;
|
||
|
wire [15:0] sin;
|
||
|
|
||
|
|
||
|
NCO inst_nco_0(
|
||
|
.clk (clk ),
|
||
|
.rstn (rstn ),
|
||
|
.phase_manual_clr (1'b0 ),
|
||
|
.phase_auto_clr (1'b0 ),
|
||
|
.fcw (fcw ),
|
||
|
.pha (16'd0 ),
|
||
|
.cos (cos ),
|
||
|
.sin (sin )
|
||
|
);
|
||
|
|
||
|
|
||
|
wire [15:0] dout_p0;
|
||
|
wire [15:0] dout_p1;
|
||
|
|
||
|
MeanIntp2 inst_MeanIntp2
|
||
|
(
|
||
|
.clk (clk ),
|
||
|
.rstn (rstn ),
|
||
|
.en (en ),
|
||
|
.din (cos & {16{en}} ),
|
||
|
.dout_m (dout_p0 ),
|
||
|
.dout_o (dout_p1 )
|
||
|
);
|
||
|
|
||
|
reg [15:0] cs_wave;
|
||
|
|
||
|
always@(posedge clk) cs_wave = dout_p1;
|
||
|
always@(negedge clk) cs_wave = dout_p0;
|
||
|
|
||
|
endmodule
|
||
|
|
||
|
|
||
|
|