機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
基于FPGA的UART控制器的多模塊設計與實現
基于FPGA的UART控制器的多模塊設計與實現
 更新時間:2009-6-5 8:57:23  點擊數:1
【字體: 字體顏色
異步串行通信要求的傳輸線少,可靠性高,傳輸距離遠,被廣泛應用于微機和外設的數據交換。實現串口通信主要需要完成兩部分工作:

  將串口電平轉換為設備電路板的工作電平,即實現RS-232電平和TTL/CMOS電平的轉換;

  接收并且檢驗串行的數據,將數據變成并行的并提供給處理器處理。

  實現RS-232電平和TTL/CMOS電平轉換可以用接口芯片來實現,實現數據的串行到并行轉換用的是UART,它們是實現串行通信必不可少的兩個部分。雖然目前大部分處理器芯片中都集成了UART,但是一般FPGA芯片卻沒有這個特點,所以使用FPGA作為處理器可以有兩個選擇,第一個選擇是使用UART芯片進行串并轉換,第二個選擇是在FPGA內部實現UART功能。但所有的UART芯片都存在引腳較多、體積較大、與其他器件的接口較為復雜等缺點,從而會使設計的成本和難度增加。因此可以將需要的UART功能集成到FPGA內部,而利用VHDL語言將UART的核心功能集成,不僅解決傳統(tǒng)芯片的缺點,也使整個設計更加緊湊、穩(wěn)定且可靠。

  1、UART實現原理

  UART主要有UART內核、信號監(jiān)測器、移位寄存

器、波特率發(fā)生器、計數器、總線選擇器和奇偶校驗器總共7個模塊組成,如圖一所示。

  UART各個模塊的功能如下:

 。1)UART內核模塊

  UART內核模塊是整個設計的核心。在數據接收時,UART內核模塊負責控制波特率發(fā)生器和移位寄存器,使得移位寄存器在波特率始終的驅動下同步的接收并且保存RS-232接收端口上的串行數據。在數據發(fā)送時,UART內核模塊首先根據待發(fā)送的數據和奇偶校驗位的設置產生完整的發(fā)送序列(包括起始位、數據位、奇偶校驗位和停止位),之后控制移位寄存器將序列加在到移位寄存器的內部寄存器里,最后再控制波特率發(fā)生器驅動移位寄存器將數據串行輸出。

  (2)信號監(jiān)督器模塊

  信號檢測器用于對RS-232的輸入信號進行實時檢測,一旦發(fā)現新的數據則立即通知UART內核。

 。3)移位寄存器模塊

  移位寄存器的作用是存儲輸入或者輸出的數據。當UART接受RS-232輸入時,移位寄存器在波特率模式下采集RS-232輸入信號,并且保存結果;當UART進行RS-232輸出時,UART內核首先將數據加載到移位寄存器內,再使移位寄存器在波特率模式下將數據輸出到RS-232輸出端口上。

  (4)波特率發(fā)生器模塊

  由于RS-232傳輸必定是工作在某種波特率下,比如9600,為了便于和RS-232總線進行同步,需要產生符合RS-232傳輸波特率的時鐘,這就是波特率發(fā)生器的功能。

  (5)奇偶檢驗器模塊

  奇偶校驗器模塊是根據奇偶校驗的設置和輸入數據計算出相應的奇偶校驗位,它是通過純組合邏輯實現的。

 。6)總線選擇模塊

  總線選擇模塊用于選擇奇偶校驗器的輸入是數據發(fā)送總線還是數據接收總線。在接收數據時,總線選擇模塊將數據接收總線連接到奇偶校驗器的輸入端,來檢查已接收數據的奇偶校驗位是否正確;而在發(fā)送數據時,總線選擇模塊將數據發(fā)送總線連接到奇偶檢驗器的輸入端,UART內核模塊就能夠獲取并且保存待發(fā)送序列所需的奇偶校驗位了。

  (7)計數器模塊

  計數器模塊的功能是記錄串行數據發(fā)送或者接收的數目,在計數到某數值時通知UART內核模塊。

  2、UART工作流程

  UART的工作流程可以分為接收過程和發(fā)送過程兩部分。

  接收過程指的是UART監(jiān)測到RS-232總線上的數據,順序讀取串行數據并且將其輸出給CPU的過程。當信號監(jiān)測器監(jiān)測到新的數據(RS-232輸入邏輯變?yōu)?,即RS-232傳輸協(xié)議的起始位)就會觸發(fā)接收過程,其流程圖如圖二所示。首先UART內核會重置波特率發(fā)生器和移位寄存器,并且設置移位寄存器的工作模式為波特率模式,以準備接收數據。其次,移位寄存器在波特率始終的驅動下工作,不斷讀取RS-232串行總線的輸入數據,并且將數據保存在內部的寄存器內。接收完成后,UART內核會對已接收的數據進行奇偶檢驗并且輸出校驗結果。最后,UART內核會重置信號監(jiān)測器,以準備進行下一次數據接收。

  發(fā)送過程由加載和發(fā)送兩個步驟組成,如圖三所示。加載步驟是UART內核按RS-232串行發(fā)送的順序將起始位、數據位、奇偶校驗位和停止位加載到移位寄存器內,這個過程工作在系統(tǒng)時鐘下,相對于RS-232的傳輸速度來說非?臁M瓿杉虞d步驟后,UART內核會重置波特率發(fā)生器,并且設置移位寄存器工作在波特率模式下,于是移位寄存器便在波特率時鐘的驅動下依次將加載的數據發(fā)送到RS-232的發(fā)送端TxD,這樣便產生了RS-232的數據發(fā)送時序。

3、UART各個模塊的實現

  除UART內核模塊以外,其他模塊都較為簡單,用于實現某一具體功能。現在重點對UART內核模塊的實現做出介紹。

  UART內核模塊的功能是控制數據接收、數據加載和數據發(fā)送的過程,這可以用狀態(tài)機來實現。下面就按接收和發(fā)送的過程來介紹UART內核模塊狀態(tài)機的實現。

 。1)數據接收過程

  數據接收過程的流程圖如圖二所示,可以定義3個狀態(tài)——空閑、接收和接收完成,其中狀態(tài)變換圖如圖四所示。

 。2)數據加載和發(fā)送過程

  數據加載和發(fā)送過程都是為了發(fā)送數據而設定的,所以將它們放在一起進行介紹?梢杂4個狀態(tài)來實現上述的過程,即空閑、加載、發(fā)送和發(fā)送完成,其中的空閑狀態(tài)就是UART內核復位后的空閑狀態(tài),和上面介紹的數據接收過程的空閑狀態(tài)一致。

  數據加載和發(fā)送過程的狀態(tài)轉換圖如圖五所示。

  4、仿真結果

  在波特率為9600情況下對UART進行仿真,結果穩(wěn)定可靠。該設計具有很好的可讀性和靈活性,具有很好的參考價值。

<!--插入廣告JS代碼-->
  • 上一篇: TMS320C61416 EMIF總線下雙FPGA加載設計
  • 下一篇: 基于DSP的多路音/視頻采集處理系統(tǒng)設計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1