在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的串行接收模塊的設(shè)計(jì)

            基于FPGA的串行接收模塊的設(shè)計(jì)

            作者: 時(shí)間:2009-08-10 來(lái)源:網(wǎng)絡(luò) 收藏

            4 接收串行數(shù)據(jù)的軟件設(shè)計(jì)
            本方案采用的串行異步通信的幀格式為:1位起始位+5位數(shù)據(jù)位+1位停止位。經(jīng)檢測(cè)與分析,如果已經(jīng)確定異步通信的幀格式,那么每個(gè)字符就可以分別用固定的 7位數(shù)據(jù)表示。比如:字符‘ 0’:‘0000011’;字符‘ 1’:‘0100011’。其中第 1位數(shù)據(jù)‘ 0’為起始位,昀后 1位數(shù)據(jù)‘1’為停止位,中間 5位數(shù)據(jù)為數(shù)據(jù)位。例如:用串口調(diào)試助手軟件發(fā)送字符串‘100’,則會(huì)在 的 RxD引腳測(cè)得如圖 3的波形。其中, st1,st2,st3表示先后發(fā)送的 3個(gè)字符, t1,t2,t3則表示對(duì)每個(gè)字符進(jìn)行檢測(cè)時(shí)所經(jīng)過(guò)的 3種狀態(tài)。
            正如圖3波形所示,接收邏輯首先通過(guò)檢測(cè)輸入數(shù)據(jù)的下降沿來(lái)檢查起始位。然后產(chǎn)生接收時(shí)鐘,利用接收時(shí)鐘來(lái)采樣串行輸入數(shù)據(jù)。由于字符‘0’和‘1’在5位數(shù)據(jù)位中的僅第一位有區(qū)別,因此只要準(zhǔn)確地將第一位數(shù)據(jù)檢測(cè)出來(lái)就可以得出串口調(diào)試助手所發(fā)送的字符串。再利用移位操作,將字符串存儲(chǔ)在緩存器(即另一組可以更新的字符串)中。


            至于剩下的4位數(shù)據(jù)位和一位停止位,就可以不隨接收時(shí)鐘采樣。待串口調(diào)試組手發(fā)送的字符串全部存儲(chǔ)之后,一起在該中進(jìn)行判斷,并根據(jù)字符串的不同來(lái)控制不同的輸出。接收時(shí)鐘是根據(jù)數(shù)據(jù)傳輸?shù)牟ㄌ芈十a(chǎn)生的:接收時(shí)鐘= 16×19200Hz。它始于起始位的下降沿,終于第5位數(shù)據(jù)位的上升沿。下面是實(shí)現(xiàn)檢測(cè)第1個(gè)字符的VHDL源程序。


            if(clk0'event and clk0='1')then ----外部時(shí)鐘
            case state is
            when st1=> ----第1 個(gè)字符開(kāi)始
            case tate is
            when t1=> ----起始位開(kāi)始
            if(rxd='1')then ----未到下降沿不計(jì)數(shù)
            cnt16 = 0000;
            cnt48 = 000000; ----所有時(shí)鐘清零
            else cnt16 =cnt16+1; ----下降沿來(lái),起始位計(jì)數(shù)開(kāi)始
            end if;
            if(cnt16=1111)then
            tate = t2; ----起始位完,進(jìn)入數(shù)據(jù)位
            end if;
            when t2=> ----進(jìn)入第1 位數(shù)據(jù)位
            if(cnt16=1111)then
            cnt16 = 0000;
            else cnt16 = cnt16+1;
            end if;
            if(cnt16=0011)then
            sdata = rxd; ----采樣第1 位數(shù)據(jù)位
            end if;
            if(cnt16=0111)then
            if(sdata='0')then
            data(0)='0';
            else data(0)='1'; ----判斷采樣值,如果為0,則發(fā)送字符為0,
            反之亦然
            end if;
            end if;
            if(cnt16=1111)then
            tate = t3; ----第1 位數(shù)據(jù)位完,進(jìn)入下一狀態(tài)
            end if;
            when t3=> ----進(jìn)入第2 位,第3 位和第4 位數(shù)據(jù)狀態(tài)
            if(cnt16=1111)then

            cnt48 = 000000;
            else cnt48 = cnt48+1; ----不對(duì)剩下的數(shù)據(jù)采樣,直接計(jì)數(shù)
            end if;
            if(cnt48=101111)then
            sdata ='0'; ----采樣位清零
            tate = t1; ----進(jìn)入采集下一字符的準(zhǔn)備狀態(tài)
            state = st2; ----第1 個(gè)字符采集完,進(jìn)入下一字符
            end if;
            end case;
            fdata(0) = data(0); ----采集完的字符存入緩存區(qū)
            …… …… ……



            關(guān)鍵詞: FPGA 串行接收 模塊

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