當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]摘要:介紹機載嵌入式PCI總線硬件設計、軟件測試方法。在分布式系統(tǒng)結(jié)構設計具有典型性和實用性。內(nèi)容充實,信息量大,工程實踐性強。 關鍵詞:PCI總線 地址映射 主設備

摘要:介紹機載嵌入式PCI總線硬件設計、軟件測試方法。在分布式系統(tǒng)結(jié)構設計具有典型性和實用性。內(nèi)容充實,信息量大,工程實踐性強。 關鍵詞:PCI總線 地址映射 主設備 PCI總線起源于微型計算機,已經(jīng)成為微型計算機事實上的總線標準。因其眾多的功能、強大的兼容性而獨領風騷。為PCI局部總線設計的器件是針對PCI而不是針對特定的CPU處理器,獨立于處理器的升級。其目標是實現(xiàn)電流盡可能小的系統(tǒng),功耗低。軟件透明,在和PCI設備之間通信時,軟件驅(qū)動之間使用相同的命令集和狀態(tài)定義。隨著嵌入式計算機的發(fā)展,PCI總線也越來越多地被引入到嵌入式系統(tǒng)中。本文介紹在“十五”預研項目中實現(xiàn)嵌入式PCI總線的一些經(jīng)驗體會,與大家切磋。 1 PCI總線概述 PCI(Peripheral Component Interconnect)總線,即外設部件互聯(lián)總線。在PCI應用系統(tǒng)中,如果某設備取得了總線控制權,就稱其為“主設備”(master),而被主設備選中以進行通信的設備稱為“從設備”(slave)。圖1是PCI總線信號匯總。


系統(tǒng)信號包括復位信號RST和時鐘信號CLK。仲裁信號有總線申請REQ和總線授權信號GNT。接口控制信號包括主設備啟動PCI交易的FRAME信號、主設備的交易數(shù)據(jù)有效信號IRDY和目標完成本次數(shù)據(jù)交易的信號TRDY等。PCI沒有一般數(shù)據(jù)周期的讀寫信號,而是采用命令編碼形式定義本次PCI周期的讀寫屬性。每個PCI周期由主設備啟動,在第一個時鐘周期,AD[31..0]信號承載地址信息,C/BE[3..0]的組合代表命令,定義PCI周期。第二個時鐘手,AD[31..0]由提供數(shù)據(jù)一方驅(qū)動,C/BE[3..0]的組合代表有效的字節(jié)。詳細情況可參閱參考文獻,亦即PCI規(guī)范。 2 PCI總線設計 目前有眾多的能支持PCI總線的廠家和芯片。其中以美國PLX公司的PCI9056功能最完備,使用簡易。下面的設計以PCI9056為主要模型。 2.1 PCI系統(tǒng)時鐘 PIC總線的信號驅(qū)動采用反射波方式而不是傳統(tǒng)的入射波。這樣,對各設備采樣時刻的偏差要求很高,亦即時鐘的偏斜(skew)應盡可能小,最大的時鐘偏斜 ≤2ns。最好整個PCI系統(tǒng)各設備采用同一時刻;但同一時鐘的驅(qū)動能力有限,不可能同步驅(qū)動所有PCI設備。IDT74CT3807時鐘驅(qū)動器可以解決這個問題。它將一個時鐘源泉轉(zhuǎn)換為10個等同的時鐘,各時鐘之間的偏斜≤350ps。圖2是PCI時鐘解決方案。 顯然,除去中央資源,這個PCI系統(tǒng)最多可以帶9個設備,對于嵌入式系統(tǒng)來說已經(jīng)足夠了。在PCI底板上,為保證時鐘的偏斜率,各PCI時鐘必須走等長線。 2.2 中央資源和PCI適配器 在PCI系統(tǒng)總線中,必須存在一個PCI主橋(Host)管理整個總線。主橋提供系統(tǒng)信號和進行PCI部遲疑不決仲裁。PCI9056可以工作在Host 方式下,也可以作為普通PCI適配器。圖3是兩種工作模式原理。


