blob: 37f2aba26b59fb4fe6532b0d59eb450a6e5d649b [file] [log] [blame]
// detects USB port reset signal from host
module usb_reset_det (
input clk,
output reset,
input usb_p_rx,
input usb_n_rx
);
// reset detection
reg [16:0] reset_timer = 0;
reg reset_i = 0;
wire timer_expired = reset_timer > 16'd30000;
always @(posedge clk) reset_i <= timer_expired;
assign reset = reset_i;
always @(posedge clk) begin
if (usb_p_rx || usb_n_rx) begin
reset_timer <= 0;
end else begin
// SE0 detected from host
if (!timer_expired) begin
// timer not expired yet, keep counting
reset_timer <= reset_timer + 1;
end
end
end
endmodule