基于Verilog HDL语言的串口设计

基于Verilog HDL语言的串口设计

ID:38786370

大小:56.38 KB

页数:28页

时间:2019-06-19

基于Verilog HDL语言的串口设计_第1页
基于Verilog HDL语言的串口设计_第2页
基于Verilog HDL语言的串口设计_第3页
基于Verilog HDL语言的串口设计_第4页
基于Verilog HDL语言的串口设计_第5页
资源描述:

《基于Verilog HDL语言的串口设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于VerilogHDL语言的串口设计串口VerilogHDL代码://串口moduletrans(clk,rst,en,TxD_data,Wsec,RxD,TxD,TxD_busy,rcven,RxD_data);//时钟50MHzinputclk,rst,en;//en时发送数据使能input[7:0]TxD_data;//发送数据输入input[2:0]Wsec;//波特率调节0-2400;1-4800;2-9600;3-14400;4-19200;5-38400;6-115200;7-128000inputRxD;//接收数据输入端

2、outputTxD,TxD_busy,rcven;//发送,发送忙,接收结束标志输出output[7:0]RxD_data;//接收数据输出wireBaud1,Baud8;reg[7:0]addwire;//RAM地址连线reg[7:0]data;wire[7:0]AD_t;//读取RAM数据的地址用于发送wire[7:0]AD_r;//接收的数据存储在RAM中的地址wire[7:0]datawire;//数据连线//发送例化trans_ttt1(.clk_t(clk),.rst_t(rst),.en_t(en),.BTI_t(Baud1)

3、,.recen(recen),.TxD_data_t(datawire),.TxD_t(TxD),.addro_t(AD_t),.TxD_busy_t(TxD_busy));//波特生成例化BaudGtt2(.clk_b(clk),.rst_b(rst),.BTO_b(Baud1),.BTO_R(Baud8),.Wsec_b(Wsec));//接收例化trans_rtt3(.clk_r(clk),.rst_r(rst),.BTI_r(Baud8),.RxD_r(RxD),.RxD_data_r(RxD_data),.wren_r(wren_

4、r),.addro_r(AD_r),.RxD_end(RxD_end));//LPM_RAM例化RAM0tt4(.address(addwire),.clock(~clk),.data(data),.wren(wren_r),.q(datawire));always@(posedgeclkornegedgerst)if(~rst)addwire<=8'b00000000;elseif(RxD_end)beginaddwire<=AD_r;data<=RxD_data;endelseaddwire<=AD_t;endmodule//发送模块m

5、oduletrans_t(clk_t,rst_t,en_t,BTI_t,TxD_data_t,TxD_t,recen,TxD_busy_t,addro_t,recen);inputclk_t,rst_t,en_t,BTI_t;input[7:0]TxD_data_t;outputTxD_t;outputTxD_busy_t;outputrecen;output[7:0]addro_t;regTxD_t;reg[7:0]TxD_dataReg;//寄存器reg[7:0]addro_t;//reg[3:0]state;regrecen;wire

6、TxD_busy_t;assignBaudTick=BTI_t;//波特输出//发送启动wireTxD_ready=(state==0);//TxD_ready=1assignTxD_busy_t=~TxD_ready;//加载发送数据always@(posedgeclk_tornegedgerst_t)if(~rst_t)TxD_dataReg<=8'b00000000;elseif(TxD_ready&&en_t)TxD_dataReg<=TxD_data_t;//状态机发送always@(posedgeclk_tornegedgers

7、t_t)if(~rst_t)beginstate<=4'b0000;//复位时发送1TxD_t<=1'b1;endelsecase(state)4'b0000:if(en_t)beginstate<=4'b0100;//检测发送开始end4'b0100:if(BaudTick&&en_t)beginstate<=4'b1000;//发送起始位0TxD_t<=1'b0;end4'b1000:if(BaudTick&&en_t)beginstate<=4'b1001;//bit0if(en_t)TxD_t<=TxD_dataReg[0];els

8、eTxD_t<=1'b0;end4'b1001:if(BaudTick&&en_t)beginstate<=4'b1010;//bit1if(en_t)TxD_t<=TxD_da

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。