<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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


3 存儲器和I/O操作

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

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

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

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

(4)在編寫(xiě)設備驅動(dòng)程序時(shí),存儲器空間用程序指針進(jìn)行訪(fǎng)問(wèn),I/O空間則用專(zhuān)用的函數進(jìn)行訪(fǎng)問(wèn)。

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



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

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

  DMA和突發(fā)數據傳輸的作用是不同的。中有兩個(gè)DMA通道,可以獨立工作,互不干擾。采用DMA方式傳輸數據,可以節省CPU資源;采用突發(fā)方式傳輸數據可以提高數據的傳輸率,充分發(fā)揮PCI總線(xiàn)數據傳輸率高的優(yōu)點(diǎn)。因此,在高速大容量數據傳輸和處理系統中,將DMA和突發(fā)數據傳輸方式結合在一起是比較理想的,一方面可以充分發(fā)揮PCI總線(xiàn)的性能,另一方面可以將節省出的CPU資源對數據處理算法進(jìn)行優(yōu)化。圖3是PCI9054在C模式正氣突發(fā)數據傳輸方式的時(shí)序圖。

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

使用DMA和突發(fā)方式相結合進(jìn)行數據傳輸時(shí),驅動(dòng)程序要作為如下設置:

(1)調用驅動(dòng)程序中相應的API函數,找到PC機的物理地址;

(2)在設備驅動(dòng)程序中使能突發(fā)寄存器;

(3)在設備驅動(dòng)程序中使能總線(xiàn)位寬寄存器;

(4)在設備驅動(dòng)程序中使能相應的寄存器,指明DMA傳輸的方向是PCI→LOCAL還是LOCAL→PCI;

(5)在設備驅動(dòng)程序中指明本次DMA傳輸需要傳輸的字節數。

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

5 PCI中斷

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

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

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

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

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



上一頁(yè) 1 2 下一頁(yè)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>