《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于CPCI總線的PMC載板設(shè)計
基于CPCI總線的PMC載板設(shè)計
來源:微型機(jī)與應(yīng)用2013年第21期
賈 亮1,,王 浩1,,葉青林2
(1.沈陽航空航天大學(xué) 電子信息工程學(xué)院,遼寧 沈陽 110136,; 2.北京方天長文科技有限公司,,
摘要: 設(shè)計了一種基于CPCI總線標(biāo)準(zhǔn)的PMC接口載板。載板以FPGA為核心,,集成了CPCI接口模塊和DPRAM(雙口RAM)模塊,,CPCI接口模塊采用FPGA+PCI IP核(軟核)解決了系統(tǒng)集成的問題,DPRAM模塊為系統(tǒng)提供了數(shù)據(jù)緩存功能,。環(huán)回測試和中斷測試解決了在沒有子卡PMC模塊的情況下,,讀寫、驗證DPRAM空間數(shù)據(jù)和測試中斷響應(yīng)的問題,。此外,,還支持子卡PMC模塊后出線到CPCI總線。調(diào)試結(jié)果表明,,該載板在嵌入式實時操作系統(tǒng)VxWorks下可以穩(wěn)定運(yùn)行,,正確地讀寫DPRAM空間的數(shù)據(jù),及時地響應(yīng)中斷,,滿足了對載板的性能需求,。
關(guān)鍵詞: FPGA CPCI PMC 載板
Abstract:
Key words :

摘  要: 設(shè)計了一種基于CPCI總線標(biāo)準(zhǔn)的PMC接口載板。載板以FPGA為核心,,集成了CPCI接口模塊和DPRAM(雙口RAM)模塊,,CPCI接口模塊采用FPGA+PCI IP核(軟核)解決了系統(tǒng)集成的問題,DPRAM模塊為系統(tǒng)提供了數(shù)據(jù)緩存功能,。環(huán)回測試和中斷測試解決了在沒有子卡PMC模塊的情況下,,讀寫、驗證DPRAM空間數(shù)據(jù)和測試中斷響應(yīng)的問題,。此外,,還支持子卡PMC模塊后出線到CPCI總線。調(diào)試結(jié)果表明,,該載板在嵌入式實時操作系統(tǒng)VxWorks下可以穩(wěn)定運(yùn)行,,正確地讀寫DPRAM空間的數(shù)據(jù),及時地響應(yīng)中斷,,滿足了對載板的性能需求,。
關(guān)鍵詞: CPCI;FPGA,;PMC,;載板

 在工業(yè)和嵌入式領(lǐng)域?qū)嶋H工程應(yīng)用中,模塊化的設(shè)計思想已深入人心,。針對不同使用場合的具體應(yīng)用以及為方便后續(xù)的維護(hù)和升級,,將其中具有通用性和可持續(xù)利用的部分單獨(dú)設(shè)計成載板,載板配合不同的應(yīng)用模塊就可以組合成具有不同功能的專業(yè)I/O模塊,。
 Compact PCI(Compact Peripheral Component Interconnect)簡稱CPCI,,中文又稱緊湊型PCI,是國際工業(yè)計算機(jī)制造者聯(lián)合會PICMG(PCI Industrial Computer Manufacturer′s Group)于1994提出來的一種總線接口標(biāo)準(zhǔn),,是以PCI電氣規(guī)范為標(biāo)準(zhǔn)的高性能工業(yè)用總線[1],。CPCI規(guī)范改進(jìn)自PCI電氣規(guī)范2.1,應(yīng)用于工業(yè)和嵌入式領(lǐng)域,。當(dāng)前最新的CPCI規(guī)范是PICMG 3.0,。PICMG 3.0主要將應(yīng)用在高帶寬電信傳輸上,以適應(yīng)未來電信的發(fā)展,,PICMG 2.x則仍是目前CPCI的主流,,并將在很長時間內(nèi)主宰CPCI的應(yīng)用。
 PCI夾層卡PMC(PCI Mezzanine Cards)是IEEE P1386.1的標(biāo)準(zhǔn),,作為一個IEEE標(biāo)準(zhǔn),,PMC確保了任何符合該標(biāo)準(zhǔn)的主板或者模塊能夠與其他按照該標(biāo)準(zhǔn)設(shè)計的主板或者模塊兼容[2]。這樣就為用戶提供了很大的柔性,,用戶可以任意組合和搭配不同的主卡和模塊,。PMC是個開放標(biāo)準(zhǔn),它為Multibus II,、VME和Compact PCI帶來了前所未有的大量I/O產(chǎn)品和高性能,。
 本文結(jié)合實際的工程項目,設(shè)計實現(xiàn)一個基于CPCI總線并符合PICMG 2.0規(guī)范的6U(233.35 mm×160 mm)通用型PMC載板FTC-C920并開發(fā)其在VxWorks 5.5下的驅(qū)動軟件,。
