Entity: usbuart_core
- File: usbuart_core.sv
Diagram
Description
Copyright lowRISC contributors. Licensed under the Apache License, Version 2.0, see LICENSE for details. SPDX-License-Identifier: Apache-2.0
Description: USB UART core module
Ports
| Port name | Direction | Type | Description |
|---|---|---|---|
| clk_i | input | ||
| rst_ni | input | ||
| clk_usb_48mhz_i | input | ||
| rst_usb_48mhz_ni | input | ||
| reg2hw | input | ||
| hw2reg | output | ||
| cio_usb_dp_i | input | ||
| cio_usb_dp_o | output | ||
| cio_usb_dp_en_o | output | ||
| cio_usb_dn_i | input | ||
| cio_usb_dn_o | output | ||
| cio_usb_dn_en_o | output | ||
| cio_usb_sense_i | input | ||
| cio_usb_pullup_en_o | output | ||
| intr_tx_watermark_o | output | ||
| intr_rx_watermark_o | output | ||
| intr_tx_overflow_o | output | ||
| intr_rx_overflow_o | output | ||
| intr_rx_frame_err_o | output | ||
| intr_rx_break_err_o | output | ||
| intr_rx_timeout_o | output | ||
| intr_rx_parity_err_o | output |
Signals
| Name | Type | Description |
|---|---|---|
| uart_rdata | logic [7:0] | |
| tx_fifo_rst_n | logic | |
| rx_fifo_rst_n | logic | |
| tx_fifo_depth | logic [5:0] | |
| rx_fifo_depth | logic [5:0] | |
| rx_fifo_depth_prev | logic [5:0] | |
| rx_timeout_count | logic [23:0] | rx timeout interrupt |
| rx_timeout_count_next | logic [23:0] | rx timeout interrupt |
| uart_rxto_val | logic [23:0] | rx timeout interrupt |
| rx_fifo_depth_changed | logic | |
| uart_rxto_en | logic | |
| tx_enable | logic | |
| rx_enable | logic | |
| sys_loopback | logic | |
| uart_fifo_rxrst | logic | |
| uart_fifo_txrst | logic | |
| uart_fifo_rxilvl | logic [2:0] | |
| uart_fifo_txilvl | logic [1:0] | |
| usb_tx_fifo_rdata | logic [7:0] | |
| usb_tx_rready | logic | |
| usb_if_tx_read | logic | |
| usb_tx_rvalid | logic | |
| tx_fifo_wready | logic | |
| lb_data_move | logic | |
| usb_rx_fifo_wdata | logic [7:0] | |
| usb_if_rx_fifo_wdata | logic [7:0] | |
| usb_rx_wvalid | logic | |
| usb_if_rx_write | logic | |
| rx_fifo_rvalid | logic | |
| usb_rx_wready | logic | |
| event_tx_watermark | logic | |
| event_rx_watermark | logic | |
| event_tx_overflow | logic | |
| event_rx_overflow | logic | |
| event_rx_frame_err | logic | |
| event_rx_break_err | logic | |
| event_rx_timeout | logic | |
| event_rx_parity_err | logic | |
| host_lost | logic | |
| host_timeout | logic | |
| usb_pullup_en | logic | |
| unused_ctrl_q | logic [3:0] | |
| rxres_cnt | logic [2:0] | 4 cycle reset pulse |
| txres_cnt | logic [2:0] | |
| uart_start_rxrst | logic | |
| uart_start_txrst | logic | |
| unused_fifo_ctrl_qe | logic [1:0] | |
| unused_ovrd_tx_en | logic | |
| unused_ovrd_tx_val | logic | |
| unused_rdata_q | logic [7:0] | |
| nco_sum | logic [16:0] | extra bit to get the carry |
| tick_baud_x16 | logic | |
| usb_rx_oflw | logic | //////////// RX Logic // //////////// |
| usb_rx_d | logic | |
| usb_rx_se0 | logic | |
| usb_tx_d | logic | |
| usb_tx_se0 | logic | |
| usb_tx_oe | logic | |
| sys_usb_sense | logic | USB sense synced to clk_i |
| cio_oe | logic | /////////////////////////////// USB IO Muxing // /////////////////////////////// |
| usb_phy_config | usbdev_reg_pkg::usbdev_reg2hw_phy_config_reg_t | Static configuration |
Processes
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
- unnamed: ( @(posedge clk_usb_48mhz_i) )
Type: always_ff
Description
Sys loopback is done at the bottom of the fifos TODO could do line loopback in a similar way at top of fifos?
- unnamed: ( )
Type: always_comb
Description
////////////////////// Interrupt & Status // //////////////////////
- unnamed: ( )
Type: always_comb
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
Instantiations
- usbuart_txfifo: prim_fifo_async
Description
Character fifo also crosses to USB clock domain
$dfifo_uart_tx->mname()
- usbuart_rxfifo: prim_fifo_async
Description
$dfifo_uart_rx->mname()
- usbuart_usbif: usbuart_usbif
- intr_hw_tx_watermark: prim_intr_hw
Description
TODO is there a related USB error?
instantiate interrupt hardware primitives
- intr_hw_rx_watermark: prim_intr_hw
- intr_hw_tx_overflow: prim_intr_hw
- intr_hw_rx_overflow: prim_intr_hw
- intr_hw_rx_frame_err: prim_intr_hw
- intr_hw_rx_break_err: prim_intr_hw
- intr_hw_rx_timeout: prim_intr_hw
- intr_hw_rx_parity_err: prim_intr_hw
- i_usbdev_iomux: usbdev_iomux