0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將UART功能集成到FPGA內部實現(xiàn)多模塊的設計

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-10-18 07:54 ? 次閱讀

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

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

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

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

1、UART實現(xiàn)原理

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

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

將UART功能集成到FPGA內部實現(xiàn)多模塊的設計

UART各個模塊的功能如下:

(1)UART內核模塊

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

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

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

(3)移位寄存器模塊

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

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

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

(5)奇偶檢驗器模塊

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

(6)總線選擇模塊

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

(7)計數(shù)器模塊

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

2、UART工作流程

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

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

將UART功能集成到FPGA內部實現(xiàn)多模塊的設計

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

將UART功能集成到FPGA內部實現(xiàn)多模塊的設計

3、UART各個模塊的實現(xiàn)

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

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

(1)數(shù)據(jù)接收過程

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

將UART功能集成到FPGA內部實現(xiàn)多模塊的設計

(2)數(shù)據(jù)加載和發(fā)送過程

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

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

將UART功能集成到FPGA內部實現(xiàn)多模塊的設計

4、仿真結果

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


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19286

    瀏覽量

    229841
  • FPGA
    +關注

    關注

    1629

    文章

    21736

    瀏覽量

    603384
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101394
收藏 人收藏

    評論

    相關推薦

    基于FPGA器件實現(xiàn)UART適應自頂向下的設計

    FIF0),在實際應用中,往往只需要用到UART的幾個基本功能,使用專用芯片會造成資源浪費和成本提高,我們可以所需要的UART功能
    發(fā)表于 08-04 17:25 ?880次閱讀
    基于<b class='flag-5'>FPGA</b>器件<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>UART</b>適應自頂向下的設計

    FPGA/CPLD設計UART

    ),有時我們不需要使用完整的UART功能和這些輔助功能。或者設計上用到了FPGA/CPLD器件,那么我們就可以所需要的
    發(fā)表于 05-23 19:37

    一種基于FPGAUART電路實現(xiàn)

    一般的使用中往往不需要使用完整的UART功能,比如對于串口的設備或需要加密通訊的場合使用UART 就不是最合適的。如果設計上用到FPGA
    發(fā)表于 02-05 15:33

    FPGA怎么用UART實現(xiàn) UART實現(xiàn)原理

    內部寄存器里,最后再控制波特率發(fā)生器驅動移位寄存器數(shù)據(jù)串行輸出。2.信號監(jiān)測器模塊信號監(jiān)測器用于對 RS-232 的輸入信號進行實時監(jiān)測,一旦發(fā)現(xiàn)新的數(shù)據(jù)則立即通知 UART內核。
    發(fā)表于 10-18 09:51

    一種基于FPGAUART實現(xiàn)方法設計

    摘要:UART作為RS232協(xié)議的控制接口得到了廣泛的應用,UART功能集成FPGA芯片中
    發(fā)表于 06-21 07:17

    基于FPGAUART接口模塊設計

    隨著FPGA的廣泛應用,經(jīng)常需要FPGA與其他數(shù)字系統(tǒng)進行串行通信,專用的UART集成電路如8250,8251等是比較復雜的,因為專用的UART
    發(fā)表于 09-16 11:57 ?4649次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UART</b>接口<b class='flag-5'>模塊</b>設計

    一種基于FPGAUART 電路實現(xiàn)

      UART 即通用異步收發(fā)器,傳統(tǒng)上采用多功能的專用集成電路實現(xiàn)。但是在一般的使用中往往不需要完整的UART
    發(fā)表于 05-23 10:13 ?2673次閱讀
    一種基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UART</b> 電路<b class='flag-5'>實現(xiàn)</b>

    集成UART核心的FPGA異步串行實現(xiàn)

    串行外設都會用到RS232-C異步串行接口,傳統(tǒng)上采用專用的集成電路即UART實現(xiàn),如TI、EXAR、EPIC的550、452等系列,但是我們一般不需要使用完整的UART
    發(fā)表于 06-04 11:42 ?1211次閱讀
    <b class='flag-5'>集成</b><b class='flag-5'>UART</b>核心的<b class='flag-5'>FPGA</b>異步串行<b class='flag-5'>實現(xiàn)</b>

    基于FPGA/CPLD的UART功能設計

    基于FPGA/CPLD的UART功能設計
    發(fā)表于 01-23 20:45 ?31次下載

    FPGA為基礎的UART模塊的詳細設計方案

      UART作為RS232協(xié)議的控制接口得到了廣泛的應用,UART功能集成
    發(fā)表于 07-07 15:51 ?12次下載
    以<b class='flag-5'>FPGA</b>為基礎的<b class='flag-5'>UART</b><b class='flag-5'>模塊</b>的詳細設計方案

    使用FPGA模塊化設計方法實現(xiàn)UART的設計論文

    UART作為RS232協(xié)議的控制接口得到了廣泛的應用,UART功能集成
    發(fā)表于 07-07 17:28 ?10次下載
    使用<b class='flag-5'>FPGA</b>和<b class='flag-5'>模塊</b>化設計方法<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>UART</b>的設計論文

    基于FPGA實現(xiàn)通用異步收發(fā)器基本功能的應用設計

    的的UART功能和一些輔助功能時,就可以需要的UART功能
    發(fā)表于 07-10 10:28 ?952次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>通用異步收發(fā)器基本<b class='flag-5'>功能</b>的應用設計

    如何使用FPGA和IP核實現(xiàn)UART擴展

    了當前普追采用的UART的方法和Actel公司提供的標準8051和UAI玎(通用異步收發(fā)器)。在IP核的基礎上,通過兩塊FPGA內部RAM,設計出一種“橋”的辦法,用Vcalog硬件
    發(fā)表于 02-02 15:15 ?11次下載
    如何使用<b class='flag-5'>FPGA</b>和IP核<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>多</b><b class='flag-5'>UART</b>擴展

    一種基于FPGAUART電路的實現(xiàn)

    的。本設計使用Xilinx的FPGA器件,只將UART的核心功能嵌入FPGA內部,不但
    發(fā)表于 04-27 14:07 ?8次下載

    基于FPGAUART模塊設計與實現(xiàn)簡介

    基于FPGAUART模塊設計與實現(xiàn)介紹說明。
    發(fā)表于 06-01 09:43 ?20次下載