1 載板總體結(jié)構(gòu)設(shè)計
 本著簡潔和通用的前提,,此載板主要由電源模塊(Power)、PMC接口模塊(J11~J14),、CPCI總線接口模塊(J1,、J4,、J5)和FPGA組成,總體結(jié)構(gòu)如圖1所示,。

 

 

2 PMC接口和CPCI總線接口模塊設(shè)計
 PMC接口的特性為:前兩個(“P11”和“P12”)用于32位PCI信號,,第3個(“P13”)是64位PCI信號需要。一個額外的總線連接器(“P14”),,可用于非指定的I/O信號[2],。本設(shè)計中,PMC接口模塊采用4個(J11~J14)PMC(PCI Mezzanine Cards)8 mm高標(biāo)準(zhǔn)連接器,,支持用戶子卡PMC后出線到CPCI總線接口J4和J5,。圖1給出了板卡的CPCI連接器情況,J1用作32位PCI,,J4和J5用作后面板I/O,,可自定義[1]。
3 FPGA設(shè)計
 從圖2中可以清楚地看到,,F(xiàn)PGA主要被設(shè)計集成了PCI接口模塊(PCI Slave IP CORE)和DPRAM模塊,。
3.1 PCI接口模塊設(shè)計
3.1.1 幾種PCI接口設(shè)計方案及選擇

 常見的設(shè)計方案有:(1)專用的PCI接口芯片+CPLD;(2)ASIC+CORE,;(3)專用的FPGA+PCI IP CORE(硬核),;(4)專用的FPGA+PCI IP CORE(軟核);(5)帶PCI接口的DSP[3],。
幾種方案各有利弊,,本文結(jié)合項目的實際應(yīng)用需求選擇了第4種方案,這個方案滿足了系統(tǒng)集成的需求,,并可自由添加接口邏輯,,降低了成本,減小了設(shè)計風(fēng)險,。
3.1.2 具體設(shè)計
 此模塊主要實現(xiàn)33 MHz工作時鐘,、32 bit總線寬度的PCI接口功能,支持內(nèi)存空間及配置空間的讀寫和PCI中斷功能,。
 PCI配置空間分配[4]:Vendor ID(廠商號)1206,,Device ID(設(shè)備號)0920,BAR0(基地址)映射為1 MB內(nèi)存空間,,其中0x0000~0x3FFF為DPRAM空間,,0x4000~0x7FFF為DPRAM環(huán)回測試空間,0x8000以后為控制寄存器,。
 正常情況下(配合用戶PMC子卡使用時),,CPCI通過DPRAM左(L)端口對DPRAM空間進(jìn)行讀寫,用戶子卡則通過DPRAM右(R)端口對DPRAM空間進(jìn)行讀寫,;環(huán)回測試情況下(即沒有用戶PMC子卡的情況下),,CPCI可以通過環(huán)回測試空間對DPRAM進(jìn)行讀寫,,即模擬用戶子卡對DPRAM空間進(jìn)行讀寫。
