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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA的UART控制器實(shí)現(xiàn)RS-232電平和TTL/CMOS電平的轉(zhuǎn)換設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:中國(guó)科技信息 ? 作者:張明 ? 2021-03-26 14:19 ? 次閱讀

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

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

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

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

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

UART主要有UART內(nèi)核、信號(hào)監(jiān)測(cè)器、移位寄存

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

基于FPGA的UART控制器實(shí)現(xiàn)RS-232電平和TTL/CMOS電平的轉(zhuǎn)換設(shè)計(jì)

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

(1)UART內(nèi)核模塊

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

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

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

(3)移位寄存器模塊

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

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

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

(5)奇偶檢驗(yàn)器模塊

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

(6)總線選擇模塊

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

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

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

2、UART工作流程

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

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

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

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

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

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

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

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

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

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

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

4、仿真結(jié)果

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

責(zé)任編輯:gt

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

    關(guān)注

    68

    文章

    19100

    瀏覽量

    228814
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50206

    瀏覽量

    420865
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16103

    瀏覽量

    177071
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TTL電平和CMOS電平的區(qū)別!

    電平Uoh和輸出低電平Uol  Uoh≥2.4V,Uol≤0.4V  2.輸入高電平和輸入低電平  Uih≥2.0V,Uil≤0.8V  CMOS
    發(fā)表于 01-17 14:52

    EIA RS-232C與TTL轉(zhuǎn)換

    連接,必須在EIA RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。實(shí)現(xiàn)這種變換的方法可用分立元件,也可用集成電路芯片。目前較為廣泛地使用集成電路
    發(fā)表于 07-09 00:33

    TTL轉(zhuǎn)RS232電平轉(zhuǎn)換電路及工作原理

    ,元件經(jīng)濟(jì),結(jié)構(gòu)簡(jiǎn)單設(shè)計(jì)巧妙 用三極管實(shí)現(xiàn)RS-232轉(zhuǎn)TTL電路 電路如下圖 1.DB9的2腳 TXD:為RS-232電平信號(hào)接收端,RX
    發(fā)表于 02-24 14:37

    TTL轉(zhuǎn)RS232電平轉(zhuǎn)換電路及工作原理

    實(shí)現(xiàn)DSP或MCU與PC通訊的電路,元件經(jīng)濟(jì),結(jié)構(gòu)簡(jiǎn)單設(shè)計(jì)巧妙 用三極管實(shí)現(xiàn)RS-232轉(zhuǎn)TTL電路 電路如下圖1.DB9的2腳 TXD:為RS-2
    發(fā)表于 02-25 13:30

    RS232電平TTL電平的區(qū)別

    分別使用寄存地址方式和HAL庫(kù)實(shí)現(xiàn)流水燈一.串口協(xié)議和RS-232標(biāo)準(zhǔn),以及RS232電平TTL
    發(fā)表于 01-26 07:31

    RS232電平TTL電平的區(qū)別在哪

    一. 了解串口協(xié)議和RS-232標(biāo)準(zhǔn),以及RS232電平TTL電平的區(qū)別;了解"USB/TTL
    發(fā)表于 02-10 07:53

    TTL CMOS RS232 RS485 RS422各種電平內(nèi)容

    TTL CMOS RS232 RS485 RS422各種電平內(nèi)容
    發(fā)表于 10-31 14:32 ?55次下載
    <b class='flag-5'>TTL</b> <b class='flag-5'>CMOS</b> <b class='flag-5'>RS232</b> <b class='flag-5'>RS</b>485 <b class='flag-5'>RS</b>422各種<b class='flag-5'>電平</b>內(nèi)容

    RS232C/TTL電平轉(zhuǎn)換和串口取電

    本文為大家介紹簡(jiǎn)單的RS232C/TTL電平轉(zhuǎn)換和串口取電。
    發(fā)表于 01-05 17:08 ?1.2w次閱讀
    <b class='flag-5'>RS232</b>C/<b class='flag-5'>TTL</b><b class='flag-5'>電平</b><b class='flag-5'>轉(zhuǎn)換</b>和串口取電

    一文帶你走進(jìn)TTL、CMOS電平和OC門(mén)

    TTLCMOS電平和OC門(mén)知識(shí)大全
    的頭像 發(fā)表于 07-15 10:33 ?8193次閱讀

    UART功能集成到FPGA內(nèi)部實(shí)現(xiàn)多模塊的設(shè)計(jì)

    實(shí)現(xiàn)RS-232電平和TTL/CMOS電平轉(zhuǎn)換可以用
    的頭像 發(fā)表于 10-18 07:54 ?2550次閱讀
    將<b class='flag-5'>UART</b>功能集成到<b class='flag-5'>FPGA</b>內(nèi)部<b class='flag-5'>實(shí)現(xiàn)</b>多模塊的設(shè)計(jì)

    嵌入式五種重要概念串口、COM口、TTLRS-232、RS-485有什么區(qū)別

    1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232RS-485是指的電平標(biāo)準(zhǔn)(電信號(hào))。 2、接設(shè)備的時(shí)候,一般只接GND RX TX。不會(huì)接Vcc或者+3.3v
    的頭像 發(fā)表于 03-03 10:23 ?7732次閱讀

    串口、COM口、UART口, TTLRS-232、RS-485區(qū)別詳解

    調(diào)試時(shí)總是會(huì)遇到各種各樣的接口,各種各樣的轉(zhuǎn)換板,似懂非懂的感覺(jué)很不爽! 首先,串口、UART口、COM口、USB口是指的物理接口形式(硬件)。而TTL、RS-232、
    發(fā)表于 03-13 09:20 ?1.3w次閱讀
    串口、COM口、<b class='flag-5'>UART</b>口, <b class='flag-5'>TTL</b>、<b class='flag-5'>RS-232</b>、<b class='flag-5'>RS</b>-485區(qū)別詳解

    嵌入式 TTL電平和CMOS電平

    TTL,CMOS都屬于數(shù)字電路。TTL電流控制器件輸出高電平>2.4V輸出低電平<0
    發(fā)表于 11-26 18:51 ?10次下載
    嵌入式 <b class='flag-5'>TTL</b><b class='flag-5'>電平和</b><b class='flag-5'>CMOS</b><b class='flag-5'>電平</b>

    TTL電平RS232電平的區(qū)別

    什么是TTL電平、CMOS電平RS232電平?它們有什么區(qū)別呢?一般說(shuō)來(lái),
    的頭像 發(fā)表于 02-07 14:58 ?5251次閱讀

    cmos電平ttl電平如何轉(zhuǎn)換 怎么判斷ttl電路高低電平

    )是常用的數(shù)字電路家族,兩者都有自己的特點(diǎn)和應(yīng)用范圍。在介紹如何轉(zhuǎn)換CMOS電平和TTL電平之前,我們先來(lái)了解一下它們的定義和特點(diǎn)。
    的頭像 發(fā)表于 02-22 11:10 ?3091次閱讀