亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的UART模塊設(shè)計(jì)

        2016-07-10 04:09:12王昱煜
        電子技術(shù)與軟件工程 2016年7期
        關(guān)鍵詞:狀態(tài)機(jī)

        王昱煜

        本文介紹了一種利用FPGA實(shí)現(xiàn)UART通用異步收發(fā)器模塊的方法,所設(shè)計(jì)的UART模塊充分利用了FPGA硬件可編程性、高度集成性、實(shí)時(shí)性的特點(diǎn)。實(shí)踐測(cè)試表明,該模塊設(shè)計(jì)具有高可靠性、便于擴(kuò)展和移植的優(yōu)點(diǎn)。

        【關(guān)鍵詞】FPGA UART 狀態(tài)機(jī)

        通用異步收發(fā)器(Universal Asynchronous Receiver Transmitter,UART)是數(shù)字通信領(lǐng)域流行和廣泛使用的一種接口設(shè)備,它可以和各種標(biāo)準(zhǔn)串行接口,如RS232、RS485等進(jìn)行異步通信,具有傳輸距離遠(yuǎn)、成本低、可靠性高等優(yōu)點(diǎn)。

        一般來說UART通信需要使用專門的接口協(xié)議芯片,但是這種協(xié)議芯片存在體積較大、接口復(fù)雜且成本較高的缺點(diǎn)。此外,這種芯片的結(jié)構(gòu)與功能相對(duì)固定,在設(shè)計(jì)中缺乏靈活性。本文介紹了利用FPGA實(shí)現(xiàn)UART通訊的方法,將原來UART專用協(xié)議芯片的功能集成到了FPGA中,提高了設(shè)計(jì)的靈活性與可靠性。

        1 UART通訊原理

        支持UART的串行接口目前比較常用的有RS232、RS422、RS485等,它們之間的區(qū)別主要表現(xiàn)在電氣特性上,但最基本的通訊原理是一樣的。UART模塊接收/發(fā)送的都是符合TTL(或CMOS)標(biāo)準(zhǔn)的邏輯電平,與外設(shè)之間還需要經(jīng)過專門的轉(zhuǎn)換芯片將通訊數(shù)據(jù)轉(zhuǎn)化為符合RS232、RS422或RS485標(biāo)準(zhǔn)的電平。

        UART作為一種異步串行通訊方式,數(shù)據(jù)在通訊過程中是字節(jié)為單位按位傳輸,一般從最低有效位(LSB)開始。典型的UART通訊數(shù)據(jù)格式如圖1所示。

        2 UART的FPGA實(shí)現(xiàn)

        UART通訊模塊內(nèi)部邏輯結(jié)構(gòu)如圖2,可分為控制模塊、接收模塊和發(fā)送模塊,各個(gè)模塊的主要功能如下:

        控制模塊:根據(jù)CPU寫入的數(shù)據(jù)配制UART通訊參數(shù),并根據(jù)接收、發(fā)送模塊回送的指令產(chǎn)生相應(yīng)中斷上報(bào)給CPU,對(duì)接收、發(fā)送模塊狀態(tài)進(jìn)行監(jiān)控、管理;

        接收模塊:該模塊主要用于將接收到的串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),再以本地總線形式發(fā)送給CPU。此外,該模塊還將接收過程中的參數(shù)上報(bào)給控制模塊,用于監(jiān)控管理以及接收中斷、錯(cuò)誤中斷的產(chǎn)生。

        發(fā)送模塊:該模塊主要用于將CPU要發(fā)送的數(shù)據(jù)在控制邏輯的調(diào)度下轉(zhuǎn)化為串行數(shù)據(jù)后發(fā)送出去,此外該模塊還將發(fā)送過程中的參數(shù)上報(bào)給控制模塊,用于監(jiān)控管理以及發(fā)送中斷、錯(cuò)誤中斷的產(chǎn)生。

        2.1 接收模塊的設(shè)計(jì)

        該模塊的數(shù)據(jù)接收過程通過一個(gè)狀態(tài)機(jī)來實(shí)現(xiàn),其狀態(tài)轉(zhuǎn)移圖如圖3所示,狀態(tài)轉(zhuǎn)移所用的時(shí)鐘是波特率時(shí)鐘16倍頻clk16x。整個(gè)工作流程如下:

        2.1.1 系統(tǒng)復(fù)位后

        狀態(tài)機(jī)進(jìn)入idle狀態(tài)等待起始位,當(dāng)接收端電平由高變?yōu)榈停≧XD值由1變?yōu)?)時(shí)即為檢測(cè)到了一個(gè)起始位,狀態(tài)機(jī)進(jìn)入start狀態(tài);

        2.1.2 start狀態(tài)下

        等待8個(gè)clk16x周期后再判斷一次RXD的值,若不為0,則說明之前接收到的是由于線上干擾而引起的虛假起始位,狀態(tài)機(jī)返回idle狀態(tài);若仍為0則再等待8個(gè)clk16x周期后狀態(tài)機(jī)進(jìn)入shift狀態(tài);

        2.1.3 shift狀態(tài)下

        模塊每隔16個(gè)clk16x周期從RXD上讀取1bit的數(shù)據(jù)進(jìn)行移位操作,直到讀完全部8bit數(shù)據(jù)后,若奇偶校驗(yàn)被使能,則狀態(tài)機(jī)進(jìn)入parity狀態(tài),否則直接進(jìn)入stop狀態(tài);

        2.1.4 parity狀態(tài)下

        模塊等待16個(gè)clk16x周期從RXD上讀取1bit的奇偶校驗(yàn)位的值,之后狀態(tài)機(jī)進(jìn)入stop狀態(tài);

        2.1.5 stop狀態(tài)下

        模塊等待16個(gè)clk16x周期從RXD上讀取1bit的停止位的值,之后狀態(tài)機(jī)進(jìn)入done狀態(tài),停止位值經(jīng)取反操作后用做幀錯(cuò)誤校驗(yàn)位;

        2.1.6 done狀態(tài)下

        若奇偶校驗(yàn)被使能,且奇偶檢驗(yàn)與幀校驗(yàn)均正確,或奇偶校驗(yàn)未被使能,但幀校驗(yàn)正確時(shí),移位寄存器中的8bit數(shù)據(jù)被存入接收FIFO中,否則該數(shù)據(jù)被丟棄。狀態(tài)機(jī)將在1個(gè)clk16x周期后返回idle,等待新數(shù)據(jù)。

        2.2 發(fā)送模塊的設(shè)計(jì)

        該模塊的數(shù)據(jù)發(fā)送過程通過一個(gè)狀態(tài)機(jī)來實(shí)現(xiàn),其狀態(tài)轉(zhuǎn)移圖如圖4所示,狀態(tài)轉(zhuǎn)移所用的時(shí)鐘是波特率時(shí)鐘16倍頻clk16x。整個(gè)工作流程如下:

        2.2.1 系統(tǒng)復(fù)位后

        狀態(tài)機(jī)進(jìn)入idle狀態(tài)等待發(fā)送FIFO中寫入數(shù)據(jù),當(dāng)FIFO的非空標(biāo)志被置位時(shí)狀態(tài)機(jī)進(jìn)入start狀態(tài);

        2.2.2 start狀態(tài)下

        模塊先發(fā)送一個(gè)數(shù)據(jù)起始位,同時(shí)從FIFO中讀取一個(gè)字節(jié)的數(shù)據(jù)放入發(fā)送移位寄存器,然后狀態(tài)機(jī)進(jìn)入shift狀態(tài);

        2.2.3 shift狀態(tài)下

        模塊按照LSB在前,MSB在后的順序,每間隔16個(gè)clk16x周期從移位寄存器中移出1bit的數(shù)據(jù),直到移完全部8bit數(shù)據(jù)后,若奇偶校驗(yàn)被使能,則狀態(tài)機(jī)進(jìn)入parity狀態(tài),否則直接進(jìn)入stop狀態(tài);

        2.2.4 parity狀態(tài)下

        模塊等待16個(gè)clk16x周期從TXD上發(fā)出1bit的奇偶校驗(yàn)位,之后狀態(tài)機(jī)進(jìn)入stop狀態(tài);

        2.2.5 stop狀態(tài)下

        模塊等待16個(gè)clk16x周期從TXD上發(fā)出1bit的停止位(TXD上為1),之后狀態(tài)機(jī)進(jìn)入done狀態(tài);

        2.2.6 done狀態(tài)下

        表示一個(gè)字節(jié)數(shù)據(jù)發(fā)送完成,狀態(tài)機(jī)在1個(gè)clk16x周期后直接回到idle狀態(tài),等待發(fā)送新的數(shù)據(jù)。

        2.3 控制模塊的設(shè)計(jì)

        控制模塊的主要作用是根據(jù)CPU寫入的參數(shù)對(duì)UART進(jìn)行配制,此外還能根據(jù)接收/發(fā)送模塊的工作狀態(tài)產(chǎn)生中斷,并上報(bào)給CPU。該模塊內(nèi)部結(jié)構(gòu)由一個(gè)波特率時(shí)鐘發(fā)生器、三個(gè)寄存器以及中斷仲裁邏輯組成。

        波特率時(shí)鐘發(fā)生器能對(duì)輸入的系統(tǒng)時(shí)鐘進(jìn)行分頻操作,從而產(chǎn)生相應(yīng)的波特率16倍頻后的時(shí)鐘clk16x。

        三個(gè)寄存器分別是控制寄存器(conreg)、中斷使能寄存器(int_en_reg)以及狀態(tài)寄存器(statusreg)。其中conreg和int_en_reg是只寫存儲(chǔ)器,它們分別用于存儲(chǔ)CPU寫入的UART配制參數(shù)以及中斷使能條件,UART即按照這兩個(gè)寄存器中被寫入的參數(shù)進(jìn)行工作;statusreg是只讀存儲(chǔ)器,存儲(chǔ)了UART工作時(shí)的狀態(tài)數(shù)據(jù),CPU通過讀取這些狀態(tài)信息來做出相應(yīng)的操作。

        控制模塊在中斷被使能的前提下,根據(jù)中斷仲裁邏輯,向CPU發(fā)送三種中斷:錯(cuò)誤中斷、接收中斷、發(fā)送中斷。這三種中斷的產(chǎn)生條件如下:

        (1)錯(cuò)誤中斷。當(dāng)接收數(shù)據(jù)時(shí),若奇偶校驗(yàn)或幀校驗(yàn)錯(cuò)誤,則在接收端RXD上的串行數(shù)據(jù)全部移入移位寄存器后,該中斷即被置位;

        (2)接收中斷。在接收到新數(shù)據(jù),并且接收到的數(shù)據(jù)被保存至接收FIFO后,該中斷即被置位;

        (3)發(fā)送中斷。在發(fā)送數(shù)據(jù)時(shí),當(dāng)發(fā)送FIFO中的數(shù)據(jù)被發(fā)送移位寄存器讀空以后,該中斷即被置位。

        3 結(jié)論

        本文提出了一種基于FPGA設(shè)計(jì)和實(shí)現(xiàn)UART的方法,通過利用FPGA片上邏輯資源來實(shí)現(xiàn)UART的基本功能,其通訊波特率、校驗(yàn)方法、中斷方式均可根據(jù)實(shí)際需要進(jìn)行配制。此外,利用FPGA的可重配置性,還可以在FPGA上方便的實(shí)現(xiàn)多路UART通訊擴(kuò)展,與傳統(tǒng)設(shè)計(jì)相比,能有效減少系統(tǒng)的PCB面積,降低系統(tǒng)的功耗,提高設(shè)計(jì)的穩(wěn)定性和可靠性,并可方便地進(jìn)行系統(tǒng)升級(jí)和移植。

        參考文獻(xiàn)

        [1]何健標(biāo),王宏遠(yuǎn),林靜宜,等.基于最佳接收的UART的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2006(8):55-58.

        [2]何慧珠,秦麗,張會(huì)新.基于FPGA的UART IP設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算信息,2008,24(1):223-224.

        [3]陳小琴.基于Verilog HDL的多功能信號(hào)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào), 2008,29(4):322-324.

        [4]季雄,段繼海,胡媛媛,等.基于Verilog HDL的UART設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,6(2):230-232.

        [5]趙延,葛利嘉,雙濤,基于FPGA的UART設(shè)計(jì)實(shí)現(xiàn)及其驗(yàn)證方法[J],現(xiàn)代電子技術(shù),2008(17):163-164.

        作者單位

        蘇州長(zhǎng)風(fēng)航空電子有限公司 江蘇省蘇州市 215151

        猜你喜歡
        狀態(tài)機(jī)
        基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
        基于狀態(tài)機(jī)比對(duì)的狀態(tài)機(jī)推斷方案
        江蘇通信(2015年5期)2015-03-16 01:16:51
        雙口RAM讀寫正確性自動(dòng)測(cè)試的有限狀態(tài)機(jī)控制器設(shè)計(jì)方法
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        基于VHDL的一個(gè)簡(jiǎn)單Mealy狀態(tài)機(jī)
        加勒比黑人在线| 亚洲国产成人片在线观看无码| 国产人妻无码一区二区三区免费| 久久国产成人免费网站| 亚洲福利视频一区二区三区| 精品天堂色吊丝一区二区| 亚洲av无码专区首页| 色综合久久无码中文字幕app| 国产精品农村妇女一区二区三区| 国产日本精品一二三四区| 伊人久久大香线蕉亚洲五月天| 久久精品这里只有精品| 精品人妻夜夜爽一区二区| 一本色道久久亚洲综合| 暖暖视频在线观看免费| 欧美视频九九一区二区| 女同重口味一区二区在线| 2018天天躁夜夜躁狠狠躁| 一本大道色婷婷在线| 日本韩国三级aⅴ在线观看| 亚洲一区二区三区免费网站| 热久久美女精品天天吊色| 中国精品久久精品三级| 99久久亚洲精品加勒比| 国产精品亚洲av无人区一区香蕉| 中国国语毛片免费观看视频| 亚洲欧美日韩一区二区在线观看| 人妻丰满精品一区二区| 把女人弄爽特黄a大片| 国产精品爽爽va在线观看无码| av永久天堂一区二区三区蜜桃| 免费人成视频网站在线不卡| 亚洲国产日韩欧美一区二区三区| 久久国产乱子伦精品免费强| 久久狼人国产综合精品| 少妇粉嫩小泬喷水视频| 午夜一级韩国欧美日本国产| 国产白浆流出一区二区| 国产人妻高清国产拍精品| 曰本极品少妇videossexhd| 无码国产精品一区二区免费式芒果|