需要注意的是,,0x0000~0x3FFF為DPRAM 16 KB空間,,對應(yīng)DPRAM空間大小為8K×16 bit,而0x4000~0x7FFF為DPRAM環(huán)回測試空間,,不是FPGA另外開辟的RAM空間,只是軟件通過這個空間地址在環(huán)回測試下讀寫DPRAM空間(8K×16 bit),。示意圖如圖3所示,。

PCI控制寄存器的分配如表1所示。
3.2 DPRAM模塊設(shè)計
 雙口RAM模塊是FPGA調(diào)用內(nèi)部的IP核實現(xiàn)的,,其為數(shù)據(jù)處理提供緩存功能,,總線寬度為16 bit,容量為8 K×16 bit,。在沒有用戶PMC子卡的情況下,,為了驗證對數(shù)據(jù)處理的可用性及準(zhǔn)確性,通過FPGA邏輯設(shè)計支持雙口RAM R端口環(huán)回自檢,,如圖3(b)中虛線所示,,即模擬用戶子卡對雙口RAM進(jìn)行讀寫數(shù)據(jù)的操作。
CPCI和用戶PMC子卡通信采用雙口RAM方式,,雙口RAM用戶PMC子卡側(cè)總線定義如表2所示,。

4 VxWorks下設(shè)備驅(qū)動程序設(shè)計
 開發(fā)此PMC載板Vxworks 5.5下的驅(qū)動,硬件選用了Motorola公司的實時主控單板機(jī)MCP-750,、工控機(jī)箱CPX2000 series和此PMC載板FTC-C920,,操作系統(tǒng)則選擇了美國風(fēng)河公司的VxWorks嵌入式實時操作系統(tǒng),使用普通的PC,,在Tornado IDE(集成開發(fā)環(huán)境)下進(jìn)行驅(qū)動的開發(fā),。以良好的可靠性和卓越的實時性著稱的VxWorks可以滿足系統(tǒng)對于高實時性和高可靠性的要求[5]。驅(qū)動開發(fā)軟硬件環(huán)境簡圖如圖4所示,。
對驅(qū)動程序的設(shè)計主要有3個部分:載板自檢測試模塊,、FTC-C920和系統(tǒng)控制器互通測試模塊以及CPCI中斷測試模塊。

4.1 載板自檢測試模塊
 載板自檢測試主要是載板檢測自身器件是否正常工作,,功能是否可以實現(xiàn),。
4.1.1 查找C920載板
 對于Vxworks下PCI設(shè)備調(diào)試來說,其有專門的函數(shù)可供調(diào)用,,查找FTC-C920載板可以通過調(diào)用函數(shù)pciFindDevice()來實現(xiàn),,它包含在pciConfigShow庫函數(shù)中,此庫函數(shù)專門用來幫助顯示一些PCI設(shè)備的信息,。此函數(shù)可以根據(jù)PCI設(shè)備給定的供應(yīng)商標(biāo)識(VENDOR ID)和設(shè)備標(biāo)識(DEVICE ID)找到相應(yīng)的設(shè)備,,并以此返回設(shè)備的總線號(busNO),、設(shè)備號(deviceNO)和功能號(funcNO)。
4.1.2 讀取FTC-C920上的配置資源信息
 根據(jù)獲得的設(shè)備的總線號(busNO),、設(shè)備號(deviceNO)和功能號(funcNO),,通過調(diào)用操作系統(tǒng)庫函數(shù)pciConfigLib中的函數(shù)pciConfigInLong和pciConfigInByte訪問C920的配置空間,獲得設(shè)備映射的內(nèi)存基地址(memBase)和I/O基地址(ioBase)以及中斷號irq,,分辨對基地址空間是I/O操作還是內(nèi)存操作,,獲得的基地址要分別與存儲器屏蔽位PCI_MEMBASE_MASK和I/O屏蔽位PCI_IOBASE_MASK相“與”,才能得到真正板卡的內(nèi)存基地址和I/O基地址,。