當HOSTEN引腳連接地時,PCI9056工作在Host模式,亦即成為系統(tǒng)的中央資源,圖3(a)就是這種情況。圖3(b)工作在適配器模式。在 Host模式時,PCI9056的局部復位LRESET是輸入,接收來自局部CPU等的復位,然后在RST產(chǎn)生PCI總線復位,去復位整個PCI總線上的其它設備。而工作在適配器模式下的PCI9056剛好相反,RST接收來自PCI總線的復位,然后通過LRESET去復位PCI設備內(nèi)的其它器件。一般地,把主橋的PCI8056設置為總線仲裁器。注意二者仲裁信號REQ和GNT互換連接。 PCI9056作適配器時,仲裁信號使用REQ和GNT。當它作為總線仲裁器時,還有其它的請求應答信號對可以使用。圖3中沒有表示出來。 2.3 加電初始化 眾所周知,PCI總線的地址是可以根據(jù)系統(tǒng)動態(tài)調(diào)整的。各個模塊在PCI空間所占的地址和長度取決于內(nèi)部配置寄存器。系統(tǒng)程序一般在加電時就檢測整個系統(tǒng)所需的空間,分配各PCI設備的基址和所需存儲器空間、I/O空間。這個初始化過程可以用三個辦法完成。圖4是支持系統(tǒng)軟件初初化的對應硬件電路,本質(zhì)量 PCI9056內(nèi)部寄存器的設置。 如果PCI9056設計為系統(tǒng)的主橋(北橋),亦即中央資源(Host),則在它的局部總線一側(cè)都存在CPU。寄存器的初始化可以由CPU進行,也可以由存入EEPROM的內(nèi)部參數(shù)自動裝入。如果PCI9056作為一般PCI設備的適配器,一般沒有CPU,可以由初始化過的主橋通過PCI配置周期來設置內(nèi)部寄存器,也可以由EEPROM在加電時自動載入。圖4中的EEPROM采用仙童公司的FM93C56或FM93CS56皆可。由局部CPU可設置內(nèi)部所有寄存器,控制邏輯應產(chǎn)生CCS片選。若不采用EEPROM加電自動載入初始化參數(shù)時,應該在圖4中的DI/DO引腳下拉1kΩ的電阻。除由局部CPU初始化和EEPROM加電自動初始化外,更多的PCI設備由主橋通過PCI總線來動態(tài)初始化。系統(tǒng)軟件要保證各個設備的PCI空間不重疊。 3 軟件設計 PCI總線不易調(diào)試,不但在于硬件設計復雜,還在于驅(qū)動軟件有相當?shù)碾y度。但只要把幾個基本概念和功能巧妙地體現(xiàn)在軟件中,整個驅(qū)動軟件就很清晰了。以下代碼是在TMS320C6701環(huán)境下的一些成熟的驅(qū)動函數(shù)。 3.1 配置主橋作為PCI總線的主設備 在初始化PCI總線其它設備時,中央資源作為PCI總線的主設備。此時由局部CPU設置所有寄存器,并不產(chǎn)生任務PCI周期,亦即局部邏輯必須譯碼產(chǎn)生 CCS信號。 //功能:配置中央資源的PCI9056作為主設備時的參數(shù) //入口參數(shù) //Range: 映像范圍長度 //PCIBAddr: PCI基址 //LocBAM:局部存儲器基址 //LocBAMI: 局部I/O配置基址 void ConfigHostMaster(UINT Range,UINT PCIBAddr,UINT LocBAM,UINT LocBAMI) {UINT Aword; //PCI命令碼寄存器CNTRL //D3..0=PCI Read Command Code for DMA // 缺省1110b:Memory Line Read,存儲器行讀 //D7..4=PCI Write Command Code for DMA // 缺省0111b:MemoryWrite, 存儲器寫 //D11..8=PCI MemoryRead Command Code for Direct Master, // 缺省0110b:MemoryRead 存儲器讀 //D15..12=PCI MemoryWrite Command Code for Direct Master. // 缺省1110b:MemoryWrite, 存儲器寫 //D30=1:復位PCI方 //就用這個缺省值,即000F.767EH *(int *)LOC_CNTRL=*(int *)LOC_CNTRL|0x400000000; Aword=0x000FFFFF; While(Aword--); //復位持續(xù) *(int *)LOC_CNTRL=*(int*)LOC_CNTRL %26;amp; 0xBFFFFFFF; //清掉軟件復位 //PCI仲裁控制器PCIARB *(int *)LOC_PCIARB=0x00000001;//中央資源要當PCI總線仲裁器 //---Direct Master-to-PCI地址映射-- //局部基址+Range-->PCI地址映射.-- //局部基址+Range-->PCI基址+Range //1.范圍寄存器DMRR //長度范圍值DMRR //長度范圍值應該是64KB的倍數(shù),亦即D15..0=0000H //而填入值應該是長度值的被碼,即變反+1,如 //64KB=0001.0000H-->FFFE.FFFFH+1=FFFF.0000H //1MB=0010.0000H-->FFEF.FFFFH+1=FFF0.0000H *(int *)LOC_DMRR=(~Range)+1;//映像范圍 //2.局部存儲器基址DMLBAM(P11-29) //D15..0:Reserved. //D31..16:基址高16位,必須是范圍值的倍數(shù) *(int *)LOC_DMLBAM=LocBAM; //3.局部I/O Configuration基址DMLBAI //當配置訪問使能時,對這個寄存器所指的基址進行訪問,將在產(chǎn)生PCI配置周期 *(int *)LOC_DMLBAI=LocBAMI; //4.PCI基址寄存器DMPBAM(P11-30)*(int *)LOC_DMPBAM=PCIBAddr|0xE3; *(int *)LOC_DMCFGA=0x00000000;//暫時不產(chǎn)生配置周期 *(int *)LOC_DMDAC=0x0; //高32位地址始終為0,需要雙地址 //5.命令寄存器PCICR(P11-8) //D0=IO Space=1:要響應I/O周期. //D2=Master Enable=1:允許做Master. *(int *)PCI9056_PCICR|=0x00000007; return; } 當PCI總線上的其它設備需要訪問中央資源時,主橋就成為從設備,所以應該配置其PCI空間到局部空間映射的參數(shù)。這個過程是一個逆變換,代碼在此省略。 圖3 3.2 配置PCI總線從設備 當中央資源作為主設備訪問其它PCI設備時,必須對從設備進行適當?shù)某跏蓟?。一般選用PCI配置周期設置PCI橋的關鍵配置寄存器,然后用普通PCI存儲器周期設置其它寄存器。 Void ConfigPCISlave(UINT And,UINT Range,UINT PCIBAddr,UINT LRegPBA,UINT LocBAddr) //功能:通過主橋產(chǎn)生PCI配置周期,去配置PCI總線上作為從方的PCI9056 //入口參數(shù): //ADn:設備號,亦即和被配置設備的IDSEL#相連的PCI地址 //Range:范圍長度 //PCIBAddr:PCI基址 //LRegPBA:內(nèi)部寄存器的PCI存儲器基址(范圍512B), //亦即PCIBAR0值 //LocBAddr:局部基址 {UINT Abit32W,LROffset; //------用配置周期----------------------- //設置命令寄存器PCICR //D0=IO Space=1:要響應I/O周期 //D1=Memory Space=1:要響應Memory周期 //D2=Master Enable=1:允許做Master ABit32W=GetConfigReg(ADn,PCI9056_PCICR)|0x07; //讀原值并置位 SetConfigReg(and,PCI9056_PCICR,ABit32W); //PCIBAR0:其它寄存器的PCI基址. SetConfigReg(ADn,PCI9056_PCIBAR0,LRegPBA); //設置PCI基址,以便能訪問其它寄存器 SetConfigReg(ADn,PCI9056_PCIBAR2,PCIBAddr); //-----以下用PCI存儲器周期----------- //1.Space0的局部地址范圍LAS0RR LROffset=LRegPBA%26;amp;0x001FFFFF;//取局部寄存器PCI基址的位移 ABit32W=~Range+1; //計算范圍值的補碼 SetPCIReg(LROffset,PCI_LAS0RR,Abit32W); //2.Space0的局部基址LAS0BA SetPCIReg(LROffset,PCI_LAS0BA,LocBAddr|1); SetPCIReg(LROffset,PCI_EROMBA,0x38); //4.Space 0/ROM的局部總線描述符LBRD0(P11-27)


