<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的UART控制器的多模塊設計與實(shí)現

基于FPGA的UART控制器的多模塊設計與實(shí)現

——
作者: 時(shí)間:2008-01-17 來(lái)源: 收藏

  異步串行通信要求的傳輸線(xiàn)少,可靠性高,傳輸距離遠,被廣泛應用于微機和外設的數據交換。實(shí)現串口通信主要需要完成兩部分工作:

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

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

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

  1、UART實(shí)現原理

  UART主要有UART內核、信號監測器、移位、波特率發(fā)生器、、總線(xiàn)選擇器和奇偶校驗器總共7個(gè)模塊組成,如圖一所示。

  

UART實(shí)現原理圖

  UART各個(gè)模塊的功能如下:

  (1)UART內核模塊

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

  (2)信號監督器模塊

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

  (3)移位寄存器模塊

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

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

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

{{分頁(yè)}}

  (5)奇偶檢驗器模塊

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

  (6)總線(xiàn)選擇模塊

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

  (7)模塊

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

  2、UART工作流程

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

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

  

UART接收數據流程圖
{{分頁(yè)}}

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

  

UART發(fā)送數據流程圖

  3、UART各個(gè)模塊的實(shí)現

  除UART內核模塊以外,其他模塊都較為簡(jiǎn)單,用于實(shí)現某一具體功能?,F在重點(diǎn)對UART內核模塊的實(shí)現做出介紹。

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

  (1)數據接收過(guò)程

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

  

狀態(tài)變換圖
{{分頁(yè)}}

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

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

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

  

數據加載和發(fā)送過(guò)程的狀態(tài)轉換圖

  4、仿真結果

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>