9
9
// //
10
10
// ///////////////////////////////////////////////////////////////////
11
11
// //
12
- // Copyright (C) 2016-2018 ROA Logic BV //
12
+ // Copyright (C) 2017-2020 ROA Logic BV //
13
13
// www.roalogic.com //
14
14
// //
15
15
// Unless specifically agreed in writing, this software is //
@@ -126,7 +126,7 @@ module apb_gpio #(
126
126
IRQ_ENA = 8 ;
127
127
128
128
// number of synchronisation flipflop stages on GPIO inputs
129
- localparam INPUT_STAGES = 3 ;
129
+ localparam INPUT_STAGES = 2 ;
130
130
131
131
132
132
// ////////////////////////////////////////////////////////////////
@@ -155,8 +155,6 @@ module apb_gpio #(
155
155
// Input register, to prevent metastability
156
156
logic [PDATA_SIZE - 1 : 0 ] input_regs [INPUT_STAGES ];
157
157
158
- integer n;
159
-
160
158
161
159
// ////////////////////////////////////////////////////////////////
162
160
//
@@ -285,7 +283,7 @@ module apb_gpio #(
285
283
* Internals
286
284
*/
287
285
always @ (posedge PCLK )
288
- for (n= 0 ; n< INPUT_STAGES ; n++ )
286
+ for (int n= 0 ; n< INPUT_STAGES ; n++ )
289
287
if (n== 0 ) input_regs[n] <= gpio_i;
290
288
else input_regs[n] <= input_regs[n- 1 ];
291
289
@@ -297,7 +295,7 @@ module apb_gpio #(
297
295
// 0=push-pull drive out_reg value onto transmitter input
298
296
// 1=open-drain always drive '0' onto transmitter
299
297
always @ (posedge PCLK )
300
- for (n= 0 ; n< PDATA_SIZE ; n++ )
298
+ for (int n= 0 ; n< PDATA_SIZE ; n++ )
301
299
gpio_o[n] <= mode_reg[n] ? 1'b0 : out_reg[n];
302
300
303
301
@@ -307,7 +305,7 @@ module apb_gpio #(
307
305
// 1=open-drain 1=Hi-Z disable transmitter
308
306
// 0=low enable transmitter
309
307
always @ (posedge PCLK )
310
- for (n= 0 ; n< PDATA_SIZE ; n++ )
308
+ for (int n= 0 ; n< PDATA_SIZE ; n++ )
311
309
gpio_oe[n] <= dir_reg[n] & ~ (mode_reg[n] ? out_reg[n] : 1'b0 );
312
310
313
311
@@ -334,12 +332,12 @@ module apb_gpio #(
334
332
335
333
// trigger status
336
334
always_comb
337
- for (n= 0 ; n< PDATA_SIZE ; n++ )
335
+ for (int n= 0 ; n< PDATA_SIZE ; n++ )
338
336
case (tr_type_reg[n])
339
- 0 : tr_status = (tr_lvl0_reg[n] & ~ in_reg[n]) |
340
- (tr_lvl1_reg[n] & in_reg[n]);
341
- 1 : tr_status = (tr_lvl0_reg[n] & tr_falling_edge_reg[n]) |
342
- (tr_lvl1_reg[n] & tr_rising_edge_reg [n]);
337
+ 0 : tr_status[n] = (tr_lvl0_reg[n] & ~ in_reg[n]) |
338
+ (tr_lvl1_reg[n] & in_reg[n]);
339
+ 1 : tr_status[n] = (tr_lvl0_reg[n] & tr_falling_edge_reg[n]) |
340
+ (tr_lvl1_reg[n] & tr_rising_edge_reg [n]);
343
341
endcase
344
342
345
343
0 commit comments