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

          新聞中心

          EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于PCI9054和LTC4240的CPCI總線接口設(shè)計(jì)

          基于PCI9054和LTC4240的CPCI總線接口設(shè)計(jì)

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

          簡(jiǎn)介

          是一個(gè)開放式、國(guó)際性技術(shù)標(biāo)準(zhǔn),由PCI工業(yè)計(jì)算機(jī)制造商組織PICMG(PCI Industrial Computer Manufacturer Group)負(fù)責(zé)制定和支持。總線具有嚴(yán)格的標(biāo)準(zhǔn)和規(guī)范,保證其具有良好的兼容性,支持多種處理器和操作系統(tǒng),符合CPCI規(guī)范的擴(kuò)展卡可插入任何CPCI系統(tǒng)并可靠地工作。CPCI標(biāo)準(zhǔn)將外設(shè)組件互連(PCI)標(biāo)準(zhǔn)特性與支持嵌入式應(yīng)用的堅(jiān)固機(jī)械外形完美結(jié)合在一起,其性能特征是專門針對(duì)工業(yè)環(huán)境而量身定制的。簡(jiǎn)單的說(shuō):CPCI總線=PCI總線的電氣規(guī)范+標(biāo)準(zhǔn)針孔連接器+歐洲卡規(guī)范。CPCIICMG2.0規(guī)范,其電氣特性與PCI總線相同,因此用戶的軟件和普通PC機(jī)兼容,現(xiàn)有的PCI外圍卡也可以很容易地移植到CPCI平臺(tái)上。CPCI使用高密度針孔總線連接器,和使用金手指連接器的PCI卡相比,具有連接更可靠,完全氣密的特點(diǎn),模塊的抗震性和抗腐蝕性高。CPCI還支持熱插拔,即可在不關(guān)機(jī)狀態(tài)下插入或取出板卡。熱插拔的優(yōu)點(diǎn)在于能增強(qiáng)系統(tǒng)性能或診斷系統(tǒng)故障而無(wú)需關(guān)閉系統(tǒng),這對(duì)很多應(yīng)用來(lái)說(shuō)十分重要。

          另外,CPCI在32位/33MHz系統(tǒng)中能夠提供132MB/s的背板傳輸能力,在64位/66MHz系統(tǒng)配置情況下的性能為528 MB/s。在對(duì)帶寬要求高的場(chǎng)合CPCI具有很強(qiáng)的優(yōu)勢(shì)。

          除了上述所有的優(yōu)點(diǎn),CPCI還具有非技術(shù)性的優(yōu)勢(shì),即經(jīng)濟(jì)實(shí)用、可快速推向市場(chǎng)以及高可靠性。所以,在當(dāng)今的工控、通信、軍事等諸多要求高可靠性領(lǐng)域中CPCI總線已經(jīng)取代了ISA、STD等其它總線,成為主流總線形式。


          C PCI系統(tǒng)硬件方案概述

          CPCI系統(tǒng)由機(jī)箱、電源、總線背板和功能單元組成。一般而言,CPCI機(jī)箱內(nèi)部就帶有電源和總線背板,其中CPCI總線背板如圖1所示。

          CPCI系統(tǒng)最多能加載的CPCI功能單元數(shù)取決于機(jī)箱所能提供的槽數(shù)n:一個(gè)CPCI系統(tǒng)由1個(gè)系統(tǒng)槽和(n-1)個(gè)外圍槽組成。在CPCI系統(tǒng)中,系統(tǒng)槽為系統(tǒng)提供仲裁、時(shí)鐘、中斷和復(fù)位功能,這些信號(hào)對(duì)總線上所有的功能單元起作用。

          在這個(gè)CPCI系統(tǒng)中,我們研制的實(shí)際上是一塊功能單元板,其硬件框圖如圖2所示。

          由于數(shù)字信號(hào)處理部分計(jì)算量大,且實(shí)時(shí)要求高,我們采用了FPGA和DSP協(xié)同處理數(shù)據(jù)的方案。在數(shù)字信號(hào)處理時(shí),低層的信號(hào)預(yù)處理算法處理的數(shù)據(jù)量大,對(duì)處理的速度要求高,但運(yùn)算結(jié)構(gòu)相對(duì)簡(jiǎn)單,因而適于用FPGA進(jìn)行硬件實(shí)現(xiàn),相比之下,高層處理算法所處理的數(shù)據(jù)量相對(duì)較小,但算法的控制結(jié)構(gòu)復(fù)雜,適于用運(yùn)算速度高、尋址方式靈活、通信機(jī)制強(qiáng)大的DSP芯片來(lái)實(shí)現(xiàn)。

          CPCI總線控制以及通信協(xié)議十分復(fù)雜,一般需要選用專門的處理芯片。我們這里選用了PLX公司的芯片,而電源管理選用了凌力爾特公司的芯片。


          CPCI總線

          PCI總線的實(shí)現(xiàn)

          PCI的實(shí)現(xiàn)通常有兩種方法:一種是用可編程器件FPGA或CPLD,另一種是用專用PCI接口芯片。二者各有優(yōu)缺點(diǎn):利用可編程器件自行PCI接口邏輯,可以根據(jù)具體的應(yīng)用需要,優(yōu)化接口邏輯,靈活性是該方法最大的特點(diǎn),且接口邏輯也可獲得較高的性能。但是由于PCI協(xié)議比較復(fù)雜,在具體的實(shí)現(xiàn)中也相當(dāng)困難,并且各種邏輯關(guān)系驗(yàn)證起來(lái)也很麻煩,有時(shí)會(huì)得不償失,把簡(jiǎn)單的設(shè)計(jì)變得復(fù)雜化了;而利用專用芯片來(lái)實(shí)現(xiàn)PCI總線接口是一種能夠解決設(shè)計(jì)難點(diǎn)的有效方法。但是這種芯片必須具有較低的成本和通用性,而不限于插卡一側(cè)的特定處理器總線,能夠優(yōu)化數(shù)據(jù)傳輸,提供配置空間,具備片內(nèi)FIFO功能(用于突發(fā)性傳輸)等。目前,很多半導(dǎo)體器件公司提供這類專用芯片。如PLX開發(fā)的PCI9030、 和AMCC開發(fā)的接口芯片S5933等。

          比較以上兩種實(shí)現(xiàn)PCI接口的方案可知,用可編程邏輯器件能夠較靈活地實(shí)現(xiàn)所需要的功能,但為了達(dá)到PCI指標(biāo)的苛刻要求,需要做大量的邏輯驗(yàn)證和時(shí)序分析工作。采用PCI專用芯片,可以比較容易地實(shí)現(xiàn)PCI接口,大大縮短開發(fā)時(shí)間,當(dāng)然,由于廠家設(shè)計(jì)芯片時(shí)對(duì)通用性的考慮,在用戶需要的某個(gè)方面可能不是最好的,但綜合性能方面,采用專用芯片要比用可編程器件設(shè)計(jì)好得多。

          我們最終選用了PLX公司的芯片。

          P CI9054是PLX公司生產(chǎn)的PCI總線通用接口芯片,采用先進(jìn)的PLX數(shù)據(jù)管道結(jié)構(gòu)技術(shù),符合PCIV2.1和V2.2規(guī)范。提供了兩個(gè)獨(dú)立的可編程DMA控制器。每個(gè)通道均支持塊和分散/集中的DMA方式:在PCI總線端支持32位/33MHz;本地端(local bus)可以編程實(shí)現(xiàn)8、16、32位的數(shù)據(jù)寬度,傳輸速率最高可達(dá)132MB/s。


          PCI9054與DSP的接口

          PCI9054作為一種橋接芯片在PCI總線和LOCAL總線之間提供傳遞消息,既可以作為兩個(gè)總線的主控設(shè)備去控制總線,也可以作為兩個(gè)總線的目標(biāo)設(shè)備去響應(yīng)總線。其本地總線可工作在M,C,J三種模式:M模式是專為Motorola公司的MCU設(shè)計(jì)的工作模式。C模式下9054芯片通過(guò)片內(nèi)邏輯控制將PCI的地址線和數(shù)據(jù)線分開,很方便地為本地工作時(shí)序提供各種工作方式,一般較廣泛應(yīng)用于系統(tǒng)設(shè)計(jì)中。J模式是一種沒有Local Master的工作模式。它的好處是地址數(shù)據(jù)線沒有分開,嚴(yán)格仿效PCI總線的時(shí)序。

          由于DSP我們采用了TI公司的C6202,考慮到與DSP的擴(kuò)展總線進(jìn)行接口,PCI9054的LOCAL總線選用了J模式。其連接如圖3所示。

          這種連接方式十分方便,幾乎不需要加多少改動(dòng),兩塊芯片就能互相通信。其部分引腳的邏輯轉(zhuǎn)換關(guān)系如圖4所示。

          熱插拔電路設(shè)計(jì)

          CPCI總線不同于PCI總線的最大特點(diǎn)是支持熱插拔(Hot Swap)。

          熱插拔技術(shù)概述

          CPCI熱插拔技術(shù)的基本目的是在系統(tǒng)正常工作的同時(shí),CPCI總線上插入或拔出插件板,完成故障插件板的更換與計(jì)算機(jī)系統(tǒng)的重新配置。熱插拔技術(shù)主要分為三種處理過(guò)程:

          1)物理連接過(guò)程

          熱插入――在工作著
          CPCI總線上加入插件板。
          熱拔出―― 在工作著
          CPCI總線上移走插件板。

          2)硬件連接過(guò)程

          計(jì)算機(jī)系統(tǒng)在硬件上的電氣連接與斷開。

          3)軟件連接過(guò)程

          計(jì)算機(jī)系統(tǒng)在軟件上的連接與斷開。
          這 些連接過(guò)程在系統(tǒng)中雖屬于不同的連接層,但是彼此相互關(guān)聯(lián)。例如:當(dāng)物理連接不存在時(shí),硬件連接層就不能產(chǎn)生電氣連接。而插件板從計(jì)算機(jī)系統(tǒng)的CPCI總線上拔出后,軟件與硬件連接將自動(dòng)斷開。

          熱插拔芯片介紹

          熱插拔控制器是凌力爾特公司研制的針對(duì)CPCI總線的熱插拔控制器,它使線路板能夠在帶電的CPCI總線插槽中安全地插入或拔出, 能控制全部4個(gè)CPCI電源,它使用兩個(gè)外部N溝道晶體管控制3.3V和5V電源,而12V電源則由兩個(gè)片上開關(guān)管調(diào)節(jié)。電子斷路器對(duì)所有4個(gè)電源進(jìn)行過(guò)流保護(hù),“電源良好”輸出信號(hào)表明所有電源電壓都在正常容限之內(nèi),另外,有 個(gè)內(nèi)置的I 2 C總線兼容接口,從而可用軟件控制和監(jiān)視器件功能及電源狀態(tài)。它還使用戶能夠開啟或關(guān)閉器件、置位RESETOUT、開啟狀態(tài)LED指示驅(qū)動(dòng)器以及不受12V電源故障的影響。這個(gè)器件還可為I/O引腳提供預(yù)充電偏壓.以及通過(guò)將PCI_RST信號(hào)和HEALTHY信號(hào)整合來(lái)產(chǎn)生LOCAL_PCI_RST信號(hào).并能滿足PCI定時(shí)要求,且不需要外部邏輯電路。其典型應(yīng)用如圖5所示。

          LTC4240工作過(guò)程

          1)板卡插入過(guò)程

          當(dāng)板卡插入背板時(shí),在CPCI接插件的防護(hù)地連接上,板卡上可能存在潛在的對(duì)地電壓放電。該熱插拔板將首先接觸到背板插件的長(zhǎng)針(+5V和地),即LTC4240的VCC管腳被加電,將對(duì)其后端電路進(jìn)行復(fù)位以關(guān)斷VGATE3/5輸出,從而禁止外部MOSFET管工作,并輸出1V參考電壓,此1V參考電壓對(duì)還未接觸到背板的I/O管腳加電,同時(shí)PWRGD#的輸出將被置高,接著I/O管腳接觸到背板插針上,BD_SEL#管腳被主機(jī)置低,以確認(rèn)板卡已經(jīng)被正確的插入,此時(shí)LTC4240控制的上電順序開始。LTC4240通過(guò)控制VGATE3/5的輸出來(lái)打開外部的MOSFET功率管。板卡上的電路都保持在復(fù)位狀態(tài),直到5和3V電源電壓穩(wěn)定,而且內(nèi)部復(fù)位時(shí)間計(jì)時(shí)器達(dá)到一定時(shí)間時(shí),復(fù)位信號(hào)停止,板卡進(jìn)入正常操作過(guò)程。

          在 正常工作過(guò)程中,LTC4240將持續(xù)監(jiān)控板卡的后端電壓,一旦電壓超過(guò)關(guān)斷電壓閾值,LTC4240將控制PWRGD#輸出為低,以使主機(jī)檢測(cè)到該信號(hào)并指示板卡電源有問(wèn)題。

          2)板卡拔出過(guò)程

          板卡拔出時(shí),首先將BD_SEL#與地?cái)嚅_,LTC4240則立即關(guān)斷VGATE3/5輸出,并改變PWRGD#的狀態(tài),同時(shí)將LOCAL_PCI_RST#輸出置低,并將總線I/O接口電路置為高阻態(tài),這時(shí)電源依舊對(duì)I/O腳加電,以使總線從激活狀態(tài)平穩(wěn)轉(zhuǎn)為非供電狀態(tài)。一旦I/O腳與背板插針斷開,板卡上的電路和LTC4240將通過(guò)最后斷開的長(zhǎng)針進(jìn)行最后的放電過(guò)程。

          寄存器配置

          設(shè)計(jì)好接口電路后,硬件設(shè)計(jì)工作還只完成了一半。由于PCI9054是通用PCI接口功能芯片,它的功能還不一定能夠滿足用戶的需求,所 以還要進(jìn)行功能寄存器設(shè)置以使接口電路具有特定的功能。寄存器的配置包括EEPROM初始化、LOCAL功能寄存器和PCI配置寄存器的配置。

          1)EEPROM初始化

          在計(jì)算機(jī)的加電自檢期間,PCI總線的RST#信號(hào)復(fù)位,PCI9054內(nèi)部寄存器的默認(rèn)值作為回應(yīng)。PCI9054輸出本地LRESET#信號(hào)并檢測(cè)串行EEPROM。如果串行EEPROM中的前33個(gè)比特不全為1,那么PCI9054確定串行EEPROM非空,用戶可通過(guò)向PCI9054的寄存器CNTRL的29位寫1來(lái)加載EEPROM的內(nèi)容到PCI9054的內(nèi)部寄存器,配置的信息(設(shè)備識(shí)別號(hào)、供應(yīng)商代碼號(hào)、Local總線三個(gè)空間的大小以及三個(gè)空間的基址等)事先要利用編程器寫入配置存儲(chǔ)器中,也可以在主機(jī)的專用程序中對(duì)EEPROM進(jìn)行配置。

          2)PCI配置寄存器的配置

          配置PCI配置寄存器比較簡(jiǎn)單。主要是填寫生產(chǎn)商ID號(hào)、器件ID號(hào)、類碼子系統(tǒng)ID號(hào)和子系統(tǒng)生產(chǎn)商ID號(hào)。

          3)本地配置寄存器的配置

          對(duì) 于本地配置寄存器的配置就是對(duì)本地地址空間及其本地總線屬性的配置。這些配置要根據(jù)實(shí)際開發(fā)的硬件板卡的硬件資源進(jìn)行配置。

          設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)

          在完成上述工作以后,還需在主控板(相當(dāng)一臺(tái)高性能計(jì)算機(jī))上完成設(shè)備驅(qū)動(dòng)程序。其關(guān)鍵是如何完成硬件操作,基本功能是完成設(shè)備的初始化、對(duì)端口的讀寫操作、中斷的設(shè)置和響應(yīng)及中斷的調(diào)用,以及對(duì)內(nèi)存的直接讀寫。在windows下有很多驅(qū)動(dòng)程序開發(fā)環(huán)境,只需根據(jù)硬件的具體情況,很方便就能完成驅(qū)動(dòng)程序的編制。


          結(jié)束語(yǔ)

          我們研制的設(shè)備實(shí)際上是一個(gè)通用硬件平臺(tái),通過(guò)加載不同軟件,它需要完成很多復(fù)雜信號(hào)的檢測(cè)、解調(diào)等功能,由于受到硬件運(yùn)算速度、存儲(chǔ)量等資源限制,這些信號(hào)處理僅靠底層的硬件電路(如DSP、FPGA)將很難滿足要求,這就需要傳給主控板處理;另外,考慮到應(yīng)用的場(chǎng)合,CPCI總線系統(tǒng)很適合我們的要求,其接口設(shè)計(jì)就成為十分重要的部分,需要從軟硬件兩個(gè)方面全盤考慮、精心設(shè)計(jì),才能達(dá)到預(yù)期目標(biāo)。



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