0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA實(shí)現(xiàn)通用異步收發(fā)器基本功能的應(yīng)用設(shè)計(jì)

FPGA設(shè)計(jì)論壇 ? 來(lái)源:未知 ? 2023-05-29 15:05 ? 次閱讀

點(diǎn)擊上方

藍(lán)字

關(guān)注我們



通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,UART)可以和各種標(biāo)準(zhǔn)串行接口,如RS232RS485等進(jìn)行全雙工異步通信,具有傳輸距離遠(yuǎn)、成本低、可靠性高等優(yōu)點(diǎn)。一般UART由專(zhuān)用芯片來(lái)實(shí)現(xiàn),但專(zhuān)用芯片引腳都較多,內(nèi)含許多輔助功能,在實(shí)際使用時(shí)往往只需要用到UART的基本功能,使用專(zhuān)用芯片會(huì)造成資源浪費(fèi)和成本提高。當(dāng)我們不需要用到完整的的UART功能和一些輔助功能時(shí),就可以將需要的UART功能集成用FPGA來(lái)實(shí)現(xiàn),然而,F(xiàn)PGA內(nèi)部并不擁有CPU控制單元,無(wú)法處理由UART控制器產(chǎn)生的中斷,所以FPGA不能利用現(xiàn)成的UART控制器構(gòu)成異步串行接口,必須將UART控制器的功能集成到FPGA內(nèi)部。從而可以大大的減少了體積、簡(jiǎn)化了電路,也提高了系統(tǒng)的靈活性。

1、 UART的工作原理

UART是一種串行數(shù)據(jù)總線,用于異步通信,并且雙向通信,可實(shí)現(xiàn)全雙工發(fā)送和接收?;镜腢ART只需要兩條信號(hào)線(TXD、RXD)和一條地線就可以完成數(shù)據(jù)的互相通信,接收和發(fā)送互不干擾,這樣就大大節(jié)省了傳輸費(fèi)用。由于UART是異步通信,所以需要對(duì)數(shù)據(jù)進(jìn)行同步。UA RT發(fā)送/接收數(shù)據(jù)的傳輸格式如圖1所示,一個(gè)字符單位由開(kāi)始位、數(shù)據(jù)位、校驗(yàn)位、停止位組成(其中校驗(yàn)位可供選)。

發(fā)送或接收一個(gè)完整的字節(jié)信息,首先是一個(gè)作為起始位的邏輯“0”位,接著是8個(gè)數(shù)據(jù)位。然后是停止位邏輯“1”位,數(shù)據(jù)線空閑時(shí)為高或“1”狀態(tài)。在字符的8位數(shù)據(jù)部分,先發(fā)送數(shù)據(jù)的位,發(fā)送位。每位持續(xù)時(shí)間是固定的,由發(fā)送器本地時(shí)鐘控制,每秒發(fā)送的數(shù)據(jù)位個(gè)數(shù),即為“波特率”。起始位和停止位起著很重要的作用。顯然,它們標(biāo)志每個(gè)字符的開(kāi)始和結(jié)束,但更重要的是他們使接收器能把他的局部時(shí)鐘與每個(gè)新開(kāi)始接收的字符再同步。異步通信沒(méi)有可參照的時(shí)鐘信號(hào),發(fā)送器隨時(shí)都可能發(fā)送數(shù)據(jù),任何時(shí)刻串行數(shù)據(jù)到來(lái)時(shí),接收器必須準(zhǔn)確地發(fā)現(xiàn)起始位下降沿的出現(xiàn)時(shí)間,從而正確地采樣緊接著的10或者11位(包括開(kāi)始位、數(shù)據(jù)位和停止位),接收器的時(shí)鐘和發(fā)送器的時(shí)鐘不是同一個(gè),因此,接收器所確定的采樣點(diǎn)的間隔和發(fā)送器所確定的位間隔時(shí)間不同,這點(diǎn)要特別注意。

