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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于VHDL/CPLD的I2C串行總線控制器設計及實現(xiàn)

          基于VHDL/CPLD的I2C串行總線控制器設計及實現(xiàn)

          作者: 時間:2010-05-25 來源:網(wǎng)絡 收藏

            主機發(fā)完第一個字節(jié)后,數(shù)據(jù)傳輸方向的變化可能存在三種情況。(1)傳輸方向不變,如主機向從機寫;(2)傳輸方向改變,如主機從從機讀數(shù)據(jù);(3)傳輸方向改變多次,如主機對從機進行多次讀寫。

            2 時鐘同步與仲裁

            在任何時刻只能有一個主機,當同時有兩個或更多的器件想成為主機時,就需要進行仲裁;時鐘同步的目的就是為仲裁提供一個確定的時鐘。時鐘SCL的同步和仲裁通過“線與”來執(zhí)行,SCL的低電平時間取決于低電平時間最長的主機,高電平時間取決于高電平時間最短的主機。

           仲裁過程在數(shù)據(jù)線SDA線上進行,當SCL為高電平時,如果SDA線上有主機發(fā)送低電平,則發(fā)送高電平的主機將關閉輸出級。因為的狀態(tài)和自身內(nèi)部不一樣,于是發(fā)送低電平的主機贏得仲裁。仲裁可以持續(xù)多個位,在實際通信過程中,仲裁的第一階段比較地址位,如果多個主機尋址同一個從機,則繼續(xù)比較數(shù)據(jù)位(主機是發(fā)送機)或響應位(主機是接收機)。由于總線上的地址和數(shù)據(jù)由贏得總線的主機決定,因此仲裁過程中不會丟失信息。如果一個主機具有從機功能,則當它失去仲裁時,必須立即切換到從機狀態(tài),因為它可能正在被其他主機尋址。

            3 I2C總線

            I2C總線的主要作用是提供微(μC)和I2C總線之間的接口,為兩者之間的通信提供物理層協(xié)議的轉換。在應用系統(tǒng)中,外圍器件(如E2PROM、LCD、實時鐘等)連接在I2C總線上,再通過I2C總線控制器和μC連起來。其典型的應用,如現(xiàn)在許多彩電的控制系統(tǒng)都I2C總線。為了使清晰明了,本文將控制器的分成兩部分。一部分為微控制器(μC)接口,另一部分為I2C接口,如圖2所示。

          基于VHDL/CPLD的I2C串行總線控制器設計及實現(xiàn)

            μC接口部分主要包含狀態(tài)寄存器(MBSR)、控制寄存器(MBCR)、地址寄存器(MADR)、數(shù)據(jù)寄存器(MBDR)和地址譯碼/總線接口模塊。狀態(tài)寄存器指示I2C總線控制器的當前狀態(tài),如傳輸是否完成、總線是否忙等信息??刂萍拇嫫魇铅藽控制I2C總線控制器的主要途徑,通過置0/1完成I2C總線控制器使能、中斷使能、主/從(Master/Slave)模式選擇、產(chǎn)生起始位等操作。地址寄存器保存著I2C總線控制器作為從機時的地址。數(shù)據(jù)寄存器用于保存接收的數(shù)據(jù)或是待發(fā)送的數(shù)據(jù)。

          I2C接口的核心是主狀態(tài)機,它控制著整個I2C接口的運作。和I2C總線直接相連的模塊有起始/停止位產(chǎn)生模塊、I2C Header寄存器、I2C數(shù)據(jù)寄存器和仲裁及起始/停止位檢測模塊。當控制器是Master時,起始/停止位產(chǎn)生模塊用于在I2C總線上產(chǎn)生起始位和停止位;I2C數(shù)據(jù)寄存器用于保存總線上傳送的數(shù)據(jù);仲裁及起始/停止位檢測模塊的作用是執(zhí)行仲裁,并檢測I2C總線上的起始/停止位,以便為主狀態(tài)機提供輸入。其他模塊包括:I2C狀態(tài)寄存器,用于記錄I2C總線的狀態(tài);地址比較模塊,用于比較總線上傳送的地址和本機的從機地址是否一致,如果一致,說明其他主機正在尋址本控制器,控制器必須立即切換到從機狀態(tài),同時發(fā)出響應位。

            3.1 μC接口設計

            μC接口用于連接I2C接口電路和μC,主要兩者之間的信號交互握手機制。設計時可以用VHDL提供的狀態(tài)機來描述信號交互機制中的工作狀態(tài)切換,如圖3(a)所示。

            μC接口電路中使用的四組寄存器的地址是24位的,高16位為I2C總線控制器的基址(MBASE),占用μC的地址空間,低8位用于區(qū)別不同的寄存器。寄存器本身是8位的,圖3(b1)為控制寄存器,圖3(b2)為狀態(tài)寄存器。圖中示出了每一位的含義。

          基于VHDL/CPLD的I2C串行總線控制器設計及實現(xiàn)

            3.2 I2C接口設計

            I2C接口用于連接μC接口電路和I2C總線,由兩個狀態(tài)機構成:一個是I2C接口主狀態(tài)機,用于執(zhí)行發(fā)送和接收操作;另一個為“SCL/SDA/ STOP 產(chǎn)生”狀態(tài)機,當I2C總線控制器為主機時,這個狀態(tài)機產(chǎn)生SCL/START/STOP信號。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();