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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PCI9054芯片接口設(shè)計中若干問題的深入研究

          PCI9054芯片接口設(shè)計中若干問題的深入研究

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


          3 存儲器和I/O操作

            通常PCI擴展板應(yīng)該有配置空間、存儲器空間和I/O空間三類資源。空間配置是必須的,根據(jù)設(shè)計需要,后兩種資源可以只包含其中之一。有S0和S1兩個配置空間,兩個配置空間都可以配置成存儲器空間和I/O空間,存儲器空間和I/O空間的配置既有相同之處,也有很大的區(qū)別。其相同點為兩者都以字節(jié)為單位進行空間配置。不同之處有以下幾點:

          (1)存儲器空間支持0~4GB的空間配置和映射,而I/O空間只支持0~256字節(jié)的空間配置和映射;

          (2)存儲器空間支持8位、16位和32位總線位寬配置和操作,而I/O空間只支持32位總線位寬配置和操作;

          (3)存儲器空間支持單一周期和突發(fā)模式讀寫操作,而I/O空間只支持單一周期讀寫操作;

          (4)在編寫設(shè)備驅(qū)動程序時,存儲器空間用程序指針進行訪問,I/O空間則用專用的函數(shù)進行訪問。

          如果不清楚存儲器空間和I/O空間的異同步,有可能配錯相應(yīng)的寄存器。當(dāng)計算機重新啟動時,很有可能會啟動不起來。除此之外,值得注意的是:在配置存儲器空間和I/O空間時,不要將兩種硬件資源配置到相同的空間,導(dǎo)致空間重疊,使驅(qū)動程序產(chǎn)生誤操作。



          4 和突發(fā)數(shù)據(jù)傳輸

            在《-DataBook》中,每種工作模式都將和突發(fā)數(shù)據(jù)傳輸?shù)臅r序圖放在一起,這并不意味著和突發(fā)數(shù)據(jù)傳輸是等同的,這是兩個不同的概念。事實上,既可利用一周期的總線操作也可以利用DMA方式進行數(shù)據(jù)傳輸。

            DMA和突發(fā)數(shù)據(jù)傳輸?shù)淖饔檬遣煌摹?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/PCI9054">PCI9054中有兩個DMA通道,可以獨立工作,互不干擾。采用DMA方式傳輸數(shù)據(jù),可以節(jié)省CPU資源;采用突發(fā)方式傳輸數(shù)據(jù)可以提高數(shù)據(jù)的傳輸率,充分發(fā)揮PCI總線數(shù)據(jù)傳輸率高的優(yōu)點。因此,在高速大容量數(shù)據(jù)傳輸和處理系統(tǒng)中,將DMA和突發(fā)數(shù)據(jù)傳輸方式結(jié)合在一起是比較理想的,一方面可以充分發(fā)揮PCI總線的性能,另一方面可以將節(jié)省出的CPU資源對數(shù)據(jù)處理算法進行優(yōu)化。圖3是PCI9054在C模式正氣突發(fā)數(shù)據(jù)傳輸方式的時序圖。

            從圖1和圖3可以看出,用狀態(tài)機實現(xiàn)該控制邏輯是比較理想的。圖4是PCI9054在C模式下采用單一周期和突發(fā)相結(jié)合的總線訪問狀態(tài)轉(zhuǎn)換圖。用該狀態(tài)轉(zhuǎn)換圖設(shè)計出的邏輯電路既可滿足單一周期總線訪問的需要,又可以滿足突發(fā)方式傳輸數(shù)據(jù)的需要,具有很大的實用價值。

          使用DMA和突發(fā)方式相結(jié)合進行數(shù)據(jù)傳輸時,驅(qū)動程序要作為如下設(shè)置:

          (1)調(diào)用驅(qū)動程序中相應(yīng)的API函數(shù),找到PC機的物理地址;

          (2)在設(shè)備驅(qū)動程序中使能突發(fā)寄存器;

          (3)在設(shè)備驅(qū)動程序中使能總線位寬寄存器;

          (4)在設(shè)備驅(qū)動程序中使能相應(yīng)的寄存器,指明DMA傳輸?shù)姆较蚴荘CI→LOCAL還是LOCAL→PCI;

          (5)在設(shè)備驅(qū)動程序中指明本次DMA傳輸需要傳輸?shù)淖止?jié)數(shù)。

          完成上述設(shè)置后,即可在突發(fā)方式下進行DMA傳輸,否則DMA傳輸會失敗。

          5 PCI中斷

            PCI總線采用的是中斷共享機制,所有的PCI擴展板在PCM插槽上共用一根信號線INTA#,通過電平觸發(fā)方式響應(yīng)PCI中斷。每塊PCI擴展板上的PCI9054提供的中斷使能寄存器和中斷狀態(tài)寄存器能識別相應(yīng)板卡上十幾種類開的PCI中斷。

            當(dāng)PCI插槽上只有一塊PCI擴展板,而系統(tǒng)需要使用某種PCI中斷時,則在主程序中將相應(yīng)的中斷使能寄存器置位,當(dāng)相應(yīng)的中斷源中斷信號到來時,與主板相連的信號線INTA#置一段時間低電平后,中斷狀態(tài)寄存器中的相應(yīng)位被置位。當(dāng)這兩個寄存器的相應(yīng)位都有效時,計算機響應(yīng)相應(yīng)的PCI中斷,執(zhí)行中斷服務(wù)子程序。在《PCI9054-DataBool》中,INTA#信號為11個本地總線時鐘周期,該時序圖給不少設(shè)計人員帶來了很多困惑。根據(jù)筆者的應(yīng)用經(jīng)驗,INTA#信號在7μs左右是比較理想的,這與在Windows下PCI總線每秒鐘可以響應(yīng)十幾萬次中斷的相關(guān)資料是相符的。

            當(dāng)PCI插槽上有多塊PCI擴展板需要用到中斷功能時,其工作過程與一塊PCI擴展板差不多。唯一不同的是,首先驅(qū)動程序要利用一系列設(shè)備寄存器對擴展板進行設(shè)備識別,然后利用中斷使能寄存器和中斷狀態(tài)寄存器對中斷類型進行識別,最后響應(yīng)相應(yīng)的中斷服務(wù)子程序。

            在網(wǎng)上經(jīng)??吹揭恍?yīng)用PCI9054的設(shè)計人員被以上討論的問題所困擾,筆者在近兩年從事PCI9054芯片應(yīng)用設(shè)計中,也曾被這些問題困擾過。本文從這些方面對PCI9054芯片的應(yīng)用進行了深入的探討和總結(jié),提出的所有技術(shù)解決方案都經(jīng)過實驗驗證是可行的,這些內(nèi)容在以往公開發(fā)表的論文中一般比較可見。本文探討的內(nèi)容對從事PCI9054芯片應(yīng)用設(shè)計的人員應(yīng)該會有一定的參考價值。

          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理



          上一頁 1 2 下一頁

          關(guān)鍵詞: PCI9054 DMA 仲裁中斷

          評論


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