2、 UART功能設(shè)計(jì)

異步通信的一幀傳輸經(jīng)歷以下步驟:1)空閑狀態(tài)。發(fā)送方連續(xù)發(fā)送信號(hào),處于信息“1”狀態(tài)。2)開(kāi)始傳輸。發(fā)送方在任何時(shí)刻將傳號(hào)變成空號(hào),即“1”跳變到“0”,并持續(xù)1位時(shí)間表明發(fā)送方開(kāi)始傳輸數(shù)據(jù)。而同時(shí),接收方收到空號(hào)后,開(kāi)始與發(fā)送方同步,并期望收到隨后的數(shù)據(jù)。3)奇偶傳輸。數(shù)據(jù)傳輸之后是可供選擇的奇偶位發(fā)送或接收。4)停止傳輸。是發(fā)送或接收的停止位,其狀態(tài)恒為“1”。

設(shè)計(jì)的基本原則是保留主要的功能,基于FPGA的UART系統(tǒng)由波特率時(shí)鐘發(fā)生器、接收器和發(fā)送器3個(gè)子模塊組成,如圖2所示。

2.1 波特率發(fā)生器設(shè)計(jì)

波特率發(fā)生器實(shí)質(zhì)是設(shè)計(jì)一個(gè)分頻器,用于產(chǎn)生和RS232通信同步的時(shí)鐘。在系統(tǒng)中用一個(gè)計(jì)數(shù)器來(lái)完成這個(gè)功能,分頻系數(shù)N決定了波特率的數(shù)值。該計(jì)數(shù)器一般工作在一個(gè)頻率較高的系統(tǒng)時(shí)鐘下,當(dāng)計(jì)數(shù)到N/2時(shí)將輸出置為高電平,再計(jì)數(shù)到N/2的數(shù)值后將輸出置為低電平,如此反復(fù)即可得到占空比50%的波特率時(shí)鐘,具體的波特率依賴(lài)于所使用的系統(tǒng)時(shí)鐘頻率和Ⅳ的大小。如系統(tǒng)時(shí)鐘頻率是6.4 MHz,要求波特率是9 600,則16倍波特率時(shí)鐘的周期約等于42個(gè)系統(tǒng)時(shí)鐘周期,則計(jì)數(shù)器取42/2=21時(shí),當(dāng)計(jì)數(shù)溢出時(shí)輸出電平取反就可以得到16倍約定波特率的時(shí)鐘。

使用VHDL來(lái)描述波特率發(fā)生器的完整代碼如下:

2.2 發(fā)送器設(shè)計(jì)

UART發(fā)送器的設(shè)計(jì)較容易,只要每隔一個(gè)發(fā)送周期按照數(shù)據(jù)幀格式及要求的速率輸出數(shù)據(jù)即可。沒(méi)有數(shù)據(jù)要發(fā)送時(shí),發(fā)送數(shù)據(jù)寄存器為空,發(fā)送器處于空閑狀態(tài);當(dāng)檢測(cè)到發(fā)送數(shù)據(jù)寄存器滿(mǎn)信號(hào)后,發(fā)送器及發(fā)送起始位,同時(shí)8個(gè)數(shù)據(jù)位被并行裝入發(fā)送移位寄存器,停止位緊接著數(shù)據(jù)位指示一幀數(shù)據(jù)結(jié)束。只有發(fā)送數(shù)據(jù)寄存器為空時(shí),RAM中的待發(fā)數(shù)據(jù)才能被裝入。程序中使用計(jì)數(shù)器要保證各位周期定時(shí)正確。

2.3 接收器設(shè)計(jì)

