999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

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

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

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

1 通信參數(shù)自動(dòng)配置設(shè)計(jì)方案

UART 采用異步全雙工通信模式,由于沒有專用時(shí)鐘信息線,因此數(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ù)位、校驗(yàn)位與停止位,其中數(shù)據(jù)位長度為5~8 bit,校驗(yàn)?zāi)J娇蛇x奇校驗(yàn)或偶校驗(yàn),并可以選擇是否采用校驗(yàn)位,停止位長度可選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 或嵌入式處理器在硬件或軟件層面集成了自動(dòng)波特率檢測功能[2-4],能夠自動(dòng)檢測到主設(shè)備的波特率并進(jìn)行配置,達(dá)到自適應(yīng)的目的。但是傳統(tǒng)的方法僅局限于波特率的自適應(yīng)檢測,尚不能對數(shù)據(jù)格式進(jìn)行自動(dòng)配置,當(dāng)串行通信鏈路數(shù)據(jù)格式變更時(shí),就無法自動(dòng)建立通信鏈路。為了改變現(xiàn)有技術(shù)存在的弊端,使UART 串行通信自適應(yīng)的方法擁有更強(qiáng)的實(shí)用性,文中提出了串行通信參數(shù)自適應(yīng)的概念,介紹了一種可靠的實(shí)現(xiàn)串行通信波特率、數(shù)據(jù)格式自動(dòng)配置的方法,并基于Xilinx Artix-7 FPGA實(shí)現(xiàn)了UART 接口的模塊化設(shè)計(jì)與仿真驗(yàn)證。

UART 串行通信參數(shù)自動(dòng)配置在數(shù)據(jù)鏈路層進(jìn)行,新的傳輸鏈路發(fā)起或者改變當(dāng)前波特率、數(shù)據(jù)格式時(shí),將進(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ù)的自動(dòng)配置,建立串行通信的連接。

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

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

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

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

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

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

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

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

圖3 串行通信配置字節(jié)接收過程時(shí)序關(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è)計(jì)與實(shí)現(xiàn)

為實(shí)現(xiàn)通信參數(shù)自適應(yīng)的UART 通信方案,基于Xilinx Artix-7 系列FPGA 與Vivado 開發(fā)平臺[15],利用Verilog HDL 硬件描述語言,從邏輯電路層面實(shí)現(xiàn)了設(shè)計(jì)。整體設(shè)計(jì)從功能可劃分為4 個(gè)模塊單元:TX module(發(fā)送模塊)、Baud Rate Generator(波特率產(chǎn)生器)、Parameters RX(參數(shù)接收模塊)與Data RX(數(shù)據(jù)接收模塊)。基于FPGA 的串行通信功能模塊結(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)將波特率時(shí)鐘轉(zhuǎn)化為發(fā)送狀態(tài)時(shí)序。在該時(shí)序的控制下,數(shù)據(jù)字節(jié)的各位將按照波特率時(shí)鐘頻率發(fā)送至TX 總線,無數(shù)據(jù)傳輸時(shí)保持高電平。

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

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

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

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

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

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

接收控制器對接收優(yōu)先級的控制是通過有限狀態(tài)機(jī)[16]來實(shí)現(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í)鐘計(jì)數(shù)狀態(tài)、配置碼接收狀態(tài)、停止位;數(shù)據(jù)接收狀態(tài)機(jī)與配置參數(shù)接收狀態(tài)機(jī)共用空閑與停止位接收狀態(tài),其還包括數(shù)據(jù)位接收、奇偶校驗(yàn)。在接收數(shù)據(jù)位時(shí),在接收控制器的作用下,根據(jù)數(shù)據(jù)位長度及已經(jīng)接收到的數(shù)據(jù)位,選擇是否跳轉(zhuǎn)到下一個(gè)狀態(tài),并根據(jù)SERIAL_CONFIG 的第6 位確定下一個(gè)狀態(tài)為校驗(yàn)狀態(tài)還是停止?fàn)顟B(tài)。如果為校驗(yàn)狀態(tài),則根據(jù)SERIAL_CONFIG 的第7 位來確定校驗(yàn)?zāi)J讲⑦M(jìn)行奇(或偶)偶校驗(yàn)。最后,完成數(shù)據(jù)的存儲,并且給出數(shù)據(jù)是否成功接收或者校驗(yàn)錯(cuò)誤標(biāo)識碼。

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

3.1 UART功能仿真

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

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

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

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

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

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

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

