diff --git a/controller/verilog/socdebug_usrt_control.v b/controller/verilog/socdebug_usrt_control.v index 5e39d0ecc7b242279aabdb9fdf284e179cd16c6e..e4355c853a80c5a8299a4bc846fde27b1e8b5487 100644 --- a/controller/verilog/socdebug_usrt_control.v +++ b/controller/verilog/socdebug_usrt_control.v @@ -89,6 +89,8 @@ module socdebug_usrt_control ( input wire [7:0] RX_DATA8_i, output wire RX_READY_o, + output wire [7:0] INVBAUDDIV8_o, + output wire TXINT, // Transmit Interrupt output wire RXINT, // Receive Interrupt output wire TXOVRINT, // Transmit overrun Interrupt @@ -110,8 +112,6 @@ localparam ARM_CMSDK_APB_UART_CID2 = 8'h05; localparam ARM_CMSDK_APB_UART_CID3 = 8'hb1; // original external IOs -wire RXD = 1'b1; // Serial input -wire TXD; // Transmit data output wire TXEN; // Transmit enabled wire BAUDTICK; // Baud rate (x16) Tick @@ -138,6 +138,8 @@ reg [7:0] reg_tx_buf; // Transmit data buffer reg [7:0] reg_rx_buf; // Receive data buffer reg [19:0] reg_baud_div; // Baud rate setting +assign INVBAUDDIV8_o = ~reg_baud_div[7:0]; + // Internal signals // Baud rate divider reg [15:0] reg_baud_cntr_i; // baud rate divider counter i (integer) @@ -169,44 +171,13 @@ wire [1:0] intr_stat_set; // Set TX/RX interrupt wire [1:0] intr_stat_clear; // Clear TX/RX interrupt // transmit -reg [3:0] tx_state; // Transmit FSM state -reg [4:0] nxt_tx_state; -wire tx_state_update; -wire tx_state_inc; // Bit pulse -reg [3:0] tx_tick_cnt; // Transmit Tick counter -wire [4:0] nxt_tx_tick_cnt; -reg [7:0] tx_shift_buf; // Transmit shift register -wire [7:0] nxt_tx_shift_buf; // next state for tx_shift_buf -wire tx_buf_ctrl_shift; // shift control for tx_shift_buf -wire tx_buf_ctrl_load; // load control for tx_shift_buf reg tx_buf_full; // TX Buffer full -reg reg_txd; // Tx Data -wire nxt_txd; // next state of reg_txd -wire update_reg_txd; // update reg_txd -wire tx_buf_clear; // Clear buffer full status when data is load into TX shift register - - // Receive data sync and filter -reg rxd_sync_1; // Double flip-flop syncrhoniser -reg rxd_sync_2; // Double flip-flop syncrhoniser -reg [2:0] rxd_lpf; // Averaging Low Pass Filter -wire [2:0] nxt_rxd_lpf; -wire rx_shift_in; // Shift Register Input // Receiver -reg [3:0] rx_state; // Receiver FSM state -reg [4:0] nxt_rx_state; -wire rx_state_update; -reg [3:0] rx_tick_cnt; // Receiver Tick counter -wire [4:0] nxt_rx_tick_cnt; -wire update_rx_tick_cnt; -wire rx_state_inc;// Bit pulse -reg [6:0] rx_shift_buf;// Receiver shift data register -wire [6:0] nxt_rx_shift_buf; reg rx_buf_full; // Receive buffer full status wire nxt_rx_buf_full; wire rxbuf_sample; // Sample received data into receive data buffer wire rx_data_read; // Receive data buffer read by APB interface -wire [7:0] nxt_rx_buf; // Start of main code // Read and write control signals @@ -422,7 +393,6 @@ assign write_enable10 = write_enable & (PADDR[11:2] == 10'h004); assign tx_overrun = tx_buf_full & write_enable00; // Connect to external - assign TXD = reg_txd; assign TXEN = reg_ctrl[0];