FPGA學習筆記 串列埠傳送模組的設計與驗證

2021-09-10 07:00:10 字數 2289 閱讀 2073

從上圖我們可以看到,串列埠傳送模組一共被定義了5個訊號,其中4個輸入,1個輸出,下面,對這5個訊號進行一一闡述。

clk:我想不用多說,哪怕是小白也知道,這是系統時鐘,自然是輸入訊號。

rst_n:系統復位訊號,自然也是輸入。另外,n表示低電平有效。

tx_trig:傳送資料開始訊號,只有當這個訊號出現乙個高電平,整個模組才開始工作。

tx_data:需要傳送的資料。

rs232_tx:模組唯一的輸出訊號,起始位、要傳送的資料、停止位都包含在這裡。通過**可以看到,該訊號是傳送模組完整時序。我們傳送模組最終,也是為了產生這個訊號。

以上,就是對串列埠傳送模組5個訊號的解釋。下面,我們要做的就是分析一下該模組**究竟如何去寫。

顯然,除了以上5個訊號,在模組中,我們還需要一些暫存器,才能完整**功能的實現,這裡,筆者先貼出寫好的**,後面再做詳細解釋。具體**如下:

module uart_tx(

//----system signal------

clk,

rst_n,

//-----------------------

tx_trig,

tx_data,

rs232_tx

);input clk,rst_n;

input tx_trig;

input [7:0] tx_data;

output reg rs232_tx;

reg [ 7:0] tx_data_reg;

reg tx_flag;

reg [12:0] baud_cnt;

reg bit_flag;

reg [ 3:0] bit_cnt;

//tx_data_reg
always @ (posedge clk or negedge rst_n)

if(!rst_n)

tx_data_reg <= 8』d0;

else if(tx_trig == 1』b1 && tx_flag == 1』b0)

tx_data_reg <= tx_data;

else

tx_data_reg <= tx_data_reg;

//tx_flag
always @ (posedge clk or negedge rst_n)

if(!rst_n)

tx_flag <= 1』b0;

else if(tx_trig == 1』b1)

tx_flag <= 1』b1;

else if(bit_flag == 1』b1 && bit_cnt == 4』d8)

tx_flag <= 1』b0;

//baud_cnt
always @ (posedge clk or negedge rst_n)

if(!rst_n)

baud_cnt <= 13』d0;

else if(baud_cnt == 13』d5207)

baud_cnt <= 13』d0;

else if(tx_flag == 1』b1)

baud_cnt <= baud_cnt + 1』d1;

else

baud_cnt <= 13』d0;

//bit_flag
always @ (posedge clk or negedge rst_n)

if(!rst_n)

bit_flag <= 1』b0;

else if(baud_cnt == 13』d5207)

bit_flag <= 1』b1;

else

bit_flag <= 1』b0;

//bit_cnt
always @ (posedge clk or negedge rst_n)

if(!rst_n)

bit_cnt <= 4』d0;

else if(bit_cnt == 4』d8 && bit_flag == 1』b1)

bit_cnt <= 4』d0;

else if(bit_flag == 1』b1)

bit_cnt <= bit_cnt + 1』b1;

// else

// bit_cnt <= bit_cnt;

//rs232_tx

FPGA基礎學習 簡易串列埠傳送

首先需要了解uart 的通訊協議和傳輸時序 uart通訊首先將接收到的並行資料轉換成序列資料來傳輸。訊息幀起始位為低電平,後面接7或8個資料位 大部分為8個資料位 1個可用的奇偶校驗位 根據資料中1的個數是否為偶數 偶校驗位 還是奇數 奇校驗位 1個或者多個高位停止位。傳輸乙個位元組大約需要10個位...

FPGA學習筆記 Verilog語言的模組化設計

在進行模組化設計中,對於複雜的數字系統,我們一般採用自頂向下的設計方式。可以把系統劃分成幾個功能模組,每個功能模組再劃分成下一層的子模組 每個模組的設計對應乙個module,乙個module設計成乙個verilog程式檔案。因此,對乙個系統的頂層模組,我們採用結構化的設計,即頂層模組分別呼叫了各個功...

FPGA學習(一) 模組

模組由兩部分組成,一部分描述介面,另一部分描述邏輯功能 可以模擬軟體程式中的函式由資料加演算法組成 邏輯功能定義輸入怎麼影響輸出。1 模組埠定義 module 模組名 口1,口2,口3,口4,口1,口2,口3,口4,表示模組的輸入和輸出名。引用模組時其埠可以用兩種方法連線 1 嚴格按照模組定義的埠順...