| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| // Description: UART Transmit Module |
| input logic parity_enable, |
| logic [3:0] bit_cnt_q, bit_cnt_d; |
| logic [10:0] sreg_q, sreg_d; |
| always_ff @(posedge clk_i or negedge rst_ni) begin |
| end else if (tick_baud_x16) begin |
| {tick_baud_q, baud_div_q} <= {1'b0,baud_div_q} + 5'h1; |
| always_ff @(posedge clk_i or negedge rst_ni) begin |
| sreg_d = {1'b1, (parity_enable ? wr_parity : 1'b1), wr_data, 1'b0}; |
| bit_cnt_d = (parity_enable ? 4'd11 : 4'd10); |
| end else if (tick_baud_q && (bit_cnt_q != 4'h0)) begin |
| sreg_d = {1'b1, sreg_q[10:1]}; |
| bit_cnt_d = bit_cnt_q - 4'h1; |
| assign idle = (tx_enable) ? (bit_cnt_q == 4'h0) : 1'b1; |