<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的UART、USB接口協(xié)議設(shè)計

          基于FPGA的UART、USB接口協(xié)議設(shè)計

          作者: 時間:2012-03-13 來源:網(wǎng)絡(luò) 收藏

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

          a) clk_bps : TXD信號線數(shù)據(jù)發(fā)送的波特率

          b) clk_smp: RXD信號線數(shù)據(jù)接受的采樣速率,以對已波特率的16倍速度采樣,捕獲數(shù)據(jù)的中點(diǎn),在數(shù)據(jù)最穩(wěn)態(tài)讀取數(shù)據(jù),達(dá)到最大限制的穩(wěn)定。

          (2)TXD發(fā)送模塊

          這部分代碼比較簡單,因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/FPGA">FPGA是主控,只要根據(jù)固定的時序給數(shù)據(jù)即可。Bingo設(shè)計了一個狀態(tài)機(jī)來完成時序,狀態(tài)機(jī)代碼如下:

          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

          數(shù)據(jù)發(fā)送的狀態(tài)機(jī)設(shè)計如下:

          12.jpg

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

          c++相關(guān)文章:c++教程




          關(guān)鍵詞: FPGA UART USB 接口

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();