一種具有主從自適應(yīng)功能的CPCI通用處理模塊設(shè)計(jì)
摘要:通用處理模塊在車載嵌入式系統(tǒng)中主要完成數(shù)據(jù)處理、計(jì)算等任務(wù)。介紹了一種基于PCI6466的具有主從自適應(yīng)功能的CPCI通用處理模塊的設(shè)計(jì)方案,模塊針對(duì)CPCI底板總線具有主從自適應(yīng)功能,為CPCI系統(tǒng)提供了一種通用的、具有主從自適應(yīng)功能的通用處理模塊的解決方案。
關(guān)鍵詞:CPCI總線;PCI6466;通用處理模塊;透明橋;非透明橋
在一些特定的條件下,由于氣候、機(jī)械和電磁環(huán)境適應(yīng)性、可靠性、可擴(kuò)展性等方面的因素對(duì)嵌入式計(jì)算機(jī)有很高的要求,Compact PCI(CPCI)總線就是為適應(yīng)這種要求而推出的一種工業(yè)計(jì)算機(jī)總線標(biāo)準(zhǔn)。CPCI可以迅速利用PCI的優(yōu)點(diǎn)、提供滿足工業(yè)環(huán)境應(yīng)用要求的高性能的核心系統(tǒng),同時(shí)還能充分利用傳統(tǒng)的總線產(chǎn)品。CPCI不是重新設(shè)計(jì)的PCI規(guī)范,而是改造現(xiàn)行的PCI規(guī)范,使其成為無源底板總線式的系統(tǒng)結(jié)構(gòu)。在車載嵌入式環(huán)境中,要求系統(tǒng)中搭載的通用處理模塊針對(duì)專門設(shè)計(jì)的CPCI機(jī)箱底板具有主從自適應(yīng)能力,這樣的設(shè)計(jì)在具有多個(gè)CPCI外設(shè)的嵌入式平臺(tái)中具有很大的優(yōu)越性。針對(duì)這種需求,提出了一種基于PCI6466的具有主從自適應(yīng)功能的CPCI通用處理模塊。
1 系統(tǒng)結(jié)構(gòu)
CPCI通用處理模塊通過感知自己在CPCI底板總線的槽位(系統(tǒng)槽還是外設(shè)槽)調(diào)節(jié)自己的工作方式,系統(tǒng)結(jié)構(gòu)如圖1所示。設(shè)計(jì)中采用PCI6466作為模塊內(nèi)部PCI局部總線到CPCI底板總線的橋接器。PCI6466是一種功能強(qiáng)大的工業(yè)用PCI-PCI橋接器,可以在初端(Primary Port)和次端(Secondary Port)兩個(gè)端口間實(shí)現(xiàn)完全異步的操作。PCI6466可以配置成透明橋和非透明橋2種模式,透明橋模式只提供系統(tǒng)間的電氣隔離,非透明橋在提供電氣隔離的同時(shí)還要提供系統(tǒng)間的地址隔離,這就為多個(gè)PCI設(shè)備在CPCI底板總線上應(yīng)用提供了方便。
為了實(shí)現(xiàn)CPCI通用處理模塊的主從自適應(yīng)功能,在本設(shè)計(jì)中PCI6466被配置為通用模式。這種模式下,同一個(gè)CPCI通用處理模塊可以任意的插在CPCI底板總線的系統(tǒng)槽(System Slot)和外設(shè)槽(Peripheral Slot)中,PCI6466通過感知模塊所在的槽的類型來配置自己工作在透明橋模式還是非透明橋模式。在系統(tǒng)槽中,模塊作為主設(shè)備,PCI6466工作在透明橋模式,在外設(shè)槽中,模塊作為從設(shè)備,PCI6466工作在非透明橋模式。[!--empirenews.page--]
具體的實(shí)現(xiàn)方式是,在通用模式下,PCI6466的信號(hào)可以直接連接到CPCI總線的管腳,這樣就可以通過信號(hào)控制信號(hào)來實(shí)現(xiàn)模塊的主從自適應(yīng)功能。如果通用處理模塊被插入系統(tǒng)槽,信號(hào)為低,PCI6466工作在透明橋模式,通用處理模塊按照主模塊的方式對(duì)板內(nèi)資源和從模塊PCI6466的次端進(jìn)行配置。反之,如果通用處理模塊被插入外設(shè)槽,信號(hào)為高,PCI6466工作在非透明橋模式,通用處理模塊按照從模塊的方式對(duì)板內(nèi)資源和本模塊PCI6466的初端進(jìn)行配置。
2 PCI6466非透明方式配置
PCI6466工作在透明模式時(shí),由于其只對(duì)系統(tǒng)提供電氣隔離,所以應(yīng)用起來比較簡(jiǎn)便。但是對(duì)于PCI6466非透明橋來說,其配置方式就顯得比較復(fù)雜。作為CPCI底板總線上的一個(gè)設(shè)備,非透明橋需要在向其他外設(shè)發(fā)送請(qǐng)求的同時(shí)向其他外設(shè)提供對(duì)內(nèi)訪問的空間,圖2為非透明橋的數(shù)據(jù)流向。
PCI6466工作在非透明橋方式時(shí),在PCI6466的初端需要配置下行基地址和上行翻譯地址,在次端需要配置上行基地址和下行翻譯地址。需要注意的是,在配置上下行基地址之前必須配置上下行基地址掩碼。上下行地址掩碼和上下行翻譯地址的配置是在擴(kuò)展寄存器中進(jìn)行的,擴(kuò)展寄存器的訪問方式為在6466的PCI配置空間的偏移量0xD3中寫地址(8位),在偏移量0xD4中寫內(nèi)容(32位)。擴(kuò)展寄存器列表如圖3所示。
[!--empirenews.page--]
掩碼具體含義如下,例如在0xF中寫入0x821F131F,0x13對(duì)應(yīng)為下行基地址寄存器1的掩碼,含義為基地址掩碼最高有效位(MSB)的位置。例如掩碼0x13表示掩碼的最高為在第19位?;刂?x93100000和掩碼0x13的關(guān)系見圖4,配置后地址范圍為0x9310 0000~0x931F FFFF。
3 綜合嵌入式平臺(tái)中CPCI通用處理模塊工作方案
在CPCI底板總線上插有多個(gè)模塊時(shí),這時(shí)需要同時(shí)考慮主模塊和從模塊的協(xié)同工作。針對(duì)提出的基于PCI6466的具有主從自適應(yīng)功能的CPCI通用處理模塊,考慮工作方案為:CPCI通用處理模塊作為主模塊時(shí),主模塊的PCI6466工作在透明橋方式,這時(shí)由于從模塊的PCI6466工作在非透明模式,所以需要由主模塊在從模塊PCI6466的次端配置從模塊的上行基地址和下行翻譯地址,同時(shí)從模塊需要對(duì)自己的上行翻譯地址和下行基地址進(jìn)行配置。
為了使系統(tǒng)中主從模塊對(duì)CPCI訪問空間的配置更加智能,在系統(tǒng)上電時(shí),主模塊向從模塊的基地址寄存器寫入0xFFFF FFFF,然后讀出,根據(jù)讀出數(shù)據(jù)中0b1的個(gè)數(shù)確定從模塊需要多少存儲(chǔ)器空間。然后自行分配相應(yīng)大小空間并將基地址寫入基地址寄存器。
需要考慮的一點(diǎn)是,具有自適應(yīng)功能的CPCI通用處理模塊由于要在系統(tǒng)槽和外設(shè)槽2種插槽中使用,所以一般情況下都是直接將PCI6466配置成初端先啟動(dòng)或次端先啟動(dòng),并不會(huì)通過考慮模塊具體的使用來設(shè)置到底是初端先啟動(dòng)還是次端先啟動(dòng)。這樣帶來的問題是,插入系統(tǒng)槽和外設(shè)槽的模塊被同時(shí)配置成初端先啟動(dòng)時(shí),若主模塊在上電復(fù)位結(jié)束后即訪問CPCI總線對(duì)各個(gè)從模塊的次端進(jìn)行配置,但從模塊的PCI-PCI橋接器配置成初端先啟動(dòng),即從模塊操作系統(tǒng)啟動(dòng)后,對(duì)橋的初端進(jìn)行配置后,次端才能進(jìn)行配置。
造成的結(jié)果是,主控模塊上電復(fù)位后訪問從模塊的次端,CPCI總線被拉死,程序停止執(zhí)行,看門狗復(fù)位有效,復(fù)位整個(gè)系統(tǒng)。主模塊再次訪問從模塊,CPCI再次被拉死,反復(fù)復(fù)位。這時(shí)就需要操作主控模塊待從模塊配置完成后再對(duì)從模塊進(jìn)行配置,防止系統(tǒng)被拉死。
4 結(jié)語
本設(shè)計(jì)提出的基于PCI6466的具有主從自適應(yīng)功能的CPCI通用處理模塊在具體的應(yīng)用環(huán)境中具有很大的便利性,能夠方便地應(yīng)用在CPCI底板總線的系統(tǒng)槽和外設(shè)槽中,同時(shí)針對(duì)一些可能出現(xiàn)的問題做針對(duì)性的處理,為CPCI系統(tǒng)提供了一種通用的、具有主從自適應(yīng)功能的通用處理模塊的解決方案。