139 input [7:0] uart_in_data,
141 output uart_in_ready,
144 output [7:0] uart_out_data,
145 output uart_out_valid,
146 input uart_out_ready,
160 wire [7:0] out_ep_data;
162 wire ctrl_out_ep_req;
163 wire ctrl_out_ep_grant;
164 wire ctrl_out_ep_data_avail;
165 wire ctrl_out_ep_setup;
166 wire ctrl_out_ep_data_get;
167 wire ctrl_out_ep_stall;
168 wire ctrl_out_ep_acked;
171 wire ctrl_in_ep_grant;
172 wire ctrl_in_ep_data_free;
173 wire ctrl_in_ep_data_put;
174 wire [7:0] ctrl_in_ep_data;
175 wire ctrl_in_ep_data_done;
176 wire ctrl_in_ep_stall;
177 wire ctrl_in_ep_acked;
180 wire serial_out_ep_req;
181 wire serial_out_ep_grant;
182 wire serial_out_ep_data_avail;
183 wire serial_out_ep_setup;
184 wire serial_out_ep_data_get;
185 wire serial_out_ep_stall;
186 wire serial_out_ep_acked;
188 wire serial_in_ep_req;
189 wire serial_in_ep_grant;
190 wire serial_in_ep_data_free;
191 wire serial_in_ep_data_put;
192 wire [7:0] serial_in_ep_data;
193 wire serial_in_ep_data_done;
194 wire serial_in_ep_stall;
195 wire serial_in_ep_acked;
198 wire [10:0] frame_index;
200 reg [31:0] host_presence_timer = 0;
201 reg host_presence_timeout = 0;
209 .out_ep_req(ctrl_out_ep_req),
210 .out_ep_grant(ctrl_out_ep_grant),
211 .out_ep_data_avail(ctrl_out_ep_data_avail),
212 .out_ep_setup(ctrl_out_ep_setup),
213 .out_ep_data_get(ctrl_out_ep_data_get),
214 .out_ep_data(out_ep_data),
215 .out_ep_stall(ctrl_out_ep_stall),
216 .out_ep_acked(ctrl_out_ep_acked),
220 .in_ep_req(ctrl_in_ep_req),
221 .in_ep_grant(ctrl_in_ep_grant),
222 .in_ep_data_free(ctrl_in_ep_data_free),
223 .in_ep_data_put(ctrl_in_ep_data_put),
224 .in_ep_data(ctrl_in_ep_data),
225 .in_ep_data_done(ctrl_in_ep_data_done),
226 .in_ep_stall(ctrl_in_ep_stall),
227 .in_ep_acked(ctrl_in_ep_acked)
235 .out_ep_req(serial_out_ep_req),
236 .out_ep_grant(serial_out_ep_grant),
237 .out_ep_data_avail(serial_out_ep_data_avail),
238 .out_ep_setup(serial_out_ep_setup),
239 .out_ep_data_get(serial_out_ep_data_get),
240 .out_ep_data(out_ep_data),
241 .out_ep_stall(serial_out_ep_stall),
242 .out_ep_acked(serial_out_ep_acked),
245 .in_ep_req(serial_in_ep_req),
246 .in_ep_grant(serial_in_ep_grant),
247 .in_ep_data_free(serial_in_ep_data_free),
248 .in_ep_data_put(serial_in_ep_data_put),
249 .in_ep_data(serial_in_ep_data),
250 .in_ep_data_done(serial_in_ep_data_done),
251 .in_ep_stall(serial_in_ep_stall),
252 .in_ep_acked(serial_in_ep_acked),
255 .uart_in_data( uart_in_data ),
256 .uart_in_valid( uart_in_valid ),
257 .uart_in_ready( uart_in_ready ),
260 .uart_out_data( uart_out_data ),
261 .uart_out_valid( uart_out_valid ),
262 .uart_out_ready( uart_out_ready ),
267 wire nak_in_ep_grant;
268 wire nak_in_ep_data_free;
269 wire nak_in_ep_acked;
282 .usb_tx_en(usb_tx_en),
287 .out_ep_req({serial_out_ep_req, ctrl_out_ep_req}),
288 .out_ep_grant({serial_out_ep_grant, ctrl_out_ep_grant}),
289 .out_ep_data_avail({serial_out_ep_data_avail, ctrl_out_ep_data_avail}),
290 .out_ep_setup({serial_out_ep_setup, ctrl_out_ep_setup}),
291 .out_ep_data_get({serial_out_ep_data_get, ctrl_out_ep_data_get}),
292 .out_ep_data(out_ep_data),
293 .out_ep_stall({serial_out_ep_stall, ctrl_out_ep_stall}),
294 .out_ep_acked({serial_out_ep_acked, ctrl_out_ep_acked}),
297 .in_ep_req({1'b0, serial_in_ep_req, ctrl_in_ep_req}),
298 .in_ep_grant({nak_in_ep_grant, serial_in_ep_grant, ctrl_in_ep_grant}),
299 .in_ep_data_free({nak_in_ep_data_free, serial_in_ep_data_free, ctrl_in_ep_data_free}),
300 .in_ep_data_put({1'b0, serial_in_ep_data_put, ctrl_in_ep_data_put}),
301 .in_ep_data({8'b0, serial_in_ep_data[7:0], ctrl_in_ep_data[7:0]}),
302 .in_ep_data_done({1'b0, serial_in_ep_data_done, ctrl_in_ep_data_done}),
303 .in_ep_stall({1'b0, serial_in_ep_stall, ctrl_in_ep_stall}),
304 .in_ep_acked({nak_in_ep_acked, serial_in_ep_acked, ctrl_in_ep_acked}),
307 .sof_valid(sof_valid),
308 .frame_index(frame_index),
319 always @(posedge clk_48mhz) begin
321 host_presence_timer <= 0;
322 host_presence_timeout <= 0;
324 host_presence_timer <= host_presence_timer + 1;
327 if (host_presence_timer > 48000000) begin
328 host_presence_timeout <= 1;
module usb_uart(input clk_48mhz, input reset, output usb_p_tx, output usb_n_tx, input usb_p_rx, input usb_n_rx, output usb_tx_en, input[8] uart_in_data, input uart_in_valid, output uart_in_ready, output[8] uart_out_data, output uart_out_valid, input uart_out_ready, output[11:0] debug)
module usb_uart_bridge_ep(input clk, input reset, output out_ep_req, input out_ep_grant, input out_ep_data_avail, input out_ep_setup, output out_ep_data_get, input[8] out_ep_data, output out_ep_stall, input out_ep_acked, output in_ep_req, input in_ep_grant, input in_ep_data_free, output in_ep_data_put, output[8] in_ep_data, output in_ep_data_done, output in_ep_stall, input in_ep_acked, input[8] uart_in_data, input uart_in_valid, output uart_in_ready, output[8] uart_out_data, output uart_out_valid, input uart_out_ready, output[4] debug)
module usb_serial_ctrl_ep(input clk, input reset, output[7] dev_addr, output out_ep_req, input out_ep_grant, input out_ep_data_avail, input out_ep_setup, output out_ep_data_get, input[8] out_ep_data, output out_ep_stall, input out_ep_acked, output in_ep_req, input in_ep_grant, input in_ep_data_free, output in_ep_data_put, output reg< 7:0 > in_ep_data=0, output in_ep_data_done, output reg in_ep_stall, input in_ep_acked)
module usb_fs_pe(input clk, input[7] dev_addr, input reset, input[NUM_OUT_EPS-1:0] out_ep_req, output[NUM_OUT_EPS-1:0] out_ep_grant, output[NUM_OUT_EPS-1:0] out_ep_data_avail, output[NUM_OUT_EPS-1:0] out_ep_setup, input[NUM_OUT_EPS-1:0] out_ep_data_get, output[8] out_ep_data, input[NUM_OUT_EPS-1:0] out_ep_stall, output[NUM_OUT_EPS-1:0] out_ep_acked, input[NUM_IN_EPS-1:0] in_ep_req, output[NUM_IN_EPS-1:0] in_ep_grant, output[NUM_IN_EPS-1:0] in_ep_data_free, input[NUM_IN_EPS-1:0] in_ep_data_put, input[(NUM_IN_EPS *8) -1:0] in_ep_data, input[NUM_IN_EPS-1:0] in_ep_data_done, input[NUM_IN_EPS-1:0] in_ep_stall, output[NUM_IN_EPS-1:0] in_ep_acked, output sof_valid, output[10:0] frame_index, output usb_p_tx, output usb_n_tx, input usb_p_rx, input usb_n_rx, output usb_tx_en, output[8] debug)