[導(dǎo)讀]UART是廣泛使用的串行數(shù)據(jù)通訊電路。本設(shè)計(jì)包含UART發(fā)送器、接收器和波特率發(fā)生器。設(shè)計(jì)應(yīng)用EDA技術(shù),基于FPGA/CPLD器件設(shè)計(jì)與實(shí)現(xiàn)UART。
摘 要: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異步串行接口,一般采用專(zhuān)用的集成電路即UART實(shí)現(xiàn)。如8250、8251、NS16450等芯片都是常見(jiàn)的UART器件,這類(lèi)芯片已經(jīng)相當(dāng)復(fù)雜,有的含有許多輔助的模塊(如FIFO),有時(shí)我們不需要使用完整的UART的功能和這些輔助功能。或者設(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簡(jiǎn)介 1 UART結(jié)構(gòu)
---UART主要有由數(shù)據(jù)總線(xiàn)接口、控制邏輯、波特率發(fā)生器、發(fā)送部分和接收部分等組成。 ---功能包括微處理器接口,發(fā)送緩沖器(tbr)、發(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所示。
---包括線(xiàn)路空閑狀態(tài)(idle,高電平)、起始位(start bit,低電平)、5~8位數(shù)據(jù)位(data bits)、校驗(yàn)位(parity bit,可選)和停止位(stop bit,位數(shù)可為1、1.5、2位)。 ---這種格式是由起始位和停止位來(lái)實(shí)現(xiàn)字符的同步。 ---UART內(nèi)部一般有配置寄存器,可以配置數(shù)據(jù)位數(shù)(5~8位)、是否有校驗(yàn)位和校驗(yàn)的類(lèi)型、停止位的位數(shù)(1,1.5,2)等設(shè)置。
二 UART的設(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寫(xiě)入數(shù)據(jù),也就是說(shuō)CPU要寫(xiě)數(shù)據(jù)到tbr時(shí)必須判斷當(dāng)前是否可寫(xiě),如果不判這個(gè)條件,發(fā)送的數(shù)據(jù)會(huì)出錯(cuò)。 ---數(shù)據(jù)的發(fā)送是由微處理器控制,微處理器給出wen信號(hào),發(fā)送器根據(jù)此信號(hào)將并行數(shù)據(jù)din[7..0]鎖存進(jìn)發(fā)送緩沖器tbr[7..0],并通過(guò)發(fā)送移位寄存器tsr[7..0]發(fā)送串行數(shù)據(jù)至串行數(shù)據(jù)輸出端dout。在數(shù)據(jù)發(fā)送過(guò)程中用輸出信號(hào)tre作為標(biāo)志信號(hào),當(dāng)一幀數(shù)據(jù)發(fā)送完畢時(shí),tre信號(hào)為1,通知CPU在下個(gè)時(shí)鐘裝入新數(shù)據(jù)。 ---發(fā)送器端口信號(hào)如圖3所示。
 ---引入發(fā)送字符長(zhǎng)度和發(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ā)送起始位信號(hào)“0” ---elsif std_logic_vector(length_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_no) = “1100” then ---dout <= '1' ; --停止位輸出 ---tre <= '1' ; --發(fā)送完畢標(biāo)志置“1” ---end if ; ---發(fā)送器仿真波形如圖4所示。
 2 UART接收器 ---串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,發(fā)送來(lái)的數(shù)據(jù)由邏輯1變?yōu)檫壿?可以視為一個(gè)數(shù)據(jù)幀的開(kāi)始。接收器先要捕捉起始位,確定rxd輸入由1到0,邏輯0要8個(gè)CLK16時(shí)鐘周期,才是正常的起始位,然后在每隔16個(gè)CLK16時(shí)鐘周期采樣接收數(shù)據(jù),移位輸入接收移位寄存器rsr,最后輸出數(shù)據(jù)dout。還要輸出一個(gè)數(shù)據(jù)接收標(biāo)志信號(hào)標(biāo)志數(shù)據(jù)接收完。 ---接收器的端口信號(hào)如圖5所示。
---實(shí)現(xiàn)的部分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所示。
三 小結(jié) ---通過(guò)波特率發(fā)生器、發(fā)送器和接收器模塊的設(shè)計(jì)與仿真,能較容易地實(shí)現(xiàn)通用異步收發(fā)器總模塊,對(duì)于收發(fā)的數(shù)據(jù)幀和發(fā)生的波特率時(shí)鐘頻率能較靈活地改變,而且硬件實(shí)現(xiàn)不需要很多資源,尤其能較靈活地嵌入到FPGA/CPLD的開(kāi)發(fā)中。在EDA技術(shù)平臺(tái)上進(jìn)行設(shè)計(jì)、仿真與實(shí)現(xiàn)具有較好的優(yōu)越性。 |
欲知詳情,請(qǐng)下載word文檔
下載文檔
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
北京2025年4月11日 /美通社/ -- 全球領(lǐng)先的市場(chǎng)研究與咨詢(xún)公司益普索Ipsos于近期發(fā)布了AI眼動(dòng)快速預(yù)測(cè)工具"睿視EyeLogic",該工具能夠在60秒內(nèi)對(duì)產(chǎn)品包裝、廣告KV及視頻素材進(jìn)行...
關(guān)鍵字:
LOGIC
AI
BSP
測(cè)試
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)通信協(xié)議是嵌入式系統(tǒng)中廣泛應(yīng)用的通信協(xié)議之一。它以其簡(jiǎn)單、可靠和靈活的特性,成為連接微控制器、傳感器、...
關(guān)鍵字:
嵌入式系統(tǒng)
UART
通信協(xié)議
在嵌入式開(kāi)發(fā)領(lǐng)域,UART、I2C、SPI等接口技術(shù)被廣泛使用,它們?yōu)槲⒖刂破髋c外部設(shè)備之間的通信提供了高效、可靠的途徑。本文將詳細(xì)介紹這三種常用的外設(shè)接口。
關(guān)鍵字:
UART
I2C
在現(xiàn)代嵌入式系統(tǒng)開(kāi)發(fā)中,串行通信協(xié)議扮演著至關(guān)重要的角色。其中,UART(通用異步收發(fā)傳輸器)、I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)...
關(guān)鍵字:
UART
I2C
SPI
串行總線(xiàn)
串口全稱(chēng)是串行接口(Serial Interface),串口通訊指僅用一對(duì)傳輸線(xiàn)就能將數(shù)據(jù)以比特位進(jìn)行傳輸?shù)囊环N通訊方式。盡管串口通訊必按字節(jié)傳輸?shù)牟⑿型ㄐ怕?,但是串口可以在僅用兩根線(xiàn)的情況下完成數(shù)據(jù)傳輸,大大降低了成本...
關(guān)鍵字:
串口
UART
在嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程中,調(diào)試是至關(guān)重要的一環(huán)。調(diào)試工具的選擇直接影響到開(kāi)發(fā)效率、系統(tǒng)穩(wěn)定性以及后期的維護(hù)成本。在眾多通信協(xié)議中,UART(通用異步收發(fā)傳輸器)因其簡(jiǎn)單性、靈活性以及廣泛的工具支持,成為嵌入式調(diào)試中的首選...
關(guān)鍵字:
嵌入式
UART
SPI
I2C
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器)是一種常用的串行通信協(xié)議,廣泛應(yīng)用于單片機(jī)或各種嵌入式設(shè)備之間的通信。
關(guān)鍵字:
UART
DMA
隨著單片機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及,單片機(jī)的通信功能愈來(lái)愈顯得重要。單片機(jī)通信是指單片機(jī)與計(jì)算機(jī)或單片機(jī)與單片機(jī)之間的信息交換。
關(guān)鍵字:
單片機(jī)系統(tǒng)
UART
在嵌入式系統(tǒng)中,板上通信接口是指用于將各種集成電路與其他外圍設(shè)備交互連接的通信通路或總線(xiàn)。下面將逐一說(shuō)明常用的板上通信接口。
關(guān)鍵字:
UART
1-Wire接口
并行接口
在現(xiàn)代通信系統(tǒng)中,F(xiàn)PGA(現(xiàn)場(chǎng)可編程門(mén)陣列)因其高度的靈活性和可配置性,成為實(shí)現(xiàn)復(fù)雜通信協(xié)議和接口的理想平臺(tái)。UART(通用異步收發(fā)傳輸器)作為一種廣泛應(yīng)用的串行通信協(xié)議,結(jié)合RS485差分信號(hào)傳輸技術(shù),為FPGA在遠(yuǎn)...
關(guān)鍵字:
FPGA
UART
RS485
UART(通用異步收發(fā)器)串口通信是FPGA設(shè)計(jì)中常見(jiàn)的通信方式之一。本文將介紹FPGA入門(mén)基礎(chǔ)中的UART串口通信設(shè)計(jì),并附上相應(yīng)的代碼示例。
關(guān)鍵字:
UART
串口通信
verilog
在下述的內(nèi)容中,小編將會(huì)對(duì)手把手教大家如何去實(shí)現(xiàn)RA UART實(shí)現(xiàn)串口波特率自適應(yīng),如果串口波特率自適應(yīng)內(nèi)容是您想要了解的焦點(diǎn)之一,不妨和小編共同閱讀這篇文章哦。
關(guān)鍵字:
串口
波特率
UART
串行通信是一種通信方式,數(shù)據(jù)在通信線(xiàn)上按位進(jìn)行傳輸。每位數(shù)據(jù)占據(jù)固定的時(shí)間長(zhǎng)度,使用少數(shù)幾條通信線(xiàn)路就可以完成系統(tǒng)間交換信息,特別適用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。
關(guān)鍵字:
串行通信
UART
雖然 USB 幾乎完全取代那些舊電纜和連接器,但 UART 絕對(duì)不會(huì)成為過(guò)去。您會(huì)發(fā)現(xiàn)許多 DIY 電子項(xiàng)目都使用 UART。
關(guān)鍵字:
UART
串口通信
USB
UART(通用異步收發(fā)器),這是用于全雙工串行通信的最常見(jiàn)協(xié)議。它是設(shè)計(jì)用于執(zhí)行異步通信的單個(gè)LSI(大規(guī)模集成)芯片。該設(shè)備將數(shù)據(jù)從一個(gè)系統(tǒng)發(fā)送到另一系統(tǒng)。
關(guān)鍵字:
數(shù)據(jù)通信協(xié)議
UART
異步收發(fā)器
UART將是下述內(nèi)容的主要介紹對(duì)象,通過(guò)這篇文章,小編希望大家可以對(duì)它的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。
關(guān)鍵字:
UART
通信協(xié)議
北京2023年2月16日 /美通社/ -- 亞馬遜云科技繼2022年在中東、歐洲、亞太等地區(qū)推出5個(gè)區(qū)域(Region)、15個(gè)可用區(qū)(Availability Zone,簡(jiǎn)稱(chēng)AZ)后,2023年伊始又在亞太地...
關(guān)鍵字:
亞馬遜
LENGTH
應(yīng)用程序
ABILITY
蘇州2023年2月3日 /美通社/ -- 2023年2月2日,國(guó)際獨(dú)立第三方檢測(cè)、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國(guó)萊茵TUV大中華區(qū)(以下簡(jiǎn)稱(chēng)"TUV萊茵")為科沃斯家...
關(guān)鍵字:
UART
機(jī)器人
科沃斯
GO
發(fā)個(gè)方便測(cè)試I2C、SPI、1Wire接口的工具模塊
總的思路是通過(guò)USB或者UART接口發(fā)送一些協(xié)議字符串,由模塊轉(zhuǎn)換成上面幾種接口的硬件時(shí)序電信號(hào),實(shí)現(xiàn)與這幾種接口芯片、設(shè)備的快速測(cè)試。
首先聲明一下,大家都是搞...
關(guān)鍵字:
可編程USB
UART
I2C
SMBusS
SPI