• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于FPGA的波特率連續(xù)可調(diào)的UART接口設(shè)計(jì)*

      2018-01-19 05:31:24吳志勇郭元興劉雨沁
      通信技術(shù) 2018年1期
      關(guān)鍵詞:波特率字符持續(xù)時(shí)間

      吳志勇,郭元興,劉雨沁

      (中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)

      0 引 言

      UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)是一種廣泛使用的低速串行接口,遵循的協(xié)議是RS-232C標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)規(guī)定的典型數(shù)據(jù)傳輸速率為300 b/s﹑1 200 b/s﹑2 400 b/s﹑9 600 b/s﹑38 400 b/s﹑115 200 b/s等。盡管市場(chǎng)上有專用的UART接口芯片和IP核,但部分接口芯片和IP核僅能支持幾種固定的傳輸速率,無(wú)法覆蓋RS-232C標(biāo)準(zhǔn)規(guī)定的所有傳輸速率。同時(shí),隨著外接設(shè)備的日益豐富,部分設(shè)備可能具有非標(biāo)準(zhǔn)速率的UART接口,而專用的UART接口芯片及IP核無(wú)法與這些設(shè)備通信。因此,設(shè)計(jì)一種波特率連續(xù)可調(diào)的UART接口具有較高的實(shí)用價(jià)值。

      1 UART原理

      UART的具體幀格式如圖1所示。每幀數(shù)據(jù)由起始位﹑數(shù)據(jù)位﹑校驗(yàn)位和停止位四部分組成。其中,起始位為低電平,持續(xù)一個(gè)比特時(shí)間,數(shù)據(jù)位長(zhǎng)度可為5 bit﹑6 bit﹑7 bit﹑8bit;校驗(yàn)位的模式有無(wú)校驗(yàn)﹑奇校驗(yàn)和偶校驗(yàn);停止位為高電平,持續(xù)時(shí)間可為1 bit或2 bit。當(dāng)沒(méi)有數(shù)據(jù)發(fā)送時(shí),發(fā)送和接收引腳都保持高電平[1]。

      圖1 UART幀格式

      發(fā)送端有數(shù)據(jù)發(fā)送時(shí),先發(fā)送一個(gè)比特的起始位,以表示通信的開始,然后發(fā)送有效數(shù)據(jù)。有效數(shù)據(jù)的低位在前,高位在后,之后再傳送校驗(yàn)位,最后發(fā)送停止位。

      接收端處于監(jiān)聽(tīng)狀態(tài),當(dāng)監(jiān)聽(tīng)到低電平的起始位后,就按照約定的波特率接收數(shù)據(jù)。

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

      FPGA具有設(shè)計(jì)靈活﹑可自行定制各種電路的特點(diǎn),其內(nèi)部豐富的邏輯資源可讓設(shè)計(jì)者充分發(fā)揮設(shè)計(jì)理念,并在設(shè)計(jì)過(guò)程中可使用VHDL語(yǔ)言靈活修改[2]。本設(shè)計(jì)采用Verilog HDL語(yǔ)言,并在Xilinx的XC6SLX150T-3FGG676I FPGA上進(jìn)行驗(yàn)證。本設(shè)計(jì)主要包含發(fā)送模塊﹑接收模塊和中斷模塊,系統(tǒng)框圖如圖2所示。

      圖2 系統(tǒng)示例

      部分UART接口的實(shí)現(xiàn)方式是由給定波特率來(lái)計(jì)算工作時(shí)鐘頻率[3-5],利用時(shí)鐘頻率的改變來(lái)實(shí)現(xiàn)波特率的切換。這種方式僅能實(shí)現(xiàn)有限種波特率的切換,無(wú)法實(shí)現(xiàn)波特率的連續(xù)可調(diào)。本設(shè)計(jì)在固定工作時(shí)鐘頻率下,由用戶以參數(shù)的形式改變比特持續(xù)時(shí)間來(lái)實(shí)現(xiàn)波特率的連續(xù)可調(diào)。

      比特持續(xù)時(shí)間是指在指定波特率下,傳輸線上單個(gè)比特持續(xù)的時(shí)鐘周期數(shù)。根據(jù)波特率的定義:每秒傳輸字符的個(gè)數(shù),即可計(jì)算比特持續(xù)時(shí)間N。假設(shè)UART接口的工作時(shí)鐘頻率為F,指定波特率為B,則可計(jì)算出比特持續(xù)時(shí)間:通過(guò)改變比特持續(xù)時(shí)間來(lái)調(diào)節(jié)波特率具有以下優(yōu)點(diǎn):

      (1)FPGA的工作時(shí)鐘頻率單一,時(shí)序收斂性更好;

      (2)UART接口的工作時(shí)鐘頻率F越高,數(shù)據(jù)傳輸速率的精度就越高;

      (3)在UART工作頻率保持不變的條件下,通過(guò)改變參數(shù)N的值就能得到連續(xù)可調(diào)的波特率;

      (4)接收模塊在接收每個(gè)比特時(shí)可以計(jì)數(shù)當(dāng)前接收到的0和1的個(gè)數(shù),并進(jìn)行大數(shù)判決,以過(guò)濾接收線上的毛刺,提高UART接口的抗干擾能力。

      2.1 發(fā)送模塊

      發(fā)送模塊主要包含TX FIFO和發(fā)送單元。TX FIFO采用Xilinx的IP Core Generator生成,用戶將待發(fā)送的數(shù)據(jù)寫入TX FIFO。發(fā)送單元采用有限狀態(tài)機(jī)來(lái)設(shè)計(jì),其狀態(tài)轉(zhuǎn)換如圖3所示。

      當(dāng)檢測(cè)到TX FIFO非空時(shí),發(fā)送模塊從IDLE狀態(tài)進(jìn)入transmit狀態(tài),并讀取TX FIFO中的待發(fā)送數(shù)據(jù),在transmit狀態(tài)發(fā)送一個(gè)比特?cái)?shù)據(jù)。當(dāng)處于transmit狀態(tài)時(shí),計(jì)數(shù)器count計(jì)數(shù)當(dāng)前比特的持續(xù)時(shí)鐘周期數(shù)。當(dāng)count的值大于等于比特持續(xù)時(shí)間N時(shí),表示當(dāng)前比特發(fā)送完畢,進(jìn)而判斷當(dāng)前數(shù)據(jù)幀是否發(fā)送完畢。如未發(fā)送完畢,則進(jìn)入shift狀態(tài),將待發(fā)送數(shù)據(jù)移位,進(jìn)行下一個(gè)比特發(fā)送,直到當(dāng)前數(shù)據(jù)幀的停止位發(fā)送完畢,回到IDLE狀態(tài)。

      2.2 接收模塊

      接收模塊主要由RX FIFO和接收單元組成。RX FIFO用于存放接收到的串口數(shù)據(jù),采用Xilinx的IP Core Generator生成。接收單元采用有限狀態(tài)機(jī)來(lái)設(shè)計(jì),其狀態(tài)轉(zhuǎn)換如圖4所示。

      接收單元處于監(jiān)聽(tīng)狀態(tài),當(dāng)檢測(cè)到接收線上的下降沿后,由IDLE狀態(tài)進(jìn)入start狀態(tài)。在start狀態(tài)中,計(jì)數(shù)器count計(jì)數(shù)時(shí)鐘周期數(shù),并統(tǒng)計(jì)信號(hào)線上0和1的個(gè)數(shù)。當(dāng)時(shí)鐘周期數(shù)大于等于比特持續(xù)時(shí)間N時(shí),表示當(dāng)前比特接收完畢,進(jìn)而通過(guò)大數(shù)判決確定接收到的比特值是否為數(shù)據(jù)幀的起始位。如果是,則進(jìn)入receive狀態(tài),以接收數(shù)據(jù)幀的剩余比特值;如果不是,則表示接收單元監(jiān)聽(tīng)到的下降沿是由干擾信號(hào)引起的,將重新回到IDLE狀態(tài)監(jiān)聽(tīng)。

      在receive狀態(tài)接收一個(gè)比特?cái)?shù)據(jù),在接收每個(gè)比特值時(shí)都統(tǒng)計(jì)0和1的個(gè)數(shù),并進(jìn)行大數(shù)判決,以提高抗干擾能力。每接收完一個(gè)比特值就轉(zhuǎn)移到shift狀態(tài),對(duì)接收到的比特值進(jìn)行移位,并判斷當(dāng)前數(shù)據(jù)幀是否接收完畢。如接收完畢,則回到IDLE狀態(tài);否則,重新進(jìn)入receive狀態(tài)繼續(xù)接收。

      圖4 接收模塊狀態(tài)轉(zhuǎn)換

      2.3 中斷模塊

      為了避免CPU以查詢方式讀取RX FIFO﹑減小CPU的消耗,同時(shí)為了減少中斷次數(shù)﹑提高CPU的中斷效率,本設(shè)計(jì)向用戶開放了中斷間隔參數(shù)C。中斷間隔C表示從接收完畢當(dāng)前字符開始到下一個(gè)字符起始位到來(lái)之間的最小時(shí)間間隔。中斷模塊的流程圖如圖5所示。

      圖5 中斷模塊流程

      假設(shè)當(dāng)前字符接收完畢為t1時(shí)刻,下一個(gè)字符的起始位到來(lái)為t2時(shí)刻,計(jì)數(shù)器在t1時(shí)刻開始計(jì)數(shù)。如果t2-t1≥C,則中斷模塊給出中斷信號(hào),否則清零計(jì)數(shù)器。CPU接收到UART接口的中斷信號(hào)后,便可連續(xù)讀取RX FIFO中的數(shù)據(jù),直到將RX FIFO讀空。

      3 設(shè)計(jì)驗(yàn)證

      本文在Xilinx的XC6SLX150T-3FGG676I FPGA上進(jìn)行驗(yàn)證,將UART接口的數(shù)據(jù)幀格式設(shè)置為8 bit數(shù)據(jù)位﹑無(wú)校驗(yàn)位﹑1 bit停止位,波特率為38 400 Baud,利用FPGA的時(shí)鐘管理單元產(chǎn)生200 MHz時(shí)鐘提供給UART接口工作。根據(jù)式(1)可計(jì)算得到比特持續(xù)時(shí)間N的值為5 208,即數(shù)據(jù)幀中的每個(gè)比特將持續(xù)5 208個(gè)時(shí)鐘周期。設(shè)置中斷間隔C的值為68 000,即從當(dāng)前字符幀接收完畢開始,如果在68 000個(gè)時(shí)鐘周期內(nèi)仍無(wú)新的字符幀到來(lái),則UART接口給出中斷信號(hào)。采用將PC機(jī)的串口與FPGA的UART接口對(duì)接的方式來(lái)驗(yàn)證。

      3.1 發(fā)送模塊的驗(yàn)證

      往TX FIFO寫入指定數(shù)據(jù)0xAA,利用示波器抓取發(fā)送管腳上的時(shí)序,得到如圖6所示的波形。

      圖6 發(fā)送波形

      可以看出,發(fā)出數(shù)據(jù)的波特率為38 400 Baud,數(shù)據(jù)值為0010101011,即發(fā)送線上的數(shù)據(jù)為0xAA,與寫入TX FIFO中的數(shù)據(jù)相符。

      3.2 接收模塊的驗(yàn)證

      利用PC機(jī)上的串口工具發(fā)送數(shù)據(jù)0xAA給FPGA,同時(shí)在FPGA中利用ChipScope抓取寫入RX FIFO中的數(shù)據(jù),得到如圖7所示的波形圖。

      圖7 接收波形

      從圖7可以看出,寫入RX FIFO中的數(shù)據(jù)為0xAA,即FPGA的UART接口接收到的數(shù)據(jù)與PC機(jī)發(fā)送的數(shù)據(jù)相同。

      3.3 中斷模塊的驗(yàn)證

      利用示波器同時(shí)抓取FPGA的接收和中斷管腳的信號(hào),得到如圖8所示的波形圖。

      圖8 中斷信號(hào)波形

      從圖8可以測(cè)量出,中斷信號(hào)在接收完畢當(dāng)前字符幀的340 μs后即68 000個(gè)時(shí)鐘后給出,與設(shè)定的參數(shù)值相符。

      4 結(jié) 語(yǔ)

      本文設(shè)計(jì)了一種波特率連續(xù)可調(diào)的UART接口,特點(diǎn)如下:

      (1)固定UART接口的工作頻率,通過(guò)改變字符幀的比特持續(xù)時(shí)間實(shí)現(xiàn)波特率的改變,并將比特持續(xù)時(shí)間作為接口參數(shù)開放給用戶,設(shè)計(jì)的UART接口具有連續(xù)可調(diào)的波特率,既能產(chǎn)生RS-232C標(biāo)準(zhǔn)中指定的波特率,又能與具有非標(biāo)準(zhǔn)速率的UART接口通信;

      (2)通過(guò)高頻計(jì)數(shù)每個(gè)比特持續(xù)期間0和1的個(gè)數(shù),采用大數(shù)判決的方式確定當(dāng)前比特值,能夠有效過(guò)濾信號(hào)線上的毛刺,提高UART接口的抗干擾能力;

      (3)將中斷間隔參數(shù)開放給用戶,使用戶得以自行設(shè)定UART接口中斷CPU的頻率,降低CPU的中斷響應(yīng)次數(shù),提高了CPU的運(yùn)行效率。

      此外,該模塊可移植到多個(gè)FPGA平臺(tái)上,具有良好的推廣應(yīng)用價(jià)值。

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

      ZHAO Yan,GE Li-jia,SHUANG Tao.Design and Realization of UART and Its Verification Based on FPGA[J].Modern Electronics Technique,2008,280(17):162-164.

      [2] 郭曉明,張德.基于FPGA的UART設(shè)計(jì)與實(shí)現(xiàn)[J].電聲技術(shù),2010,34(06):31-37.

      GUO Xiao-ming,ZHANG De.UART Design and Realization Based on FPGA[J].Audio Engineering,2010,34(06):31-37.

      [3] 牛濤,吳斌,焦風(fēng)川等.基于FPGA的UART電路的設(shè)計(jì)[J].電子測(cè)量技術(shù),2006,29(03):73-75.

      NIU Tao,WU Bin,JIAO Feng-chuan,et al.Design of a Kind of UART Circuit based on FPGA[J].Electronic Measurement Technology,2006,29(03):73-75.

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

      HE Hu-zhu,QIN Li,ZHANG Hui-xin.Design of a UART IP Core Based on FPGA[J].Microcomputer Information,2008,24(01-02):223-224.

      [5] 蔣艷紅.基于FPGA的UART設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)工程,2008,34(21):225-229.

      JIANG Yan-hong.Design and Application of UART Based on FPGA[J].Computer Engineering,2008,34(21):225-229.

      猜你喜歡
      波特率字符持續(xù)時(shí)間
      尋找更強(qiáng)的字符映射管理器
      CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
      智能制造(2020年5期)2020-07-03 06:24:00
      字符代表幾
      一種USB接口字符液晶控制器設(shè)計(jì)
      電子制作(2019年19期)2019-11-23 08:41:50
      消失的殖民村莊和神秘字符
      基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
      The 15—minute reading challenge
      基于SVD的電壓跌落持續(xù)時(shí)間檢測(cè)新方法
      C*Core芯片SCI串口波特率容限優(yōu)化
      極寒與北極氣壓變動(dòng)有關(guān),持續(xù)時(shí)間不確定
      和龙市| 达拉特旗| 湟中县| 永嘉县| 镇巴县| 攀枝花市| 聊城市| 汉川市| 镇沅| 襄城县| 延长县| 青田县| 马山县| 阿克陶县| 繁昌县| 德令哈市| 武夷山市| 民县| 随州市| 克拉玛依市| 宜黄县| 新宾| 四子王旗| 太仓市| 庆云县| 达尔| 五台县| 邮箱| 大安市| 高雄县| 诸城市| 迁安市| 沅江市| 新绛县| 广水市| 札达县| 江西省| 余干县| 阳泉市| 乌兰察布市| 伊春市|