基于FPGA的UART設計_第1頁
基于FPGA的UART設計_第2頁
基于FPGA的UART設計_第3頁
基于FPGA的UART設計_第4頁
基于FPGA的UART設計_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、鄭州輕工業(yè)學院課程設計說明書題目: 基于FPGA的UART設計 姓 名: 王鵬飛 院 (系): 電子信息工程學院 專業(yè)班級: 電子信息工程13-01 學 號: 541301030135 指導教師: 杜海明 成 績: 時間:2016年6月21日至 2016年6月28日鄭州輕工業(yè)學院課 程 設 計 任 務 書題目基于FPGA的UART設計專業(yè)、班級電子信息工程13-01學號 35 姓名 王鵬飛 主要內容、基本要求、主要參考資料等:主要內容:要求學生使用硬件描述語言描述硬件功能,利用FPGA并采用模塊化設計方法設計UART(通用異步收發(fā)器)的各個模塊。其中包括波特發(fā)生器,程序控制器,UART數據接收

2、器和UART數據發(fā)送器,本文采用的外部時鐘為48MHZ,波特率為9600。在軟件上進行設計、編譯和仿真?;疽螅?、 掌握FPGA 的程序設計方法。 2、掌握硬件描述語言語法。 3、程序設計完成后要求在軟件中實現(xiàn)功能仿真。主要參考資料:1、夏宇聞. Verilog 數字系統(tǒng)設計教程M.北京:北京航空航天大學出版社,20032、潘松,王國棟.VHDL實用教程M.成都:電子科技大學出版社,2003.完 成 期 限:2016.6.212016.6.28指導教師簽名: 課程負責人簽名: 2016年 6月 18日基于FPGA的UART設計摘要UART作為RS232協(xié)議的控制接口得到了廣泛的應用,將UA

3、RT的功能集成到FPGA芯片中,可使整個系統(tǒng)更為靈活、緊湊,減小整個電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。提出了一種基于FPGA的UART的實現(xiàn)方法,具體描述了發(fā)送、接收等模塊的設計,恰當使用了有限狀態(tài)機,實現(xiàn)了FPGA上的UART的設計,給出仿真結果。關鍵詞 FPGA UART 模塊化 有限狀態(tài)機目 錄1 FPGA與UART簡介11.1 FPGA介紹11.2 UART簡介12 UART工作原理及功能設計32.1UART工作原理32.2UART功能設計32.2.1 波特率發(fā)生器設計42.2.2 發(fā)送器設計52.2.3 接收器設計53.仿真84 總結9參考文獻101 FPGA與UART簡介1.1

4、 FPGA介紹FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。FPGA主要特點:1)采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA內部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設計周期最短、開發(fā)費用最低、風險最小的器件之一。5) FP

5、GA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。FPGA是由存放在片內RAM中的程序來設置其工作狀態(tài)的,因此,工作時需要對片內的RAM進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數據讀入片內編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復成白片,內部邏輯關系消失,因此,F(xiàn)PGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)P

6、GA,不同的編程數據,可以產生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。1.2 UART簡介通用異步收發(fā)器(UART)是一種短距離串行通信接口,主要用于計算機、微處理器與小型通信網絡之間的短距離通信。目前通信接口技術已發(fā)展成為硬件和軟件相結合的綜合性技術,在嵌入式系統(tǒng)設計中,異步串行通信接口已成為必不可少的一部分。隨著FPGA技術和嵌入式系統(tǒng)的發(fā)展,在單芯片上可以實現(xiàn)多種功能,雖然目前許多器件已經把UART集成在內,但是要求用單一芯片實現(xiàn)處理器和控制器等復雜功能,同時需要串行通信場合,采用高密度、大容量FPGA器件來設計UART具有很高的實用價值。計算機內部采用并行數據,不能直接把數據發(fā)到

