《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于導航基帶芯片的UART的設計和仿真
基于導航基帶芯片的UART的設計和仿真
來源:電子技術應用2013年第1期
胡 月1,馮華星2,李曉江2,葉甜春1
1.中國科學院微電子研究所,北京100029; 2.杭州中科微電子有限公司,浙江 杭州310053
摘要: 設計了一款帶自動波特率檢測且誤差較小的UART模塊,旨在獲得良好的通信功能。該模塊支持全雙工的串行數(shù)據(jù)傳輸和紅外通信功能,且支持DMA模式以減少CPU的占用時間。UART的發(fā)送和接收通道各有一個FIFO模塊。最后,利用Verilog語言的硬件實現(xiàn)方法在FPGA平臺上進行了驗證。
中圖分類號: TN47
文獻標識碼: A
文章編號: 0258-7998(2013)01-0037-03
Design and simulation of UART module based on baseband CMOS chip of navigation
Hu Yue1,F(xiàn)eng Huaxing2,Li Xiaojiang2,Ye Tianchun1
1.Institute of Microelectronics of Chinese Academy of Sciences, Beijing 100029,China; 2.Hangzhou Zhongke Microelectronics Co.,Ltd.,Hangzhou 310053,China
Abstract: This paper focuses on the design of UART with auto baud rate deceting function and minimal lost signal to get a good transmission. It supports full duplex communication in serial link and ifra-red communcation.In addition,DMA mode can be used to reduce elapsed time of CPU.Each UART channel contains two FIFOs for receiving and transmiting. At last,this paper presents the hardware implementation using verilog HDL,and verification on FPGA platform.
Key words : Verilog;FPGA;baud-rate generator;finite state machine

    通用異步收發(fā)器UART(Universal Asynchronous Receiver/Transmitter)是串行通信的重要組成部分,其基本功能是實現(xiàn)數(shù)據(jù)的串行化/反串行化和錯誤校驗,這也是所有的UART設計都能實現(xiàn)的基本功能,但是其他各種功能都兼顧的設計非常少。參考文獻[1]設計了一個在MCU中運用非常廣泛的UART接口,其功能比較全面,但是波特率產(chǎn)生器采用整數(shù)分頻的設計,導致系統(tǒng)只有在特定系統(tǒng)時鐘、特定波特率的情況下誤差才會比較小,不能滿足高波特率和非標準波特率的要求;參考文獻[2]設計的UART IP基本功能良好,但是不支持紅外、自動波特率檢測等功能;參考文獻[3]的設計只支持中斷模式,不支持DMA模式,不能滿足大量數(shù)據(jù)高速傳輸?shù)男枨螅抑袛嗫偸谴驍郈PU的操作,效率較低。本文提出了一種多功能UART模塊的設計,并利用Verilog HDL語言進行實現(xiàn)。本設計能滿足多模導航基帶芯片中的不同需求(如相關器數(shù)據(jù)的傳輸?shù)?,同時降低誤差,保證衛(wèi)星數(shù)據(jù)的正確性。

1 UART電路主要模塊設計
    本設計采用標準的UART傳輸協(xié)議,字符幀由起始位、數(shù)據(jù)位、奇偶校驗位和停止位四部分組成[4]。UART電路包括UART總控模塊UART_CTRL、波特率產(chǎn)生器UART_BFG、數(shù)據(jù)發(fā)送模塊TRANSMITTER、數(shù)據(jù)接收模塊RECEIVER和FIFO模塊,其總體結(jié)構(gòu)圖如圖1所示。

