資源描述:
《UART-通用異步收發(fā)器的設(shè)計(jì).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、綜合課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告院系:信息科學(xué)與工程學(xué)院學(xué)號(hào):姓名:藍(lán)淵明陳新明教師:張圣清時(shí)間:2010.01.151引言??????由于微電子學(xué)和計(jì)算機(jī)科學(xué)的迅速發(fā)展,給EDA(電子設(shè)計(jì)自動(dòng)化)行業(yè)帶來了巨大的變化。特別是進(jìn)入20世紀(jì)90年代后,電子系統(tǒng)已經(jīng)從電路板級(jí)系統(tǒng)集成發(fā)展成為包括ASIC、FPGA/CPLD和嵌入系統(tǒng)的多種模式??梢哉fEDA產(chǎn)業(yè)已經(jīng)成為電子信息類產(chǎn)品的支柱產(chǎn)業(yè)。EDA之所以能蓬勃發(fā)展的關(guān)鍵因素之一就是采用了硬件描述語言(HDL)描述電路系統(tǒng)。就FPGA和CPLD開發(fā)而言,比較流行的HDL主要有VerilogHDL、VH
2、DL、ABEL-HDL和AHDL等,其中VHDL和VerilogHDL因適合標(biāo)準(zhǔn)化的發(fā)展方向而最終成為IEEE標(biāo)準(zhǔn)。下面的設(shè)計(jì)就是用VHDL來完成實(shí)現(xiàn)的。2.UART設(shè)計(jì)實(shí)例??????通常設(shè)計(jì)數(shù)字電路大都采用自頂向下將系統(tǒng)按功能逐層分割的層次化設(shè)計(jì)方法,這比傳統(tǒng)自下向上的EDA設(shè)計(jì)方法有更明顯的優(yōu)勢(當(dāng)時(shí)的主要設(shè)計(jì)文件是電路圖)。因?yàn)橛勺皂斚蛳碌脑O(shè)計(jì)過程可以看出,從總體行為設(shè)計(jì)開始到最終邏輯綜合,形成網(wǎng)絡(luò)表為止。每一步都要進(jìn)行仿真檢查,這樣有利于盡早發(fā)現(xiàn)系統(tǒng)設(shè)計(jì)中存在的問題,從而可以大大縮短系統(tǒng)硬件的設(shè)計(jì)周期。???????UART
3、(即UniversalAsynchronousReceiverTransmitter通用異步收發(fā)器)是一種應(yīng)用廣泛的短距離串行傳輸接口。UART允許在串行鏈路上進(jìn)行全雙工的通信。串行外設(shè)用到的RS232-C異步串行接口,一般采用專用的集成電路即UART實(shí)現(xiàn)。如8250、8251、NS16450等芯片都是常見的UART器件,這類芯片已經(jīng)相當(dāng)復(fù)雜,有的含有許多輔助的模塊(如FIFO),有時(shí)我們不需要使用完整的UART的功能和這些輔助功能?;蛘咴O(shè)計(jì)上用到了FPGA/CPLD器件,那么我們就可以將所需要的UART功能集成到FPGA內(nèi)部。使用V
4、HDL將UART的核心功能集成,從而使整個(gè)設(shè)計(jì)更加緊湊、穩(wěn)定且可靠。本文應(yīng)用EDA技術(shù),基于FPGA/CPLD器件設(shè)計(jì)與實(shí)現(xiàn)UART。2.1.1UART結(jié)構(gòu)???UART主要有由數(shù)據(jù)總線接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。本設(shè)計(jì)主要設(shè)計(jì)UART中最重要的發(fā)送部分和接收部分???圖12.1.2UART的幀格式UART的幀格式如圖2所示。圖2發(fā)送數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位;當(dāng)收到發(fā)送數(shù)據(jù)指令后,拉低線路一個(gè)數(shù)據(jù)位的時(shí)間T,接著數(shù)據(jù)按低位到高位依次發(fā)送,數(shù)據(jù)發(fā)送完畢后,接著發(fā)送奇偶校驗(yàn)位和停止位(停止位為高電位)
5、,一幀資料發(fā)送結(jié)束。接收數(shù)據(jù)過程:空閑狀態(tài),線路處于高電位;當(dāng)檢測到線路的下降沿(線路電位由高電位變?yōu)榈碗娢唬r(shí)說明線路有數(shù)據(jù)傳輸,按照約定的波特率從低位到高位接收數(shù)據(jù),數(shù)據(jù)接收完畢后,接著接收并比較奇偶校驗(yàn)位是否正確,如果正確則通知后續(xù)設(shè)備準(zhǔn)備接收數(shù)據(jù)或存入緩存。由于UART是異步傳輸,沒有傳輸同步時(shí)鐘。為了能保證數(shù)據(jù)傳輸?shù)恼_性,UART采用16倍數(shù)據(jù)波特率的時(shí)鐘進(jìn)行采樣。每個(gè)數(shù)據(jù)有16個(gè)時(shí)鐘采樣,取中間的采樣值,以保證采樣不會(huì)滑碼或誤碼。一般UART一幀的數(shù)據(jù)位數(shù)為8,這樣即使每個(gè)數(shù)據(jù)有一個(gè)時(shí)鐘的誤差,接收端也能正確地采樣到數(shù)據(jù)
6、。UART的接收數(shù)據(jù)時(shí)序?yàn)椋寒?dāng)檢測到數(shù)據(jù)的下降沿時(shí),表明線路上有數(shù)據(jù)進(jìn)行傳輸,這時(shí)計(jì)數(shù)器CNT開始計(jì)數(shù),當(dāng)計(jì)數(shù)器為24=16+8時(shí),采樣的值為第0位數(shù)據(jù);當(dāng)計(jì)數(shù)器的值為40時(shí),采樣的值為第1位數(shù)據(jù),依此類推,進(jìn)行后面6個(gè)數(shù)據(jù)的采樣。如果需要進(jìn)行奇偶校驗(yàn),則當(dāng)計(jì)數(shù)器的值為152時(shí),采樣的值即為奇偶位;當(dāng)計(jì)數(shù)器的值為168時(shí),采樣的值為“1”表示停止位,一幀數(shù)據(jù)接收完成。2.2UART的設(shè)計(jì)與實(shí)現(xiàn)2.2.1UART分頻器假設(shè)數(shù)據(jù)的波特率為p,則所需時(shí)鐘的頻率為16*p以波特率p為9600為例,系統(tǒng)時(shí)鐘為60MHz代碼如下:libraryI
7、EEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitybaudisPort(clk,resetb:instd_logic;bclk:outstd_logic);endbaud;architecturebehavioralofbaudisbeginprocess(clk,resetb)variablecnt:integer;beginifresetb='1'then--resetb='1'時(shí)復(fù)位cnt
8、:=0;bclk<='0';elsifrising_edge(clk)thenifcnt>=38thencnt:=0;bclk<='1';--設(shè)置分頻系數(shù)elsecnt:=cnt+1;bclk<='0';endif;--