| // from usb_rx_phy | |
| module usb_phy_test01(clk, rst, rx_en, fs_ce); | |
| input clk, rst; | |
| input rx_en; | |
| output reg fs_ce; | |
| reg [1:0] dpll_next_state; | |
| reg [1:0] dpll_state; | |
| always @(posedge clk) | |
| dpll_state <= rst ? 0 : dpll_next_state; | |
| always @* | |
| begin | |
| fs_ce = 1'b0; | |
| case(dpll_state) | |
| 2'h0: | |
| if(rx_en) dpll_next_state = 2'h0; | |
| else dpll_next_state = 2'h1; | |
| 2'h1:begin | |
| fs_ce = 1'b1; | |
| if(rx_en) dpll_next_state = 2'h3; | |
| else dpll_next_state = 2'h2; | |
| end | |
| 2'h2: | |
| if(rx_en) dpll_next_state = 2'h0; | |
| else dpll_next_state = 2'h3; | |
| 2'h3: | |
| if(rx_en) dpll_next_state = 2'h0; | |
| else dpll_next_state = 2'h0; | |
| endcase | |
| end | |
| endmodule | |