• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

UART通訊模塊設(shè)計(jì)Verilog代碼vivado仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-240104095Z5962.doc

共1個(gè)文件

名稱:UART通訊模塊設(shè)計(jì)Verilog代碼vivado仿真

軟件:vivado

語(yǔ)言:Verilog

代碼功能:

具體要求如下:

1.分組進(jìn)行設(shè)計(jì)實(shí)踐,每組10~11人,組內(nèi)人員自行分工開(kāi)發(fā)任務(wù):模塊開(kāi)發(fā)與testbench仿真驗(yàn)證。

2.技術(shù)參數(shù)要求:

?用戶收發(fā)數(shù)據(jù)位寬:8bit;

?用戶時(shí)鐘:100MHz;

?數(shù)據(jù)發(fā)送緩存:不小于4KByte;

?附加功能:串行波特率可配;是否添加校驗(yàn)位可配。

3.通訊控制模塊對(duì)外接口約定如下:

module uart_intf#

(

parameter? ?BaudRate? ? ? ? =? ?868? ? ? ? ? ? ? ? ? ? ? ? ?,? ?//波特率:時(shí)鐘/波特率,如:100Mhz,115200bps,100_000000/115200 = 868

parameter? ?CheckMode? ? ? ?=? ?0? ? ? ? ? ? ? ? ? ? ? ? ? ?,? ?//奇偶校驗(yàn):0-無(wú),1-奇校驗(yàn)(ODD),2-偶校驗(yàn)(EVEN),3-高校驗(yàn),4-低校驗(yàn)

parameter? ?BitNum? ? ? ? ? =? ?8? ? ? ? ? ? ? ? ? ? ? ? ? ?)? ?//數(shù)據(jù)位寬度

(

input? ?wire? ? [00:00]? ? ?uart_refclk? ? ? ? ? ? ? ? ? ? ?,

input? ?wire? ? [00:00]? ? ?uart_refrst? ? ? ? ? ? ? ? ? ? ?,

 

input? ?wire? ? [00:00]? ? ?uart_txdata_en? ? ? ? ? ? ? ? ? ,

input? wire? [BitNum - 1:00]? ? ?uart_txdata? ? ? ? ? ? ? ? ? ? ?,

output? wire? ? [00:00]? ? ?uart_rxdata_en? ? ? ? ? ? ? ? ? ,

output wire? [BitNum - 1:00]? ? ?uart_rxdata? ? ? ? ? ? ? ? ? ? ?,

 

input? ?wire? ? [00:00]? ? ?uart_rx_sig? ? ? ? ? ? ? ? ? ? ?,

output? wire? ? [00:00]? ? ?uart_tx_sig? ? ? ? ? ? ? ? ? ? ?);

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. Testbench

6. 仿真圖

整體仿真圖

將發(fā)送接收回環(huán),依次發(fā)送0x24,0x3a,0x19,接收到的也為0x24,0x3a,0x19。故發(fā)送接收正確。

波特率控制模塊

FIFO模塊

串口發(fā)送模塊

接收串口模塊

部分代碼展示:

module?my_uart_rx(clk,rst_n,rs232_rx,clk_bps,rx_data,rx_en);
input?clk;//?100MHz主時(shí)鐘
input?rst_n;//低電平復(fù)位信號(hào)
input?rs232_rx;//?RS232接收數(shù)據(jù)信號(hào)
input?clk_bps;//?clk_bps的高電平為接收或者發(fā)送數(shù)據(jù)位的中間采樣點(diǎn)
output[7:0]?rx_data;//接收數(shù)據(jù)寄存器,保存直至下一個(gè)數(shù)據(jù)來(lái)到?
output?rx_en;//接收數(shù)據(jù)有效
//----------------------------------------------------------------
reg?rs232_rx0,rs232_rx1,rs232_rx2;//接收數(shù)據(jù)寄存器,濾波用
wire?neg_rs232_rx;//表示數(shù)據(jù)線接收到下降沿
always?@?(posedge?clk?or?negedge?rst_n)?begin
if(!rst_n)?begin
rs232_rx0?<=?1'b1;
rs232_rx1?<=?1'b1;
rs232_rx2?<=?1'b1;
end
else?begin
rs232_rx0?<=?rs232_rx;
rs232_rx1?<=?rs232_rx0;
rs232_rx2?<=?rs232_rx1;
end
end
assign?neg_rs232_rx?=?rs232_rx2?&?~rs232_rx1;//接收到下降沿后neg_rs232_rx置高一個(gè)時(shí)鐘周期
//----------------------------------------------------------------
reg[3:0]num;//移位次數(shù)
reg?rx_int;//接收數(shù)據(jù)中斷信號(hào),接收到數(shù)據(jù)期間始終為高電平
always?@?(posedge?clk?or?negedge?rst_n)?begin
if(!rst_n)?begin
rx_int?<=?1'b0;
end
else?if(neg_rs232_rx)?begin
rx_int?<=?1'b1;//接收數(shù)據(jù)中斷信號(hào)使能
end
else?if(num==4'd11)?begin
rx_int?<=?1'b0;//接收數(shù)據(jù)中斷信號(hào)關(guān)閉
end
end?
//----------------------------------------------------------------
reg[7:0]?rx_data_r;//接收數(shù)據(jù)寄存器,保存直至下一個(gè)數(shù)據(jù)來(lái)到
//----------------------------------------------------------------
reg[7:0]rx_temp_data;//但前接收數(shù)據(jù)寄存器
reg?rx_data_shift;//數(shù)據(jù)移位標(biāo)志
always?@?(posedge?clk?or?negedge?rst_n)?begin
if(!rst_n)?begin
rx_data_shift?<=?1'b0;
rx_temp_data?<=?8'd0;
num?<=?4'd0;
rx_data_r?<=?8'd0;
end
else?if(rx_int)?begin//接收數(shù)據(jù)處理
if(clk_bps)?begin//讀取并保存數(shù)據(jù),接收數(shù)據(jù)為一個(gè)起始位,8bit數(shù)據(jù),一個(gè)結(jié)束位
rx_data_shift?<=?1'b1;
num?<=?num+1'b1;
if(num<=4'd8)?rx_temp_data[7]?<=?rs232_rx;//鎖存9bit(1bit起始位,8bit數(shù)據(jù))
end
else?if(rx_data_shift)?begin//數(shù)據(jù)移位處理
rx_data_shift?<=?1'b0;
if(num<=4'd8)?rx_temp_data?<=?rx_temp_data?>>?1'b1;//移位8次,第1bit起始位移除,剩下8bit正好時(shí)接收數(shù)據(jù)
else?if(num==4'd11)?begin
num?<=?4'd0;//接收到STOP位后結(jié)束,num清零
rx_data_r?<=?rx_temp_data;//把數(shù)據(jù)鎖存到數(shù)據(jù)寄存器rx_data中
end
end
???end
end
reg?rx_int_buf=0;
always?@?(posedge?clk?)?begin
rx_int_buf<=rx_int;
end
assign?rx_en=?rx_int_buf?&?(~rx_int);//rx_int下降沿
assign?rx_data?=?rx_data_r;//數(shù)據(jù)
endmodule

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=483

  • 2-240104095Z5962.doc
    下載

相關(guān)推薦