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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一款基于FPGA的I2C總線的設(shè)計方案

          一款基于FPGA的I2C總線的設(shè)計方案

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

          異步時鐘域的轉(zhuǎn)換,采用兩級寄存器的結(jié)構(gòu)。輸入濾波器采用5 級寄存器的結(jié)構(gòu)。當(dāng)采樣到連續(xù)5 個高電平時,輸出才為高電平,否則為低電平。接口部分的寄存器全都用 的系統(tǒng)時鐘驅(qū)動。

          本文引用地址:http://www.ex-cimer.com/article/234978.htm

          2.2 SLAVE 控制邏輯的實現(xiàn)

          SLAVE 控制邏輯狀態(tài)機(jī)是整個模塊的核心,所有 總線相應(yīng)的控制都由其完成。狀態(tài)機(jī)有四個狀態(tài):IDLE,START,SAMPLE 和STOP 組成。Verilog 的定義如下:

          `define IDLE 2'b00

          `define START 2'b01

          `define STOP 2'b10

          `define SAMPLE 2'b11

          下面介紹各個狀態(tài)的功能。當(dāng)I2C 總線無任何操作時控制器在IDLE 狀態(tài)下,并保持。當(dāng)接口邏輯判斷到START 條件時,控制器跳轉(zhuǎn)到START 狀態(tài)下,并做好接受第一個字節(jié)的準(zhǔn)備,包括初始化bit計數(shù)器。接著開始接受第一個字節(jié)包含7bit的地址和1bit 的讀寫狀態(tài)位。當(dāng)采集完第一個字節(jié)后,控制器跳到SAMPLE 狀態(tài)下,開始執(zhí)行數(shù)據(jù)字節(jié)的接受或發(fā)送。是接受或發(fā)送的狀態(tài)由前一字節(jié)的最后1bit 的讀寫狀態(tài)位決定。

          當(dāng)讀寫狀態(tài)位為高時,表示I2C 總線的讀操作, 邏輯發(fā)送數(shù)據(jù)。讀寫狀態(tài)位為低時,表示I2C 總線的寫讀操作,邏輯接受數(shù)據(jù)。接著FPGA 邏輯發(fā)出一個ACK 信號后,表示可以進(jìn)行讀寫操作。那么就進(jìn)入到SAMPLE 狀態(tài)下,正常讀或?qū)懸粋€字節(jié)(也可以連續(xù)的讀寫多個字節(jié),對此沒有限制)。在完成8bit 數(shù)據(jù)讀寫后,I2C 的主器件會發(fā)出一個STOP 條件操作。fpga 邏輯收到后,就跳轉(zhuǎn)到STOP 狀態(tài),并在幾個時鐘周期后,自動跳轉(zhuǎn)到IDLE 狀態(tài)下。從而完成一個完整的I2C 總線的讀或?qū)懖僮鳌?/p>

          當(dāng)然也包括一些異常處理,以防止?fàn)顟B(tài)機(jī)處在一個不確定的狀態(tài)下。在SAMPLE 狀態(tài)下如果遇到意外的START 條件時,即上次的總線操作沒有完成就開始了下次的操作,則控制狀態(tài)機(jī)會跳轉(zhuǎn)到START 狀態(tài)下,而開始接受這次新的總線操作,而上次的操作為無效。由如在SAMPLE 狀態(tài)下,但是又收到一個START 條件。還有如在STOP 狀態(tài)收到一個START 條件,處理也和上面一樣。下圖4 介紹了I2C SLAVE 控制邏輯狀態(tài)機(jī)的狀態(tài)跳轉(zhuǎn)圖。

           

           

          如上圖所示,在 SAMPLE 狀態(tài)下,可以連續(xù)的讀寫數(shù)據(jù),而地址是在讀寫完一個字節(jié)后由FPGA 邏輯自動加1 的。這樣做使得I2C 總線的一次操作就可以連續(xù)對多個字節(jié)讀或?qū)憽L岣叩目偩€的使用效率。

          以下是在modelsim6.0 下進(jìn)行的行為級仿真的時序圖。

          由自行編制的I2C 總線主器件BFM 驅(qū)動進(jìn)行測試。圖5 I2CSLAVE 控制器寫時序圖。圖6 I2C SLAVE 控制器讀時序圖。

           

           

          3 結(jié)論

          本方案通過介紹SLAVE 模式的特點,給出設(shè)計的原理框圖和modelsim 下的行為仿真時序圖。在Altera 的Cyclone II 系列中用Quartus II 12.0生成的模塊時鐘頻率可達(dá)到180MHz,占用的資源Totalcombinational functions 為83 個,Total registers 為41 個。而在實際應(yīng)用中達(dá)100MHz 左右。證實了本方案操作簡便,效果不錯。

          上拉電阻相關(guān)文章:上拉電阻原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA I2C

          評論


          相關(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); })();