电竞比分网-中国电竞赛事及体育赛事平台

分享

基于FPGA的串行通用異步收發(fā)器設計

 goandlove 2019-06-29

一、FPGA的UART設計前準備

1、準備硬件開發(fā)板一個,altera芯片就行,成本低;

2、熟悉VHDL硬件描述語言編程及其調試方法;

3、熟練使用軟件開發(fā)工具使用,QuartusII9.0,仿真工具modelsim。

4、做UART串口設計之前先上網學習UART原理,實現(xiàn)FPGA接口電路設計。

二、UART簡介

UART(Universal Asynchronous Receiver Transmitter通用異步收發(fā)器)是一種應用廣泛的短距離串行傳輸接口。常常用于短距離、低速、低成本的通訊中。8250、8251、NS16450等芯片都是常見的UART器件。基本的UART通信只需要兩條信號線(RXD、TXD)就可以完成數據的相互通信,接收與發(fā)送是全雙工形式。TXD是UART發(fā)送端,為輸出;RXD是UART接收端,為輸入。

1、UART的基本特點是:

(1)在信號線上共有兩種狀態(tài),可分別用邏輯1(高電平)和邏輯0(低電平)來區(qū)分。在發(fā)送器空閑時,數據線應該保持在邏輯高電平狀態(tài)。

(2)起始位(Start Bit):發(fā)送器是通過發(fā)送起始位而開始一個字符傳送,起始位使數據線處于邏輯0狀態(tài),提示接受器數據傳輸即將開始。

(3)數據位(Data Bits):起始位之后就是傳送數據位。數據位一般為8位一個字節(jié)的數據(也有6位、7位的情況),低位(LSB)在前,高位(MSB)在后。

(4)校驗位(parity Bit):可以認為是一個特殊的數據位。校驗位一般用來判斷接收的數據位有無錯誤,一般是奇偶校驗。在使用中,該位常常取消。

(5)停止位:停止位在最后,用以標志一個字符傳送的結束,它對應于邏輯1狀態(tài)。

(6)位時間:即每個位的時間寬度。起始位、數據位、校驗位的位寬度是一致的,停止位有0.5位、1位、1.5位格式,一般為1位。

(7)幀:從起始位開始到停止位結束的時間間隔稱之為一幀。

(8)波特率:UART的傳送速率,用于說明數據傳送的快慢。在串行通信中,數據是按位進行傳送的,因此傳送速率用每秒鐘傳送數據位的數目來表示,稱之為波特率。如波特率9600=9600bps(位/秒)。

UART的數據幀格式為:

FPGA UART系統(tǒng)組成 :如下圖所示,F(xiàn)PGA UART由三個子模塊組成:波特率發(fā)生器;接收模塊;發(fā)送模塊;

2、模塊設計:

系統(tǒng)由四部部分組成:頂層模塊;波特率發(fā)生器;UART接收器; UART發(fā)送器.

2.1頂層模塊

異步收發(fā)器的頂層模塊由波特率發(fā)生器、UART接收器和UART發(fā)送器構成。

UART發(fā)送器的用途是將準備輸出的并行數據按照基本UART幀格式轉為TXD信號串行輸出。

UART接收器接收RXD串行信號,并將其轉化為并行數據。

波特率發(fā)生器就是專門產生一個遠遠高于波特率的本地時鐘信號對輸入RXD不斷采樣,使接收器與發(fā)送器保持同步。

2.2波特率發(fā)生器

波特率發(fā)生器實際上就是一個分頻器??梢愿鶕o定的系統(tǒng)時鐘頻率(晶振時鐘)和要求的波特率算出波特率分頻因子,算出的波特率分頻因子作為分頻器的分頻數。波特率分頻因子可以根據不同的應用需要更改。

2.3UART接收器

由于串行數據幀和接收時鐘是異步的,由邏輯1轉為邏輯0可以被視為一個數據幀的起始位。然而,為了避免毛刺影響,能夠得到正確的起始位信號,必須要求接收到的起始位在波特率時鐘采樣的過程中至少有一半都是屬于邏輯0才可認定接收到的是起始位。由于內部采樣時鐘bclk周期(由波特率發(fā)生器產生)是發(fā)送或接收波特率時鐘頻率的16倍,所以起始位需要至少8個連續(xù)bclk周期的邏輯0被接收到,才認為起始位接收到,接著數據位和奇偶校驗位將每隔16個bclk周期被采樣一次(即每一個波特率時鐘被采樣一次)。如果起始位的確是16個bclk周期長,那么接下來的數據將在每個位的中點處被采樣。

UART接收器的接收狀態(tài)機

接收狀態(tài)機狀態(tài)

R_START(等待起始位);R_CENTER(求中點);R_WAIT(等待采樣);R_SAMPLE;R_STOP(停止位接收)。

2.3.1、R_START狀態(tài)

當UART接收器復位后,接收狀態(tài)機將處于這一個狀態(tài)。

