新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于串口通訊的Verilog設計

        基于串口通訊的Verilog設計

        作者: 時間:2012-09-03 來源:網絡 收藏

        else begin

        counter=0;

        state=s0;

        end

        end

        s1:if(!din)//如果是0的話,轉入s2狀態,提取八位有效數據

        state=s2;

        else //否則轉到s0狀態重新檢測

        state=s0;

        s2:if(cnt3==3)//是否采集四次數據

        begin

        cnt2=0;

        indata_buf[bitpos]=din; //先進來的是高位數據

        bitpos=bitpos-1;

        if(bitpos==-1)

        begin

        bitpos=7;state=s3;end

        end

        else cnt3=cnt3+1;

        s3:begin

        tag1=tag;

        tag=1'b1; //標志輸入寄存器滿。表明已把有用數據裝入寄存器

        if(tag~tag1)txdone) //檢測到tag的上升沿以及txdone為高才把輸入緩沖數據放到輸出緩沖去

        dout_buf={1'b1,indata_buf[7:0],1'b0};//停止位,高位,低位,起始位

        state=s0;

        end

        endcase

        end

        //***********發送數據模塊

        reg[3:0] state_tx=0;

        always@(posedge txclk or posedge rst)

        begin

        if(rst)

        begin

        dout_ser=1'bz;

        state_tx=0;

        txdone=1;

        end

        else

        case(state_tx)

        0:begin

        dout_ser=dout_buf[0];state_tx=state_tx+1;txdone=1'b0;end

        1:begin

        dout_ser=dout_buf[1];state_tx=state_tx+1;end

        2:begin

        dout_ser=dout_buf[2];state_tx=state_tx+1;end

        3:begin

        dout_ser=dout_buf[3];state_tx=state_tx+1;end

        4:begin

        dout_ser=dout_buf[4];state_tx=state_tx+1;end

        5:begin

        dout_ser=dout_buf[5];state_tx=state_tx+1;end

        6:begin

        dout_ser=dout_buf[6];state_tx=state_tx+1;end

        7:begin

        dout_ser=dout_buf[7];state_tx=state_tx+1;end

        8:begin

        dout_ser=dout_buf[8];state_tx=state_tx+1;end

        9:begin

        dout_ser=dout_buf[9];state_tx=state_tx+1;end

        endcase

        end

        endmodule

        注:兩個頻率信號nclk、txclk由相應的分頻程序產生。由于篇幅所限未在文中列出。

        FPGA模塊接收從RS-485發送過來的串行數據。25位為一個字符。數據的傳輸速率是700kbps,用四倍于波特率的速率進行采樣,這樣可以大大降低系統的噪聲。數據的串行輸出波特率選為11200bps。

        由輸入輸出波形圖可以看出:本段程序實現了對輸入數據的有效數據位的提取,并按照一定的波特率進行串行輸出。程序中,波特率可以根據需要通過分頻程序進行改動。硬件電路搭建簡單,程序代碼書寫容易。數據傳輸穩定可靠,可以滿足串口通信的要求。


        上一頁 1 2 3 下一頁

        關鍵詞: Verilog 串口通訊

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西乌珠穆沁旗| 三门峡市| 凤台县| 保山市| 连南| 尉氏县| 西青区| 融水| 松原市| 汉川市| 咸丰县| 临高县| 米林县| 抚顺市| 云阳县| 韶关市| 安西县| 娱乐| 墨竹工卡县| 马公市| 镇原县| 桐梓县| 周宁县| 张家口市| 玉溪市| 岳阳县| 西华县| 阿拉善左旗| 旌德县| 定兴县| 德令哈市| 缙云县| 壤塘县| 安阳市| 华阴市| 大丰市| 滨州市| 木里| 大港区| 宣武区| 桃源县|