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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的PCI總線接口原理研究與設(shè)計

          基于FPGA的PCI總線接口原理研究與設(shè)計

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

            ● 時序控制

            在時序控制程序中采用狀態(tài)機模型來實現(xiàn)不同時序的轉(zhuǎn)換。各種命令、數(shù)據(jù)交換、控制均在狀態(tài)機的管理下進(jìn)行工作。PCI總線上的信號是并行工作的,因此,對應(yīng)每個狀態(tài)必須明確其執(zhí)行的任務(wù)。這些任務(wù)要用VHDL的進(jìn)程語句來描述所發(fā)生的事件。本設(shè)計中的狀態(tài)機共使用了6種狀態(tài),它以從設(shè)備響應(yīng)狀況為依據(jù),主要以DEVSEL#信號和TRDY#信號的狀況為依據(jù)。狀態(tài)機如圖1所示,分別對應(yīng)空閑狀態(tài)(此狀態(tài)DEVSEL#、TRDY#和STOP#以及其他輸出信號為高阻態(tài));準(zhǔn)備狀態(tài)、DEVSEL#和TRDY#均為高電平狀態(tài),DEVSEL#為低電平且TRDY#為高電平狀態(tài),DEVSEL#和TRDY#均為低電平狀態(tài);操作結(jié)束狀態(tài)(此狀態(tài)使DEVSEL#、TRDY#和STOP#維持一個周期高電平)。本系統(tǒng)接到復(fù)位信號后對系統(tǒng)進(jìn)行復(fù)位,然后轉(zhuǎn)入空閑狀態(tài),在空閑狀態(tài)中采樣總線,并根據(jù)總線的變化來決定下一個時鐘上升沿后狀態(tài)機轉(zhuǎn)入何種狀態(tài),這些時序和程序中用到的信號都是基本且必須的,在進(jìn)行開發(fā)時可以根據(jù)需要增添必要的狀態(tài)和信號,VHDL對狀態(tài)機的描述如下。

          狀態(tài)機

            type pci_state is (Idle, Ready, DevTrdyHi, DevLoTrdyHi, DevTrdyLo, OprOver);

            signal c_state :pci_state;

            Idle為空閑狀態(tài);Ready為準(zhǔn)備狀態(tài);DevTrdyHi表示DEVSEL#和TRDY#均為高電平狀態(tài);DevLoTrdyHi表示DEVSEL#為低電平且TRDY#為高電平狀態(tài);DevTrdyLo表示DEVSEL#和TRDY#均為低電平狀態(tài);OprOverr表示操作結(jié)束狀態(tài)。

            程序如下。

          程序

          程序

            下一步應(yīng)列出每個狀態(tài)所對應(yīng)的并發(fā)事件,寫出相關(guān)的進(jìn)程。進(jìn)程語句是一個并行語句,它定義進(jìn)程被激活時將要執(zhí)行的特定行為。例如,在Ready狀態(tài)時,就要判斷從主設(shè)備方發(fā)來的地址信息是否與從設(shè)備地址相同,因此要寫出地址比較進(jìn)程。



          關(guān)鍵詞: FPGA PCI總線接口

          評論


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