7、Modem,必須經過UART整理才能進行異步傳輸,其過程為:CPU先把準備寫入串行設備的數據放到UART的寄存器(臨時內存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。它是用于控制計算機與串行設備的芯片。有一點要注意的是,它提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其它使用RS-232C接口的串行設備通信了。作為接口的一部分,UART還提供以下功能:將由計算機內部傳送過來的并行數據轉換為輸出的串行數據流。將計算機外部來的串行數據轉換為字節(jié),供計算機內

8、部并行數據的器件使用。在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啟停標記,并從接收數據流中刪除啟停標記。處理由鍵盤或鼠標發(fā)出的中斷信號(鍵盤和鼠標也是串行設備)。可以處理計算機與外部串行設備的同步管理問題。有一些比較高檔的UART還提供輸入輸出數據的緩沖區(qū),比較新的UART是16550,它可以在計算機需要處理數據前在其緩沖區(qū)內存儲16字節(jié)數據,而通常的UART是8250。如果您購買一個內置的調制解調器,此調制解調器內部通常就會有16550 UART。2 UART工作原理及功能設計2.1 UART工作原理UART是一種串行數據總線,用于異步通信,并

9、且雙向通信,可實現(xiàn)全雙工發(fā)送和接收?;镜腢ART只需要兩條信號線(TXD,RXD)和一條地線就可以完成數據的互相通信,接收和發(fā)送互不干擾,這樣就大大節(jié)省了傳輸費用。由于UART是異步通信,所以需要對數據進行同步。UART發(fā)送/接收數據的傳輸格式如圖1所示,一個字符單位由開始位、數據位、校驗位、停止位組成(其中校驗位可供選)。發(fā)送或接收一個完整的字節(jié)信息,首先是一個作為起始位的邏輯“o”位,接著是8個數據位,然后是停止位邏輯“1”位,數據線空閑時為高或“1”狀態(tài)。在字符的8位數據部分,先發(fā)送數據的最低位,最后發(fā)送最高位。每位持續(xù)時間是固定的,由發(fā)送器本地時鐘控制,每秒發(fā)送的數據位個數,即為“波

10、特率”。起始位和停止位起著很重要的作用。顯然,它們標志每個字符的開始和結束,但更重要的是他們使接收器能把他的局部時鐘與每個新開始接收的字符再同步。異步通信沒有可參照的時鐘信號,發(fā)送器隨時都可能發(fā)送數據,任何時刻串行數據到來時,接收器必須準確地發(fā)現(xiàn)起始位下降沿的出現(xiàn)時間,從而正確地采樣緊接著的io或者m位(包括開始位、數據位和停止位),接收器的時鐘和發(fā)送器的時鐘不是同一個,因此,接收器所確定的采樣點的間隔和發(fā)送器所確定的位間隔時間不同,這點要特別注意。2.2 UART功能設計異步通信的一幀傳輸經歷以下步驟:1)空閑狀態(tài)。發(fā)送方連續(xù)發(fā)送信號,處于信息“1”狀態(tài)。2)開始傳輸。發(fā)送方在任何時刻將傳號

11、變成空號,即“1”跳變到“0”,并持續(xù)1位時間表明發(fā)送方開始傳輸數據。而同時,接收方收到空號后,開始與發(fā)送方同步,并期望收到隨后的數據。3)奇偶傳輸。數據傳輸之后是可供選擇的奇偶位發(fā)送或接收。4)停止傳輸。最后是發(fā)送或接收的停止位,其狀態(tài)恒為“1”。設計的基本原則是保留最主要的功能,基于FPGA的UART系統(tǒng)由波特率時鐘發(fā)生器、接收器和發(fā)送器3個子模塊組成,如圖2所示。圖2 UART功能框圖2.2.1 波特率發(fā)生器設計波特率發(fā)生器實質是設計一個分頻器,用于產生和RS232通信同步的時鐘。在系統(tǒng)中用一個計數器來完成這個功能,分頻系數N決定了波特率的數值。該計數器一般工作在一個頻率較高的系統(tǒng)時鐘下

12、,當計數到N/2時將輸出置為高電平,再計數到N/2的數值后將輸出置為低電平,如此反復即可得到占空比50%的波特率時鐘,具體的波特率依賴于所使用的系統(tǒng)時鐘頻率和N的大小。如系統(tǒng)時鐘頻率是6.4 MHz,要求波特率是9 600,則16倍波特率時鐘的周期約等于42個系統(tǒng)時鐘周期,則計數器取42/2=21時,當計數溢出時輸出電平取反就可以得到16倍約定波特率的時鐘。使用VHDL來描述波特率發(fā)生器的完整代碼如下:Process(rst,clk6_4M)if rst=0 then count=0;bclkr=0;elsif rising_edge(clk6_4M) thenif (count=20)cou

