FPGA實現(xiàn)異步收發(fā)器基本功能的應用設計_第1頁
FPGA實現(xiàn)異步收發(fā)器基本功能的應用設計_第2頁
FPGA實現(xiàn)異步收發(fā)器基本功能的應用設計_第3頁
FPGA實現(xiàn)異步收發(fā)器基本功能的應用設計_第4頁
FPGA實現(xiàn)異步收發(fā)器基本功能的應用設計_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、【Word版本下載可任意編輯】 FPGA實現(xiàn)異步收發(fā)器基本功能的應用設計 通用異步收發(fā)器(Universal Asynchronous ReceiverTransmitter,UART)可以和各種標準串行接口,如RS232和RS485等開展全雙工異步通信,具有傳輸距離遠、成本低、可靠性高等優(yōu)點。一般UART由專用芯片來實現(xiàn),但專用芯片引腳都較多,內含許多輔助功能,在實際使用時往往只需要用到UART的基本功能,使用專用芯片會造成資源浪費和成本提高。當我們不需要用到完整的的UART功能和一些輔助功能時,就可以將需要的UART功能集成用FPGA來實現(xiàn),然而,F(xiàn)PGA內部并不擁有CPU控制單元,無法處

2、理由UART控制器產生的中斷,所以FPGA不能利用現(xiàn)成的UART控制器構成異步串行接口,必須將UART控制器的功能集成到FPGA內部。從而可以大大的減少了體積、簡化了電路,也提高了系統(tǒng)的靈活性。 1、 UART的工作原理 UART是一種串行數(shù)據(jù)總線,用于異步通信,并且雙向通信,可實現(xiàn)全雙工發(fā)送和接收?;镜腢ART只需要兩條信號線(TXD、RXD)和一條地線就可以完成數(shù)據(jù)的互相通信,接收和發(fā)送互不干擾,這樣就大大節(jié)省了傳輸費用。由于UART是異步通信,所以需要對數(shù)據(jù)開展同步。UA RT發(fā)送接收數(shù)據(jù)的傳輸格式如圖1所示,一個字符單位由開始位、數(shù)據(jù)位、校驗位、停止位組成(其中校驗位可供選)。 發(fā)送

3、或接收一個完整的字節(jié)信息,首先是一個作為起始位的邏輯“0”位,接著是8個數(shù)據(jù)位。然后是停止位邏輯“1”位,數(shù)據(jù)線空閑時為高或“1”狀態(tài)。在字符的8位數(shù)據(jù)部分,先發(fā)送數(shù)據(jù)的位,發(fā)送位。每位持續(xù)時間是固定的,由發(fā)送器本地時鐘控制,每秒發(fā)送的數(shù)據(jù)位個數(shù),即為“波特率”。起始位和停止位起著很重要的作用。顯然,它們標志每個字符的開始和結束,但更重要的是他們使接收器能把他的局部時鐘與每個新開始接收的字符再同步。異步通信沒有可參照的時鐘信號,發(fā)送器隨時都可能發(fā)送數(shù)據(jù),任何時刻串行數(shù)據(jù)到來時,接收器必須準確地發(fā)現(xiàn)起始位下降沿的出現(xiàn)時間,從而正確地采樣緊接著的10或者11位(包括開始位、數(shù)據(jù)位和停止位),接收器

4、的時鐘和發(fā)送器的時鐘不是同一個,因此,接收器所確定的采樣點的間隔和發(fā)送器所確定的位間隔時間不同,這點要特別注意。 2、 UART功能設計 異步通信的一幀傳輸經歷以下步驟:1)空閑狀態(tài)。發(fā)送方連續(xù)發(fā)送信號,處于信息“1”狀態(tài)。2)開始傳輸。發(fā)送方在任何時刻將傳號變成空號,即“1”跳變到“0”,并持續(xù)1位時間說明發(fā)送方開始傳輸數(shù)據(jù)。而同時,接收方收到空號后,開始與發(fā)送方同步,并期望收到隨后的數(shù)據(jù)。3)奇偶傳輸。數(shù)據(jù)傳輸之后是可供選擇的奇偶位發(fā)送或接收。4)停止傳輸。是發(fā)送或接收的停止位,其狀態(tài)恒為“1”。 設計的基本原則是保存主要的功能,基于FPGA的UART系統(tǒng)由波特率時鐘發(fā)生器、接收器和發(fā)送器