1.1 接收模塊
    串行數(shù)據(jù)幀和接收數(shù)據(jù)時鐘是異步的,由邏輯1跳變?yōu)檫壿?可視為一個數(shù)據(jù)幀的開始,所以接收器首先需要判斷起始位,常用的方法有三倍速采樣法和起始位中斷捕捉定時采樣法。據(jù)經(jīng)驗可知,數(shù)據(jù)的中間采樣值可靠性較高,可以采用中間時刻采樣法[2],并且,接收和發(fā)送單元的數(shù)據(jù)采樣率為波特率的16倍,可降低由于時鐘不匹配引起的誤采樣。接收器采用狀態(tài)機[2]實現(xiàn),狀態(tài)機的描述如下:
    (1)RX_IDLE:當UART接收器復位時,F(xiàn)SM處于這一狀態(tài)。在該狀態(tài)中,狀態(tài)機一直等待RXD電平跳變,即出現(xiàn)下降沿。檢測到起始位后,進入RX_START狀態(tài)。
    (2)RX_START:在該狀態(tài)下,在采樣時鐘的上升沿對URXD低電平進行計數(shù)。當計數(shù)為8(即確保在起始位的中間點)時,轉(zhuǎn)到RX_DATA狀態(tài);如果邏輯零的個數(shù)少于8,則認為是毛刺,跳回RX_IDLE狀態(tài)。
    (3)RX_DATA:在該狀態(tài)下,每隔16個采樣時鐘采樣1 bit串行數(shù)據(jù),接收8 bit異步數(shù)據(jù)并進行串/并轉(zhuǎn)換。同樣是對采樣時鐘的上升沿進行計數(shù),當計數(shù)值為16時進行數(shù)據(jù)采樣。如果起始位為16位,則可以保證數(shù)據(jù)位都是在中點處被采樣,同時進行串/并轉(zhuǎn)換。當探測已經(jīng)接收到相應位的數(shù)據(jù)后,進入奇偶校驗狀態(tài)。
    (4)RX_PARITY:該狀態(tài)的主要功能是奇偶校驗,通過對實際接收到的數(shù)據(jù)的奇偶性與發(fā)送過來的奇偶校驗位進行比較,判斷奇偶校驗錯誤狀態(tài)。
    (5)RX_STOP:對停止位進行采樣,并且判斷停止位是否為1。若停止位不正確,則幀錯狀態(tài)位置1。
    將接收到的數(shù)據(jù)和錯誤狀態(tài)數(shù)據(jù)一起寫入到接收FIFO中。接收到錯誤的數(shù)據(jù)后不馬上產(chǎn)生錯誤中斷,一旦數(shù)據(jù)被讀出,此時錯誤狀態(tài)也一起被讀出,立即產(chǎn)生錯誤中斷。
1.2 發(fā)送模塊
    發(fā)送器實現(xiàn)的功能是將輸入的8 bit并行數(shù)據(jù)變成串行數(shù)據(jù),同時在數(shù)據(jù)位頭部加入起始位,在數(shù)據(jù)位尾部加奇偶校驗位和停止位。發(fā)送模塊的設計比較簡單,其狀態(tài)機與接收模塊相對應,在此不再贅述。
1.3 波特率產(chǎn)生模塊
    波特率發(fā)生器一般采用分頻器實現(xiàn),傳統(tǒng)的采用整數(shù)分頻器實現(xiàn)的誤差在某些系統(tǒng)時鐘下超出了可控范圍,如在參考時鐘為16.37 MHz、波特率為460 Kb/s的情況下,誤差達到了11.2%,會導致數(shù)據(jù)傳輸?shù)腻e誤。因此,本設計采用小數(shù)分頻器實現(xiàn)相對準確的波特率。另外,在收發(fā)的過程中,可以改變波特率寄存器的值,但實際波特率的改變發(fā)生在當前幀傳輸完成之后。波特率產(chǎn)生模塊的電路結(jié)構(gòu)圖如圖2所示。

    小數(shù)分頻的實現(xiàn)方法有很多,但其基本原理是一樣的,即在若干個分頻周期中采取某種方法使某幾個周期多計或少計一個數(shù),從而在整個分頻周期內(nèi)總體平均分頻數(shù)為小數(shù)分頻[5]。
    通過采用小數(shù)分頻,大大降低了實際波特率與要求波特率之間的誤差。在正常情況下,誤差不應超過2%,如果超過了,則需要相應地提高系統(tǒng)時鐘來降低誤差。表1列出了19.2 MHz情況下的整數(shù)分頻和小數(shù)分頻波特率誤差對應表,可以看到采用小數(shù)分頻的波特率誤差明顯較小。

    在本設計中,發(fā)送器、接收器和波特率產(chǎn)生模塊是主要模塊。FIFO(先進先出)模塊是數(shù)字電路設計中比較常用的模塊,本文復用了通用的FIFO模塊,在文中就不再贅述。UART的控制模塊主要負責對寄存器的相關操作,通過APB總線實現(xiàn),其電路設計比較簡單,也不再贅述。
