Skip to content

Commit 833e6b1

Browse files
rootroot
authored andcommitted
code cleanup, eliminated warnings
1 parent 06ac6a9 commit 833e6b1

File tree

4 files changed

+23
-24
lines changed

4 files changed

+23
-24
lines changed

hdl/cic_d.sv

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ localparam bit unsigned [127:0] Gain_max = (CIC_R * CIC_M) ** CIC_N;
3232
localparam B_max = clog2_l(Gain_max) + INP_DW;
3333
localparam truncated_bits = B_max - OUT_DW;
3434
localparam dw_out = B_max - get_prune_bits(2*CIC_N);
35-
localparam bit unsigned [127:0] base2 = 2;
3635
/*********************************************************************************************/
3736

3837
function integer get_prune_bits(input integer i);
@@ -52,7 +51,7 @@ localparam SCALING_FACTOR_WIDTH = clog2_l(clog2_l(CIC_R)*CIC_N)+1;
5251
localparam SCALING_FACTOR_SHIFT = 5*CIC_N;
5352
localparam EXACT_SCALING_FACTOR_WIDTH = clog2_l(clog2_l(CIC_R)*CIC_N)+SCALING_FACTOR_SHIFT+1;
5453
reg unsigned [SCALING_FACTOR_WIDTH-1:0] current_scaling_factor = 0;
55-
reg unsigned [EXACT_SCALING_FACTOR_WIDTH-1:0] current_exact_scaling_factor = ((base2**clog2_l(Gain_max))<<SCALING_FACTOR_SHIFT)/Gain_max;
54+
reg unsigned [EXACT_SCALING_FACTOR_WIDTH-1:0] current_exact_scaling_factor = (((128'(2))**clog2_l(Gain_max))<<SCALING_FACTOR_SHIFT)/Gain_max;
5655

5756
if (VARIABLE_RATE) begin
5857
(* ram_style = "distributed" *) reg unsigned [SCALING_FACTOR_WIDTH-1:0] LUT [1:CIC_R];
@@ -82,22 +81,21 @@ if (VARIABLE_RATE) begin
8281
initial begin
8382
// this LUT calculation in verilog is limited, it works for R=4095, N=6, M=1
8483
// if larger values are needed, do LUT calculation outside verilog, ie python
85-
bit unsigned [127:0] k;
86-
localparam bit unsigned [127:0] R_extended = CIC_R;
8784
reg unsigned [127:0] gain_diff;
8885
reg unsigned [31:0] pre_shift;
8986
reg unsigned [EXACT_SCALING_FACTOR_WIDTH-1:0] post_mult;
87+
integer k;
9088
reg unsigned [clog2_l(CIC_R):0] small_k;
9189
for(k=1;k<=CIC_R;k=k+1) begin
9290
small_k = k[clog2_l(CIC_R):0];
93-
gain_diff = (((R_extended<<(SCALING_FACTOR_SHIFT/CIC_N))/k)**CIC_N);
91+
gain_diff = (((128'(CIC_R)<<(SCALING_FACTOR_SHIFT/CIC_N))/k)**CIC_N);
9492
pre_shift = flog2_l(gain_diff>>(SCALING_FACTOR_SHIFT));
9593
LUT[small_k] = pre_shift[SCALING_FACTOR_WIDTH-1:0];
9694
if (EXACT_SCALING) begin
9795
post_mult = (gain_diff >> pre_shift);
9896
LUT2[small_k] = post_mult[EXACT_SCALING_FACTOR_WIDTH-1:0];
9997
end
100-
$display("scaling_factor[%d] = %d factor rounded = %d factor exact = %d mult = %d", k, LUT[small_k], base2**pre_shift, gain_diff>>SCALING_FACTOR_SHIFT, LUT2[small_k]);
98+
$display("scaling_factor[%d] = %d factor rounded = %d factor exact = %d mult = %d", k, LUT[small_k], 128'(2)**pre_shift, gain_diff>>SCALING_FACTOR_SHIFT, LUT2[small_k]);
10199
end
102100
end
103101
end
@@ -246,18 +244,18 @@ reg [CIC_N : 0] comb_inp_str_d;
246244
generate
247245

248246
for (j = 0; j < CIC_N; j = j + 1) begin : comb_stage
249-
localparam B_m_j_m1 = get_prune_bits(CIC_N + j);
250-
localparam B_m_j = get_prune_bits(CIC_N + j + 1);
251-
localparam idw_cur = B_max - B_m_j_m1;
252-
localparam odw_cur = B_max - B_m_j;
247+
localparam B_m_j_m1 = get_prune_bits(CIC_N + j);
248+
localparam B_m_j = get_prune_bits(CIC_N + j + 1);
249+
localparam idw_cur = B_max - B_m_j_m1;
250+
localparam odw_cur = B_max - B_m_j;
253251
wire signed [idw_cur - 1 : 0] comb_in;
254252
wire signed [idw_cur - 1 : 0] comb_inst_out;
255253
wire signed [odw_cur - 1 : 0] comb_out;
256254
if (j == 0) assign comb_in = ds_out_samp_data;
257255
else assign comb_in = comb_stage[j - 1].comb_out;
258256
assign comb_out = comb_inst_out[idw_cur - 1 -: odw_cur]; // throw away some LSBs
259257

260-
wire comb_in_str;
258+
wire comb_in_str;
261259
if (j == 0) assign comb_in_str = ds_out_samp_str;
262260
else assign comb_in_str = comb_stage[j - 1].comb_dv;
263261

@@ -283,13 +281,13 @@ generate
283281
end
284282
endgenerate
285283
/*********************************************************************************************/
286-
reg signed [OUT_DW-1+SCALING_FACTOR_SHIFT:0] comb_out_samp_data_reg;
287-
reg comb_out_samp_str_reg;
288-
reg unsigned [EXACT_SCALING_FACTOR_WIDTH-1:0] current_exact_scaling_factor_reg;
284+
reg signed [OUT_DW-1+SCALING_FACTOR_SHIFT:0] comb_out_samp_data_reg;
285+
reg comb_out_samp_str_reg;
286+
reg unsigned [EXACT_SCALING_FACTOR_WIDTH-1:0] current_exact_scaling_factor_reg;
289287

290288
always @(posedge clk)
291289
begin
292-
if (~reset_n) begin
290+
if (~reset_n) begin
293291
comb_out_samp_data_reg <= '0;
294292
comb_out_samp_str_reg <= '0;
295293
end

hdl/cic_functions.vh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function reg unsigned [127 : 0] nchoosek; ///< Binomial coefficient
1515
begin
1616
tmp = 1.0;
1717
for (i = 1; i <= (n - k); i = i + 1)
18-
tmp = tmp * (k + i) / i;
18+
tmp = tmp * (128'(k) + 128'(i)) / 128'(i);
1919
nchoosek = tmp;
2020
end
2121
endfunction
@@ -43,7 +43,7 @@ function integer B_max_calc;
4343
input integer INP_DW;
4444
reg unsigned [127:0] RMpN;
4545
begin
46-
RMpN = (R * M) ** N;
46+
RMpN = (128'(R) * M) ** N;
4747
B_max_calc = clog2_l(RMpN) + INP_DW;
4848
//$display("B_max_calc: N=%2d, R=%2d, M=%2d, ret=%2d", N, R, M, B_max_calc);
4949
end
@@ -92,13 +92,13 @@ function reg signed [127:0] h_calc;
9292
prod_1 = nchoosek(N, i);
9393
prod_2 = nchoosek(N - j + k - R * M * i, k - R * M * i);
9494
summ = prod_1 * prod_2;
95-
if (i % 2) summ = -summ;
95+
if ((i % 2) == 1) summ = -summ;
9696
tmp = tmp + summ;
9797
end
9898
end
9999
else begin
100100
tmp = nchoosek(2 * N + 1 - j, k);
101-
if (k % 2) tmp = -tmp;
101+
if ((k % 2) == 1) tmp = -tmp;
102102
end
103103
h_calc = tmp;
104104
end
@@ -149,11 +149,11 @@ function integer B_calc;
149149
if (j == 2 * N + 1) begin
150150
B_calc = B_max - dw_out;
151151
end else begin
152-
B_2Np1 = B_max - dw_out;
152+
B_2Np1 = {{(128-32){1'b0}},B_max - dw_out};
153153
F_sq_j = F_sq_calc(j, N, R, M);
154154
F_sq_2Np1 = F_sq_calc(2 * N + 1, N, R, M);
155155
sigma_T_2Np1_sq = (128'b1 << (2 * B_2Np1)) * F_sq_2Np1 / 12;
156-
B_exp_real = (sigma_T_2Np1_sq / F_sq_j * 6 / N);
156+
B_exp_real = (sigma_T_2Np1_sq / F_sq_j * 6 / 128'(N));
157157
B_out = flog2_l(B_exp_real) / 2;
158158
B_calc = B_out;
159159
end

hdl/cic_i.sv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
`timescale 1ns / 1ns
12
module cic_i
23
/*********************************************************************************************/
34
#(parameter dw = 8, r = 4, m = 4, g = 1)

hdl/downsampler.sv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,21 @@ reg [DECIM_COUNTER_WIDTH - 1 : 0] counter;
2323
always @(posedge clk)
2424
begin
2525
if (!reset_n) counter <= '0;
26-
else if (s_axis_in_tvalid) counter <= (counter < CIC_R - 1) ? counter + {{(DECIM_COUNTER_WIDTH - 1){1'b0}}, 1'b1} : '0;
26+
else if (s_axis_in_tvalid) counter <= (32'(counter) < CIC_R - 1) ? counter + {{(DECIM_COUNTER_WIDTH - 1){1'b0}}, 1'b1} : '0;
2727
end
2828
/*********************************************************************************************/
2929
// output register
3030
always @(posedge clk)
3131
begin
3232
if (!reset_n) m_axis_out_tdata <= '0;
33-
else if (s_axis_in_tvalid) m_axis_out_tdata <= (counter < CIC_R - 1) ? m_axis_out_tdata : s_axis_in_tdata;
33+
else if (s_axis_in_tvalid) m_axis_out_tdata <= (32'(counter) < CIC_R - 1) ? m_axis_out_tdata : s_axis_in_tdata;
3434
end
3535
/*********************************************************************************************/
3636
// data valid register
3737
always @(posedge clk)
3838
begin
3939
if (!reset_n) m_axis_out_tvalid <= 1'b0;
40-
else if (s_axis_in_tvalid) m_axis_out_tvalid <= (counter == CIC_R - 1);
40+
else if (s_axis_in_tvalid) m_axis_out_tvalid <= (32'(counter) == CIC_R - 1);
4141
else m_axis_out_tvalid <= 1'b0;
4242
end
4343
/*********************************************************************************************/

0 commit comments

Comments
 (0)