用Verilog写uart串口通信并在逻辑分析仪显示
对于Verilog写uart串口通信,可以参考以下代码:
module uart( input clk, input rst_n, input [7:0] tx_data, output reg tx_en, output reg [7:0] rx_data, output reg rx_valid );
parameter BAUD_RATE = 115200; parameter CLK_FREQ = 50_000_000;
reg [3:0] tx_cnt; reg [3:0] rx_cnt; reg [7:0] tx_shift_reg; reg [7:0] rx_shift_reg; reg tx_busy;
assign tx_en = tx_busy ? 0 : (tx_cnt == 0);
assign rx_data = rx_shift_reg; assign rx_valid = (rx_cnt == 0) ? 1 : 0;
always @(posedge clk or negedge rst_n) begin if (!rst_n) begin tx_cnt <= 0; rx_cnt <= 0; tx_shift_reg <= 0; rx_shift_reg <= 0; tx_busy <= 0; end else begin if (tx_busy) begin tx_cnt <= tx_cnt + 1; if (tx_cnt == 15) begin tx_cnt <= 0; tx_shift_reg <= {1'b0, tx_shift_reg[7:1]}; if (!tx_shift_reg[0]) tx_busy <= 0; end end else if (tx_en) begin tx_cnt <= 0; tx_shift_reg <= {1'b1, tx_data}; tx_busy <= 1; end
rx_cnt <= (rx_cnt == 15) ? 0 : (rx_cnt + 1);
if (rx_cnt == 0) begin
rx_shift_reg <= {rx_shift_reg[6:0], $bits(rx_data) ? 1'b0 : 1'b1};
end
end
end
endmodule
在逻辑分析仪中显示uart串口通信可以使用UART分析仪,将串口通信接口连接到分析仪的RX和TX端口上即可。分析仪会自动解析串口通信数据并显示在界面上。
原文地址: http://www.cveoy.top/t/topic/bwYw 著作权归作者所有。请勿转载和采集!