//D1D0=11:Space 0-32Bit數(shù)據(jù)寬度.(復位缺省) //D5..2=內(nèi)部等待狀態(tài)計數(shù)器. //D6=1:需要READY#信號.(復位缺省) //D7=1:允許連續(xù)Burst //D7=0:Burst-4 Mode (復位缺省) //D8=0:Space 0允許預取 //D9=0:擴展ROM允許預取 //用缺省值40430043H SetPCIReg(LROffset,PCI_LBRD0,0x40430043); ABit32W=GetPCIReg(LROffset,PCI_LBRD0); if(ABit32W!=0x40430043) printf("局部總線描述符LBRD0缺省值出錯=%8x",ABit32W); return; } PCI總線上的其它設備身份是動態(tài)變化的,所以對有能力做PCI主設備的,應該配置其局部空間到PCI空間映射的參數(shù)。 結(jié)語 PCI局部總線規(guī)范也在更新,向更快更強更省電的方向邁進。時鐘速率由最初的33MHz提高到66MHz,數(shù)據(jù)寬度也由32位擴展到可支持64位,工作電壓從5V轉(zhuǎn)變?yōu)?.3V,使功耗更小??梢灶A計,嵌入式PCI總線將極大提高機載嵌入式計算機系統(tǒng)的總體性能。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