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

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于PCI9054橋路器的數(shù)據(jù)傳輸?shù)慕涌谶壿嬙O(shè)計(jì)

          基于PCI9054橋路器的數(shù)據(jù)傳輸?shù)慕涌谶壿嬙O(shè)計(jì)

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

            PCI總線支持突發(fā)傳送,多處理器和并發(fā)工作,廣泛應(yīng)用于各種平臺(tái)板也廣泛地應(yīng)用于各種高速、大數(shù)據(jù)量的處理系統(tǒng)。由于橋接有PCI總線和本地總線,開發(fā)者不必過(guò)多考慮復(fù)雜的PCI總線規(guī)范,從而能有更多精力開發(fā)硬件和驅(qū)動(dòng)程序。

          本文引用地址:http://www.ex-cimer.com/article/157089.htm

            這里以為例,給出了板的硬件和軟件,詳細(xì)論述了該系統(tǒng)設(shè)計(jì)的原理圖和用VHDL語(yǔ)言編寫的部分源程序,以供相關(guān)開發(fā)人員參考。

            1 PCI9054簡(jiǎn)介

            PCI9054是PLX公司推出的一種32位33 MHz的PCI總線主控I/O加速器,它采用PLX在業(yè)界領(lǐng)先的數(shù)據(jù)流水線框架,包含DMA引擎,可編程的PCI起始器和目標(biāo)模式以及PCI信息傳輸功能。遵循PCI2.2版規(guī)范,可獲得最高可達(dá)132 MB/s的突發(fā)傳輸速度。它使復(fù)雜的PCI應(yīng)用設(shè)計(jì)變得相對(duì)簡(jiǎn)單,目前已成為主流的PCI接口器件之一。

            PCI9054有3種方式:主模式、從模式和DMA方式。其內(nèi)部具有2個(gè)DMA數(shù)據(jù)通道,每個(gè)通道均支持塊Scatter/Gather的DMA方式,雙向數(shù)據(jù)通路上各有6個(gè)FIF0進(jìn)行數(shù)據(jù)緩沖,可同時(shí)進(jìn)行高速的數(shù)據(jù)接收和發(fā)送,8個(gè)32位Mailbox寄存器可為雙向數(shù)據(jù)通路提供消息傳送,PCI9054內(nèi)部框圖,如圖1所示。

            


            PCI9054的本地總線有M、C、J 3種工作模式,可通過(guò)模式選擇引腳MODE[1:0]進(jìn)行控制,其中C模式能夠滿足絕大多數(shù)的應(yīng)用需求,而且C模式的本地總線操作時(shí)序最為簡(jiǎn)單,控制相對(duì)容易,其開發(fā)難度相對(duì)較低。C模式下PCI9054通過(guò)片內(nèi)控制將PCI的地址線和數(shù)據(jù)線分開,很方便地為本地工作時(shí)序提供各種工作方式,一般較廣泛應(yīng)用于系統(tǒng)設(shè)計(jì)中。因此,如無(wú)特殊需求,建議采用C模式,這也是本接口卡所采用的模式,同時(shí)PCI9054的本地總線時(shí)鐘可由外部提供,該時(shí)鐘可和PCI時(shí)鐘異步。

            2 接口卡硬件設(shè)計(jì)

            接口卡主要功能是:對(duì)外設(shè)裝置進(jìn)行工作模式和狀態(tài)檢測(cè),控制端對(duì)檢測(cè)結(jié)果進(jìn)行相應(yīng)的數(shù)據(jù)接收或發(fā)送操作。其工作流程是:由控制端提出請(qǐng)求,根據(jù)進(jìn)入接口卡的信號(hào)對(duì)外部設(shè)備進(jìn)行工作模式和狀態(tài)檢測(cè)并決定是否對(duì)進(jìn)入外設(shè)的信號(hào)進(jìn)行接收或發(fā)送。機(jī)械特性方面,接口卡遵從Eurocard工業(yè)標(biāo)準(zhǔn),采用6U(233.35 mmxl60 mm)結(jié)構(gòu)。接口卡的邏輯框圖如圖2所示。

            

            由圖2可知,接口卡分為3個(gè)部分:PCI總線接口、本地總線接口和串行EEPROM接口。

            2.1 PCI9054與PCI總線接口

            PCI9054與PCI總線接口的連接實(shí)際上是PCI9054與cPCI連接器Jl的連接,即PCI9054的PCI端信號(hào)線通過(guò)10Ω的端接電阻與PCI插槽的相應(yīng)信號(hào)線對(duì)應(yīng)連接。PCI總線接口信號(hào)包括地址數(shù)據(jù)復(fù)用信號(hào)線、接口控制信號(hào)線、中斷信號(hào)線等。PCB設(shè)計(jì)時(shí),為了滿足反射條件,需注意PCI總線信號(hào)的布線及長(zhǎng)度,普通信號(hào)長(zhǎng)度,從連接器到PCI橋器件間距應(yīng)不大于1.5英寸(3.81 cm),PCI_CLK信號(hào)布線長(zhǎng)度為2.5±0.1英寸,否則會(huì)導(dǎo)致信號(hào)不穩(wěn)定甚至總線沖突,無(wú)法開機(jī)。PCI9054內(nèi)部有可編程的FIF0,實(shí)現(xiàn)零等待突發(fā)傳輸及本地總線與PCI總線之間的異步操作,本地總線時(shí)鐘由外部提供,該時(shí)鐘可以和PCI時(shí)鐘(33 MHz)異步,本地總線選擇工作在50 MHz,由頻率為50 MHz的晶振OSCl產(chǎn)生,同時(shí)

            送往PCI9054本地端的時(shí)鐘信號(hào)LCLK與送往CPLD的時(shí)鐘信號(hào)CCLK要等長(zhǎng),以保持它們同步。

            2.2 PCI9054與本地總線接口

            本接口卡中的CPLD采用Xilinx公司生產(chǎn)的XC95288XL,實(shí)現(xiàn)對(duì)接口卡的邏輯控制。C模式下PCI9054通過(guò)片內(nèi)邏輯控制將PCI的地址線和數(shù)據(jù)線分開,然后與CPLD相對(duì)應(yīng)的引腳連接,能方便為本地工作時(shí)序提供各種工作方式,一般廣泛應(yīng)用于系統(tǒng)設(shè)計(jì)。

            

            本地總線部分中的INPUT_BUFFER部分主要由差分電壓比較器組成,如圖3所示。當(dāng)從J4進(jìn)入的信號(hào)電壓(引腳7)大于基準(zhǔn)電壓(引腳6)時(shí),輸出高電平(引腳1)并進(jìn)入CPLD,控制器通過(guò)PCI9054讀入。0UT_BUFFER部分主要是實(shí)現(xiàn)控制器對(duì)外設(shè)接收或發(fā)送數(shù)據(jù)的控制。

            2.3 PCI9054與EEPROM接口

            PCI9054提供4個(gè)引腳EEDI,EED0,EESK,EECS與串行EEPROM-93LC56的4個(gè)引腳DI、D0、SK、CS相連,此外93LC56的VCC引腳需要接+3.3 V電源,GND接地。因?yàn)樾枰獙?duì)串行EEPROM進(jìn)行寫操作,串行EEPROM需處于可編程而且非保護(hù)狀態(tài),所以PE通過(guò)10 kΩ的電阻上拉后接高電平3.3 V電壓,而PRE通過(guò)10 kΩ的電阻下拉后接地。EEPROM原理圖如圖4所示。

            


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

          評(píng)論


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