用verilog實現的串列埠通訊模組

2021-06-03 15:34:03 字數 1167 閱讀 4254

串列埠功能:

1、8個資料位、1個停止為、無校驗位

2、空閒時資料線為高電平,從高電平跳向低電平表示啟動訊號

3、波特率可以通過parameter引數實現可調

有兩個檔案:

uart.v 串列埠模組

module uart(

//***********全域性時鐘復位訊號*********

iclk,

irst_n,

//***********序列資料線***************

irx, //序列接收

otx, //序列傳送

//************完成標記*****************

or,  //接收完成。開始接收時該位為低電平,接收完成置為高電平

ot,  //傳送完成。開始傳送時該位為低電平,傳送結束後為高電平

it,  //傳送請求,上公升沿請求

itdata, //傳送資料

ordata //接收資料

);tb3.v :自閉環的測試指令碼

使用示例:

uart uart_0(

//***********全域性時鐘復位訊號*********

.iclk(clk),    //系統時鐘,即defparam uart_0.clk_freq=`clk_freq;處的時鐘

.    irst_n(rst_n),  //復位訊號

//***********序列資料線***************

.irx(rx), //序列接收引腳

.otx(tx), //序列傳送引腳

//************完成標記*****************

.or(rt),  //接收完成。開始接收時該位為低電平,接收完成置為高電平

.ot(tfinish),  //傳送完成。開始傳送時該位為低電平,傳送結束後為高電平

.it(rt),  //傳送請求,上公升沿請求

.itdata(data), //傳送資料

.ordata(data) //接收資料

);defparam uart_0.clk_freq=`clk_freq;       //  掉用時,使用者只需提供系時鐘頻率和需要的波特率即可

defparam uart_0.baud_rate=`baud_rate;  //  這兩個引數必須設定,否則無法正確工作

verilog實現串列埠

實現串列埠的時候一些簡單的介紹和遇到問題和思考。備忘 實現時可以把這兩部分分開。也就是兩個 fifo 配套收和發的 v檔案,可以實現乙個串列埠。一般人實現串列埠的都是這麼想的吧。下面是檔案的層級結構 2 當然是coding 了。寫串列埠的 主要貼一下收和發的狀態機 用一段來實現的 1 這是收的部分 ...

verilog簡單實現串列埠

uart 2017.10.7 傳送接收到的資料 波特率9600 乙個停止位 無奇偶校驗 de2板子 rx gpio k25 0 left tx tx gpio k26 1 right rx gnd 右邊第6 或者倒數第6 復位不成功 復位按鍵有問題 靠右按即可復位 特別注意 如果乙個條件中同時給乙個...

verilog簡單實現串列埠(精簡版)

uart 2017.10.9 傳送接收到的資料 波特率9600 8個資料位 乙個停止位 無奇偶校驗 module uart clk,50mhz rst n,reset rx,input tx ouptut input clk,rst n input rx output reg tx 檢測是否有資料來...