4
4
module top
5
5
(
6
6
input SYSCLK
7
+ ,inout pano_button
7
8
,output GMII_RST_N
8
- ,output led_blue
9
+ ,output led_red
10
+ ,inout led_green
11
+ ,inout led_blue
9
12
10
13
// UART
11
14
,input uart_txd_i
@@ -16,15 +19,8 @@ module top
16
19
,output flash_cs_o
17
20
,output flash_si_o
18
21
,input flash_so_i
19
-
20
- // GPIO Headers
21
- ,inout [11 :0 ] porta
22
- ,inout [11 :0 ] portb
23
22
);
24
23
25
- wire [11 :0 ] porta;
26
- wire [11 :0 ] portb;
27
-
28
24
// Generate 32 Mhz system clock from 125 Mhz input clock
29
25
wire clk32_i;
30
26
@@ -105,7 +101,7 @@ fpga_top
105
101
.CLK_FREQ(32000000 )
106
102
,.BAUDRATE(1000000 ) // SoC UART baud rate
107
103
,.UART_SPEED(1000000 ) // Debug bridge UART baud (should match BAUDRATE)
108
- ,.C_SCK_RATIO(50 ) // SPI clock divider (SPI_CLK=CLK_FREQ/C_SCK_RATIO)
104
+ ,.C_SCK_RATIO(1 ) // SPI clock divider (SPI_CLK=CLK_FREQ/C_SCK_RATIO)
109
105
`ifdef CPU_SELECT_ARMV6M
110
106
,.CPU("armv6m" ) // riscv or armv6m
111
107
`else
@@ -142,25 +138,32 @@ assign flash_cs_o = spi_cs_w[0];
142
138
assign spi_so_w = flash_so_i;
143
139
144
140
// -----------------------------------------------------------------
145
- // GPIO (Port A=gpio[11:0],...,Port B=gpio[27:16])
141
+ // GPIO bits
142
+ // 0: reserved for CPU reset (?)
143
+ // 1: Pano button
144
+ // 2: Output only - red LED
145
+ // 3: In/out - green LED
146
+ // 4: In/out - blue LED
147
+ // 5...31: Not implmented
146
148
// -----------------------------------------------------------------
147
- genvar i;
148
- generate
149
- for (i= 0 ; i < 12 ; i= i+ 1 )
150
- begin
151
- assign porta[i] = gpio_out_en_w[0 + i] ? gpio_out_w[0 + i] : 1'bz ;
152
- assign portb[i] = gpio_out_en_w[16 + i] ? gpio_out_w[16 + i] : 1'bz ;
153
149
154
- assign gpio_in_w[0 + i] = porta[i];
155
- assign gpio_in_w[16 + i] = portb[i];
156
- end
157
- endgenerate
150
+ assign pano_button = gpio_out_en_w[1 ] ? gpio_out_w[1 ] : 1'bz ;
151
+ assign gpio_in_w[1 ] = pano_button;
152
+
153
+ assign led_red = gpio_out_w[2 ];
154
+ assign gpio_in_w[2 ] = led_red;
155
+
156
+ assign led_green = gpio_out_en_w[3 ] ? gpio_out_w[3 ] : 1'bz ;
157
+ assign gpio_in_w[3 ] = led_green;
158
158
159
+ assign led_blue = gpio_out_en_w[4 ] ? gpio_out_w[4 ] : 1'bz ;
160
+ assign gpio_in_w[4 ] = led_blue;
161
+
162
+ genvar i;
159
163
generate
160
- for (i= 12 ; i < 16 ; i= i+ 1 )
164
+ for (i= 5 ; i < 31 ; i= i+ 1 )
161
165
begin
162
- assign gpio_in_w[0 + i] = 1'b0 ;
163
- assign gpio_in_w[16 + i] = 1'b0 ;
166
+ assign gpio_in_w[i] = 1'b0 ;
164
167
end
165
168
endgenerate
166
169
180
183
// 'OR' two UARTs together
181
184
assign uart_rxd_o = txd_q;
182
185
183
- assign led_blue = uart_rxd_o;
184
-
185
186
// ODDR2 debug_buf (
186
187
// .D0(1'b1),
187
188
// .D1(1'b0),
0 commit comments