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

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 基于GAL的I2C總線時序模擬

          基于GAL的I2C總線時序模擬

          作者: 時間:2012-05-15 來源:網(wǎng)絡 收藏
          -stroke-width: 0px">基于GAL的I2C總線時序模擬

            圖2中,撥碼開關K用以設定作為計算機外設的FI1256 MK2的地址,U1用于計算機訪問外設時地址的譯碼,U2則用于實現(xiàn)用ISA總線的兩條數(shù)據(jù)線模擬時序。下面給出兩片的邏輯方程(以FAST-MAP格式書寫),并對照方程簡要說明電路所實現(xiàn)的功能。

            

          基于GAL的I2C總線時序模擬

            通過以上方程可使U1完成地址的譯碼功能。當ISA總線上出現(xiàn)的外設地址與撥碼開關設定的地址相匹配時,在其地址有效輸出端ADDR上將得到高電平。由于最多只能有8個或項,所以方程中使用了ADD1和ADD2兩個中間運算結果,他們被當作反饋信號在內(nèi)部重新引到輸入端。使用AEN信號是為了在DMA周期內(nèi)屏蔽總線上出現(xiàn)的地址。

            U2的時鐘信號是由地址ADDR和外設寫信號IOW的引入是為了消除總線上出現(xiàn)訪問內(nèi)存的信號,同時利用其上升沿鎖存數(shù)據(jù)。SCL和SDA可分別用數(shù)據(jù)線D0和D1模擬。當一個外設寫周期過后,D0和D1的數(shù)據(jù)將鎖存在SDA和SCL上,而在下一個對相同外設地址的外設寫周期到來之前是不變的。這就使得的時序可以在D0和D1兩根數(shù)據(jù)線上通過間隔輸出數(shù)據(jù)的方式獲得。

            通過分析圖1給出的數(shù)據(jù)傳輸格式,可以把傳送的數(shù)據(jù)流劃分為三種傳送狀態(tài),即傳送起始信號、傳送終止信號和傳送一個字節(jié)(后面帶一個應答位)。不同的數(shù)據(jù)過程只是寫入的數(shù)據(jù)字節(jié)數(shù)目不同。只要模擬軟件能實現(xiàn)上述三種傳送狀態(tài),就可以模擬出任何的主控器寫操作過程。因此可以用下列子程序分別實現(xiàn)上述三種傳送狀態(tài)。

          (1)字節(jié)傳送子程序

            由于SCL和SDA是用D1和D0模擬的,所以,只要往設定的I/O地址傳送相應的數(shù)據(jù)就可以模擬傳送不同的數(shù)據(jù)字節(jié)。為了保證數(shù)據(jù)的可靠傳輸,規(guī)范對總線上的時序作了嚴格的規(guī)定。實驗證明,ISA總線上信號的上升沿和下降沿都在10ns以內(nèi),完全可以滿足I2C總線對上升沿與下降沿的要求,所以不需考慮信號的上升與下降時間,而只需考慮信號的建立和保持所需的時間即可。

            根據(jù)對I2C的定時要求,可以在SCL低電平的中點將信號進行分割,并把一個字節(jié)數(shù)據(jù)分為8個比特來分別進行傳送(傳送0和1分別用兩個子程序實現(xiàn)),從而使SDA線上的數(shù)據(jù)變化總是處在SCL低電平的中點。圖3所示是傳送一比特數(shù)據(jù)的定時時序圖。

            由于在對FI1256 MK2的操作過程對實時性要求不是太高,所以可以使傳送一比特數(shù)據(jù)的三個狀態(tài)都持續(xù)5.0μs,這樣,就可以滿足所有的定時要求。把圖3中的兩個定時圖進行組合即可傳送任意的數(shù)據(jù)字節(jié)。在每個數(shù)據(jù)字節(jié)的8比特數(shù)據(jù)后,都會在SCL上送出一個時鐘周期而讓SDA保持高電平,以使FI1256 MK2送出應答信號。應答信號定時圖與圖3(a)相同。

            

          基于GAL的I2C總線時序模擬



          關鍵詞: GAL I2C總線 時序模擬

          評論


          相關推薦

          技術專區(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); })();