4.2 FTC-C920和系統(tǒng)控制器互通測試模塊
 互通測試主要是:
?。?)系統(tǒng)控制器(MCP-750)讀取用戶PMC子卡數(shù)據(jù):用戶PMC子卡向雙口RAM中寫入數(shù)據(jù),系統(tǒng)控制器(MCP0750)從雙口RAM中讀取數(shù)據(jù),,并驗證數(shù)據(jù)是否正確,。
 (2)用戶PMC子卡讀取系統(tǒng)控制器(MCP-750)數(shù)據(jù):系統(tǒng)控制器(MCP-750)向雙口RAM中寫入數(shù)據(jù),;用戶PMC子卡從雙口RAM中讀取數(shù)據(jù),,并驗證數(shù)據(jù)是否正確。
 由于FTC-C920是通用型PMC載板,,為了在沒有用戶PMC子卡的情況下驗證互通測試,,在FPGA的設(shè)計上進(jìn)行了支持DPRAM R端口環(huán)回自檢的設(shè)計,如圖2中虛線所示,。
正常情況下(配合用戶PMC子卡使用時),,環(huán)回測試空間不可使用,此時FPGA內(nèi)部環(huán)回自檢控制寄存器的相應(yīng)位為默認(rèn)值0,。如進(jìn)行環(huán)回自檢(沒有用戶PMC子卡時),,需往環(huán)回自檢控制寄存器的相應(yīng)位寫1,此時,,系統(tǒng)控制器可對環(huán)回測試空間進(jìn)行讀寫,。
4.3 CPCI中斷測試模塊
 CPCI中斷測試主要是用戶PMC子卡通過寫寄存器的方式產(chǎn)生CPCI中斷;系統(tǒng)控制器響應(yīng)中斷,,讀取數(shù)據(jù)并驗證數(shù)據(jù)是否正確,。
 在沒有用戶PMC子卡的情況下,可以通過產(chǎn)生內(nèi)部中斷的方式進(jìn)行測試,,具體的方法是在FPGA中設(shè)置中斷使能寄存器,,中斷測試寄存器,中斷狀態(tài)寄存器和清中斷寄存器,。程序流程圖如圖5所示,。

 本文詳細(xì)描述了某項目中PMC載板FTC-C920的設(shè)計方法及其在VxWorks操作系統(tǒng)下驅(qū)動程序的開發(fā)流程。在沒有用戶PMC子卡的情況下,通過環(huán)回測試空間的設(shè)計,,解決了互通測試的要求,,通過中斷測試寄存器的設(shè)計,解決了中斷測試的要求,。調(diào)試結(jié)果表明,,此PMC載板在VxWorks 5.5下可以穩(wěn)定地運(yùn)行。本文的設(shè)計方法具有一定的通用性,,可為相關(guān)工程技術(shù)人員提供可以參考的設(shè)計經(jīng)驗,。
參考文獻(xiàn)
[1] PICMG.PICMG2.0 Rev.3.0. PICMG2.0 D3.0 Compact PCI Specification[S].
[2] IEEE. IEEE P1386.1.Draft Standard Physical and Environmental Layers for PCI Mezzanine Cards: PMC[S].
[3] 鄭毅.基于PMC(PCI背卡)接口的實時數(shù)據(jù)采集卡[D].成都:電子科技大學(xué),2003.
[4] 李貴山,,陳金鵬.PCI局部總線及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,,2003.
[5] 唐曉平,何峰,,梁甸農(nóng).基于VxWorks的PCI總線驅(qū)動設(shè)計[J].嵌入式操作系統(tǒng)應(yīng)用,2008,,11(2):79-81.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。