基于FPGA CPLD設(shè)計(jì)與實(shí)現(xiàn)UART_第1頁
基于FPGA CPLD設(shè)計(jì)與實(shí)現(xiàn)UART_第2頁
基于FPGA CPLD設(shè)計(jì)與實(shí)現(xiàn)UART_第3頁
基于FPGA CPLD設(shè)計(jì)與實(shí)現(xiàn)UART_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于FPGA/CPLD設(shè)計(jì)與實(shí)現(xiàn)UART日期:2005-7-7來源:今日電子  作者:江陰職業(yè)技術(shù)學(xué)院電子信息工程系 井新宇字體:大 中 小 摘 要:UART是廣泛使用的串行數(shù)據(jù)通訊電路。本設(shè)計(jì)包含UART發(fā)送器、接收器和波特率發(fā)生器。設(shè)計(jì)應(yīng)用EDA技術(shù),基于FPGA/CPLD器件設(shè)計(jì)與實(shí)現(xiàn)UART。關(guān)鍵詞:FPGA/CPLD;UART;VHDL -UART(即Universal Asynchronous Receiver Transmitter 通用異步收發(fā)器)是廣泛使用的串行數(shù)據(jù)傳輸協(xié)議。UART允許在串行鏈路上進(jìn)行全雙工的通信。-串行外設(shè)用到RS232-C異步串行接口,一般采用

2、專用的集成電路即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)部。使用VHDL將UART的核心功能集成,從而使整個(gè)設(shè)計(jì)更加緊湊、穩(wěn)定且可靠。本文應(yīng)用EDA技術(shù),基于FPGA/CPLD器件設(shè)計(jì)與實(shí)現(xiàn)UART。 一 UART簡介1 UART結(jié)構(gòu)-UART主要有由數(shù)據(jù)總線接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。-功能包括微處理器接口,發(fā)送緩沖器(t

3、br)、發(fā)送移位寄存器(tsr)、幀產(chǎn)生、奇偶校驗(yàn)、并轉(zhuǎn)串、數(shù)據(jù)接收緩沖器(rbr)、接收移位寄存器(rsr)、幀產(chǎn)生、奇偶校驗(yàn)、串轉(zhuǎn)并。-圖1是UART的典型應(yīng)用。2 UART的幀格式-UART的幀格式如圖2所示。-包括線路空閑狀態(tài)(idle,高電平)、起始位(start bit,低電平)、58位數(shù)據(jù)位(data bits)、校驗(yàn)位(parity bit,可選)和停止位(stop bit,位數(shù)可為1、1.5、2位)。-這種格式是由起始位和停止位來實(shí)現(xiàn)字符的同步。-UART內(nèi)部一般有配置寄存器,可以配置數(shù)據(jù)位數(shù)(58位)、是否有校驗(yàn)位和校驗(yàn)的類型、停止位的位數(shù)(1,1.5,2)等設(shè)置。 二 U

4、ART的設(shè)計(jì)與實(shí)現(xiàn)1 UART發(fā)送器-發(fā)送器每隔16個(gè)CLK16時(shí)鐘周期輸出1位,次序遵循1位起始位、8位數(shù)據(jù)位(假定數(shù)據(jù)位為8位)、1位校驗(yàn)位(可選)、1位停止位。-CPU何時(shí)可以往發(fā)送緩沖器tbr寫入數(shù)據(jù),也就是說CPU要寫數(shù)據(jù)到tbr時(shí)必須判斷當(dāng)前是否可寫,如果不判這個(gè)條件,發(fā)送的數(shù)據(jù)會出錯(cuò)。-數(shù)據(jù)的發(fā)送是由微處理器控制,微處理器給出wen信號,發(fā)送器根據(jù)此信號將并行數(shù)據(jù)din7.0鎖存進(jìn)發(fā)送緩沖器tbr7.0,并通過發(fā)送移位寄存器tsr7.0發(fā)送串行數(shù)據(jù)至串行數(shù)據(jù)輸出端dout。在數(shù)據(jù)發(fā)送過程中用輸出信號tre作為標(biāo)志信號,當(dāng)一幀數(shù)據(jù)發(fā)送完畢時(shí),tre信號為1,通知CPU在下個(gè)時(shí)鐘裝入

5、新數(shù)據(jù)。-發(fā)送器端口信號如圖3所示。-引入發(fā)送字符長度和發(fā)送次序計(jì)數(shù)器length_no,實(shí)現(xiàn)的部分VHDL程序如下。-if std_logic_vector(length_no) = “0001” then-tsr <= tbr ; -發(fā)送緩沖器tbr數(shù)據(jù)進(jìn)入發(fā)送移位寄存器tsr-tre <= '0' ; -發(fā)送移位寄存器空標(biāo)志置“0”-elsif std_logic_vector(length_no) = “0010” then-dout <= '0' ; -發(fā)送起始位信號“0”-elsif std_logic_vector(length_

6、no) >= “0011” and std_logic_vector(length_no) <= “1010” then-tsr <= '0' & tsr(7 downto 1); -從低位到高位進(jìn)行移位輸出至串行輸出端dout-dout <= tsr(0) ;-parity <= parity xor tsr(0) ; -奇偶校驗(yàn)-elsif std_logic_vector(length_no) = “1011” then-dout <= parity ; 校驗(yàn)位輸出-elsif std_logic_vector(length_n

7、o) = “1100” then-dout <= '1' ; -停止位輸出-tre <= '1' ; -發(fā)送完畢標(biāo)志置“1”-end if ;-發(fā)送器仿真波形如圖4所示。2 UART接收器-串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,發(fā)送來的數(shù)據(jù)由邏輯1變?yōu)檫壿?可以視為一個(gè)數(shù)據(jù)幀的開始。接收器先要捕捉起始位,確定rxd輸入由1到0,邏輯0要8個(gè)CLK16時(shí)鐘周期,才是正常的起始位,然后在每隔16個(gè)CLK16時(shí)鐘周期采樣接收數(shù)據(jù),移位輸入接收移位寄存器rsr,最后輸出數(shù)據(jù)dout。還要輸出一個(gè)數(shù)據(jù)接收標(biāo)志信號標(biāo)志數(shù)據(jù)接收完。-接收器的端口信號如圖5所示。-實(shí)現(xiàn)的部

8、分VHDL程序如下。-elsif clk1x'event and clk1x = '1' then-if std_logic_vector(length_no) >= “0001” and std_logic_vector(length_no) <= “1001” then-數(shù)據(jù)幀數(shù)據(jù)由接收串行數(shù)據(jù)端移位入接收移位寄存器-rsr(0) <= rxda ;-rsr(7 downto 1) <= rsr(6 downto 0) ;-parity <= parity xor rsr(7) ;-elsif std_logic_vector(length_no) = “1010” then-rbr <= rsr ; -接收移位寄存器數(shù)據(jù)進(jìn)入接收緩沖器-.-end if ;-接收器仿真波形如圖6所示。3 波特率發(fā)生器-UART的接收和發(fā)送是按照相同的波特率進(jìn)行收發(fā)的。波特率發(fā)生器產(chǎn)生的時(shí)鐘頻率不是波特率時(shí)鐘頻率,而是波特率時(shí)鐘頻率的16倍,目的是為在接收時(shí)進(jìn)行精確地采樣,以提出異步的串行數(shù)據(jù)。-根據(jù)給定的晶振時(shí)鐘和要求的波特率算出波特率分頻數(shù)。-波特率發(fā)生器仿真波形如圖7所示。 三 小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論