基于FPGA的UART串口接收模塊設(shè)計_第1頁
基于FPGA的UART串口接收模塊設(shè)計_第2頁
基于FPGA的UART串口接收模塊設(shè)計_第3頁
基于FPGA的UART串口接收模塊設(shè)計_第4頁
基于FPGA的UART串口接收模塊設(shè)計_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、UART串口接收模塊設(shè)計實驗?zāi)繕?biāo):實現(xiàn)FPGA接收其他設(shè)備通過UART協(xié)議發(fā)送過來的數(shù)據(jù)。知識點:1、 URAT通信協(xié)議工業(yè)環(huán)境下數(shù)據(jù)接收實現(xiàn)。2、 In system sources and probes editor(ISSP)調(diào)試工具的使用。UART發(fā)送端發(fā)送一個字節(jié)數(shù)據(jù)時序圖: 對于其中的每一位進(jìn)行采樣,一般情況下每一位數(shù)據(jù)的中間點是最穩(wěn)定的,因此一般應(yīng)用中,采集中間時刻時的數(shù)據(jù)即可,如下圖所示:但是在工業(yè)應(yīng)用中,往往有非常強(qiáng)的電磁干擾,只采樣一次就作為該數(shù)據(jù)的電平判定,是不保險的,有可能恰好采集到被干擾的信號而導(dǎo)致結(jié)果出錯,因此需要使用多次采樣求概率的方式進(jìn)行。以下為改進(jìn)型的單bit

2、數(shù)據(jù)接收方式示意圖:在這張圖中,將每一位數(shù)據(jù)又平均分成了16小段,對于Bit_x這一位數(shù)據(jù),考慮到數(shù)據(jù)在剛剛發(fā)生變化和即將發(fā)生變化的這一時期,數(shù)據(jù)極有可能不穩(wěn)定的(用紅色標(biāo)出的兩段),在這兩個時間段采集數(shù)據(jù),很有可能得到錯誤的結(jié)果,因此這兩段時間的電平無效,采集時直接忽略。而中間這一時間段(用綠色標(biāo)出),數(shù)據(jù)本身是比較穩(wěn)定的,一般都代表了正確的結(jié)果。但是也不排除該段數(shù)據(jù)受強(qiáng)電磁干擾而出現(xiàn)錯誤的電平脈沖,因此對這一段電平,進(jìn)行多次采樣,并求高低電平發(fā)生的概率,6次采集結(jié)果中,取出現(xiàn)次數(shù)多的電平作為采樣結(jié)果。例如,采樣6次的結(jié)果分別為1/1/1/1/0/1/,則取電平結(jié)果為1,若為0/0/1/0/

3、0/0,,則取電平結(jié)果為0,當(dāng)6次采樣結(jié)果中1和0各占一半(各3次),則可判斷當(dāng)前通信線路環(huán)境非常惡劣,數(shù)據(jù)不具有可靠性。串口發(fā)送模塊包含兩個主要組件:1、 起始位檢測進(jìn)程(低電平,下降沿)2、 波特率產(chǎn)生模塊3、 數(shù)據(jù)接收模塊串口接收模塊整體結(jié)構(gòu)圖:波特率時鐘計算:系統(tǒng)時鐘周期為System_clk_period波特率波特率周期波特率分頻計數(shù)值System_clk_period = 20計數(shù)值9600104167ns104167/ System_clk_period/16325-11920052083ns52083/ System_clk_period/16163s

4、26041/ System_clk_period/1681s17361/ System_clk_period/1654-11152008680ns8680/ System_clk_period/1627-1Modelsim仿真圖:·在testbench文件中我們?yōu)樵O(shè)計輸入了假定的信號,在仿真圖中我們可以看到data_byte_r在Rx_done標(biāo)志位產(chǎn)生的時候成功的將仿真數(shù)據(jù)data_byte_t接收到其中。實現(xiàn)了串口接收數(shù)據(jù)的功能,其余各狀態(tài)表現(xiàn)正常。Rtl功能圖附錄:源程序:一, 頂層功能代碼module uart_rx_top(Clk,Rst_n,Rs

5、232_Rx);input Clk;input Rst_n;input Rs232_Rx;reg 7:0data_rx_r;wire 7:0data_rx;wire Rx_Done;uart_byte_rx uart_byte_rx(.Clk(Clk),.Rst_n(Rst_n),.baud_set(3'd0),.Rs232_Rx(Rs232_Rx),.data_byte(data_rx),.Rx_Done(Rx_Done);issp issp(.probe(data_rx_r),.source();always(posedge Clk or negedge Rst_n)if(!Rst

6、_n)data_rx_r <= 8'd0;else if(Rx_Done)data_rx_r <= data_rx;elsedata_rx_r <= data_rx_r;endmodule二 testbench仿真文件timescale 1ns/1nsdefine clk_period 20module uart_byte_rx_tb;reg Clk;reg Rst_n;reg Rs232_Rx;wire 7:0data_byte_r;wire Rx_Done;reg 7:0data_byte_t;reg send_en;reg 2:0baud_set;wire Rs

7、232_Tx;wire Tx_Done;wire uart_state;uart_byte_rx uart_byte_rx(.Clk(Clk),.Rst_n(Rst_n),.baud_set(baud_set),.Rs232_Rx(Rs232_Tx),.data_byte(data_byte_r),.Rx_Done(Rx_Done);uart_byte_tx uart_byte_tx(.Clk(Clk),.Rst_n(Rst_n),.data_byte(data_byte_t),.send_en(send_en),.baud_set(baud_set),.Rs232_Tx(Rs232_Tx),

8、.Tx_Done(Tx_Done),.uart_state(uart_state);initial Clk = 1;always#(clk_period/2)Clk = Clk;initial beginRst_n = 1'b0;data_byte_t = 8'd0;send_en = 1'd0;baud_set = 3'd4;#(clk_period*20 + 1 );Rst_n = 1'b1;#(clk_period*50);data_byte_t = 8'haa;send_en = 1'd1;#clk_period;send_en = 1'd0;(posedge Tx_Done)#(clk_period*5000);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論