2 UART模塊的其他功能
2.1 自動波特率檢測

    UART接收通道在接收數(shù)據(jù)之前,如果發(fā)送端的波特率不清楚,可進行自動波特率檢測。實現(xiàn)方法是:發(fā)送端間隔發(fā)送檢測字,間隔時間為傳輸一幀所需的時間。接收方UART根據(jù)start位來確定是否有數(shù)據(jù)在傳輸,當其檢測到下降沿時就進入RX_START的狀態(tài)中,在波特率不明確的情況下,并不產(chǎn)生采樣時鐘,用PCLK進行采樣計數(shù)。由于start位為1 bit,根據(jù)計數(shù)值可知這1 bit所占用的時間。如果接收數(shù)據(jù)完成后,接收到的數(shù)據(jù)是約定值,則證明波特率檢測成功,可以將檢測到的值存儲于寄存器中。自動波特率檢測原理公式如下:
    1/baudrate=count×(1/PCLK)(1)
    根據(jù)式(1)可得發(fā)送端的波特率。實現(xiàn)自動波特率檢測無需專門的模塊設計,在接收器模塊內(nèi)就可以實現(xiàn)。
2.2 自檢測模式
    Loopback(自檢測)模式是UART內(nèi)部的一種自測功能。當UART出現(xiàn)問題時可以先自測,將控制寄存器中Loopback位使能,UART可以將內(nèi)部的發(fā)送(TXD)和接收(RXD)連接在一起,確定內(nèi)部的數(shù)據(jù)通路沒有問題。
2.3 紅外傳輸功能
    本設計的UART支持IrDA 1.0協(xié)議,所以使用紅外時最高波特率為115.2 Kb/s。通過寄存器的紅外控制位選擇紅外使能,可以實現(xiàn)紅外脈沖。IrDA數(shù)據(jù)通路如圖3所示[1]。

2.4 DMA模式
    本設計UART不僅支持查詢、中斷模式,還支持DMA模式以提高連續(xù)傳輸?shù)哪芰Γ軌蚋咝У貍鬏敾鶐酒嚓P器中的大量數(shù)據(jù)。CPU除了在開始和結(jié)束時處理中斷外,在傳輸過程中也可以進行其他工作。
3 仿真驗證和綜合結(jié)果
3.1 仿真驗證

    本文采用Altera公司EP3SL150F1152的FPGA芯片進行實測,使用VCS仿真工具,并利用VERA語言和Verification IP進行驗證。仿真結(jié)果如圖4、圖5所示。

 

 


    圖4是波特率自動檢測的仿真波形。002號波形是未知波特率的接收端波特率產(chǎn)生器的分頻值,在未知的情況下為0;005號波形是發(fā)送端波特率產(chǎn)生器的分頻值,為567H。從002號波形的變化可以看到,發(fā)送端發(fā)送檢測字41H,接收端在接收完一個檢測字41H后,可計算出波特率分頻值為567H。001號波形是接收端的接收移位寄存器,將串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù),接收完成后得到41H,也證明了數(shù)據(jù)的正確傳輸。這種波特率檢測的方法迅速準確,一般情況下發(fā)一次檢測字就能檢測出發(fā)送端的波特率。
    圖5是數(shù)據(jù)紅外傳輸?shù)姆抡娌ㄐ巍>幋a模塊將待發(fā)送的001號波形編碼成符合紅外協(xié)議的002號波形發(fā)送出去,接收端接收到005號波形要經(jīng)過譯碼模塊譯碼成006號波形輸出給接收器。由圖中可以看到,發(fā)送寄存器發(fā)送了3個值2cH、78H、65H,在經(jīng)過編碼、譯碼模塊后,接收器能夠接收到正確的值。008號波形中高電平脈沖表示一個數(shù)據(jù)接收成功;007號波形接收移位寄存器中的數(shù)據(jù)正是發(fā)送端發(fā)送的3個值,證明數(shù)據(jù)能夠正確傳輸。本設計支持協(xié)議中5 bit、6 bit、7 bit、8 bit數(shù)據(jù)的傳輸,圖5中采用的是6 bit數(shù)據(jù)位。
