verilog的串口发送程序例程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

`includeuart_tx.vmodulelicheng(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));endmodule//=================================波特率产生模块=====================================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(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/////////////////////////////////////////////////////////////////////////////////////////////////////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=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=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'd0;//发送完成,复位endendassignrs232_tx=rs232_tx_r;endmodule

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功