接收器的工作過(guò)程如下,串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,發(fā)送來(lái)的數(shù)據(jù)由邏輯1變?yōu)檫壿?可以視為一個(gè)數(shù)據(jù)幀的開(kāi)始。接收器先要捕捉起始位,然而,通信線上的噪音也極有可能使傳號(hào)“1”跳變到空號(hào)“0”。所以接收器以16倍的波特率對(duì)這種跳變進(jìn)行檢測(cè),確定rxd輸入由1到0,邏輯0要8個(gè)bclkr(16倍的波特率時(shí)鐘)周期,才是正常的起始位,而不是噪音引起的,其中若有采樣得到的為高電平則認(rèn)為起始信號(hào)無(wú)效,返回初始狀態(tài)重新等待起始信號(hào)的到來(lái)。

采到正確的起始位后,就開(kāi)始接收數(shù)據(jù),可靠的接收應(yīng)該是接收時(shí)鐘的出現(xiàn)時(shí)刻正好對(duì)著數(shù)據(jù)位的中央。由于在起始位檢測(cè)時(shí),已使時(shí)鐘對(duì)準(zhǔn)了位中央,用16倍波特率的時(shí)鐘作為接收時(shí)鐘,就是為了確保在位寬的中心時(shí)間對(duì)接收的位序列進(jìn)行可靠采樣,當(dāng)采樣計(jì)數(shù)器計(jì)數(shù)結(jié)束后所有數(shù)據(jù)位都已經(jīng)輸入完成。對(duì)停止位的高電平進(jìn)行檢測(cè),若正確檢測(cè)到高電平,說(shuō)明本幀的各位正確接收完畢,否則出錯(cuò)。

后將正確的數(shù)據(jù)轉(zhuǎn)存到數(shù)據(jù)寄存器中,輸出數(shù)據(jù)。還要輸出一個(gè)數(shù)據(jù)接收標(biāo)志信號(hào)標(biāo)志數(shù)據(jù)接收完。

利用有限狀態(tài)機(jī)實(shí)現(xiàn),完整代碼如下:

3、 仿真

本設(shè)計(jì)在Altera Cyclone系列的EP1C3T100I7芯片上進(jìn)行了驗(yàn)證,對(duì)發(fā)送模塊和接收模塊的仿真結(jié)果分別如圖3、圖4所示。發(fā)送的數(shù)據(jù)能?chē)?yán)格按照串行通信協(xié)議進(jìn)行傳輸;接收的數(shù)據(jù)也完全正確。仿真無(wú)誤后,使用QuarhusⅡ軟件將編譯好的.pof格式文件載到配置芯片EPCS1中。結(jié)果通信數(shù)據(jù)完全正確,電路工作穩(wěn)定、可靠。

用FPGA設(shè)計(jì)UART,可以用片上很少的邏輯單元實(shí)現(xiàn)UART的基本功能。與傳統(tǒng)設(shè)計(jì)相比,能有效減少系統(tǒng)的PCB面積,降低系統(tǒng)的功耗,提高設(shè)計(jì)的穩(wěn)定性和可靠性,充分利用FPGA的剩余資源。并可方便地進(jìn)行系統(tǒng)升級(jí)和移植。

4 、結(jié)論

該設(shè)計(jì)具有很大的靈活性,通過(guò)調(diào)整波特率發(fā)生器的分頻參數(shù),就可以使其工作在不同的頻率。采用16倍波特率的采樣時(shí)鐘,可以實(shí)時(shí)有效監(jiān)測(cè)數(shù)據(jù)的起始位,并對(duì)數(shù)據(jù)位進(jìn)行中央采樣,從而保證了所采樣數(shù)據(jù)的正確性。該模塊可以作為一個(gè)完整的IP核,靈活地移植進(jìn)各種型號(hào)FPGA中,在實(shí)際應(yīng)用時(shí)也可嵌入到其他系統(tǒng)中,有很好的借鑒和參考價(jià)值。



掃描二維碼獲取

更多精彩

FPGA設(shè)計(jì)論壇






精彩推薦




