2 parameter [4:0] NUM_OUT_EPS = 1,
3 parameter [4:0] NUM_IN_EPS = 1
24 input [NUM_OUT_EPS-1:0] out_ep_req,
25 output [NUM_OUT_EPS-1:0] out_ep_grant,
26 output [NUM_OUT_EPS-1:0] out_ep_data_avail,
27 output [NUM_OUT_EPS-1:0] out_ep_setup,
28 input [NUM_OUT_EPS-1:0] out_ep_data_get,
29 output [7:0] out_ep_data,
30 input [NUM_OUT_EPS-1:0] out_ep_stall,
31 output [NUM_OUT_EPS-1:0] out_ep_acked,
37 input [NUM_IN_EPS-1:0] in_ep_req,
38 output [NUM_IN_EPS-1:0] in_ep_grant,
39 output [NUM_IN_EPS-1:0] in_ep_data_free,
40 input [NUM_IN_EPS-1:0] in_ep_data_put,
41 input [(NUM_IN_EPS*8)-1:0] in_ep_data,
42 input [NUM_IN_EPS-1:0] in_ep_data_done,
43 input [NUM_IN_EPS-1:0] in_ep_stall,
44 output [NUM_IN_EPS-1:0] in_ep_acked,
51 output [10:0] frame_index,
71 wire [7:0] arb_in_ep_data;
80 wire [10:0] rx_frame_num;
88 wire out_tx_pkt_start;
89 wire [3:0] out_tx_pid;
100 assign sof_valid = rx_pkt_end && rx_pkt_valid && rx_pid == 4'b0101;
101 assign frame_index = rx_frame_num;
105 .NUM_IN_EPS(NUM_IN_EPS)
106 ) usb_fs_in_arb_inst (
108 .in_ep_req(in_ep_req),
109 .in_ep_grant(in_ep_grant),
110 .in_ep_data(in_ep_data),
113 .arb_in_ep_data(arb_in_ep_data)
117 .NUM_OUT_EPS(NUM_OUT_EPS)
118 ) usb_fs_out_arb_inst (
120 .out_ep_req(out_ep_req),
121 .out_ep_grant(out_ep_grant)
125 .NUM_IN_EPS(NUM_IN_EPS)
126 ) usb_fs_in_pe_inst (
129 .reset_ep({NUM_IN_EPS{1'b0}}),
133 .in_ep_data_free(in_ep_data_free),
134 .in_ep_data_put(in_ep_data_put),
135 .in_ep_data(arb_in_ep_data),
136 .in_ep_data_done(in_ep_data_done),
137 .in_ep_stall(in_ep_stall),
138 .in_ep_acked(in_ep_acked),
141 .rx_pkt_start(rx_pkt_start),
142 .rx_pkt_end(rx_pkt_end),
143 .rx_pkt_valid(rx_pkt_valid),
147 .rx_frame_num(rx_frame_num),
150 .tx_pkt_start(in_tx_pkt_start),
151 .tx_pkt_end(tx_pkt_end),
153 .tx_data_avail(tx_data_avail),
154 .tx_data_get(tx_data_get),
161 .NUM_OUT_EPS(NUM_OUT_EPS)
162 ) usb_fs_out_pe_inst (
165 .reset_ep({NUM_OUT_EPS{1'b0}}),
169 .out_ep_data_avail(out_ep_data_avail),
170 .out_ep_data_get(out_ep_data_get),
171 .out_ep_data(out_ep_data),
172 .out_ep_setup(out_ep_setup),
173 .out_ep_stall(out_ep_stall),
174 .out_ep_acked(out_ep_acked),
175 .out_ep_grant(out_ep_grant),
178 .rx_pkt_start(rx_pkt_start),
179 .rx_pkt_end(rx_pkt_end),
180 .rx_pkt_valid(rx_pkt_valid),
184 .rx_frame_num(rx_frame_num),
185 .rx_data_put(rx_data_put),
189 .tx_pkt_start(out_tx_pkt_start),
190 .tx_pkt_end(tx_pkt_end),
199 .bit_strobe(bit_strobe),
200 .pkt_start(rx_pkt_start),
201 .pkt_end(rx_pkt_end),
205 .frame_num(rx_frame_num),
206 .rx_data_put(rx_data_put),
208 .valid_packet(rx_pkt_valid)
213 .in_tx_pkt_start(in_tx_pkt_start),
214 .in_tx_pid(in_tx_pid),
217 .out_tx_pkt_start(out_tx_pkt_start),
218 .out_tx_pid(out_tx_pid),
221 .tx_pkt_start(tx_pkt_start),
228 .bit_strobe(bit_strobe),
232 .pkt_start(tx_pkt_start),
233 .pkt_end(tx_pkt_end),
235 .tx_data_avail(tx_data_avail),
236 .tx_data_get(tx_data_get),
module usb_fs_tx(input clk_48mhz, input reset, input bit_strobe, output reg oe=0, output reg dp=0, output reg dn=0, input pkt_start, output pkt_end, input[4] pid, input tx_data_avail, output reg tx_data_get=0, input[8] tx_data)
module usb_fs_in_pe(input clk, input reset, input[NUM_IN_EPS-1:0] reset_ep, input[7] dev_addr, output reg< NUM_IN_EPS-1:0 > in_ep_data_free=0, input[NUM_IN_EPS-1:0] in_ep_data_put, input[8] in_ep_data, input[NUM_IN_EPS-1:0] in_ep_data_done, input[NUM_IN_EPS-1:0] in_ep_stall, output reg< NUM_IN_EPS-1:0 > in_ep_acked=0, input rx_pkt_start, input rx_pkt_end, input rx_pkt_valid, input[4] rx_pid, input[7] rx_addr, input[4] rx_endp, input[10:0] rx_frame_num, output reg tx_pkt_start=0, input tx_pkt_end, output reg< 3:0 > tx_pid=0, output tx_data_avail, input tx_data_get, output reg< 7:0 > tx_data, output[8] debug)
module usb_fs_rx(input clk_48mhz, input reset, input dp, input dn, output bit_strobe, output pkt_start, output pkt_end, output[4] pid, output reg< 6:0 > addr=0, output reg< 3:0 > endp=0, output reg< 10:0 > frame_num=0, output rx_data_put, output[8] rx_data, output valid_packet)
module usb_fs_in_arb(input[NUM_IN_EPS-1:0] in_ep_req, output reg< NUM_IN_EPS-1:0 > in_ep_grant, input[(NUM_IN_EPS *8) -1:0] in_ep_data, output reg< 7:0 > arb_in_ep_data)
module usb_fs_out_pe(input clk, input reset, input[NUM_OUT_EPS-1:0] reset_ep, input[7] dev_addr, output[NUM_OUT_EPS-1:0] out_ep_data_avail, output reg< NUM_OUT_EPS-1:0 > out_ep_setup=0, input[NUM_OUT_EPS-1:0] out_ep_data_get, output reg< 7:0 > out_ep_data, input[NUM_OUT_EPS-1:0] out_ep_stall, output reg< NUM_OUT_EPS-1:0 > out_ep_acked=0, input[NUM_OUT_EPS-1:0] out_ep_grant, input rx_pkt_start, input rx_pkt_end, input rx_pkt_valid, input[4] rx_pid, input[7] rx_addr, input[4] rx_endp, input[10:0] rx_frame_num, input rx_data_put, input[8] rx_data, output reg tx_pkt_start=0, input tx_pkt_end, output reg< 3:0 > tx_pid=0)
module usb_fs_tx_mux(input in_tx_pkt_start, input[4] in_tx_pid, input out_tx_pkt_start, input[4] out_tx_pid, output tx_pkt_start, output[4] tx_pid)
module usb_fs_out_arb(input[NUM_OUT_EPS-1:0] out_ep_req, output reg< NUM_OUT_EPS-1:0 > out_ep_grant)
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)