欢迎来到天天文库
浏览记录
ID:50555824
大小:32.50 KB
页数:4页
时间:2020-03-10
《verilog的串口发送程序例程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、`include"uart_tx.v"modulelicheng(clk,,rst_n,rs232_tx);inputclk;//时钟信号50Minputrst_n;//复位信号,低有效outputrs232_tx;//数据输出信号wireclk_bps1;speed_select_txspeed_tx(//数据发送波特率控制模块.clk(clk),.rst_n(rst_n),.clk_bps(clk_bps1));uart_txuart_tx(.clk(clk),.rst_n(rst_n),.clk_bps(clk_bps1),.rs232_tx(rs232_tx));endmo
2、dule//=================================波特率产生模块=====================================modulespeed_select_tx(clk,rst_n,clk_bps);//波特率设定inputclk;//50M时钟inputrst_n;//复位信号outputclk_bps;//接收数据中间采样点,reg[12:0]cnt;//分频计数器regclk_bps_r;//波特率时钟寄存器always@(posedgeclkornegedgerst_n)if(!rst_n)cnt<=13'd0;elseif(
3、cnt==5207)cnt<=13'd0;elsecnt<=cnt+1'b1;//波特率时钟启动always@(posedgeclkornegedgerst_n)beginif(!rst_n)clk_bps_r<=1'b0;elseif(cnt==2603)//当波特率计数到一半时,进行采样存储clk_bps_r<=1'b1;elseclk_bps_r<=1'b0;endassignclk_bps=clk_bps_r;//将采样数据输出给uart_tx模块endmodule///////////////////////////////////////////////////////
4、//////////////////////////////////////////////moduleuart_tx(clk,rst_n,clk_bps,rs232_tx);inputclk;inputrst_n;inputclk_bps;//中间采样点outputrs232_tx;//发送数据信号reg[7:0]rx_data;regtx_en;//发送信号使能,高有效reg[3:0]num;initialbeginrx_data=8'b11111111;endalways@(posedgeclkornegedgerst_n)beginif(!rst_n)begintx_en<
5、=1'b0;//num<=0;endelsebeginif(num==4'd11)begintx_en<=1'b0;endelsebegintx_en<=1'b1;endendendregrs232_tx_r;always@(posedgeclkornegedgerst_n)beginif(!rst_n)beginnum<=4'd0;rs232_tx_r<=1'b1;endelsebeginif(tx_en)beginif(clk_bps)beginnum<=num+1'b1;case(num)4'd0:rs232_tx_r<=1'b0;//起始位4'd1:rs232_tx_r<=
6、rx_data[0];//数据位开始4'd2:rs232_tx_r<=rx_data[1];4'd3:rs232_tx_r<=rx_data[2];4'd4:rs232_tx_r<=rx_data[3];4'd5:rs232_tx_r<=rx_data[4];4'd6:rs232_tx_r<=rx_data[5];4'd7:rs232_tx_r<=rx_data[6];4'd8:rs232_tx_r<=rx_data[7];4'd9:rs232_tx_r<=1'b1;//数据结束位,1位default:rs232_tx_r<=1'b1;endcaseendendelsenum<=4
7、'd0;//发送完成,复位endendassignrs232_tx=rs232_tx_r;endmodule
此文档下载收益归作者所有