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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用雙端口RAM實現(xiàn)與PCI總線接口數(shù)據(jù)通訊

          用雙端口RAM實現(xiàn)與PCI總線接口數(shù)據(jù)通訊

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

            2.1PCI9030內(nèi)部結(jié)構及其數(shù)據(jù)傳輸

            PCI9030是PLX公司開發(fā)的PCI總線目標接口芯片。其特點:低功耗,PQFP176針封裝,符合PCIV2.2規(guī)范;在PCI總線上是從設備,但在局部總線上是主設備;PCI9030支持突發(fā)傳輸,有5個PCI總線到局部總線地址空間,9個可編程的通用I/O,4個可編程的片選,支持熱插拔。PCI 9030主要由PCI總線接口邏輯、局部總線接口邏輯、串行E2PROM接口邏輯和內(nèi)部邏輯組成,結(jié)構框圖見圖3。

            PCI9030支持PCI主設備直接訪問局部總線上的設備,數(shù)據(jù)傳輸方式分為內(nèi)存映射的突發(fā)傳輸和I/O映射的單次傳輸,并且由PCI基址寄存器設置在PCI內(nèi)存和I/O空間中的合適位置,另外局部映射寄存器允許PCI地址空間轉(zhuǎn)換到局部地址空間。

            2.2配置實例

            系統(tǒng)訪問的雙口RAM存儲空間為2KB,要求將這個存儲器空間映射到局部地址空間0,采用內(nèi)存方式映射,存儲器的數(shù)據(jù)寬度為8位,并且不采用突發(fā)傳輸,讀寫時不可預取。下面介紹這個地址空間各個寄存器的具體配置過程。

            (1)配置地址范圍寄存器

            根據(jù)PCI配置寄存器與LAS0RR的對應關系以及雙口RAM的地址空間800H,取7FFH的補碼得到FFFFF800H。又因為按照設計要求,要映射到內(nèi)存空間的任何位置并且設置為不可預取的,這樣LASORR寄存器后3位應該為000H。所以LAS0RR的值應該最終確定為FFFFF800H。

            (2)配置基址寄存器

            該寄存器的基址必須是地址空間范圍的整數(shù)倍,在本例中必須是2K的整數(shù)倍,可將基地址定為00004000H,又由于基址寄存器位0為空間使能位,所以應將這一位設置1;至于位2、位3,由于是映射到內(nèi)存空間,設為00H即可。所以LAS0BA的值最終被確定為00004001H。

            (3)配置片選信號控制寄存器

            該寄存器的地址范圍和基地址必須與LAS0RR或LAS0BA所定義的范圍和空間相對應??筛鶕?jù)PCI9030提供的配置寄存器的方法確定CS0BASE的數(shù)值:板卡的2KB空間可以用十六進制表示為800H,將800H右移一位得到400H,然后將基地址加到400H左邊的任何一位中。因為所采用的基地址為00004000H,所以得到的值為00004400H;又因為第1位為片選使能位,應該設置為1。所以最終確定的數(shù)值為00004401H。

            由于局部總線采用8位的寬度,將工作方式定義在不使能突發(fā),不預取,配置總線區(qū)域描述寄存器的數(shù)值確定為400140A2H。另外,還要根據(jù)要求設置CNTRL寄存器控制PCI9030的工作狀態(tài),確定為18784500H。當所有這些數(shù)據(jù)都配置完成后,便可將這些數(shù)據(jù)按照加載順序?qū)懭氪蠩2PROM中,從而完成整個系統(tǒng)的配置。

            通過這幾個寄存器的配置,一個局部地址空間便可以確定下來。在系統(tǒng)上電后,系統(tǒng)BIOS根據(jù)這幾個寄存器的內(nèi)容將板卡上2KB的RAM空間重映射到PCI空間中,使主機可以像訪問自己的地址空間一樣訪問板卡上的RAM。



          評論


          相關推薦

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