在此狀態(tài),狀態(tài)機一直在等待RXD的電平跳轉,從邏輯1變?yōu)檫壿?,即起始位,這意味著新的一幀UART數據幀的開始,一旦起始位被確定,狀態(tài)機將轉入R_CENTER狀態(tài)。

狀態(tài)圖中的RXD_SYNC信號是RXD的同步信號,因為在進行邏輯1或邏輯0判斷時,不希望檢測的信號是不穩(wěn)定的,所以不直接檢測RXD信號,而是檢測經過同步后的RXD_SYNC信號。

2.3.2、R_CENTER狀態(tài)

對于異步串行信號,為了使每一次都檢測到正確的位信號,而且在較后的數據位檢測時累計誤差較小,顯然在每位的中點檢測是最為理想的。

在本狀態(tài),就是由起始位求出每位的中點,通過對bclk的個數進行計數(RCNT16),但計數值不是想當然的“1000”,要考慮經過一個狀態(tài),也即經過了一個bclk周期,所希望得到的是在采樣時1/2位。

另外,可能在R_START狀態(tài)檢測到的起始位不是真正的起始位,可能是一個偶然出現(xiàn)的干擾尖脈沖(負脈沖)。這種干擾脈沖的周期是很短的,所以可以認為保持邏輯0超過1/4個位時間的信號一定是起始位。

2.3.3、R_WAIT狀態(tài)

當狀態(tài)機處于這一狀態(tài),等待計滿15個bclk,在第16個bclk是進入R_SAMPLE狀態(tài)進行數據位的采樣檢測,同時也判斷是否采集的數據位長度已達到數據幀的長度(FRAMELEN),如果到來,就說明停止位來臨了。

FRAMELEN在設計時是可更改的(使用了Generic),在本設計中默認為8,即對應的UART工作在8位數據位、無校驗位格式。

2.3.4、R_SAMPLE狀態(tài)

即數據位采樣檢測,完成后無條件狀態(tài)機轉入R_WAIT狀態(tài),等待下次數據位的到來。

2.3.5、R_STOP狀態(tài)

無論停止位是1還是1.5位,或是2位,狀態(tài)機在R_STOP不具體檢測RXD,只是輸出幀接收完畢信號(REC_DONE<>

2.4、UART發(fā)送器

發(fā)送器只要每隔16個bclk周期輸出1個數據即可,次序遵循第1位是起始位,第8位是停止位。在本設計中沒有校驗位,但只要改變Generic參數FrameLen,也可以加入校驗位,停止位是固定的1位格式。

發(fā)送狀態(tài)機的狀態(tài)圖

發(fā)送狀態(tài)機一共有5個狀態(tài):X_IDLE(空閑);X_START(起始位);X_WAIT(移位等待);X_SHIFT(移位);X_STOP(停止位)。

2.4.1、X_IDLE狀態(tài):

當UART被復位信號復位后,狀態(tài)機將立刻進入這一狀態(tài)。

在這個狀態(tài)下,UART的發(fā)送器一直在等待一個數據幀發(fā)送命令XMIT_CMD。

XMIT_CMD_P信號是對XMIT_CMD的處理,XMIT_CMD_P是一個短脈沖信號。這時由于XMIT_CMD是一個外加信號,在FPGA之外,不可能對XMIT_CMD的脈沖寬度進行限制,如果XMIT_CMD有效在UART發(fā)完一個數據幀后仍然有效,那么就會錯誤地被認為,一個新的數據發(fā)送命令又到來了,UART發(fā)送器就會再次啟動UART幀的發(fā)送,顯然該幀的發(fā)送是錯誤的。

在此對XMIT_CMD進行了脈沖寬度的限定,XMIT_CMD_P就是一個處理后的信號。

當XMIT_CMD_P=‘1’,狀態(tài)機轉入X_START,準備發(fā)送起始位。

2.4.2、X_START狀態(tài):

在這個狀態(tài)下,UART的發(fā)送器一個位時間寬度的邏輯0信號至TXD,即起始位。緊接著狀態(tài)機轉入X_WAIT狀態(tài)。XCNT16是bclk的計數器。

2.4.3、X_WAIT狀態(tài)

同UART接收狀態(tài)機中的R_WAIT狀態(tài)類似。

2.4.4、X_SHIFT狀態(tài)

當狀態(tài)機處于這一狀態(tài)時,實現(xiàn)待發(fā)數據的并串轉換。轉換完成立即回到X_WAIT狀態(tài)。

2.4.5、X_STOP

停止位發(fā)送狀態(tài),當數據幀發(fā)送完畢,狀態(tài)機轉入該狀態(tài),并發(fā)送16個bclk周期的邏輯1信號,即1位停止位。狀態(tài)機送完停止位后回到X_IDLE狀態(tài),并等待另一個數據幀的發(fā)送命令.

3、 FPGA UART模塊編程設計

3.1、UART發(fā)送器

3.2、UART接收器

3.3、分頻器模塊

三、管腳配置,下載到硬件平臺調試

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多