在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(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.biyoush.com/article/234978.htm

            2.2 SLAVE 控制邏輯的實(shí)現(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ū)?。提高的總線的使用效率。

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

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

             

             

            3 結(jié)論

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

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

            上一頁 1 2 下一頁

            關(guān)鍵詞: FPGA I2C

            評論


            相關(guān)推薦

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

            關(guān)閉