@@ -1172,30 +1172,31 @@ module datapath1
1172
1172
/* ********************************************************************/
1173
1173
// Counter logic
1174
1174
1175
- logic [WIDTH - 1 : 0 ] count_mux, count_add, count_r;
1175
+ localparam int COUNT_WIDTH = $clog2 (WIDTH );
1176
+ logic [COUNT_WIDTH - 1 : 0 ] count_mux, count_add, count_r;
1176
1177
1177
1178
// Selects between 0 and the count adder.
1178
- mux2x1 # (.WIDTH (WIDTH )) COUNT_MUX (.in0 (count_add),
1179
- .in1 (WIDTH '( 0 ) ),
1180
- .sel (count_sel),
1181
- .out (count_mux));
1179
+ mux2x1 # (.WIDTH (COUNT_WIDTH )) COUNT_MUX (.in0 (count_add),
1180
+ .in1 ('0 ),
1181
+ .sel (count_sel),
1182
+ .out (count_mux));
1182
1183
1183
1184
// Register for the count.
1184
- register # (.WIDTH (WIDTH )) COUNT_REG (.en (count_en),
1185
- .in (count_mux),
1186
- .out (count_r),
1187
- .* );
1185
+ register # (.WIDTH (COUNT_WIDTH )) COUNT_REG (.en (count_en),
1186
+ .in (count_mux),
1187
+ .out (count_r),
1188
+ .* );
1188
1189
1189
1190
// Increments the count.
1190
- add # (.WIDTH (WIDTH )) COUNT_ADD (.in0 (WIDTH '(1 )),
1191
- .in1 (count_r),
1192
- .sum (count_add));
1191
+ add # (.WIDTH (COUNT_WIDTH )) COUNT_ADD (.in0 (COUNT_WIDTH '(1 )),
1192
+ .in1 (count_r),
1193
+ .sum (count_add));
1193
1194
1194
1195
// Comparator to check when the count is complete. Equivalent to
1195
1196
// count_r == WIDTH-1 from the FSMD.
1196
- eq # (.WIDTH (WIDTH )) EQ (.in0 (count_r),
1197
- .in1 (WIDTH '(WIDTH - 1 )),
1198
- .out (count_done));
1197
+ eq # (.WIDTH (COUNT_WIDTH )) EQ (.in0 (count_r),
1198
+ .in1 (COUNT_WIDTH '(WIDTH - 1 )),
1199
+ .out (count_done));
1199
1200
1200
1201
endmodule
1201
1202
// `default_nettype wire
@@ -1232,7 +1233,9 @@ module datapath2
1232
1233
1233
1234
logic [WIDTH - 1 : 0 ] data_mux, data_r, data_shift;
1234
1235
logic [DIFF_WIDTH - 1 : 0 ] diff_r, add_in1_mux, diff_add, diff_mux, result_r;
1235
- logic [WIDTH - 1 : 0 ] count_mux, count_add, count_r;
1236
+
1237
+ localparam int COUNT_WIDTH = $clog2 (WIDTH );
1238
+ logic [COUNT_WIDTH - 1 : 0 ] count_mux, count_add, count_r;
1236
1239
1237
1240
// Data mux and shift
1238
1241
assign data_mux = data_sel ? data : data_shift;
@@ -1244,9 +1247,9 @@ module datapath2
1244
1247
assign diff_mux = diff_sel ? DIFF_WIDTH ' (0 ) : diff_add;
1245
1248
1246
1249
// Count mux, add, and done
1247
- assign count_mux = count_sel ? WIDTH ' (0 ) : count_add;
1250
+ assign count_mux = count_sel ? COUNT_WIDTH ' (0 ) : count_add;
1248
1251
assign count_add = count_r + 1'b1 ;
1249
- assign count_done = count_r == WIDTH ' (WIDTH - 1 );
1252
+ assign count_done = count_r == COUNT_WIDTH ' (WIDTH - 1 );
1250
1253
1251
1254
// Not necessary, but complies with my _r naming convention for registers
1252
1255
// created in an always block.
@@ -1476,7 +1479,8 @@ module datapath3
1476
1479
1477
1480
logic [WIDTH - 1 : 0 ] data_mux, data_r, data_shift;
1478
1481
logic [DIFF_WIDTH - 1 : 0 ] diff_r, add_in1_mux, diff_add, result_r;
1479
- logic [WIDTH - 1 : 0 ] count_add, count_r;
1482
+ localparam int COUNT_WIDTH = $clog2 (WIDTH );
1483
+ logic [COUNT_WIDTH - 1 : 0 ] count_add, count_r;
1480
1484
1481
1485
assign data_mux = data_sel ? data : data_shift;
1482
1486
assign data_shift = data_r >> 1 ;
@@ -1485,7 +1489,7 @@ module datapath3
1485
1489
assign diff_add = diff_r + add_in1_mux;
1486
1490
1487
1491
assign count_add = count_r + 1'b1 ;
1488
- assign count_done = count_r == WIDTH ' (WIDTH - 1 );
1492
+ assign count_done = count_r == COUNT_WIDTH ' (WIDTH - 1 );
1489
1493
1490
1494
assign result = result_r;
1491
1495
0 commit comments