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

        ?

        基于有限狀態(tài)機(jī)的高速串口通信收發(fā)器的FPGA設(shè)計(jì)

        2018-01-03 01:54:59陳孟春馮建文
        關(guān)鍵詞:波特率收發(fā)器狀態(tài)機(jī)

        陳孟春 馮建文

        (杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院 浙江 杭州 310018)

        基于有限狀態(tài)機(jī)的高速串口通信收發(fā)器的FPGA設(shè)計(jì)

        陳孟春 馮建文

        (杭州電子科技大學(xué)計(jì)算機(jī)學(xué)院 浙江 杭州 310018)

        針對(duì)在多任務(wù)操作系統(tǒng)環(huán)境下串口通信實(shí)時(shí)性和高速性受到影響的問(wèn)題,提出一種基于有限狀態(tài)機(jī)的高速串口通信收發(fā)器的FPGA實(shí)現(xiàn)方法。串口通信收發(fā)器由波特率發(fā)生器、發(fā)送模塊、接收模塊和控制與狀態(tài)四個(gè)模塊構(gòu)成,波特率發(fā)生器使用鎖相環(huán)對(duì)輸入時(shí)鐘進(jìn)行倍頻和分頻;接收模塊和發(fā)送模塊分別使用一個(gè)四狀態(tài)和兩狀態(tài)的有限狀態(tài)機(jī)實(shí)現(xiàn)。仿真和實(shí)測(cè)結(jié)果表明,設(shè)計(jì)的FPGA串口收發(fā)器模塊電路工作穩(wěn)定,速度可以達(dá)到3 Mbit/s。由于FPGA的高度并行性和有限狀態(tài)機(jī)的穩(wěn)定性,使用有限狀態(tài)機(jī)實(shí)現(xiàn)的FPGA高速串口通信收發(fā)器在工業(yè)應(yīng)用中能保證高速串行通信的實(shí)時(shí)性和可靠性。

        有限狀態(tài)機(jī) 高速串行通信 收發(fā)器 FPGA

        0 引 言

        串行通信由于其連線(xiàn)少、可靠性高等特點(diǎn),被廣泛應(yīng)用于計(jì)算機(jī)與工業(yè)控制系統(tǒng)中[1-2]。傳統(tǒng)的RS-232、RS-485異步串行通信接口,更是成為嵌入式處理器上的標(biāo)準(zhǔn)配置接口[3]。然而,在多任務(wù)操作系統(tǒng)的應(yīng)用背景下,因其分時(shí)共享CPU,使得串口通信的實(shí)時(shí)性與高速性受到影響[4]。雖然通過(guò)設(shè)置緩存或者開(kāi)辟獨(dú)立線(xiàn)程來(lái)彌補(bǔ)時(shí)間片切換所帶來(lái)的不利影響,但是仍不能滿(mǎn)足工業(yè)現(xiàn)場(chǎng)對(duì)于高速串行通信的需求。隨著EDA技術(shù)的迅速發(fā)展,F(xiàn)PGA的可編程性、高速性、并行性等諸多優(yōu)點(diǎn),使其成為可編程PLD的主流器件。本文設(shè)計(jì)了一種基于FPGA的高速異步串行收發(fā)器模塊,并使用有限狀態(tài)機(jī)機(jī)制,保證了串行通信的高可靠性和高速性。

        1 起止式異步串行通信

        起止式異步串行通信以一個(gè)字符為一個(gè)數(shù)據(jù)幀,幀格式如圖1所示。其特點(diǎn)是:逐個(gè)字符傳輸,每個(gè)字符逐位傳輸,并且每幀??偸且缘碗娖降摹捌鹗嘉弧遍_(kāi)始,以高電平的“停止位”結(jié)束,字符之間間隔以高電平的空閑位。幀數(shù)據(jù)按照起始位(1位)、數(shù)據(jù)位(5~8位)、奇偶校驗(yàn)位(0或者1位)、停止位(1~2位)、空閑位順序排列[5]。

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

        2 串行通信收發(fā)器模塊

        使用Xilinx FPGA器件與Verilog HDL語(yǔ)言設(shè)計(jì)的串行通信收發(fā)器模塊如圖2所示。分為波特率發(fā)生器、發(fā)送模塊、接收模塊和控制與狀態(tài)模塊[5]。

        圖2 異步串行收發(fā)器模塊框圖

        2.1 波特率發(fā)生器

        波特率發(fā)生器用于產(chǎn)生接收模塊所需的接收時(shí)鐘和發(fā)送模塊所需的發(fā)送時(shí)鐘,是根據(jù)約定的波特率、波特率因子,由100 MHz的時(shí)鐘源經(jīng)過(guò)倍頻和分頻產(chǎn)生的。波特率因子為16的收發(fā)操作的位同步與采樣檢測(cè)原理如圖3所示。

        圖3 收發(fā)數(shù)據(jù)同步與采樣原理

        由圖3可知,發(fā)送數(shù)據(jù)是在位周期的邊緣處動(dòng)作,即每16個(gè)脈沖發(fā)送一位,因此發(fā)送時(shí)鐘頻率可以等于波特率。而接收時(shí)鐘,需要更高的采樣頻率,所以接收時(shí)鐘頻率等于波特率×波特率因子。

        本收發(fā)器中使用了3 MHz的波特率,需要用到48 MHz的接收時(shí)鐘,故使用鎖相環(huán)IP核進(jìn)行倍頻和分頻,如圖4所示。

        圖4 鎖相環(huán)分頻向?qū)疽鈭D

        2.2 收發(fā)機(jī)制

        對(duì)照?qǐng)D3的收發(fā)原理,發(fā)送數(shù)據(jù)時(shí),每16個(gè)脈沖發(fā)送一位二進(jìn)制,從發(fā)送移位寄存器中,按順序發(fā)送起始位(0)、數(shù)據(jù)位(先低后高)、奇偶校驗(yàn)位(可有可無(wú))、停止位(1)。

        接收數(shù)據(jù)時(shí),則在每個(gè)接收時(shí)鐘的上沿采樣數(shù)據(jù)傳輸線(xiàn),一旦監(jiān)測(cè)到“0”(低電平),則表明起始位下跳沿來(lái)臨,如果數(shù)據(jù)線(xiàn)上低電平維持了8個(gè)采樣周期,則表明確實(shí)是起始位,而非干擾,此時(shí)是起始位位周期的中點(diǎn)。之后每隔16個(gè)脈沖采樣一次數(shù)據(jù)線(xiàn),即在每個(gè)位周期中點(diǎn)處接收一位二進(jìn)制數(shù)據(jù),移位進(jìn)入接收移位寄存器,直到接收完約定位數(shù)的幀數(shù)據(jù)。

        3 串行通信的有限狀態(tài)機(jī)

        3.1 有限狀態(tài)機(jī)概述

        有限狀態(tài)機(jī)包含了一組有限的狀態(tài)量和兩個(gè)函數(shù):下一狀態(tài)函數(shù)和輸出函數(shù)[7],如圖5所示。

        圖5 有限狀態(tài)機(jī)結(jié)構(gòu)圖

        圖5中,rst信號(hào)用于確定有限狀態(tài)機(jī)的初始狀態(tài)(S0)和原始輸出,clk用于同步狀態(tài)轉(zhuǎn)換的邊沿或者定時(shí)狀態(tài)轉(zhuǎn)換的周期。狀態(tài)集包含在中間過(guò)程中可能出現(xiàn)的所有狀態(tài)量,使用觸發(fā)器保存。下一狀態(tài)函數(shù),則是通過(guò)輸入變量和當(dāng)前狀態(tài)確定轉(zhuǎn)移到下一狀態(tài)的組合邏輯函數(shù)。輸出函數(shù)根據(jù)當(dāng)前狀態(tài)和輸入變量產(chǎn)生電路的一組輸出變量。與普通的時(shí)序邏輯函數(shù)一樣,如果輸出函數(shù)僅僅依賴(lài)于當(dāng)前狀態(tài),則稱(chēng)該有限狀態(tài)機(jī)為Moore型狀態(tài)機(jī)。如果輸出函數(shù)不僅依賴(lài)于當(dāng)前狀態(tài),也依賴(lài)于當(dāng)前輸入,則稱(chēng)該有限狀態(tài)機(jī)為Mealy型狀態(tài)機(jī)[8]。

        用硬件描述語(yǔ)言(HDL)描述的FPGA電路大都是并行實(shí)現(xiàn),但是對(duì)于實(shí)際工程應(yīng)用,往往需要讓硬件來(lái)實(shí)現(xiàn)一些具有一定順序邏輯的工作。而有限狀態(tài)機(jī)就是通過(guò)不同的狀態(tài)遷移來(lái)完成一些特定的順序邏輯。因此,有限狀態(tài)機(jī)是FPGA數(shù)字系統(tǒng)設(shè)計(jì)的重要工具與精髓所在[9-10]。

        基于FPGA的有限狀態(tài)機(jī)的設(shè)計(jì)步驟如下[11-12]:

        (1) 進(jìn)行邏輯分析與抽象,確定輸入、輸出與狀態(tài)變量,畫(huà)出狀態(tài)轉(zhuǎn)移圖。

        (2) 狀態(tài)簡(jiǎn)化,得到最簡(jiǎn)的狀態(tài)轉(zhuǎn)移圖。

        (3) 對(duì)狀態(tài)進(jìn)行編碼:可選擇binary、gray、one-hot編碼方式之一,在FPGA的開(kāi)發(fā)綜合平臺(tái)和綜合工具中,可以進(jìn)行選擇或者自定義。

        (4) 用HDL描述,并綜合、仿真與實(shí)現(xiàn):描述方式有一段式、二段式和三段式三種方式[11]。

        3.2 串行接收模塊的有限狀態(tài)機(jī)設(shè)計(jì)

        接收模塊始終掃描數(shù)據(jù)信號(hào)線(xiàn)Sin上的電平,一旦有數(shù)據(jù)傳送過(guò)來(lái),則按照時(shí)鐘接收數(shù)據(jù),并逐位串行移位至接收移位寄存器中,待數(shù)據(jù)幀接收完,則并行裝入接收緩沖寄存器。使用FPGA實(shí)現(xiàn)接收功能的時(shí)序如下描述:

        (1) 開(kāi)始通信時(shí),信號(hào)線(xiàn)為空閑(邏輯1),當(dāng)檢測(cè)到信號(hào)線(xiàn)Sin為0時(shí),開(kāi)始對(duì)“接收時(shí)鐘”計(jì)數(shù)。

        (2) 當(dāng)計(jì)到8個(gè)時(shí)鐘時(shí),對(duì)Sin信號(hào)進(jìn)行檢測(cè),若仍為低電平,則確認(rèn)這是“起始位”,而不是干擾信號(hào)。

        (3) 接收端檢測(cè)到起始位后,每隔16個(gè)接收時(shí)鐘,讀取輸入信號(hào)Sin至接收移位寄存器,同時(shí)右移一位,直至規(guī)定的數(shù)據(jù)幀位數(shù)(含數(shù)據(jù)位和校驗(yàn)位)。

        (4) 16個(gè)接收時(shí)鐘后,應(yīng)該收到停止位,即數(shù)據(jù)“1”,若未收到,則置位“幀錯(cuò)誤”標(biāo)志FE。

        (5) 若收到停止位“1”,則對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無(wú)校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)從接收移位寄存器中送接收緩沖寄存器,置“數(shù)據(jù)準(zhǔn)備好”標(biāo)志RD;如果有校驗(yàn)錯(cuò),則在狀態(tài)寄存器中置“奇偶錯(cuò)”標(biāo)志PE。

        (6) 本幀數(shù)據(jù)接收完,把線(xiàn)路上出現(xiàn)的高電平作為空閑位,回到(1)繼續(xù)監(jiān)測(cè)下一幀數(shù)據(jù)。

        將上述時(shí)序歸納為四個(gè)狀態(tài):總線(xiàn)空閑狀態(tài)、檢測(cè)起始位狀態(tài)、接收數(shù)據(jù)位和校驗(yàn)位狀態(tài)、接收停止位狀態(tài),則接收狀態(tài)機(jī)的轉(zhuǎn)換如圖6所示,圖中以波特率因子等于16為例。

        圖6 接收狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖

        假設(shè)通信數(shù)據(jù)格式為:數(shù)據(jù)位8位,偶檢驗(yàn)1位,停止位2位,按照兩段式書(shū)寫(xiě)方法,接收狀態(tài)機(jī)模塊的Verilog HDL程序如下:

        module Rev_x(

        input rst,

        input rev_clk,

        //接收時(shí)鐘

        input Sin,

        //串行輸入

        output reg[7:0] Rev_Data,

        //并行輸出數(shù)據(jù)

        output reg RD,

        //已收到一個(gè)數(shù)據(jù),可以讀取

        output reg FE,

        //幀格式錯(cuò)誤

        output reg PE,

        //校驗(yàn)錯(cuò)誤

        input clr_RD

        //清RD,表明已經(jīng)讀取Rev_Data

        );

        reg[3:0] bit_cnt;

        //接收數(shù)據(jù)的位數(shù)計(jì)數(shù)器

        reg[4:0] clk_cnt;

        //時(shí)鐘計(jì)數(shù)器

        reg[1:0] Rev_ST;

        //接收狀態(tài)機(jī)的狀態(tài)

        parameter Idle=0, StartBit=1, DataBit=2, StopBit=3;

        //空閑狀態(tài),起始位狀態(tài),接收數(shù)據(jù)狀態(tài),停止位狀態(tài)

        reg[8:0] shift_reg;

        //移位寄存器

        always @(posedge rst or posedge rev_clk) begin

        if(rst) begin

        //初始賦值

        Rev_ST <= Idle;

        ……

        //信號(hào)清零,略

        end

        else begin

        if (clr_RD) RD <= 1′b0;

        case (Rev_ST)

        Idle: begin

        //空閑狀態(tài)

        clk_cnt <= 5'b0;bit_cnt <= 4′b0;

        if(!Sin) Rev_ST<=StartBit;

        //狀態(tài)轉(zhuǎn)移

        end

        StartBit: begin

        //起始位狀態(tài)

        clk_cnt <= clk_cnt + 1′b1; bit_cnt <= 4′b0;

        if((!Sin)&&(clk_cnt==5′d8)) begin

        //起始位中點(diǎn)

        Rev_ST <= DataBit;

        //狀態(tài)轉(zhuǎn)移

        clk_cnt <= 5′b0;

        end

        else if (Sin) Rev_ST <=Idle;

        //擾動(dòng)

        else Rev_ST <= StartBit;

        end

        DataBit: begin

        //數(shù)據(jù)位狀態(tài)

        clk_cnt <= clk_cnt + 1′b1;

        if(clk_cnt == 5'd15) begin

        //16個(gè)脈沖

        bit_cnt <= bit_cnt + 1′b1; clk_cnt <= 5′b0;

        shift_reg<={Sin,shift_reg[8:1]};

        //采樣數(shù)據(jù)

        end;

        if(bit_cnt == 4′d9) begin

        //接收了9位數(shù)據(jù)

        Rev_Data <= shift_reg[7:0];

        //數(shù)據(jù)賦值

        if ((^shift_reg[7:0])!=shift_reg[8])

        //偶校驗(yàn)

        PE <= 1′b1;

        //校驗(yàn)錯(cuò)

        Rev_ST <= StopBit;

        //狀態(tài)轉(zhuǎn)移

        clk_cnt <= 5′b0; bit_cnt <= 4′b0;

        end;

        end

        StopBit: begin

        //停止位狀態(tài)

        clk_cnt <= clk_cnt + 1′b1;

        if((Sin)&&(clk_cnt==5′d31)) begin

        //2位停止位

        Rev_ST <= Idle;

        //狀態(tài)轉(zhuǎn)移

        RD <= 1′b1;

        //接收到一個(gè)完整數(shù)據(jù)幀

        end

        else if ((!Sin)&&(clk_cnt>5′d8) &&(clk_cnt<5′d31))

        begin

        //停止位位數(shù)不對(duì)

        Rev_ST <= Idle; FE <= 1′b1;

        //幀格式錯(cuò)誤

        end

        end

        endcase

        end

        end

        endmodule

        接收模塊產(chǎn)生的接收標(biāo)志和錯(cuò)誤標(biāo)志,送給控制與狀態(tài)模塊進(jìn)行儲(chǔ)存,供頂層模塊調(diào)用。

        由于受綜合工具的影響,在調(diào)試過(guò)程中,會(huì)碰到有限狀態(tài)機(jī)“跑飛”現(xiàn)象,即狀態(tài)機(jī)可能會(huì)進(jìn)入無(wú)效狀態(tài),且無(wú)法自啟動(dòng)。因此,在ISE中設(shè)置有限狀態(tài)機(jī)的綜合選項(xiàng)非常重要,譬如狀態(tài)編碼(FSM Encoding Algorithm)選擇獨(dú)熱碼、開(kāi)啟狀態(tài)機(jī)安全實(shí)現(xiàn)開(kāi)關(guān)等,從而使得有限狀態(tài)機(jī)安全、可靠運(yùn)行。

        3.3 串行發(fā)送模塊的有限狀態(tài)機(jī)設(shè)計(jì)

        發(fā)送模塊以“發(fā)送時(shí)鐘”和“波特率因子”決定一位的時(shí)間長(zhǎng)度,如果發(fā)送波特率因子為1,則每隔1個(gè)發(fā)送時(shí)鐘發(fā)送一位,發(fā)送時(shí)鐘的頻率等于波特率。發(fā)送過(guò)程的時(shí)序控制如下:

        (1) 當(dāng)初始化后,或者沒(méi)有信息需要發(fā)送時(shí),發(fā)送端輸出邏輯1到數(shù)據(jù)線(xiàn)Sout,即空閑位,空閑位可以有任意數(shù)量。

        (2) 當(dāng)需要發(fā)送時(shí)(Send_EN=1),將發(fā)送保持寄存器的內(nèi)容傳送到發(fā)送移位寄存器,同時(shí)置位“發(fā)送保持寄存器空”標(biāo)志THRE。

        (3) 發(fā)送端首先輸出邏輯0到數(shù)據(jù)線(xiàn)Sout,作為起始位,維持一個(gè)位周期。

        (4) 下一個(gè)發(fā)送周期,首先發(fā)送移位寄存器最低位,同時(shí)右移一位,直到各數(shù)據(jù)位發(fā)送完(含計(jì)算得到的校驗(yàn)位)。

        (5) 最后,發(fā)送端發(fā)送規(guī)定長(zhǎng)度的停止位(邏輯1)。

        (6) 如果沒(méi)有信息需要發(fā)送時(shí),發(fā)送端繼續(xù)輸出邏輯1,即空閑位,空閑位可以有任意數(shù)量;如果還有信息需要發(fā)送,轉(zhuǎn)入第(2)步,發(fā)送下一幀。

        在編程實(shí)現(xiàn)時(shí),可以采用發(fā)送狀態(tài)機(jī)完成,將上述時(shí)序歸納為兩個(gè)狀態(tài):總線(xiàn)空閑狀態(tài)、發(fā)送狀態(tài)??臻e狀態(tài)下,始終發(fā)送“1”到Sout;當(dāng)狀態(tài)機(jī)檢測(cè)到發(fā)送使能有效時(shí)(Send_EN=1),則進(jìn)入發(fā)送狀態(tài),每個(gè)發(fā)送時(shí)鐘從Sout發(fā)送一位,按約定的數(shù)據(jù)格式依次發(fā)送停止位、數(shù)據(jù)位、校驗(yàn)位、停止位,發(fā)送完成后進(jìn)入空閑狀態(tài)。狀態(tài)轉(zhuǎn)移圖如圖7(a)所示,發(fā)送模塊的端口如圖7(b)所示。

        以同樣的數(shù)據(jù)格式為例,主要程序如下:

        always @(posedge rst or posedge send_clk) begin

        if(rst) begin

        //初始賦值

        Send_ST <= Idle; shift_reg <= 12′b0;

        bit_cnt <= 4′b0; Sout <= 1′b1; THRE <= 1′b1;

        end

        else begin

        Send_EN1 <= Send_EN;

        //記錄上一時(shí)鐘狀態(tài)

        case (Send_ST)

        Idle:begin

        //空閑狀態(tài)

        Sout <= 1′b1; THRE <= 1′b1; bit_cnt <= 4′b0;

        if ((!Send_EN1)&& Send_EN) begin

        //上跳沿

        shift_reg<={2′b11,^Send_Data,Send_Data,1′b0};

        Send_ST <= SendBit;

        //狀態(tài)轉(zhuǎn)移

        end;

        end

        SendBit: begin

        //發(fā)送狀態(tài)

        Sout <= shift_reg[bit_cnt]; THRE <= 1′b0;

        bit_cnt <= bit_cnt + 1′b1;

        if(bit_cnt == 4′b1011)

        //12位數(shù)據(jù)發(fā)送完成后

        Send_ST <= Idle;

        end

        endcase

        end

        end

        4 仿真與實(shí)測(cè)

        對(duì)接收模塊進(jìn)行仿真,結(jié)果如圖8(a)所示,接收了一幀數(shù)據(jù)11001001B;對(duì)發(fā)送模塊仿真,結(jié)果如圖8(b)所示,發(fā)送了一幀數(shù)據(jù)10110001B。

        圖8 收發(fā)模塊仿真圖

        為實(shí)現(xiàn)高速的串口通信,需要在頂層模塊添加兩個(gè)FIFO作為接收和發(fā)送緩存區(qū)[12],頂層模塊的結(jié)構(gòu)如圖9所示。

        圖9 頂層模塊結(jié)構(gòu)圖

        測(cè)試程序?qū)⒔邮誇IFO的dout和發(fā)送FIFO的din內(nèi)部短接,具體由收發(fā)控制模塊實(shí)現(xiàn):從Sin收到的數(shù)據(jù)自動(dòng)寫(xiě)入接收FIFO;只要發(fā)送FIFO不滿(mǎn),收發(fā)控制模塊就自動(dòng)從接收FIFO讀取數(shù)據(jù)寫(xiě)入發(fā)送FIFO;同時(shí)只要THRE=1,就自動(dòng)從發(fā)送FIFO讀取數(shù)據(jù),從Sout發(fā)送出去。

        測(cè)試程序下載到FPGA測(cè)試板卡,將板卡的UART-USB口連接到PC機(jī)的COM口,連線(xiàn)是普通的USB連接線(xiàn),圖10是實(shí)驗(yàn)系統(tǒng)連接圖。在PC上,通過(guò)串口助手和FPGA互發(fā)信息,得到的測(cè)試結(jié)果如圖11所示。

        圖10 實(shí)測(cè)與調(diào)試系統(tǒng)

        圖11 PC串口助手收發(fā)數(shù)據(jù)

        圖11選擇重復(fù)發(fā)送10個(gè)數(shù)據(jù),則PC機(jī)發(fā)送數(shù)據(jù)到FPGA的UART,F(xiàn)PGA頂層模塊將接收的數(shù)據(jù)經(jīng)由接收FIFO和發(fā)送FIFO,又重新發(fā)送回PC端??梢钥闯觯谝? Mbit/s的高速速率連續(xù)傳輸數(shù)據(jù)時(shí),仍能收發(fā)正確。

        5 結(jié) 語(yǔ)

        本文使用有限狀態(tài)機(jī)實(shí)現(xiàn)了基于FPGA的高速串行通信收發(fā)器的設(shè)計(jì),分頻器精準(zhǔn),接收自動(dòng)機(jī)和發(fā)送自動(dòng)機(jī)完全并行執(zhí)行,自動(dòng)差錯(cuò)檢測(cè),實(shí)時(shí)性好,可靠性高,適應(yīng)于高速系統(tǒng)。經(jīng)過(guò)升級(jí)改造后,應(yīng)用于某航天測(cè)控系統(tǒng)的發(fā)射控制繼電柜,實(shí)現(xiàn)了3 Mbit/s的高速RS-422串口通信。

        在頂層模塊可添加設(shè)置通信參數(shù)的端口,則將具有更好的通用性;在上層模塊設(shè)計(jì)接收和發(fā)送FIFO模塊,將進(jìn)一步提高串行通信的可靠性和速度。

        [1] 戴彥,王誠(chéng)意,孫春.基于FPGA的RS-232串行通信設(shè)計(jì)[J].唐山學(xué)院學(xué)報(bào),2011,24(3):74-76.

        [2] 劉亞兵,馬瑞卿,張慶超,等.基于FIFO的串口通信模式研究[J].計(jì)算機(jī)測(cè)量與控制,2014,22(7):2301-2303.

        [3] 于志翔.基于FPGA的UART設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2015,38(3):77-81.

        [4] 羅檸,皮佑國(guó).基于FPGA的高速串行通信接口研究[J].信息技術(shù),2013(7):113-116.

        [5] 馮建文,章復(fù)嘉,包健,等.基于FPGA的數(shù)字電路實(shí)驗(yàn)指導(dǎo)書(shū)[M].西安:西安電子科技大學(xué)出版社,2016:137-140.

        [6] 鄧岳平,肖鐵軍.基于FPGA的并行DDS信號(hào)發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(7):2319-2323.

        [7] 陳勇.有限狀態(tài)機(jī)的建模與優(yōu)化設(shè)計(jì)[J].重慶工學(xué)院學(xué)報(bào)(自然科學(xué)版),2007,21(5):55-58.

        [8] Wakerly J F.數(shù)字設(shè)計(jì)原理與實(shí)踐[M].林生,葛紅,金京林,譯.4版.北京:機(jī)械工業(yè)出版社,2007:387-396.

        [9] 孔昕,吳武臣,侯立剛,等.基于Verilog的有限狀態(tài)機(jī)設(shè)計(jì)與優(yōu)化[J].微電子學(xué)與計(jì)算機(jī),2010,27(2):180-183.

        [10] 劉小平,何云斌,董懷國(guó).基于Verilog HDL的有限狀態(tài)機(jī)設(shè)計(jì)與描述[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(4):958-960.

        [11] 吳厚航.深入淺出玩轉(zhuǎn)FPGA [M].2版.北京:北京航空航天大學(xué)出版社,2013:35-38.

        [12] 陳標(biāo)龍,王保成,周江華.基于FPGA和FIFO技術(shù)的多串口系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2013,21(10):2835-2837.

        FPGADESIGNFORHIGHSPEEDSERIALCOMMUNICATIONTRANSCEIVERBASEDONFINITESTATEMACHINE

        Chen Mengchun Feng Jianwen

        (SchoolofComputerScience,HangzhouDianziUniversity,Hangzhou310018,Zhejiang,China)

        Under the environment of multitask operating system, the character of real-time and high speed of serial communication is significantly affected. This article puts forward an FPGA implementation method of high speed serial communication transceiver based on finite state machine. The serial communication transceiver consists of four modules, baud rate generator, transmission module, reception module and control and status module. The baud rate generator uses a phase-locked loop to multiply and divide the input clock. The reception module and the transmission module use a finite state machine of four states and two states, respectively. Simulation and experimental results show that the FPGA serial transceiver module circuit works stably with the speed up to 3 Mbit/s. Due to the high parallelism of FPGA and the stability of finite state machine, the FPGA high speed serial communication transceiver based on finite state machine can guarantee the real-time and reliability of high speed serial communication in industrial applications.

        Finite state machine High speed serial communication Transceiver FPGA

        2017-03-22。國(guó)家自然科學(xué)基金項(xiàng)目(61471150)。陳孟春,本科生,主研領(lǐng)域:計(jì)算機(jī)應(yīng)用。馮建文,副教授。

        TP331.2

        A

        10.3969/j.issn.1000-386x.2017.12.034

        猜你喜歡
        波特率收發(fā)器狀態(tài)機(jī)
        清管球收發(fā)器設(shè)計(jì)細(xì)節(jié)分析及應(yīng)用
        CAN 總線(xiàn)波特率自適應(yīng)程序設(shè)計(jì)
        智能制造(2020年5期)2020-07-03 06:24:00
        基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
        基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
        Virtex5 FPGA GTP_DUAL硬核兩個(gè)收發(fā)器獨(dú)立使用的實(shí)現(xiàn)
        C*Core芯片SCI串口波特率容限優(yōu)化
        富士通半導(dǎo)體推出收發(fā)器家族全新LTE優(yōu)化多頻單芯片MB86L13A
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        計(jì)算機(jī)多設(shè)備接口波特率不匹配的研究
        中文字幕日本人妻久久久免费| 有坂深雪中文字幕亚洲中文| 国产剧情av麻豆香蕉精品| 国产日产韩国av在线| 熟妇人妻无乱码中文字幕真矢织江| 国产综合精品| 国产精品自在线拍国产手机版| 乱码精品一区二区三区| 一本大道东京热无码中字 | 亚洲中文字幕在线综合| 亚洲人成网站色7799| 国产精品18久久久| 亚洲精品欧美二区三区中文字幕| 99久久久久国产| 亚洲成a人网站在线看| 人妻免费黄色片手机版| 熟女免费观看一区二区| 中文字幕一区二区人妻秘书 | 欧美在线观看一区二区| 男女男生精精品视频网站| 国产自拍91精品视频| 完整版免费av片| 热久久国产欧美一区二区精品| 色婷婷综合久久久久中文| 亚洲无毛片| 国内精品久久久久影院蜜芽| 白丝美女扒开内露出内裤视频| 精彩亚洲一区二区三区| 国产日韩精品suv| 日韩a毛片免费观看| av无码天堂一区二区三区| 久久人妻少妇中文字幕| 国产日产韩国级片网站| 成年女人免费v片| 无码人妻黑人中文字幕| 九九在线精品视频xxx| 久久精品亚洲熟女九色| 边添小泬边狠狠躁视频| 初女破初的视频| 欧美成人三级一区二区在线观看 | 日本一区二区三区熟女俱乐部 |