如圖7(a)所示,仿真模擬主機(jī)發(fā)送16 進(jìn)制數(shù)據(jù)0x55,當(dāng)信號下降沿到來時(shí),接收模塊首先檢測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)、校驗(yàn)位(3)、停止位(4)5 個(gè)接收狀態(tài),并在接收控制器的作用下進(jìn)行狀態(tài)的跳轉(zhuǎn)。波特率產(chǎn)生器生成38 400 bps 對應(yīng)的采樣時(shí)鐘信號baud_clk,進(jìn)行數(shù)據(jù)的中間采樣接收,最終完成數(shù)據(jù)0x55 的成功接收,并進(jìn)行奇校驗(yàn),且校驗(yàn)無誤。

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

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

為進(jìn)一步驗(yà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 個(gè)波特率:9 600 bps、1 200 bps、115 200 bps,分別進(jìn)行測試,每個(gè)波特率分別采用奇校驗(yàn)、偶校驗(yàn)、無校驗(yàn)3 種校驗(yàn)?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實(shí)現(xiàn)通用異步串行通信的參數(shù)自動(dòng)配置方法,利用特征值匹配與查表法相結(jié)合的方式,成功實(shí)現(xiàn)了波特率與數(shù)據(jù)格式的自適應(yīng)檢測以及自動(dòng)配置。基于Xilinx Artix-7 系列FPGA,利用Verilog 硬件描述語言實(shí)現(xiàn)了該方案的UART接口的硬件電路設(shè)計(jì)。仿真與測試表明,該方法能夠快速、穩(wěn)定地建立串行通信鏈路。整體設(shè)計(jì)具有很高的完整性和穩(wěn)定性。

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

猜你喜歡
檢測
QC 檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
“有理數(shù)的乘除法”檢測題
“有理數(shù)”檢測題
“角”檢測題
“幾何圖形”檢測題
主站蜘蛛池模板: 亚洲A∨无码精品午夜在线观看| 美女被操黄色视频网站| 91精品综合| 亚洲最新地址| 天堂岛国av无码免费无禁网站 | 中文字幕人成人乱码亚洲电影| 国产日韩欧美一区二区三区在线 | 国语少妇高潮| 色噜噜狠狠狠综合曰曰曰| 国产在线观看人成激情视频| www.99在线观看| 色综合天天视频在线观看| 不卡无码h在线观看| 天天做天天爱夜夜爽毛片毛片| 亚洲精品无码抽插日韩| 国产高清又黄又嫩的免费视频网站| 国产福利免费视频| 国产高清在线观看91精品| 亚洲欧洲日韩久久狠狠爱| 国产成人欧美| 亚洲精品在线影院| 国产在线自揄拍揄视频网站| 久久精品波多野结衣| 久久99这里精品8国产| a毛片在线| 欧美亚洲欧美| 欧美日韩免费在线视频| 亚洲精选无码久久久| 极品尤物av美乳在线观看| a级毛片在线免费| 国产尤物在线播放| 欧美国产在线一区| 中文字幕亚洲综久久2021| 亚洲精品视频网| 亚洲天堂日韩在线| 免费a级毛片18以上观看精品| 国产另类乱子伦精品免费女| 国产精品太粉嫩高中在线观看| 99久久精品国产自免费| 欧美日韩精品在线播放| 91色爱欧美精品www| 欧美日韩免费观看| 专干老肥熟女视频网站| 少妇人妻无码首页| 99精品国产自在现线观看| 无码精品国产VA在线观看DVD| 国产精品香蕉在线| 中美日韩在线网免费毛片视频| 亚洲国产午夜精华无码福利| 国产剧情国内精品原创| www.91在线播放| 亚洲成网777777国产精品| 中文字幕久久亚洲一区| 9966国产精品视频| 亚洲中久无码永久在线观看软件| 中文无码毛片又爽又刺激| 2020国产在线视精品在| 久久香蕉国产线| www.亚洲一区| av一区二区三区在线观看| 欧美精品在线免费| a免费毛片在线播放| 国产导航在线| 99热这里都是国产精品| 亚洲人成网站在线观看播放不卡| 国产成在线观看免费视频| www.狠狠| 伊人成人在线视频| 国产国语一级毛片| 久久久亚洲色| 欧美中文字幕在线二区| 人人91人人澡人人妻人人爽| 欧美日本在线| 亚洲国产精品VA在线看黑人| 在线观看免费国产| 美女扒开下面流白浆在线试听| 五月婷婷亚洲综合| 美女免费黄网站| 亚洲成av人无码综合在线观看 | 特级欧美视频aaaaaa| 欧美在线黄| 国产成人精品2021欧美日韩|