13、nt=0;bclkr=not bclkr;elsecount=count+1;end if;end if;end process;2.2.2 發(fā)送器設計UART發(fā)送器的設計較容易,只要每隔一個發(fā)送周期按照數據幀格式及要求的速率輸出數據即可。沒有數據要發(fā)送時,發(fā)送數據寄存器為空,發(fā)送器處于空閑狀態(tài);當檢測到發(fā)送數據寄存器滿信號后,發(fā)送器及發(fā)送起始位,同時8個數據位被并行裝入發(fā)送移位寄存器停止位緊接著數據位指示一幀數據結束。只有發(fā)送數據寄存器為空時,RAM中的待發(fā)數據才能被裝入、程序中使用計數器要保證各位周期定時正確。2.2.3 接收器設計 接收器的工作過程如下,串行數據幀和接收時鐘是異步的,發(fā)送

14、來的數據由邏輯1變?yōu)檫壿?可以視為一個數據幀的開始。接收器先要捕捉起始位,然而,通信線上的噪音也極有可能使傳號“1”跳變到空號“0”。所以接收器以16倍的波特率對這種跳變進行檢測,確定rxd輸入由1到0,邏輯0要8個bclkr(16倍的波特率時鐘)周期,才是正常的起始位,而不是噪音引起的,其中若有一次采樣得到的為高電平則認為起始信號無效,返回初始狀態(tài)重新等待起始信號的到來。 采到正確的起始位后,就開始接收數據,最可靠的接收應該是接收時鐘的出現(xiàn)時刻正好對著數據位的中央。由于在起始位檢測時,己使時鐘對準了位中央,用16倍波特率的時鐘作為接收時鐘,就是為了確保在位寬的中心時間對接收的位序列進行可靠采

15、樣,當采樣計數器計數結束后所有數據位都己經輸入完成。最后對停止位的高電平進行檢測,若正確檢測到高電平,說明本幀的各位正確接收完畢,否則出錯。最后將正確的數據轉存到數據寄存器中,輸出數據。還要輸出一個數據接收標志信號標志數據接收完。利用有限狀態(tài)機實現(xiàn),完整代碼如下:Process(bclkr,reset,rxd_sync)Variable count :std_logic_vector(3 downto 0); -定義中間變量Variable rcnt :integer:=0;Variable rbufs :std_logic_vector(7 downto 0);BeginIf reset=0

16、 thenStateif rxd_sync=0 thenstate=r_center;r_ready=0;rcnt:=0;elsestate=r_start;r_readyif rxd_sync=0 thenif count=”0100” thenstate=r_wait;count:=”0000”;elsecount:=count+1;state=r_center;end if;elsestateif count=”1110” thencount:=”0000”;if rcnt=framlenr thenstate=r_stop;elsestate=r_sample;end if;elsec

17、ount:=count+1;staterbufs(rcnt):=rxd_sync;rcnt:=rcnt+1;stater_ready=1;rbuf=rbufs;statestate=r_start;end case;end if;end process;3.仿真本設計在Altera Cyclone系列的芯片上進行了驗證,對發(fā)送模塊和接收模塊的仿真結果分別如圖3、圖4所示。發(fā)送的數據能嚴格按照串行通信協(xié)議進行傳輸;接收的數據也完全正確。用FPGA設計UART,可以用片上很少的邏輯單元實現(xiàn)UART的基本功能。與傳統(tǒng)設計相比,能有效減少系統(tǒng)的PCB面積,降低系統(tǒng)的功耗,提高設計的穩(wěn)定性和可靠性,充分

18、利用FPGA的剩余資源、并可方便地進行系統(tǒng)升級和移植。圖3 發(fā)送模塊仿真圖4 接收模塊仿真4 總結該設計具有很大的靈活性,通過調整波特率發(fā)生器的分頻參數,就可以使其工作在不同的頻率。采用16倍波特率的采樣時鐘,可以實時有效監(jiān)測數據的起始位,并對數據位進行中央采樣,從而保證了所采樣數據的正確性。該模塊可以作為一個完整的IP核,靈活地移植進各種型號FPGA中,在實際應用時也可嵌入到其他系統(tǒng)中,有很好的借鑒和參考價值。參考文獻1吳厚航,深入淺出玩轉FPGA,北京航空航天大學出版社,2013年7月。 2于斌,modelsim電子系統(tǒng)分析及仿真,電子工業(yè)出版社,2014年2月。 3潘松 黃繼業(yè),EDA技術實用教程Verilog版,科學出版社,2010年7月 4夏宇聞,verilog數字系統(tǒng)設計教程,北京航空航天大學出版社2013年7月 5康華光,電子技術基礎,高教出版社,2003。 6.李莉,Altera FP

溫馨提示

  • 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

提交評論