5、3個子模塊組成,如圖2所示。 2.1 波特率發(fā)生器設計 波特率發(fā)生器實質是設計一個分頻器,用于產生和RS232通信同步的時鐘。在系統(tǒng)中用一個計數(shù)器來完成這個功能,分頻系數(shù)N決定了波特率的數(shù)值。該計數(shù)器一般工作在一個頻率較高的系統(tǒng)時鐘下,當計數(shù)到N2時將輸出置為高電平,再計數(shù)到N2的數(shù)值后將輸出置為低電平,如此反復即可得到占空比50的波特率時鐘,具體的波特率依賴于所使用的系統(tǒng)時鐘頻率和的大小。如系統(tǒng)時鐘頻率是6.4 MHz,要求波特率是9 600,則16倍波特率時鐘的周期約等于42個系統(tǒng)時鐘周期,則計數(shù)器取422=21時,當計數(shù)溢出時輸出電平取反就可以得到16倍約定波特率的時鐘。 使用VHDL來

6、描述波特率發(fā)生器的完整代碼如下: 2.2 發(fā)送器設計 UART發(fā)送器的設計較容易,只要每隔一個發(fā)送周期按照數(shù)據(jù)幀格式及要求的速率輸出數(shù)據(jù)即可。沒有數(shù)據(jù)要發(fā)送時,發(fā)送數(shù)據(jù)存放器為空,發(fā)送器處于空閑狀態(tài);當檢測到發(fā)送數(shù)據(jù)存放器滿信號后,發(fā)送器及發(fā)送起始位,同時8個數(shù)據(jù)位被并行裝入發(fā)送移位存放器,停止位緊接著數(shù)據(jù)位指示一幀數(shù)據(jù)結束。只有發(fā)送數(shù)據(jù)存放器為空時,RAM中的待發(fā)數(shù)據(jù)才能被裝入。程序中使用計數(shù)器要保證各位周期定時正確。 2.3 接收器設計 接收器的工作過程如下,串行數(shù)據(jù)幀和接收時鐘是異步的,發(fā)送來的數(shù)據(jù)由邏輯1變?yōu)檫壿?可以視為一個數(shù)據(jù)幀的開始。接收器先要捕捉起始位,然而,通信線上的噪音也極

7、有可能使傳號“1”跳變到空號“0”。所以接收器以16倍的波特率對這種跳變開展檢測,確定rxd輸入由1到0,邏輯0要8個bclkr(16倍的波特率時鐘)周期,才是正常的起始位,而不是噪音引起的,其中若有采樣得到的為高電平則認為起始信號無效,返回初始狀態(tài)重新等待起始信號的到來。 采到正確的起始位后,就開始接收數(shù)據(jù),可靠的接收應該是接收時鐘的出現(xiàn)時刻正好對著數(shù)據(jù)位的中央。由于在起始位檢測時,已使時鐘對準了位中央,用16倍波特率的時鐘作為接收時鐘,就是為了確保在位寬的中心時間對接收的位序列開展可靠采樣,當采樣計數(shù)器計數(shù)結束后所有數(shù)據(jù)位都已經輸入完成。對停止位的高電平開展檢測,若正確檢測到高電平,說明本

8、幀的各位正確接收完畢,否則出錯。 后將正確的數(shù)據(jù)轉存到數(shù)據(jù)存放器中,輸出數(shù)據(jù)。還要輸出一個數(shù)據(jù)接收標志信號標志數(shù)據(jù)接收完。 利用有限狀態(tài)機實現(xiàn),完整代碼如下: 3、 仿真 本設計在Altera Cyclone系列的EP1C3T100I7芯片上開展了驗證,對發(fā)送模塊和接收模塊的仿真結果分別如圖3、圖4所示。發(fā)送的數(shù)據(jù)能嚴格按照串行通信協(xié)議開展傳輸;接收的數(shù)據(jù)也完全正確。仿真無誤后,使用Quarhus軟件將編譯好的.pof格式文件載到配置芯片EPCS1中。結果通信數(shù)據(jù)完全正確,電路工作穩(wěn)定、可靠。 用FPGA設計UART,可以用片上很少的邏輯單元實現(xiàn)UART的基本功能。與傳統(tǒng)設計相比,能有效減少系統(tǒng)的PCB面積,降低系統(tǒng)的功耗,提高設計的穩(wěn)定性和可靠性,充分利用FPGA的剩余資源。并可方便地開展系統(tǒng)升級和移植。 4 、結論 該設計具有很大的靈活性,通過調整波特率發(fā)生器的分頻參數(shù),

溫馨提示

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

評論

0/150

提交評論