[uart] d/q naming cleanup
diff --git a/hw/ip/uart/rtl/uart_core.sv b/hw/ip/uart/rtl/uart_core.sv
index b8e792a..62e14b9 100644
--- a/hw/ip/uart/rtl/uart_core.sv
+++ b/hw/ip/uart/rtl/uart_core.sv
@@ -28,13 +28,13 @@
import uart_reg_pkg::*;
- logic [15:0] rx_val;
+ logic [15:0] rx_val_q;
logic [7:0] uart_rdata;
logic tick_baud_x16, rx_tick_baud;
logic tx_fifo_rst_n, rx_fifo_rst_n;
logic [5:0] tx_fifo_depth, rx_fifo_depth;
- logic [5:0] rx_fifo_depth_prev;
- logic [23:0] rx_timeout_count, rx_timeout_count_next, uart_rxto_val;
+ logic [5:0] rx_fifo_depth_prev_q;
+ logic [23:0] rx_timeout_count_d, rx_timeout_count_q, uart_rxto_val;
logic rx_fifo_depth_changed, uart_rxto_en;
logic tx_enable, rx_enable;
logic sys_loopback, line_loopback, rxnf_enable;
@@ -53,8 +53,7 @@
logic rx_sync;
logic rx_in;
logic break_err;
- logic [4:0] allzero_cnt;
- logic [4:0] allzero_cnt_next;
+ logic [4:0] allzero_cnt_d, allzero_cnt_q;
logic allzero_err, not_allzero_char;
logic event_tx_watermark, event_rx_watermark, event_tx_overflow, event_rx_overflow;
logic event_rx_frame_err, event_rx_break_err, event_rx_timeout, event_rx_parity_err;
@@ -78,21 +77,21 @@
BRK_WAIT
} break_st_e ;
- break_st_e break_st;
+ break_st_e break_st_q;
assign not_allzero_char = rx_valid & (~event_rx_frame_err | (rx_fifo_data != 8'h0));
assign allzero_err = event_rx_frame_err & (rx_fifo_data == 8'h0);
- assign allzero_cnt_next = (break_st == BRK_WAIT || not_allzero_char) ? 5'h0 :
- //allzero_cnt[4] never be 1b without break_st as BRK_WAIT
- //allzero_cnt[4] ? allzero_cnt :
- allzero_err ? allzero_cnt + 5'd1 :
- allzero_cnt;
+ assign allzero_cnt_d = (break_st_q == BRK_WAIT || not_allzero_char) ? 5'h0 :
+ //allzero_cnt_q[4] never be 1b without break_st_q as BRK_WAIT
+ //allzero_cnt_q[4] ? allzero_cnt_q :
+ allzero_err ? allzero_cnt_q + 5'd1 :
+ allzero_cnt_q;
always_ff @(posedge clk_i or negedge rst_ni) begin
- if (!rst_ni) allzero_cnt <= '0;
- else if (rx_enable) allzero_cnt <= allzero_cnt_next;
+ if (!rst_ni) allzero_cnt_q <= '0;
+ else if (rx_enable) allzero_cnt_q <= allzero_cnt_d;
end
// break_err edges in same cycle as event_rx_frame_err edges ; that way the
@@ -100,33 +99,33 @@
always_comb begin
unique case (reg2hw.ctrl.rxblvl.q)
- 2'h0: break_err = allzero_cnt_next >= 5'd2;
- 2'h1: break_err = allzero_cnt_next >= 5'd4;
- 2'h2: break_err = allzero_cnt_next >= 5'd8;
- default: break_err = allzero_cnt_next >= 5'd16;
+ 2'h0: break_err = allzero_cnt_d >= 5'd2;
+ 2'h1: break_err = allzero_cnt_d >= 5'd4;
+ 2'h2: break_err = allzero_cnt_d >= 5'd8;
+ default: break_err = allzero_cnt_d >= 5'd16;
endcase
end
always_ff @(posedge clk_i or negedge rst_ni) begin
- if (!rst_ni) break_st <= BRK_CHK;
+ if (!rst_ni) break_st_q <= BRK_CHK;
else begin
- unique case (break_st)
+ unique case (break_st_q)
BRK_CHK: begin
- if (event_rx_break_err) break_st <= BRK_WAIT;
+ if (event_rx_break_err) break_st_q <= BRK_WAIT;
end
BRK_WAIT: begin
- if (rx_in) break_st <= BRK_CHK;
+ if (rx_in) break_st_q <= BRK_CHK;
end
default: begin
- break_st <= BRK_CHK;
+ break_st_q <= BRK_CHK;
end
endcase
end
end
- assign hw2reg.val.d = rx_val;
+ assign hw2reg.val.d = rx_val_q;
assign hw2reg.rdata.d = uart_rdata;
@@ -151,17 +150,17 @@
// Fin * (NCO/2**16)
// So, with a 16 bit accumulator, the output clock is
// Fin * (NCO/65536)
- logic [16:0] nco_sum; // extra bit to get the carry
+ logic [16:0] nco_sum_q; // extra bit to get the carry
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
- nco_sum <= 17'h0;
+ nco_sum_q <= 17'h0;
end else if (tx_enable || rx_enable) begin
- nco_sum <= {1'b0,nco_sum[15:0]} + {1'b0,reg2hw.ctrl.nco.q};
+ nco_sum_q <= {1'b0,nco_sum_q[15:0]} + {1'b0,reg2hw.ctrl.nco.q};
end
end
- assign tick_baud_x16 = nco_sum[16];
+ assign tick_baud_x16 = nco_sum_q[16];
// ######################################################################
// TX Logic
@@ -226,7 +225,7 @@
);
// Based on: en.wikipedia.org/wiki/Repetition_code mentions the use of a majority filter
- // in uarts to ignore brief noise spikes
+ // in UART to ignore brief noise spikes
logic rx_sync_q1, rx_sync_q2, rx_in_mx, rx_in_maj;
always_ff @(posedge clk_i or negedge rst_ni) begin
@@ -284,8 +283,8 @@
);
always_ff @(posedge clk_i or negedge rst_ni) begin
- if (!rst_ni) rx_val <= 16'h0;
- else if (tick_baud_x16) rx_val <= {rx_val[14:0], rx_in};
+ if (!rst_ni) rx_val_q <= 16'h0;
+ else if (tick_baud_x16) rx_val_q <= {rx_val_q[14:0], rx_in};
end
// ######################################################################
@@ -317,9 +316,9 @@
assign uart_rxto_en = reg2hw.timeout_ctrl.en.q;
assign uart_rxto_val = reg2hw.timeout_ctrl.val.q;
- assign rx_fifo_depth_changed = (rx_fifo_depth != rx_fifo_depth_prev);
+ assign rx_fifo_depth_changed = (rx_fifo_depth != rx_fifo_depth_prev_q);
- assign rx_timeout_count_next =
+ assign rx_timeout_count_d =
// don't count if timeout feature not enabled ;
// will never reach timeout val + lower power
(uart_rxto_en == 1'b0) ? 24'd0 :
@@ -332,26 +331,26 @@
// stop the count at timeout value (this will set the interrupt)
// Removed below line as when the timeout reaches the value,
// event occured, and timeout value reset to 0h.
- //(rx_timeout_count == uart_rxto_val) ? rx_timeout_count :
+ //(rx_timeout_count_q == uart_rxto_val) ? rx_timeout_count_q :
// increment if at rx baud tick
- rx_tick_baud ? (rx_timeout_count + 24'd1) :
- rx_timeout_count;
+ rx_tick_baud ? (rx_timeout_count_q + 24'd1) :
+ rx_timeout_count_q;
- assign event_rx_timeout = (rx_timeout_count == uart_rxto_val) & uart_rxto_en;
+ assign event_rx_timeout = (rx_timeout_count_q == uart_rxto_val) & uart_rxto_en;
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
- rx_timeout_count <= 24'd0;
- rx_fifo_depth_prev <= 6'd0;
+ rx_timeout_count_q <= 24'd0;
+ rx_fifo_depth_prev_q <= 6'd0;
end else begin
- rx_timeout_count <= rx_timeout_count_next;
- rx_fifo_depth_prev <= rx_fifo_depth;
+ rx_timeout_count_q <= rx_timeout_count_d;
+ rx_fifo_depth_prev_q <= rx_fifo_depth;
end
end
assign event_rx_overflow = rx_fifo_wvalid & ~rx_fifo_wready;
assign event_tx_overflow = reg2hw.wdata.qe & ~tx_fifo_wready;
- assign event_rx_break_err = break_err && (break_st == BRK_CHK);
+ assign event_rx_break_err = break_err & (break_st_q == BRK_CHK);
// instantiate interrupt hardware primitives
diff --git a/hw/ip/uart/rtl/uart_rx.sv b/hw/ip/uart/rtl/uart_rx.sv
index 9b5cfe7..829895a 100644
--- a/hw/ip/uart/rtl/uart_rx.sv
+++ b/hw/ip/uart/rtl/uart_rx.sv
@@ -24,76 +24,82 @@
input rx
);
+ logic rx_valid_q;
+ logic [10:0] sreg_q, sreg_d;
+ logic [3:0] bit_cnt_q, bit_cnt_d;
+ logic [3:0] baud_div_q, baud_div_d;
+ logic tick_baud_d, tick_baud_q;
+ logic idle_d, idle_q;
- logic [10:0] sreg, sreg_next;
- logic [3:0] bit_cnt, bit_cnt_next;
- logic [3:0] baud_div, baud_div_next;
- logic tick_baud_next, idle_next;
+ assign tick_baud = tick_baud_q;
+ assign idle = idle_q;
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
- sreg <= 11'h0;
- bit_cnt <= 4'h0;
- baud_div <= 4'h0;
- tick_baud <= 1'b0;
- idle <= 1'b1;
+ sreg_q <= 11'h0;
+ bit_cnt_q <= 4'h0;
+ baud_div_q <= 4'h0;
+ tick_baud_q <= 1'b0;
+ idle_q <= 1'b1;
end else begin
- sreg <= sreg_next;
- bit_cnt <= bit_cnt_next;
- baud_div <= baud_div_next;
- tick_baud <= tick_baud_next;
- idle <= idle_next;
+ sreg_q <= sreg_d;
+ bit_cnt_q <= bit_cnt_d;
+ baud_div_q <= baud_div_d;
+ tick_baud_q <= tick_baud_d;
+ idle_q <= idle_d;
end
end
always_comb begin
if (!rx_enable) begin
- sreg_next = 11'h0;
- bit_cnt_next = 4'h0;
- baud_div_next = 4'h0;
- tick_baud_next = 1'b0;
- idle_next = 1'b1;
+ sreg_d = 11'h0;
+ bit_cnt_d = 4'h0;
+ baud_div_d = 4'h0;
+ tick_baud_d = 1'b0;
+ idle_d = 1'b1;
end else begin
- tick_baud_next = 1'b0;
- sreg_next = sreg;
- bit_cnt_next = bit_cnt;
- baud_div_next = baud_div;
- idle_next = idle;
+ tick_baud_d = 1'b0;
+ sreg_d = sreg_q;
+ bit_cnt_d = bit_cnt_q;
+ baud_div_d = baud_div_q;
+ idle_d = idle_q;
if (tick_baud_x16) begin
- {tick_baud_next, baud_div_next} = {1'b0,baud_div} + 5'h1;
+ {tick_baud_d, baud_div_d} = {1'b0,baud_div_q} + 5'h1;
end
- if (idle && !rx) begin
+ if (idle_q && !rx) begin
// start of char, sample in the middle of the bit time
- baud_div_next = 4'd8;
- tick_baud_next = 1'b0;
- bit_cnt_next = (parity_enable ? 4'd11 : 4'd10);
- sreg_next = 11'h0;
- idle_next = 1'b0;
- end else if (!idle && tick_baud) begin
- if ((bit_cnt == (parity_enable ? 4'd11 : 4'd10)) && rx) begin
+ baud_div_d = 4'd8;
+ tick_baud_d = 1'b0;
+ bit_cnt_d = (parity_enable ? 4'd11 : 4'd10);
+ sreg_d = 11'h0;
+ idle_d = 1'b0;
+ end else if (!idle_q && tick_baud_q) begin
+ if ((bit_cnt_q == (parity_enable ? 4'd11 : 4'd10)) && rx) begin
// must have been a glitch on the input, start bit is not set
// in the middle of the bit time, abort
- idle_next = 1'b1;
- bit_cnt_next = 4'h0;
+ idle_d = 1'b1;
+ bit_cnt_d = 4'h0;
end else begin
- sreg_next = {rx, sreg[10:1]};
- bit_cnt_next = bit_cnt - 4'h1;
- idle_next = (bit_cnt == 4'h1);
+ sreg_d = {rx, sreg_q[10:1]};
+ bit_cnt_d = bit_cnt_q - 4'h1;
+ idle_d = (bit_cnt_q == 4'h1);
end
end
end
end
always_ff @(posedge clk_i or negedge rst_ni) begin
- if (!rst_ni) rx_valid <= 1'b0;
- else rx_valid <= tick_baud & (bit_cnt == 4'h1);
+ if (!rst_ni) rx_valid_q <= 1'b0;
+ else rx_valid_q <= tick_baud_q & (bit_cnt_q == 4'h1);
+
end
- assign rx_data = parity_enable ? sreg[8:1] : sreg[9:2];
- // (rx_parity = sreg[9])
- assign frame_err = rx_valid & ~sreg[10];
- assign rx_parity_err = parity_enable & rx_valid &
- (^{sreg[9:1],parity_odd});
+ assign rx_valid = rx_valid_q;
+ assign rx_data = parity_enable ? sreg_q[8:1] : sreg_q[9:2];
+ // (rx_parity = sreg_q[9])
+ assign frame_err = rx_valid_q & ~sreg_q[10];
+ assign rx_parity_err = parity_enable & rx_valid_q &
+ (^{sreg_q[9:1],parity_odd});
endmodule
diff --git a/hw/ip/uart/rtl/uart_tx.sv b/hw/ip/uart/rtl/uart_tx.sv
index ba6d305..d10d16a 100644
--- a/hw/ip/uart/rtl/uart_tx.sv
+++ b/hw/ip/uart/rtl/uart_tx.sv
@@ -22,56 +22,58 @@
);
- logic [3:0] baud_div;
- logic tick_baud;
+ logic [3:0] baud_div_q;
+ logic tick_baud_q;
- logic [3:0] bit_cnt, bit_cnt_next;
- logic [10:0] sreg, sreg_next;
- logic tx_next;
+ logic [3:0] bit_cnt_q, bit_cnt_d;
+ logic [10:0] sreg_q, sreg_d;
+ logic tx_q, tx_d;
+
+ assign tx = tx_q;
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
- baud_div <= 4'h0;
- tick_baud <= 1'b0;
+ baud_div_q <= 4'h0;
+ tick_baud_q <= 1'b0;
end else if (tick_baud_x16) begin
- {tick_baud, baud_div} <= {1'b0,baud_div} + 5'h1;
+ {tick_baud_q, baud_div_q} <= {1'b0,baud_div_q} + 5'h1;
end else begin
- tick_baud <= 1'b0;
+ tick_baud_q <= 1'b0;
end
end
always_ff @(posedge clk_i or negedge rst_ni) begin
if (!rst_ni) begin
- bit_cnt <= 4'h0;
- sreg <= 11'h7ff;
- tx <= 1'b1;
+ bit_cnt_q <= 4'h0;
+ sreg_q <= 11'h7ff;
+ tx_q <= 1'b1;
end else begin
- bit_cnt <= bit_cnt_next;
- sreg <= sreg_next;
- tx <= tx_next;
+ bit_cnt_q <= bit_cnt_d;
+ sreg_q <= sreg_d;
+ tx_q <= tx_d;
end
end
always_comb begin
if (!tx_enable) begin
- bit_cnt_next = 4'h0;
- sreg_next = 11'h7ff;
- tx_next = 1'b1;
+ bit_cnt_d = 4'h0;
+ sreg_d = 11'h7ff;
+ tx_d = 1'b1;
end else begin
- bit_cnt_next = bit_cnt;
- sreg_next = sreg;
- tx_next = tx;
+ bit_cnt_d = bit_cnt_q;
+ sreg_d = sreg_q;
+ tx_d = tx_q;
if (wr) begin
- sreg_next = {1'b1, (parity_enable ? wr_parity : 1'b1), wr_data, 1'b0};
- bit_cnt_next = (parity_enable ? 4'd11 : 4'd10);
- end else if (tick_baud && (bit_cnt != 4'h0)) begin
- sreg_next = {1'b1, sreg[10:1]};
- tx_next = sreg[0];
- bit_cnt_next = bit_cnt - 4'h1;
+ 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]};
+ tx_d = sreg_q[0];
+ bit_cnt_d = bit_cnt_q - 4'h1;
end
end
end
- assign idle = (tx_enable) ? (bit_cnt == 4'h0) : 1'b1;
+ assign idle = (tx_enable) ? (bit_cnt_q == 4'h0) : 1'b1;
endmodule