4 localparam SWIDTH = 17;
5 localparam CWIDTH = 18;
6 localparam TWIDTH = 20;
7 localparam ACC_WIDTH = 40;
10 wire strobe_in, strobe_out;
11 reg [SWIDTH-1:0] sample_in;
12 wire signed [SWIDTH:0] sample_out;
20 initial $dumpfile("hb_tb.vcd");
21 initial $dumpvars(0,hb_tb);
23 always #5 clk <= ~clk;
31 reg [7:0] stb_counter;
39 stb_counter <= stb_counter - 1;
40 assign strobe_in = (stb_counter == 0);
42 hb_decim #(.SWIDTH(SWIDTH),.CWIDTH(CWIDTH),
43 .TWIDTH(TWIDTH),.ACC_WIDTH(ACC_WIDTH)) hb_decim
44 (.clk(clk), .rst(rst),
45 .set_stb(set_stb), .set_addr(set_addr), .set_data(set_data),
46 .sample_in(sample_in),
47 .strobe_in(strobe_in),
48 .sample_out(sample_out),
49 .strobe_out(strobe_out)
56 set_addr <= 124; // load coeffs
66 set_data <= -18'd1681;
70 set_data <= -18'd6282;
72 set_data <= 18'd20628;
74 set_addr <=125; // load table
75 // { stb_out, accum, load_accum, done, even_addr, odd_addr_a, odd_addr_b, coeff_addr }
76 set_data <= {1'b1,1'b1,1'b0,1'b1,4'd15,4'd15,4'd0,4'd0}; // Phase 8
78 set_data <= {1'b0,1'b1,1'b0,1'b0,4'd15,4'd14,4'd1,4'd1}; // Phase 7
80 set_data <= {1'b0,1'b1,1'b0,1'b0,4'd15,4'd13,4'd2,4'd2}; // Phase 6
82 set_data <= {1'b0,1'b1,1'b0,1'b0,4'd15,4'd12,4'd3,4'd3}; // Phase 5
84 set_data <= {1'b0,1'b1,1'b0,1'b0,4'd15,4'd11,4'd4,4'd4}; // Phase 4
86 set_data <= {1'b0,1'b1,1'b0,1'b0,4'd15,4'd10,4'd5,4'd5}; // Phase 3
88 set_data <= {1'b0,1'b1,1'b0,1'b0,4'd15,4'd9,4'd6,4'd6}; // Phase 2
90 set_data <= {1'b0,1'b0,1'b1,1'b0,4'd15,4'd8,4'd7,4'd7}; // Phase 1
92 set_data <= {1'b0,1'b0,1'b0,1'b0,4'd15,4'd8,4'd7,4'd7}; // Phase 0
95 end // block: load_coeffs
101 @(posedge strobe_in);
105 @(posedge strobe_in);
107 @(posedge strobe_in);
110 @(posedge strobe_in);
113 @(posedge strobe_in);
116 @(posedge strobe_in);
119 @(posedge strobe_in);
122 @(posedge strobe_in);
126 @(posedge strobe_in);
128 @(posedge strobe_in);
131 @(posedge strobe_in);
134 @(posedge strobe_in);
137 @(posedge strobe_in);
140 @(posedge strobe_in);
143 @(posedge strobe_in);
147 always @(posedge clk)
151 always @(posedge clk)
153 $display("\t",sample_out);