Verilog 简单的串口发送实现

编程入门 行业动态 更新时间:2024-10-05 09:25:23

Verilog 简单的<a href=https://www.elefans.com/category/jswz/34/1769224.html style=串口发送实现"/>

Verilog 简单的串口发送实现

参考时钟频率为5Mhz;寄存器使用异步复位;

传输波特率 由时钟分频可得到9600、115200等典型波特率

        以波特率115200进行说明

        T_clk5M = 200ns

        T_B115200 ≈ 8680.556ns

        115200 :baud_rate = T_B115200/T_clk5M ≈ 43.40

数据帧组成:一位起始位,八位数据位,一位(或两位)结束位。

模块带有一个开关使能信号

以下代码:

1.不考虑奇偶校验位

2.不考虑数据FIFO缓存防堵塞

 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@** file name  :uart_tx_out.v            ** description:a simple uart trans demo * * author     :菊月朔十                  ** 阳光开朗远离玉玉积极向上从不摸鱼菊月朔十  **@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ 
module uart_tx_out(input	wire			clk		    ,   //5M时钟	input	wire			rstn	    ,   //低有效复位input   wire    [9:0]   baud_rate   ,   //波特率分频计数值input   wire    [7:0]   trans_data  ,   //要发送的数据input   wire            dv_syn      ,   //发送数据更新脉冲input   wire            enable      ,   //高有效发送使能信号output  wire 			uart_tx 	    //uart_tx输出信号);//====================================================
reg     [9:0]   baud_div_cnt    ;
reg     [3:0]   trans_cnt       ;
reg     [9:0]   trans_data      ;
//====================================================
//进行波特率分频计数
always @(posedge clk or negedge rstn) beginif(!rstn)baud_div_cnt <= 10'b0;else if(!enable)baud_div_cnt <= 10'b0;else if(trans_cnt == 4'd10)baud_div_cnt <= 10'b0;else if(baud_div_cnt == baud_rate)baud_div_cnt <= 10'b0;else if(|trans_cnt)baud_div_cnt <= baud_div_cnt + 1'b1;
end//进行发送bit的计数
always @(posedge clk or negedge rstn) beginif(!rstn)trans_cnt <= 4'b0;else if(!enable)trans_cnt <= 4'b0;else if(trans_cnt == 4'd10)trans_cnt <= 4'b0;else if(baud_div_cnt == baud_rate)trans_cnt <= trans_cnt + 1'b1;else if(dv_syn)trans_cnt <= 4'b1;
end//uart_tx的数据移位发出
always @(posedge clk or negedge rstn) beginif(!rstn)trans_out <= 10'h3ff;else if(!enable)trans_out <= 10'h3ff;else if(dv_syn)trans_out <= {1'b1,trans_data,1'b0};else if(baud_div_cnt == baud_rate)trans_out <= {1'b1,trans_out[9:1]};
endassign uart_tx = trans_out[0];endmodule

更多推荐

Verilog 简单的串口发送实现

本文发布于:2024-02-19 13:34:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1764358.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:串口   简单   Verilog

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!