亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA 的UART 串行通信參數(shù)自適應(yīng)設(shè)計與實現(xiàn)

        2021-08-20 10:28:32錢祥利
        電子設(shè)計工程 2021年16期
        關(guān)鍵詞:檢測

        楊 洋,和 蕾,王 旭,錢祥利,陳 飛,李 靜

        (山東管理學(xué)院智能工程學(xué)院,山東濟(jì)南 250357)

        通用異步收發(fā)傳輸(Universal Asynchronous Rece iver/Transmitter,UART)遵循串行通信協(xié)議標(biāo)準(zhǔn)[1],以其通信線路簡單、信息傳輸穩(wěn)定等特點,被廣泛應(yīng)用于各種微處理器與嵌入式系統(tǒng),并作為標(biāo)準(zhǔn)外設(shè)之一。

        1 通信參數(shù)自動配置設(shè)計方案

        UART 采用異步全雙工通信模式,由于沒有專用時鐘信息線,因此數(shù)據(jù)發(fā)送方與接收方必須采用相同的傳輸速率,稱之為波特率,常用波特率有4 800 bps、9600 bps、19200bps、38 400bps、43000 bps、56 000 bps、57 600 bps、115 200 bps 等。UART 數(shù)據(jù)傳輸鏈路以數(shù)據(jù)幀為基本單元,如圖1 所示,一幀數(shù)據(jù)包括起始位、數(shù)據(jù)位、校驗位與停止位,其中數(shù)據(jù)位長度為5~8 bit,校驗?zāi)J娇蛇x奇校驗或偶校驗,并可以選擇是否采用校驗位,停止位長度可選1 bit、1.5 bit、2 bit,采用何種數(shù)據(jù)格式將視當(dāng)前UART 鏈路傳輸要求而定。

        圖1 UART串行異步通信數(shù)據(jù)格式

        UART 通信鏈路的建立要求發(fā)送設(shè)備與接收設(shè)備具有一致的波特率與數(shù)據(jù)格式,否則會導(dǎo)致通信失敗。為了使接收設(shè)備能夠適應(yīng)來自各種不同波特率發(fā)送設(shè)備的通信鏈路,而無需事先建立波特率,很多MCU 或嵌入式處理器在硬件或軟件層面集成了自動波特率檢測功能[2-4],能夠自動檢測到主設(shè)備的波特率并進(jìn)行配置,達(dá)到自適應(yīng)的目的。但是傳統(tǒng)的方法僅局限于波特率的自適應(yīng)檢測,尚不能對數(shù)據(jù)格式進(jìn)行自動配置,當(dāng)串行通信鏈路數(shù)據(jù)格式變更時,就無法自動建立通信鏈路。為了改變現(xiàn)有技術(shù)存在的弊端,使UART 串行通信自適應(yīng)的方法擁有更強(qiáng)的實用性,文中提出了串行通信參數(shù)自適應(yīng)的概念,介紹了一種可靠的實現(xiàn)串行通信波特率、數(shù)據(jù)格式自動配置的方法,并基于Xilinx Artix-7 FPGA實現(xiàn)了UART 接口的模塊化設(shè)計與仿真驗證。

        UART 串行通信參數(shù)自動配置在數(shù)據(jù)鏈路層進(jìn)行,新的傳輸鏈路發(fā)起或者改變當(dāng)前波特率、數(shù)據(jù)格式時,將進(jìn)行通信參數(shù)的自適應(yīng)配置。通信參數(shù)自適應(yīng)采用特征值匹配的方法,包括參數(shù)配置字的發(fā)送、接收以及參數(shù)自適應(yīng)與配置。如圖2 所示,配置字的固定長度為10 位,從功能上劃分為字頭波特率同步碼與數(shù)據(jù)格式配置碼。從機(jī)首先接收并檢測波特率同步碼,得到串行通信波特率,并以此波特率接收配置字節(jié)的數(shù)據(jù)格式配置碼,并將其寫入?yún)?shù)配置寄存器(SERIAL_CONFIG),完成通信參數(shù)的自動配置,建立串行通信的連接。

        圖2 串行通信配置字節(jié)格式以及接收模式

        1.1 波特率自適應(yīng)檢測

        傳統(tǒng)的自動波特率檢測方法主要有兩種:最小數(shù)法與固定數(shù)據(jù)傳輸法[5-6],最小數(shù)法是通過不斷檢測最小的脈沖寬度并與數(shù)據(jù)位脈寬比較,得到串行通信波特率值;固定數(shù)據(jù)傳輸法是通過發(fā)送特定配置數(shù)據(jù)來實現(xiàn)波特率信息的傳輸。第一種方法的缺點是波特率的識別與判定非常依賴于發(fā)送數(shù)據(jù)的內(nèi)容,需要不斷重復(fù)檢測,檢測效率低、握手時間慢??紤]到該設(shè)計不僅要完成波特率自適應(yīng)檢測,還需要進(jìn)行數(shù)據(jù)格式的自動配置,所以將波特率與數(shù)據(jù)格式捆綁為參數(shù)特征值,采用固定參數(shù)數(shù)據(jù)傳輸?shù)姆椒ā?/p>

        為高效、快速地實現(xiàn)波特率檢測,對傳統(tǒng)的固定數(shù)據(jù)傳輸法進(jìn)行改進(jìn),采用特征值匹配法[7]與查表法[8]相結(jié)合的方式。如圖2 所示,配置字節(jié)中前3 位設(shè)定為波特率同步碼,將其作為波特率檢測的特征值,接收機(jī)利用邊沿檢測電路捕獲特征值,并通過時鐘計數(shù)器測量邊沿時間,完成對波特率同步碼的時間測量[9]。為消除邊沿檢測有可能引發(fā)的亞穩(wěn)態(tài),采用兩級D 觸發(fā)器進(jìn)行邊沿檢測[10]。時鐘計數(shù)區(qū)間包含2 bit 脈沖寬度,采用100 MHz 的系統(tǒng)時鐘作為時鐘激勵,其頻率遠(yuǎn)大于波特率。通過計算可得,通信采用115 200 bps 的波特率時,時鐘計數(shù)的時間測量誤差比小于0.12%,因此,能夠保證很高的時間測量精度。波特率的理論計算公式為:

        由于標(biāo)準(zhǔn)波特率在有限的幾個固定數(shù)值之間變化,同時為了減小FPGA 運算資源的開銷,可采用查表法得到鏈路波特率。時鐘計數(shù)范圍與對應(yīng)波特率的對照表如表1 所示,由此得到串行通信的波特率。然后將對應(yīng)的波特率配置碼暫存到通信參數(shù)配置寄存器SERIAL_CONFIG 的低4 位,供串行通信接收、發(fā)送模塊讀取調(diào)用。

        表1 波特率、時鐘計數(shù)范圍與參數(shù)配置寄存器SERIAL_CONFIG低4位配置碼對照表

        1.2 通信數(shù)據(jù)格式的自動配置

        圖3 為邊沿檢測、時鐘計數(shù)與數(shù)據(jù)格式配置碼接收采樣信號的時序關(guān)系,在得到當(dāng)前通信鏈路的波特率后,通過波特率發(fā)生器模塊(Baud Rate Generator)生成波特率采樣時鐘信號[11],完成配置字節(jié)中數(shù)據(jù)格式配置碼(2~7 bit)的接收,此時配置字節(jié)的1 bit 起到“偽起始位”的作用,為配置碼接收提供一個波特率位的時間緩沖。波特率發(fā)生器是通過對系統(tǒng)時鐘(100 MHz)分頻得到波特率采樣時鐘信號,分頻因子[12]作為時鐘計數(shù)寄存器的向上溢出值,其計算方法如下:

        圖3 串行通信配置字節(jié)接收過程時序關(guān)系

        數(shù)據(jù)接收采樣設(shè)定在1/2 的分頻因子位置,即在波特率信號周期的中間位置,這樣能夠提高串行通信對波特率誤差的容忍范圍[13-14]。

        如表2 所示,數(shù)據(jù)格式配置碼接收完畢后暫存到SERIAL_CONFIG 的4~9 位。該寄存器能夠被參數(shù)接收模塊、數(shù)據(jù)收發(fā)模塊訪問,參數(shù)接收模塊對其具有寫入權(quán)限,數(shù)據(jù)收發(fā)模塊對其具有讀取權(quán)限。

        表2 串行通信數(shù)據(jù)格式對在參數(shù)配置寄存器中的配置碼

        2 UART模塊的設(shè)計與實現(xiàn)

        為實現(xiàn)通信參數(shù)自適應(yīng)的UART 通信方案,基于Xilinx Artix-7 系列FPGA 與Vivado 開發(fā)平臺[15],利用Verilog HDL 硬件描述語言,從邏輯電路層面實現(xiàn)了設(shè)計。整體設(shè)計從功能可劃分為4 個模塊單元:TX module(發(fā)送模塊)、Baud Rate Generator(波特率產(chǎn)生器)、Parameters RX(參數(shù)接收模塊)與Data RX(數(shù)據(jù)接收模塊)?;贔PGA 的串行通信功能模塊結(jié)構(gòu)如圖4 所示。

        圖4 基于FPGA的串行通信功能模塊結(jié)構(gòu)

        2.1 數(shù)據(jù)發(fā)送模塊

        在串行通信參數(shù)配置完畢后,發(fā)送模塊便可對通信參數(shù)寄存器進(jìn)行讀取。如圖4 所示,發(fā)送控制器是發(fā)送模塊的控制核心,在數(shù)據(jù)發(fā)送鏈路建立之初,讀取寄存器中波特率信息、數(shù)據(jù)格式信息。發(fā)送控制器的主要作用還包括:

        1)將波特率時鐘轉(zhuǎn)化為發(fā)送狀態(tài)時序。在該時序的控制下,數(shù)據(jù)字節(jié)的各位將按照波特率時鐘頻率發(fā)送至TX 總線,無數(shù)據(jù)傳輸時保持高電平。

        2)根據(jù)數(shù)據(jù)格式控制發(fā)送內(nèi)容,包括數(shù)據(jù)位長、停止位長、有無校驗位,如果存在校驗位,將根據(jù)校驗?zāi)J教砑悠婊蚺夹r炍弧Mㄟ^控制移位寄存器,實現(xiàn)發(fā)送數(shù)據(jù)的并串轉(zhuǎn)換。

        2.2 配置參數(shù)與數(shù)據(jù)接收

        接收模塊在波特率采樣時鐘激勵下進(jìn)行配置參數(shù)與數(shù)據(jù)的接收,可進(jìn)一步分為參數(shù)接收模塊與數(shù)據(jù)接收模塊。配置參數(shù)的接收優(yōu)先于數(shù)據(jù)接收。接收控制器作為接收模塊的控制核心,其主要作用有3個方面:

        1)控制波特率檢測、配置參數(shù)接收和數(shù)據(jù)接收(或發(fā)送)的優(yōu)先級劃分,其中波特率檢測具有最高的優(yōu)先級,數(shù)據(jù)收發(fā)具有最低的優(yōu)先級。

        2)對RX 進(jìn)行持續(xù)邊沿檢測,確定發(fā)送起始位的到來,并將波特率時鐘轉(zhuǎn)化為接收狀態(tài)轉(zhuǎn)化時序。

        3)控制接收移位寄存器,對接收數(shù)據(jù)進(jìn)行采樣,實現(xiàn)接收數(shù)據(jù)的串并轉(zhuǎn)化。按照數(shù)據(jù)格式,控制接收的數(shù)據(jù)及數(shù)據(jù)長度和校驗。

        接收控制器對接收優(yōu)先級的控制是通過有限狀態(tài)機(jī)[16]來實現(xiàn)的,配置參數(shù)寄存器的高2 位用于標(biāo)識串行通信參數(shù)的接收情況(波特率、數(shù)據(jù)格式)。如圖5 所示,當(dāng)檢測到信號下降沿,如果通信參數(shù)配置完畢,接收狀態(tài)機(jī)進(jìn)入左側(cè)的配置參數(shù)接收狀態(tài)支路,否則進(jìn)入配置參數(shù)接收支路。

        圖5 配置參數(shù)與數(shù)據(jù)接收的有限狀態(tài)機(jī)

        配置參數(shù)接收狀態(tài)包括空閑狀態(tài)、時鐘計數(shù)狀態(tài)、配置碼接收狀態(tài)、停止位;數(shù)據(jù)接收狀態(tài)機(jī)與配置參數(shù)接收狀態(tài)機(jī)共用空閑與停止位接收狀態(tài),其還包括數(shù)據(jù)位接收、奇偶校驗。在接收數(shù)據(jù)位時,在接收控制器的作用下,根據(jù)數(shù)據(jù)位長度及已經(jīng)接收到的數(shù)據(jù)位,選擇是否跳轉(zhuǎn)到下一個狀態(tài),并根據(jù)SERIAL_CONFIG 的第6 位確定下一個狀態(tài)為校驗狀態(tài)還是停止?fàn)顟B(tài)。如果為校驗狀態(tài),則根據(jù)SERIAL_CONFIG 的第7 位來確定校驗?zāi)J讲⑦M(jìn)行奇(或偶)偶校驗。最后,完成數(shù)據(jù)的存儲,并且給出數(shù)據(jù)是否成功接收或者校驗錯誤標(biāo)識碼。

        3 仿真驗證與測試結(jié)果

        3.1 UART功能仿真

        基于Vivado 仿真平臺進(jìn)行串行通信參數(shù)自適應(yīng)的功能仿真,主要分兩個部分:串行通信參數(shù)的接收、數(shù)據(jù)的收發(fā)。

        1)串行通信參數(shù)的接收

        波特率檢測以及配置參數(shù)的接收仿真如圖6所示,仿真波特率為38 400 bps,通信數(shù)據(jù)格式為8 bit 數(shù)據(jù)位、奇校驗、1 bit 停止位,配置碼為8b0001_1101。

        圖6 波特率檢測以及串行通信參數(shù)接收功能仿真

        當(dāng)接收模塊檢測到信號下降沿到來時,并且配置參數(shù)寄存器的高2 位為“00”,則進(jìn)入配置碼接收狀態(tài),在接收控制器的作用下,參數(shù)接收狀態(tài)機(jī)變量(rx_config_status)由“0”(空閑)變?yōu)椤?”,進(jìn)行時鐘計數(shù),計數(shù)大小為5 208。通過查找表得到波特率為38 400 bps,將其存儲碼(“0111”)寫入配置參數(shù)寄存器(SERIAL_CONFIG)的低4 位。

        為實現(xiàn)數(shù)據(jù)格式配置碼的接收,波特率產(chǎn)生器生成38 400 bps 的采樣時鐘baud_clk,接收狀態(tài)由“1”跳轉(zhuǎn)到“2”(接收配置碼),利用采樣時鐘對2~6 bit 進(jìn)行中間采樣,接收配置碼為“111000”,將其存儲于配置參數(shù)寄存器中,同時將寄存器的最高位置1,標(biāo)識串行通信參數(shù)接收完畢。

        2)數(shù)據(jù)的收發(fā)

        如圖7(a)所示,仿真模擬主機(jī)發(fā)送16 進(jìn)制數(shù)據(jù)0x55,當(dāng)信號下降沿到來時,接收模塊首先檢測SERIAL_CONFIG 的最高位,如果串行通信參數(shù)已經(jīng)配置完畢,則進(jìn)入數(shù)據(jù)接收狀態(tài)機(jī)。

        圖7 串行通信數(shù)據(jù)收發(fā)功能仿真

        接收狀態(tài)機(jī)寄存器變量rx_state 表示空閑狀態(tài)(0)、起始位(1)、數(shù)據(jù)位(2)、校驗位(3)、停止位(4)5 個接收狀態(tài),并在接收控制器的作用下進(jìn)行狀態(tài)的跳轉(zhuǎn)。波特率產(chǎn)生器生成38 400 bps 對應(yīng)的采樣時鐘信號baud_clk,進(jìn)行數(shù)據(jù)的中間采樣接收,最終完成數(shù)據(jù)0x55 的成功接收,并進(jìn)行奇校驗,且校驗無誤。

        圖7(b)為發(fā)送模塊功能仿真,當(dāng)發(fā)送模塊接收到發(fā)送指令信號tx_data_tvalid,對寄存器變量數(shù)據(jù)tx_data進(jìn)行并串轉(zhuǎn)換,輸送至uart_tx 信號線,并由發(fā)送控制器計算得到奇校驗碼,添加至數(shù)據(jù)位尾部一并發(fā)送。

        3.2 UART模塊測試與綜合結(jié)果分析

        為進(jìn)一步驗證UART自適應(yīng)串行參數(shù)配置接口的可靠性與穩(wěn)定性,將Artix-7FPGA開發(fā)板與PC進(jìn)行聯(lián)機(jī)測試。PC 作為主機(jī),集成了參數(shù)自適應(yīng)功能的FPGA 開發(fā)板作為從機(jī),在PC端利用串口調(diào)試助手發(fā)送配置參數(shù),建立串行通信鏈路,進(jìn)行數(shù)據(jù)收發(fā)測試。

        該測試采用中、低、高3 個波特率:9 600 bps、1 200 bps、115 200 bps,分別進(jìn)行測試,每個波特率分別采用奇校驗、偶校驗、無校驗3 種校驗?zāi)J?,?shù)據(jù)位分別采用5~8 bit、停止位采用1~2 bit 長度,進(jìn)行多組測試。測試結(jié)果表明FPGA 端的自適應(yīng)串行參數(shù)接口能夠準(zhǔn)確的獲取串行通信參數(shù),并能夠建立穩(wěn)定的通信鏈接。

        4 結(jié)束語

        文中基于FPGA實現(xiàn)通用異步串行通信的參數(shù)自動配置方法,利用特征值匹配與查表法相結(jié)合的方式,成功實現(xiàn)了波特率與數(shù)據(jù)格式的自適應(yīng)檢測以及自動配置?;赬ilinx Artix-7 系列FPGA,利用Verilog 硬件描述語言實現(xiàn)了該方案的UART接口的硬件電路設(shè)計。仿真與測試表明,該方法能夠快速、穩(wěn)定地建立串行通信鏈路。整體設(shè)計具有很高的完整性和穩(wěn)定性。

        這種方法突破了傳統(tǒng)的波特率自適應(yīng)方法,不僅可以實現(xiàn)波特率的自適應(yīng),同時能夠?qū)崿F(xiàn)串行通信參數(shù)中數(shù)據(jù)格式的自動配置,對通用串行通信的應(yīng)用方法進(jìn)行了補(bǔ)充與完善,具有很高的實用意義。

        猜你喜歡
        檢測
        QC 檢測
        “不等式”檢測題
        “一元一次不等式”檢測題
        “一元一次不等式組”檢測題
        “幾何圖形”檢測題
        “角”檢測題
        “有理數(shù)的乘除法”檢測題
        “有理數(shù)”檢測題
        “角”檢測題
        “幾何圖形”檢測題
        日本岛国大片不卡人妻| 中文字幕人妻无码一夲道| 看国产黄大片在线观看| 亚洲韩国在线| 91青青草手机在线视频| 日本边添边摸边做边爱| 美女又色又爽视频免费| 国产人成无码视频在线| 中文字幕一区二区三区在线看一区| 国产色视频一区二区三区不卡| 亚洲成在人网站av天堂| 亚洲国产精品线路久久| 中文字幕一区二区va| 日本女优在线一区二区三区 | 亚洲成a人片在线网站| 韩国日本在线观看一区二区| 国产一区二区三区av天堂| 国产精品_国产精品_k频道w| 亚洲国产精品国语在线| 日韩va高清免费视频| 亚洲 日韩 激情 无码 中出| 67194熟妇在线永久免费观看| 亚洲国产精品久久久性色av| 国产亚洲一区二区精品| 精品综合久久久久久888蜜芽| 国产免费午夜a无码v视频| 热re99久久精品国产66热6| 青青草好吊色在线观看| 日韩精品极品视频在线观看免费| 亚洲天堂在线播放| 国产一品二品三品精品久久| 中国免费看的片| 亚洲∧v久久久无码精品| 国产视频嗯啊啊啊| 国产成人国产三级国产精品 | 国产欧美亚洲精品a| 中文字幕无码免费久久9| 六月婷婷亚洲性色av蜜桃| 国产乱码精品一区二区三区四川人| 热久久这里只有| 亚洲男人的天堂色偷偷|