摘要:介紹了基于Xilinx中嵌入PowerPC的片上系統(tǒng)設(shè)計(jì),通過(guò)一個(gè)OPBPCI總線橋?qū)崿F(xiàn)了PowerPC與主機(jī)間的PCI接口通信。最終結(jié)果表明,這種實(shí)現(xiàn)方法簡(jiǎn)單、快捷、可靠,并且可以很方便地實(shí)現(xiàn)數(shù)據(jù)的片上處理,具有很強(qiáng)的靈活性和可擴(kuò)展能力,作為高速通信和數(shù)據(jù)處理的片上系統(tǒng)平臺(tái)有很好的應(yīng)用前景。
關(guān)鍵詞:現(xiàn)場(chǎng)可編程門陣列;外設(shè)部件互連;片上外設(shè)總線—外設(shè)部件互連橋;片上系統(tǒng);PowerPC
中圖分類號(hào):TP334.7文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2007)08-0272-03
0引言
FPGA/CPLD設(shè)計(jì)靈活,在不改變外圍電路的情況下,設(shè)計(jì)不同片內(nèi)邏輯就能實(shí)現(xiàn)不同的電路功能。其開(kāi)發(fā)工具種類繁多、功能強(qiáng)大,應(yīng)用各種工具可以完成從輸入、綜合、實(shí)現(xiàn)到配置芯片等一系列功能。還有很多工具可以完成對(duì)設(shè)計(jì)的仿真、優(yōu)化、約束、在線調(diào)試等功能。新型FPGA內(nèi)嵌CPU或DSP內(nèi)核,支持軟硬件協(xié)同設(shè)計(jì),可以作為片上可編程系統(tǒng)(SOPC)的硬件平臺(tái)。它正逐步成為復(fù)雜數(shù)字硬件電路設(shè)計(jì)的理想首選。
VirtexⅡ Pro系列產(chǎn)品是Xilinx公司推出的高端FPGA產(chǎn)品。它嵌入了32位的IBM PowerPC 405 RISC處理器內(nèi)核和RocketIO高速串行收發(fā)器。VirtexⅡ Pro內(nèi)部具有豐富的可編程資源,能完成復(fù)雜的組合與時(shí)序邏輯設(shè)計(jì),滿足可編程片上系統(tǒng)的應(yīng)用設(shè)計(jì)需求。通過(guò)在VirtexⅡ Pro系列產(chǎn)品中內(nèi)嵌32位的RISC處理器內(nèi)核,VirtexII Pro可為網(wǎng)絡(luò)和通信系統(tǒng)提供極高的帶寬。本文的通信卡設(shè)計(jì)采用了VirtexⅡ Pro系列產(chǎn)品中的XC2VP4FF672C器件作為數(shù)據(jù)處理平臺(tái)。該器件的內(nèi)含1個(gè)IBM PowerPC 405處理器內(nèi)核,28個(gè)容量為18 KB的片上塊RAM,塊RAM總量達(dá)504 KB,348個(gè)I/O引腳。
1PowerPC 405處理器結(jié)構(gòu)和特性
在VirtexⅡ Pro系列器件中嵌入的32位IBM PowerPC 405處理器硬核,是一種 32 位哈佛結(jié)構(gòu)的 RISC 核,最高可以工作在 400 MHz頻率下;支持PowerPC用戶指令集,提供32個(gè)32位通用寄存器、累加器和乘/除運(yùn)算功能,16 KB的高速指令緩存和16 KB的高速數(shù)據(jù)緩存;支持專用的IBM CoreConnect總線結(jié)構(gòu)和專用的片上存儲(chǔ)器接口。
在VirtexⅡ Pro器件中,PowerPC 405處理器內(nèi)核采用IBM的CoreConnect總線技術(shù)與其他模塊連接。CoreConnect 總線架構(gòu)是由 IBM 開(kāi)發(fā)的一種片上總線通信連接技術(shù)。它能夠?qū)?FPGA 內(nèi)各種不同的 IP 核連接到一起構(gòu)成一個(gè)完整的系統(tǒng)。CoreConnect總線是一個(gè)總線標(biāo)準(zhǔn)的集合。它包括處理器局部總線(processor local bus,PLB)、片上外設(shè)總線(onchip peripheral bus,OPB)和設(shè)備控制寄存器總線(device control register bus,DCR)
1)處理器局部總線該總線為高速的數(shù)據(jù)通道,提供32位地址線和64位數(shù)據(jù)線。通常與該總線連接的外設(shè)為高速外設(shè)、DMA存儲(chǔ)控制器等。
2)片上外設(shè)總線該總線提供32位地址線和32位數(shù)據(jù)線。它通常用于連接速率較低的片上外設(shè),通過(guò)總線橋接器與處理器局部總線相連,從而保證PLB總線的高速特性。
3)設(shè)備控制寄存器總線該總線提供10位地址線和32位數(shù)據(jù)線。它用于實(shí)現(xiàn)PowerPC 405處理器的通用寄存器與邏輯設(shè)備控制寄存器的數(shù)據(jù)通信。通過(guò)該總線,PowerPC 405內(nèi)核可以快速訪問(wèn)外部設(shè)備的控制和狀態(tài)寄存器。
各種IP核可以掛在這些總線上,通過(guò)總線與PowerPC進(jìn)行交互。用戶自己設(shè)計(jì)的核在掛上總線時(shí),需滿足其相應(yīng)的總線接口標(biāo)準(zhǔn)。
2OPBPCI橋
在設(shè)計(jì)中,本文采用了基于PowerPC 405處理器的嵌入式系統(tǒng)設(shè)計(jì)方案。為了實(shí)現(xiàn)PowerPC與主機(jī)間的通信,筆者采用了Xilinx的 OPBPCI橋。
3OPBPCI橋結(jié)構(gòu)
OPBPCI橋結(jié)構(gòu)如圖1所示。它主要由三個(gè)相對(duì)獨(dú)立的單元組成,即IPIF接口、IPIFPCI橋和PCI接口。IPIF接口處理OPB總線端的事務(wù);PCI接口邏輯使用了PCI核來(lái)實(shí)現(xiàn);OPBPCI橋使用PCI核實(shí)現(xiàn)一個(gè)簡(jiǎn)單的32位、33 MHz的PCI主設(shè)備或目標(biāo)設(shè)備。 IPIF接口與PCI核之間的橋接功能由IPIFPCI橋來(lái)實(shí)現(xiàn)。
OPBPCI橋能接收來(lái)自O(shè)PB主設(shè)備、滿足OPB總線協(xié)議的地址和事務(wù)控制信號(hào),并經(jīng)協(xié)議轉(zhuǎn)換后在PCI總線上訪問(wèn)PCI從設(shè)備的事務(wù);也可以接收來(lái)自PCI主設(shè)備的信號(hào),并經(jīng)協(xié)議轉(zhuǎn)換后在OPB總線上訪問(wèn)OPB從設(shè)備。所以,它既是OPB總線的主設(shè)備又是OPB總線的從設(shè)備;同時(shí),它也既是PCI總線的主設(shè)備又是PCI總線的從設(shè)備。
OPBPCI橋有兩種應(yīng)用方式,即主橋方式和從橋方式。作為從橋時(shí),當(dāng)系統(tǒng)上電后,主機(jī)系統(tǒng)將掃描PCI總線上連接的PCI總線設(shè)備;然后配置OPBPCI橋的配置寄存器,完成初始化配置過(guò)程;之后,OPBPCI橋進(jìn)入正常工作狀態(tài)。當(dāng)作為主橋時(shí),由PCI橋完全控制PCI總線,片上系統(tǒng)將作為主機(jī)負(fù)責(zé)連接到PCI總線上的PCI設(shè)備的初始化配置過(guò)程。可以通過(guò)修改參數(shù)來(lái)改變OPBPCI橋的操作方式。本設(shè)計(jì)是應(yīng)用于PCI總線上的一張插卡,因此本設(shè)計(jì)采用OPBPCI橋的從橋工作方式。
PCI總線地址與OPB總線地址之間的轉(zhuǎn)換過(guò)程:作為從橋時(shí),PCI橋作為一個(gè)PCI設(shè)備掛在總線上。主機(jī)可以給它分配BAR0~BAR2三個(gè)緩沖區(qū),然后通過(guò)向緩沖區(qū)地址讀寫數(shù)據(jù)來(lái)實(shí)現(xiàn)與PCI設(shè)備的數(shù)據(jù)傳輸。在OPBPCI橋上設(shè)置了針對(duì)三個(gè)緩沖區(qū)的地址變換寄存器。當(dāng)一個(gè)PCI地址到來(lái)時(shí),其低位地址部分保持不變,而高位地址部分會(huì)被寄存器內(nèi)的地址替換掉,從而形成OPB總線側(cè)的地址,最終訪問(wèn)OPB總線上RAM或其他設(shè)備;反之也一樣。
4集成開(kāi)發(fā)環(huán)境EDK
本文采用了Xilinx的EDK設(shè)計(jì)工具,它是一個(gè)專門用于FPGA內(nèi)部32位嵌入式處理器的集成化開(kāi)發(fā)工具包,并提供硬件和軟件的協(xié)同設(shè)計(jì)能力,從而能極大地縮短設(shè)計(jì)周期。
在EDK工具包中集成了硬件平臺(tái)產(chǎn)生器(platgen)、硬件仿真模型產(chǎn)生器(simgen)、軟件平臺(tái)產(chǎn)生器(libgen)、 應(yīng)用軟件編譯工具(GNU compiler)軟件調(diào)試工具(GNU debugger)等。此外,EDK也提供了各種豐富的IP核,包括總線接口、外部存儲(chǔ)控制器、通用I/O、 中斷控制等。利用這些現(xiàn)有的資源,用戶可以非常方便地構(gòu)造自己的嵌入式平臺(tái)。如果已有的IP核不能滿足用戶的特定需求,用戶也可以開(kāi)發(fā)自己的IP核。
在 EDK 集成開(kāi)發(fā)環(huán)境中,通過(guò) MHS 文件、MSS 文件和 MVS 文件完整地描述了SOPC 系統(tǒng)的軟硬件結(jié)構(gòu)和仿真驗(yàn)證模型。其中,MHS 文件用于完整描述 VirtexⅡ Pro FPGA 的硬件系統(tǒng)結(jié)構(gòu),主要定義當(dāng)前 SOPC 設(shè)計(jì)的處理器類型、總線結(jié)構(gòu)、外設(shè)接口、中斷處理和地址空間。
在MHS文件中對(duì)OPBPCI橋的引腳和模塊參數(shù)進(jìn)行設(shè)置:
在本設(shè)計(jì)中,主機(jī)通過(guò)PCI總線訪問(wèn)OPB總線上的接收存儲(chǔ)器和發(fā)送存儲(chǔ)器。OPBPCI橋成為PCI總線上的一個(gè)目標(biāo)設(shè)備和OPB總線上的主設(shè)備,工作方式為從橋。OPBPCI橋需要把PCI總線的地址轉(zhuǎn)換為OPB總線上的地址。這是通過(guò)設(shè)置OPBPCI橋的C_PCIBAR2IPIFBAR和C_PCIBAR_LEN兩個(gè)參數(shù)來(lái)實(shí)現(xiàn)的。C_PCIBAR2IPIFBAR表示PCI總線要訪問(wèn)的OPB總線上的設(shè)備起始地址,而C_PCIBAR_LEN則表示PCI端訪問(wèn)的地址空間大小。如果為20,則表示PCI端訪問(wèn)的空間為1 MB。那么在作地址變換時(shí)低20位地址保持不變,高12位地址則被C_PCIBAR2IPIFBAR的高12位替換掉。由于在OPB總線上有接收和發(fā)送兩個(gè)存儲(chǔ)器,還需要把OPBPCI橋上的PCI緩沖區(qū)的個(gè)數(shù)設(shè)置為2。這是通過(guò)將參數(shù)C_PCIBAR_NUM設(shè)置為2實(shí)現(xiàn)的。在機(jī)器啟動(dòng)主機(jī)查找配置PCI設(shè)備時(shí)會(huì)自動(dòng)給接口卡分配兩個(gè)緩沖區(qū)。OPBPCI橋參數(shù)如表1所示。
5EDK模塊設(shè)計(jì)結(jié)果
在設(shè)計(jì)中,主要是在VirtexⅡ Pro器件內(nèi)部構(gòu)建一個(gè)以PowerPC 405處理器硬核為中心的嵌入式計(jì)算機(jī)應(yīng)用系統(tǒng)。在FPGA內(nèi)部實(shí)現(xiàn)系統(tǒng)的總線架構(gòu)、數(shù)據(jù)存儲(chǔ)、地址譯碼、外設(shè)接口等系統(tǒng)部件和功能。各功能部件在FPGA內(nèi)部均以IP核的形式構(gòu)建并連接。整個(gè)系統(tǒng)的結(jié)構(gòu)框圖如圖2所示。
系統(tǒng)由 FPGA構(gòu)成,在 FPGA 內(nèi)部,各模塊執(zhí)行各自的功能一起構(gòu)成SOPC片上可編程系統(tǒng)。其中:JTAG調(diào)試接口連接 PowerPC 405處理器核和JTAG鏈,用于JTAG調(diào)試;reset block控制 FPGA 內(nèi)各模塊的 reset 信號(hào)的輸入/輸出;PowerPC處理器通過(guò)PLB總線和OPB總線與各外設(shè)IP 核相連,PLB總線與OPB總線之間通過(guò)PLBOPB橋相連;OPBPCI橋?qū)崿F(xiàn)了OPB總線與CPCI總線之間的通信;為了存儲(chǔ)用戶程序,系統(tǒng)使用了16 KB PLB總線塊RAM;UART(通用異步收發(fā)器)用于連接PC機(jī)RS-232 串口實(shí)現(xiàn)串口通信;此外還有兩個(gè)8 KB的OPB總線塊BRAM用于存儲(chǔ)通信數(shù)據(jù)。其中:接收存儲(chǔ)器用于存儲(chǔ)串行模塊接收到的數(shù)據(jù),發(fā)送存儲(chǔ)器則用于存儲(chǔ)待發(fā)送的數(shù)據(jù)。這兩塊RAM均使用了雙端口RAM模塊,一頭掛在OPB總線上;一頭接串行通信模塊。主機(jī)通過(guò)OPBPCI橋訪問(wèn)的正是這兩塊RAM中的數(shù)據(jù)。
主機(jī)發(fā)出的數(shù)據(jù)從PCI總線經(jīng)過(guò)橋后直接寫到發(fā)送存儲(chǔ)器;待發(fā)送的數(shù)據(jù)可直接經(jīng)過(guò)串行模塊發(fā)出,也可由PowerPC讀出處理后再發(fā)出。串口接收到的數(shù)據(jù)可直接被主機(jī)讀出,也可先經(jīng)PowerPC讀出處理后再傳給主機(jī)。如果需要進(jìn)行的處理速度要求很高,也可在串行模塊中進(jìn)行設(shè)計(jì),直接利用FPGA中的可編程資源將在硬件上實(shí)現(xiàn)處理。
6總線電壓的變換
PCI總線電平有3.3和5V兩種。本文PC機(jī)等主機(jī)上一般使用的是5V,有少量工控機(jī)3.3和5V均支持。本文所用的Xilinx的VirtexⅡ Pro系列芯片只支持3.3V電平標(biāo)準(zhǔn),因此不能直接接在PC機(jī)的PCI總線上,必須作電平轉(zhuǎn)換。這里,電平轉(zhuǎn)換選用的是IDT QS3861,高速全雙向, 無(wú)須方向控制信號(hào)。其連接圖如圖3所示。
7調(diào)試
在FPGA設(shè)計(jì)階段,傳統(tǒng)的信號(hào)分析手段要求在設(shè)計(jì)時(shí)保留一定數(shù)量的FPGA引腳作為測(cè)試引腳。這種方法靈活性差,對(duì)電路板的設(shè)計(jì)也有一定的影響。當(dāng)今先進(jìn)的FPGA所具有的規(guī)模、速度和板級(jí)要求使得利用傳統(tǒng)邏輯分析儀進(jìn)行FPGA調(diào)試幾乎是不可能的。Xilinx公司推出的片內(nèi)邏輯分析儀ChipScope Pro能夠通過(guò)JTAG口在線、實(shí)時(shí)地讀出FPGA的內(nèi)部信號(hào),而只需要片內(nèi)的少量BlockRAM和邏輯資源,使得邏輯分析變得靈活方便。
對(duì)于本次設(shè)計(jì)中的硬件部分調(diào)試,有兩種調(diào)試方法:
a)針對(duì)設(shè)計(jì)中用戶編寫的模塊部分。在模塊編譯生成ngc文件后使用Chipscope Inserter打開(kāi)文件;然后定義觸發(fā)信號(hào)、捕捉信號(hào),插入調(diào)試單元,再與其他模塊鏈接生成最終的二進(jìn)文件下載;在系統(tǒng)運(yùn)行后通過(guò)JTAG口由Chipscope Analyser觀察捕捉到的信號(hào)。
b)OPB、PLB等總線的信號(hào),這些不屬于用戶模塊。要使用ChipScope Pro對(duì)OPB總線進(jìn)行觀察,需要在EDK設(shè)計(jì)時(shí)添加chipscope_icon和chipscope_opb_iba兩個(gè)內(nèi)核模塊并設(shè)置好參數(shù)。下載運(yùn)行之后就可以通過(guò)ChipScope Analyser捕捉OPB總線的信號(hào),并可根據(jù)需要,靈活調(diào)整觸發(fā)條件和測(cè)試信號(hào),實(shí)現(xiàn)對(duì)FPGA的片上調(diào)試。
下面就是PCI在傳送數(shù)據(jù)時(shí)筆者在ChipScope上觀察到的OPB總線信號(hào)。圖4為OPBPCI橋通過(guò)OPB總線讀取接收存儲(chǔ)器中的數(shù)據(jù)。
8結(jié)束語(yǔ)
支持PCI總線的片上系統(tǒng)設(shè)計(jì)具有一定難度。本文介紹的基于FPGA內(nèi)部PowerPC和OPBPCI橋的設(shè)計(jì),通過(guò)使用EDK集成開(kāi)發(fā)工具,可以很方便地生成片上系統(tǒng)以及實(shí)現(xiàn)對(duì)PCI接口的支持。由于芯片可編程的特性,在后續(xù)開(kāi)發(fā)對(duì)數(shù)據(jù)處理的過(guò)程中將具有非常大的靈活性,可以根據(jù)系統(tǒng)的要求選擇不同的軟硬件實(shí)現(xiàn)方案,并且在系統(tǒng)設(shè)計(jì)過(guò)程中具有非常好的可調(diào)試性,能大幅度縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)難度,是一種簡(jiǎn)便和實(shí)用的方案。
參考文獻(xiàn):
[1]OPB IPIF/LogiCore v3 PCI core bridge user guide[EB/OL].(2004).http://www.xilinx.com/bvdocs/ipcenter/data_sheet/opb_pci.pdf.
[2]SHANLEY T,ADERSON D.PCI系統(tǒng)結(jié)構(gòu)[M].劉暉,等譯.4版.北京:電子工業(yè)出版社,2000:55180.
[3]孫航.Xilinx可編程邏輯器件的高級(jí)應(yīng)用與設(shè)計(jì)技巧[M]. 北京:電子工業(yè)出版社,2004:250-416.
[4]Xilinx Corp.PowerPC processor reference guide[EB/OL].(2004).http://www.xilinxchina.com/bvdocs/userguides/ppc_ref_guide.pdf.
[5]Xilinx Corp. Embedded development kit (EDK) reference guide[EB/OL].(2004).http://www.xilinxchina.com/ise/embedded/edk_docs.htm.
[6]Xilinx Corp. LogiCORE PCI version 3.0 user guide[EB/OL].(2004).http://www.xilinx.com/products/logicore/pci/docs/pci_ug159.pdf.
[7]王誠(chéng),薛小剛,鐘信潮. FPGA/CPLD設(shè)計(jì)工具——Xilinx ISE 5.x使用詳解[M]. 北京:人民郵電出版社,2003:281-289.
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文”