至芯科技-FPGA就業(yè)培訓(xùn)來(lái)襲!你的選擇開(kāi)啟你的高薪之路!5月30號(hào)西安中心開(kāi)課、歡迎咨詢(xún)!
簡(jiǎn)談FPGA verilog中的repeat和while用法與例子
簡(jiǎn)談CPU、MCU、FPGA、SoC這些芯片異同之處
FPGA復(fù)位設(shè)計(jì)的常見(jiàn)問(wèn)題






歡迎關(guān)注至芯科技

至芯官網(wǎng):www.zxopen.com

至芯科技技術(shù)論壇:www.fpgaw.com

至芯科技淘寶網(wǎng)址:

https://zxopen.taobao.com

至芯科技FPGA初級(jí)課程(B站):

https://space.bilibili.com/521850676

至芯科技FPGA在線課程(騰訊課堂):

https://zxopenbj.ke.qq.com/

至芯科技-FPGA 交流群(QQ):282124839



掃碼加入FPGA學(xué)習(xí)交流群




歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!


點(diǎn)個(gè)

在看

你最好看






原文標(biāo)題:基于FPGA實(shí)現(xiàn)通用異步收發(fā)器基本功能的應(yīng)用設(shè)計(jì)

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603463

原文標(biāo)題:基于FPGA實(shí)現(xiàn)通用異步收發(fā)器基本功能的應(yīng)用設(shè)計(jì)

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TMS320DM643 DMP通用異步收發(fā)器(UART)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《TMS320DM643 DMP通用異步收發(fā)器(UART)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 12-16 10:10 ?0次下載
    TMS320DM643 DMP<b class='flag-5'>通用</b><b class='flag-5'>異步</b><b class='flag-5'>收發(fā)器</b>(UART)手冊(cè)

    射頻收發(fā)器就是基帶嗎

    射頻收發(fā)器(RF Transceiver)和基帶(Baseband)是無(wú)線通信系統(tǒng)中兩個(gè)不同的概念,它們?cè)?b class='flag-5'>功能和設(shè)計(jì)上有所區(qū)別。射頻收發(fā)器主要負(fù)責(zé)無(wú)線信號(hào)的發(fā)送和接收,而基帶則處理信號(hào)的數(shù)字處理部分
    的頭像 發(fā)表于 09-20 11:12 ?368次閱讀

    光纖收發(fā)器pwr是什么意思

    光纖收發(fā)器是一種將電信號(hào)轉(zhuǎn)換為光信號(hào)或?qū)⒐庑盘?hào)轉(zhuǎn)換為電信號(hào)的設(shè)備,廣泛應(yīng)用于通信、網(wǎng)絡(luò)、監(jiān)控等領(lǐng)域。在光纖收發(fā)器的參數(shù)中,PWR是一個(gè)非常重要的指標(biāo),它代表了光纖收發(fā)器的功耗。 PWR的含義 PWR
    的頭像 發(fā)表于 08-23 10:30 ?1348次閱讀

    光纖收發(fā)器的作用、使用方法及應(yīng)用

    具有以下功能: 1.1 信號(hào)轉(zhuǎn)換:光纖收發(fā)器可以將電信號(hào)轉(zhuǎn)換為光信號(hào),也可以將光信號(hào)轉(zhuǎn)換為電信號(hào),實(shí)現(xiàn)信號(hào)的傳輸和接收。 1.2 信號(hào)放大:光纖收發(fā)器具有信號(hào)放大
    的頭像 發(fā)表于 08-23 09:51 ?2388次閱讀

    FPGA高速收發(fā)器的特點(diǎn)和應(yīng)用

    FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)高速收發(fā)器是現(xiàn)代數(shù)字通信系統(tǒng)中不可或缺的關(guān)鍵組件。它們以其高速、靈活和可編程的特性,在多個(gè)領(lǐng)域發(fā)揮著重要作用。以下是對(duì)FPGA高速
    的頭像 發(fā)表于 08-05 15:02 ?598次閱讀

    FPGA高速收發(fā)器的來(lái)源

    本文主要講解的是FPGA高速收發(fā)器的來(lái)源,著重從三個(gè)方面解析,可能部分理解會(huì)存在有錯(cuò)誤,想要不一致的可以來(lái)評(píng)論區(qū)交流哦。
    的頭像 發(fā)表于 07-18 11:13 ?516次閱讀
    <b class='flag-5'>FPGA</b>高速<b class='flag-5'>收發(fā)器</b>的來(lái)源

    TUSB2551A高級(jí)通用串行總線收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TUSB2551A高級(jí)通用串行總線收發(fā)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-12 10:16 ?0次下載
    TUSB2551A高級(jí)<b class='flag-5'>通用</b>串行總線<b class='flag-5'>收發(fā)器</b>數(shù)據(jù)表

    TUSB1106-Q1高級(jí)通用串行總線收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TUSB1106-Q1高級(jí)通用串行總線收發(fā)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-12 10:13 ?0次下載
    TUSB1106-Q1高級(jí)<b class='flag-5'>通用</b>串行總線<b class='flag-5'>收發(fā)器</b>數(shù)據(jù)表

    TSU6111A USB端口單刀雙擲(SP2T)開(kāi)關(guān)支持USB和通用異步收發(fā)器(UART)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TSU6111A USB端口單刀雙擲(SP2T)開(kāi)關(guān)支持USB和通用異步收發(fā)器(UART)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-10 09:21 ?0次下載
    TSU6111A USB端口單刀雙擲(SP2T)開(kāi)關(guān)支持USB和<b class='flag-5'>通用</b><b class='flag-5'>異步</b>接<b class='flag-5'>收發(fā)器</b>(UART)數(shù)據(jù)表

    SN74ALVCH16901 18位通用總線收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《SN74ALVCH16901 18位通用總線收發(fā)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-03 11:21 ?0次下載
    SN74ALVCH16901 18位<b class='flag-5'>通用</b>總線<b class='flag-5'>收發(fā)器</b>數(shù)據(jù)表

    具有3態(tài)輸出的18位通用總線收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有3態(tài)輸出的18位通用總線收發(fā)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-30 09:46 ?0次下載
    具有3態(tài)輸出的18位<b class='flag-5'>通用</b>總線<b class='flag-5'>收發(fā)器</b>數(shù)據(jù)表

    收發(fā)器的主要作用與種類(lèi)詳解

    收發(fā)器,作為通信系統(tǒng)中的關(guān)鍵組成部分,其主要作用是實(shí)現(xiàn)信號(hào)的發(fā)送和接收。隨著通信技術(shù)的不斷發(fā)展,收發(fā)器的種類(lèi)也日益豐富,滿(mǎn)足了不同場(chǎng)景下的通信需求。本文將對(duì)收發(fā)器的主要作用和種類(lèi)進(jìn)行詳
    的頭像 發(fā)表于 05-22 17:05 ?2304次閱讀

    帶18位通用總線收發(fā)器的掃描測(cè)試設(shè)備數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶18位通用總線收發(fā)器的掃描測(cè)試設(shè)備數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-15 09:12 ?0次下載
    帶18位<b class='flag-5'>通用</b>總線<b class='flag-5'>收發(fā)器</b>的掃描測(cè)試設(shè)備數(shù)據(jù)表

    多模光纖收發(fā)器分ab端嗎 多模光纖收發(fā)器怎么連接

    多模光纖收發(fā)器是一種能夠?qū)㈦娦盘?hào)轉(zhuǎn)換為光信號(hào)并發(fā)送到光纖中的設(shè)備,同時(shí)也可以將接收到的光信號(hào)轉(zhuǎn)換為電信號(hào)。在光纖通信中,多模光纖收發(fā)器常常被用于連接不同的設(shè)備,以實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。在連接多模光纖
    的頭像 發(fā)表于 01-23 15:16 ?2752次閱讀