新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的UART、USB接口協議設計

        基于FPGA的UART、USB接口協議設計

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

        代碼中Bingo設置了多個選項的bps,根據您的需要,可以直接修改代碼,來達到自己的要求。本模塊的功能主要功能是生成兩個時鐘:

        a) clk_bps : TXD信號線數據發送的波特率

        b) clk_smp: RXD信號線數據接受的采樣速率,以對已波特率的16倍速度采樣,捕獲數據的中點,在數據最穩態讀取數據,達到最大限制的穩定。

        (2)TXD發送模塊

        這部分代碼比較簡單,因為是主控,只要根據固定的時序給數據即可。Bingo設計了一個狀態機來完成時序,狀態機代碼如下:

        always@(posedge clk or negedge rst_n)

        begin

        if(!rst_n)

        begin

        txd_state = T_IDLE;

        txd_flag_r = 0;

        txd = 1'b1;

        end

        else

        begin

        case(txd_state)

        T_IDLE:

        begin

        txd = 1;

        txd_flag_r = 0;

        if(txd_en == 1)

        txd_state = T_SEND;

        else

        txd_state = T_IDLE;

        end

        T_SEND:

        begin

        if(clk_bps == 1)

        begin

        if(txd_cnt 4'd9)

        txd_cnt = txd_cnt + 1'b1;

        else

        begin

        txd_cnt = 0;

        txd_state = T_IDLE;

        txd_flag_r = 1;

        end

        case(txd_cnt)

        4'd0: txd = 0;

        4'd1: txd = txd_data[0];

        4'd2: txd = txd_data[1];

        4'd3: txd = txd_data[2];

        4'd4: txd = txd_data[3];

        4'd5: txd = txd_data[4];

        4'd6: txd = txd_data[5];

        4'd7: txd = txd_data[6];

        4'd8: txd = txd_data[7];

        4'd9: txd = 1;

        endcase

        end

        end

        endcase

        end

        End

        數據發送的狀態機設計如下:

        12.jpg

        同時,為了軟件調試,數據識別等的方便,Bingo在此模塊設置了數據發送標志位。此部分主要參考了Bingo“第七章 你想干嘛——邊沿檢測技術”的方法,此處不再做累贅闡述,若有不懂請看上文。此部分代碼如下:

        c++相關文章:c++教程




        關鍵詞: FPGA UART USB 接口

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南木林县| 青海省| 尼木县| 平塘县| 清新县| 宁晋县| 太仓市| 海丰县| 大同市| 集安市| 汉阴县| 蓝田县| 金塔县| 扎赉特旗| 南陵县| 枝江市| 高安市| 孟津县| 莒南县| 襄城县| 鹤岗市| 博野县| 房产| 祥云县| 连州市| 盘锦市| 中阳县| 通山县| 晋州市| 资源县| 西乌珠穆沁旗| 敖汉旗| 商南县| 灵石县| 康定县| 海原县| 泰州市| 尤溪县| 曲靖市| 南充市| 游戏|