52 lines
1.1 KiB
Verilog
52 lines
1.1 KiB
Verilog
`timescale 1ns/1ps
|
|
|
|
module tb_sigmadelta();
|
|
// Clock and reset generation
|
|
reg clk;
|
|
reg resetn;
|
|
initial clk <= 1'b0;
|
|
initial resetn <= 1'b0;
|
|
always #6.667 clk <= !clk;
|
|
initial #40 resetn <= 1'b1;
|
|
|
|
// Default run
|
|
initial begin
|
|
$dumpfile("out.vcd");
|
|
$dumpvars;
|
|
#2_000_000
|
|
$finish;
|
|
end;
|
|
|
|
wire sd_a;
|
|
wire sd_b;
|
|
wire sd_o;
|
|
// 3K3R 220PC 15MHZT
|
|
sigmadelta_sampler sd_sampler(
|
|
.clk(clk),
|
|
.a(sd_a), .b(sd_b),
|
|
.o(sd_o)
|
|
);
|
|
|
|
wire signed [15:0] sample_q15;
|
|
sigmadelta_rcmodel_q15 rc_model(
|
|
.clk(clk), .resetn(resetn),
|
|
.sd_sample(sd_o),
|
|
.sample_q15(sample_q15)
|
|
);
|
|
|
|
wire signed [15:0] y_q15;
|
|
lpf_iir_q15_k #(10) lpf(
|
|
.clk(clk), .rst_n(resetn),
|
|
.x_q15(sample_q15),
|
|
.y_q15(y_q15)
|
|
);
|
|
|
|
wire signed [15:0] decimated_q15;
|
|
decimate_by_r_q15 #(400, 10) decimate(
|
|
.clk(clk), .rst_n(resetn),
|
|
.in_valid(1'b1), .in_q15(y_q15),
|
|
.out_valid(), .out_q15(decimated_q15)
|
|
);
|
|
|
|
endmodule
|