3.2 綜合結(jié)果
    UART接口包括UART接口模塊(接收和發(fā)送模塊)、兩個FIFO模塊(深度為32、寬度為8)、UART波特率產(chǎn)生模塊和UART控制模塊,在0.18 μm CMOS的工藝下用Synopsys的Design Compiler對模塊進行綜合,將UART接口的輸入時鐘PCLK設置為100 MHz,模塊總面積為19 620.7 μm2,約合1962邏輯門、7 848個晶體管。
    本文提出了一個功能全面的UART IP核的設計,并采用Verilog HDL語言實現(xiàn)[6]。在與PC機的長時間串口通信實驗中能夠正確進行傳輸,在不同的波特率設置下都能正確工作。同時,用示波器觀測傳輸波形可知,波特率誤差小于1%。設計完成后,在VERA平臺上進行了仿真驗證,最后下載到FPGA平臺上實現(xiàn),與PC的串口相連,采用串口大師軟件進行實測,其在全雙工模式下也能正常工作,實測的結(jié)果顯示其性能和功能都能滿足要求。
參考文獻
[1] Samsung.S3C2410A:user manual revision 1.0[Z].2004.
[2] 趙海登,劉曉文,胡景軍,等.基于FPGA的UART IP核的設計實現(xiàn)[J].通信技術,2009,5(42):177-178.
[3] 張松,董玲,于宗光,等.一種適合于SoC集成的UART核的設計實現(xiàn)[J].微電子學與計算機,2005,22(9):12.
[4] Wang Yongcheng,Song Kefei.A new approach to relize UART[C].International Conference on Electronic & Mechanical Engineering and Information Technology,2011:2751.
[5] 周殿鳳,周素成,王俊華.基于FPGA的任意輸注分頻器的設計[J].信息化研究,2010,36(2):59-60.
[6] 王金明.數(shù)字系統(tǒng)設計與Verilog HDL第二版[M].北京:電子工業(yè)出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区区二区| 一区二区视频免费在线观看| 亚洲一区二区日本| 亚洲国产日日夜夜| 精品成人a区在线观看| 国产欧美日韩免费| 国产精品一区二区女厕厕| 国产精品成人一区二区三区吃奶| 欧美精品一区二区在线播放| 欧美国产视频在线| 欧美成人性网| 欧美日韩成人| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲欧洲日产国产网站| 亚洲电影在线看| 国产精品一区=区| 国产精品视频一区二区高潮| 国产精品视频内| 国产欧美一区二区色老头 | 美日韩精品视频| 美女免费视频一区| 欧美承认网站| 欧美日韩国产不卡在线看| av成人免费观看| 亚洲欧美激情诱惑| 亚洲一区三区视频在线观看| 国产精品99久久久久久久久| 亚洲一区bb| 午夜日韩在线| 久久精品中文字幕免费mv| 久久久午夜视频| 蜜臀av国产精品久久久久| 欧美大片91| 欧美日韩亚洲91| 国产精品入口福利| 亚洲欧美一区二区在线观看| 国产精品高潮呻吟久久| 国产精品欧美久久久久无广告| 国产精品任我爽爆在线播放| 国产一区二区三区av电影| 欧美精品午夜视频| 99精品欧美一区二区蜜桃免费| 日韩午夜中文字幕| 亚洲国产高潮在线观看| 亚洲第一区在线观看| 亚洲伦理在线观看| 亚洲亚洲精品三区日韩精品在线视频| 亚洲欧美日韩视频二区| 久久激情五月婷婷| 久久福利电影| 蜜桃久久av一区| 欧美区视频在线观看| 国产精品美女久久| 激情综合久久| 夜夜爽99久久国产综合精品女不卡| 亚洲在线日韩| 最近中文字幕mv在线一区二区三区四区| 一区二区三区 在线观看视| 欧美一区二区三区四区夜夜大片 | 国产精品久久久久久一区二区三区 | 午夜视频在线观看一区| 久久久噜噜噜久久| 欧美精品在线观看| 国产午夜精品久久久久久久| 亚洲国产天堂久久国产91| 亚洲天堂网在线观看| 亚洲电影在线免费观看| 亚洲一区二区三区中文字幕在线| 久久久久国产精品一区三寸| 欧美区在线观看| 国产一区深夜福利| 一本色道久久88综合亚洲精品ⅰ| 久久精品国产成人| 亚洲综合欧美日韩| 麻豆91精品| 国产精品午夜在线观看| 亚洲国内欧美| 欧美一区二区观看视频| 日韩一级片网址| 久久久777| 国产精品久久久一区麻豆最新章节| 亚洲电影有码| 久久成人综合视频| 销魂美女一区二区三区视频在线| 欧美激情第三页| 激情五月***国产精品| 亚洲欧美激情一区二区| 一区二区三区高清在线| 蜜桃av一区| 国产亚洲欧美日韩美女| 宅男在线国产精品| 日韩网站在线看片你懂的| 久久免费视频一区| 国产精品乱码一区二区三区| 欧美精品一区二区三区四区| 一区在线免费观看| 欧美亚洲视频在线看网址| 亚洲在线观看免费视频| 欧美欧美天天天天操| 激情六月婷婷久久| 欧美一区二区三区免费看| 欧美一二三视频| 国产精品wwwwww| 亚洲美女少妇无套啪啪呻吟| 亚洲伦理在线免费看| 女人香蕉久久**毛片精品| 国产在线视频欧美| 亚洲欧美影音先锋| 欧美一区二区啪啪| 国产精品视频网站| 亚洲综合社区| 欧美一级在线亚洲天堂| 国产精品伦一区| 亚洲一区二区三区午夜| 亚洲一品av免费观看| 欧美日韩亚洲一区二区三区在线观看 | 亚洲国产欧美一区二区三区同亚洲| 亚洲电影在线观看| 蜜桃av一区二区三区| 在线观看一区欧美| 亚洲国产精品一区二区三区| 免费观看久久久4p| 亚洲狠狠丁香婷婷综合久久久| 亚洲精品一区二区三区蜜桃久| 欧美高清视频www夜色资源网| 亚洲高清在线精品| 亚洲三级国产| 欧美精品在欧美一区二区少妇| 日韩性生活视频| 亚洲一区免费看| 另类天堂av| 欧美视频日韩视频| 一区二区三区高清不卡| 亚洲一区二区欧美| 国产精品免费aⅴ片在线观看| 亚洲综合成人婷婷小说| 欧美一区二区三区久久精品茉莉花| 国产日韩精品在线播放| 欧美一区二区三区免费视频 | 久久久噜噜噜久噜久久| 经典三级久久| 亚洲三级观看| 欧美午夜久久| 性欧美超级视频| 麻豆av一区二区三区久久| 91久久精品国产91性色tv| 在线亚洲观看| 国产精品久久午夜夜伦鲁鲁| 午夜在线一区| 欧美不卡在线| 一区电影在线观看| 欧美在线一二三区| 亚洲成色www8888| 一区二区av在线| 国产精品区二区三区日本| 欧美在线亚洲在线| 欧美精品v日韩精品v国产精品 | 久久国产精品99国产| 欧美插天视频在线播放| 艳妇臀荡乳欲伦亚洲一区| 欧美影院成人| 亚洲大胆av| 亚洲在线日韩| 久热爱精品视频线路一| 黄色成人在线网站| 日韩一级免费| 国产精品区二区三区日本| 久久精品亚洲精品国产欧美kt∨| 欧美韩国在线| 亚洲影院污污.| 久久天天狠狠| 夜久久久久久| 麻豆精品在线视频| 国产精品久久久久久久一区探花| 亚洲欧美不卡| 欧美电影打屁股sp| 亚洲欧美不卡| 欧美久久电影| 欧美专区日韩视频| 欧美日韩国产精品专区| 久久福利电影| 欧美午夜在线视频| 91久久精品国产91久久| 国产精品亚洲成人| 一区二区三区福利| 一本大道久久a久久综合婷婷| 午夜亚洲影视| 亚洲电影免费观看高清完整版在线 | 国产亚洲一区二区三区在线播放 | 亚洲在线不卡| 在线观看日韩国产| 欧美一区二区三区喷汁尤物| 91久久精品久久国产性色也91 | 欧美香蕉大胸在线视频观看| 亚洲黄色视屏| 国产在线拍偷自揄拍精品| 亚洲与欧洲av电影| 亚洲精品1区2区| 麻豆精品一区二区av白丝在线| 亚洲一区二区高清|