《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于Virtex-II Pro的雙核系統(tǒng)構(gòu)建
基于Virtex-II Pro的雙核系統(tǒng)構(gòu)建
來源:電子技術(shù)應(yīng)用2011年第7期
呂 平,趙明生
(清華大學(xué) 電子工程系,北京100084)
摘要: 基于Xilinx的Virtex-II Pro開發(fā)板實現(xiàn)了雙PowerPC405核硬件系統(tǒng)構(gòu)建,支持對共享存儲器的訪問及共享串口輸出。重點給出了系統(tǒng)的構(gòu)建方法及共享資源控制機(jī)制,測試結(jié)果驗證了系統(tǒng)的可行性。
關(guān)鍵詞: FPGA 雙核 powerpc405 Virtex-IIPro Mutex
中圖分類號: TN791
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)07-0051-03
Design dual processor system based on Virtex-II Pro board
Lv Ping,Zhao Mingsheng
Department of Electronic Engineering, Tsinghua University, Beijing 100084,China
Abstract: A system with dual PowerPC405 is built based on Virtex-II Pro development board, which support the access of the shared BRAM and Uart. Key steps of building system and principle of share resources are described. Test results verify the feasibility of system.
Key words : dual processor;PowerPC405;Virtex-II Pro;Mutex


    隨著對信息處理技術(shù)要求的不斷提高,單核系統(tǒng)設(shè)計在提升系統(tǒng)整體性能上出現(xiàn)瓶頸,系統(tǒng)設(shè)計逐漸向多核系統(tǒng)設(shè)計轉(zhuǎn)變。Xilinx Virtex-II Pro開發(fā)板為各大學(xué)主要采用的開發(fā)板,該板上主芯片XC2VP30內(nèi)置兩個硬核PowerPC405,具有30 816邏輯單元、136個18位的乘法器、2 448 Kbit的Block RAM。
    但國內(nèi)研究應(yīng)用多使用該板進(jìn)行單核系統(tǒng)設(shè)計,未能充分利用其雙核資源。其原因在于:Xilinx公司軟件對Virtex-II系列開發(fā)板的雙核系統(tǒng)設(shè)計支持性不好;Virtex-II Pro開發(fā)板只具有一個串口輸出,給調(diào)試帶來了極大的不便。
    針對在Virtex-II Pro開發(fā)板進(jìn)行雙核系統(tǒng)設(shè)計難度大的問題,本文給出雙核硬件系統(tǒng)的構(gòu)建方法,提出一種共享串口輸出和共享存儲器的系統(tǒng)結(jié)構(gòu),能夠充分利用板上資源,下載調(diào)試非常便利,可以很好地支持雙核的應(yīng)用設(shè)計。
1 硬件系統(tǒng)設(shè)計
    系統(tǒng)采用EDK10.1i03開發(fā)環(huán)境。設(shè)計雙核的系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

    系統(tǒng)具有2個PowerPC405處理器:PPC_0和PPC_1,兩個處理器具有各自獨立的私有Boot BRAM,用于存儲相應(yīng)的應(yīng)用程序。PPC_0通過總線PLB_0控制外設(shè)SDRAM,PPC_1通過總線PLB1控制外設(shè)LED_4Bits。兩個處理器具有各自的中斷控制器和復(fù)位控制器。JTAG具有2個PowerPC的接口,并通過共享串口進(jìn)行信息輸出。
    雙核系統(tǒng)設(shè)計流程如下:
    (1)利用BSB(Base system Builder)向?qū)蓡魏讼到y(tǒng)。
    系統(tǒng)BSB設(shè)置的參數(shù)如下:
    · System clock:100 MHz,no cache,no OCM
    · RS232:opb UARTLITE,115200n8,use interrupt
    · DDRAM:PLB DDR 256 MB,use interrupt
    · LEDs_4 Bit:use interrupt
    · PLB_BRAM_IF_CNTLR:64 KB
    (2)添加和配置IP
    由于EDK10不支持雙核系統(tǒng)設(shè)計,因此需要手動添加和配置相關(guān)IP,需添加的IP核有:
    ppc405, plb_v46, plb2plb_bridge, bram_block, opb_intc plb_bram_if_cntlr, xps_mutex
    MHS(Microprocessor Hardware Specification)是描述硬件結(jié)構(gòu)的文件,需要修改MHS文件對添加的IP核進(jìn)行配置。這里給出主要的ppc405、bram_block、xps_mutex核的配置說明,其他IP核將不再贅述。
    ①對PPC405_1的配置說明
    BEGIN ppc405
      PARAMETER INSTANCE = PPC_1
      PARAMETER HW_VER = 3.00.a
      PARAMETER C_DSOCM_DCR_BASEADDR=
      0b0000100000
      PARAMETER C_DSOCM_DCR_HIGHADDR =
0b0000100011
      BUS_INTERFACE RESETPPC=ppc_rest_bus_1  //復(fù)位
      BUS_INTERFACE JTAGPPC = jtagppc_cntlr_0_1   
#用于PPC_1調(diào)試
      BUS_INTERFACE IPLB0=plb1//總線
      BUS_INTERFACE DPLB0=plb1
      PORT EICC405EXTINPUTIRQ=xps_intc_1_Irq
      PORT CPMC405CLOCK=proc_clk_s  //時鐘
    END    
    ②對Mutex核進(jìn)行配置
    BEGIN xps_mutex
      PARAMETER INSTANCE = xps_mutex_0
      PARAMETER HW_VER = 1.00.a
      PARAMETER C_NUM_MUTEX = 2
      PARAMETER C_SPLB0_BASEADDR = 0x82400000
#該地址應(yīng)用于Mutex初始化
      PARAMETER C_SPLB0_HIGHADDR = 0x8240ffff
      PARAMETER C_SPLB1_BASEADDR = 0x82600000
#該地址應(yīng)用于Mutex初始化
      PARAMETER C_SPLB1_HIGHADDR = 0x8260ffff
      BUS_INTERFACE SPLB1 = plb1
      BUS_INTERFACE SPLB0 = plb0
    END
    ③共享BRAM核進(jìn)行配置
    BEGIN bram_block
      PARAMETER INSTANCE = share_bram
      PARAMETER HW_VER = 1.00.a
      BUS_INTERFACE PORTB=share_bram_if_cntlr_1_PORTA
      BUS_INTERFACE PORTA = share_bram_if_cntlr_0_
PORTA
    END
    (3)生成地址空間(Generate Addresses)
    使用Generate Addresses命令,系統(tǒng)自動分配地址空間。由于軟件本身不支持雙核系統(tǒng)設(shè)計,在地址空間沖突時,需要手動對沖突的地址空間進(jìn)行調(diào)整。使用Generate Bitstream可產(chǎn)生系統(tǒng)的硬件比特流。
2 軟件工程設(shè)計
2.1 軟件工程構(gòu)建

    (1)配置軟件平臺
    由于兩個PowerPC通過總線及總線橋共享串口輸入,因此需要在Software Platform Settings中,對stdout和stdin配置為RS232_Uart_1。
    (2)添加應(yīng)用工程
    添加工程ppc0_test_share和ppc1_test_share。選中兩個工程文件,分別Mark to initialize BRAM,并將軟件工程指定給各自的處理器。
    Generate the linker script,指定將所有程序段放入各自的私有BRAM中。Update Bitstream以生成相應(yīng)的全局比特流文件。
    軟件工程包括SDRAM 測試、LED外設(shè)測試、SHARE BRAM的讀寫操作,測試結(jié)果通過共享串口進(jìn)行輸出。雙核CPU通過Mutex核進(jìn)行互鎖訪問,控制訪問共享串口。
2.2 Mutex核使用
    Mutex提供多核環(huán)境下處理器對共享設(shè)備的互斥訪問。其原理是:Mutex具有32 bit的寫數(shù)據(jù)寄存器,如圖2所示。CPU_0訪問共享資源前,先向該數(shù)據(jù)寄存器寫自己的CPU_ID,如果Mutex設(shè)備空閑,則將CPUID寫入寄存器,并Lock置1。CPU_0通過查詢和比較寫數(shù)據(jù)寄存器和自己的CPUID,以確定是否獲得訪問共享資源的權(quán)限。沒有獲得權(quán)限,則等待或者退出;獲得權(quán)限后,對共享資源訪問,訪問結(jié)束后釋放鎖。其在系統(tǒng)中的連接如圖3所示。

 

 

    xps_mutex連接到PLB0和PLB1總線上,初始化時需要對其地址進(jìn)行配置。在設(shè)計過程中發(fā)現(xiàn),由于Xilinx的軟件設(shè)計問題,EDK10在頭文件xparameters.h中不能正常生成SPLB1的地址,表現(xiàn)為軟件自動生成的SPLB1和SPLB0的地址相同,會造成Mutex初始化失敗。因此在初始化Mutex時,切勿直接使用XMutex_LookupConfig()函數(shù)。PPC_1初始化Mutex的過程如下:
#define XPAR_XPS_MUTEX_0_SPLB1_BASEADDR 0x82600000
void init_lock ()
{    XMutex_Config *cfg;
    XMutex_Config XMutex_ConfigTable[] ={
        {    XPAR_XPS_MUTEX_0_DEVICE_ID,
            XPAR_XPS_MUTEX_0_SPLB1_BASEADDR,
//該地址需要對應(yīng)SPLB1的地址
            XPAR_XPS_MUTEX_0_NUM_MUTEX,
            XPAR_XPS_MUTEX_0_ENABLE_USER}
    };
    cfg=&XMutex_ConfigTable[0];
    XMutex_CfgInitialize(&mutex, cfg, cfg->BaseAddress);
}
    訪問共享串口的操作為:
void share_rs232(char *messages)
{    char *tmp;
    XMutex_Lock(&mutex, MUTEX_NUM);//對共享資源加鎖
    printf("CPU(%x):%s\r\n",XPAR_CPU_ID,messages);
    XMutex_Unlock(&mutex,MUTEX_NUM);  //釋放
}
2.3 系統(tǒng)測試結(jié)果
2.3.1 共享串口測試

    設(shè)置超級終端,連接JTAG電纜,選中Download Bitstream將比特流下載到目標(biāo)板上。通過共享串口,兩個CPU分別輸出其工作狀態(tài)。輸出結(jié)果如圖4所示。

    其中CPU(0)輸出私有存儲器SDRAM的測試正確信息,說明PPC_0正常工作。
    同時觀察板上LED顯示,led_0、led_2和led_1、led_3呈現(xiàn)交替閃爍狀態(tài),說明PPC_1及外設(shè)LED工作正常。
2.3.2 共享存儲器讀寫測試
    SSHM_READFLAG為CPU讀寫狀態(tài)指示。SSHM_READFLAG為0時,PPC_0進(jìn)行寫操作;為1時,PPC_1進(jìn)行讀操作。共享存儲器的讀寫操作測試結(jié)果如圖5所示。

    PPC_0對共享BRAM進(jìn)行寫數(shù)據(jù)操作,數(shù)據(jù)依次為0~4,每次寫操作完成后將SSHM_READFLAG置1。PPC_1在PPC_0每次數(shù)據(jù)操作完畢后,檢測到SSHM_READFLAG為1時進(jìn)行讀數(shù)據(jù)操作,操作完成后置SSHM_READFLAG為0。
    本文完成基于Virtex-II pro開發(fā)板的雙核PowerPC系統(tǒng)的構(gòu)建,提高板上資源利用效率。系統(tǒng)通過Mutex的互鎖機(jī)制完成對共享資源的控制。共享串口輸出調(diào)試結(jié)果,解決了開發(fā)板的單串口不易調(diào)試的問題;通過共享BRAM進(jìn)行數(shù)據(jù)交換,可以實現(xiàn)系統(tǒng)的并行協(xié)同處理;直接下載比特流即可實現(xiàn)雙核的系統(tǒng)運行,調(diào)試和系統(tǒng)運行更為方便。該系統(tǒng)為使用Virtex-II Pro開發(fā)板進(jìn)行雙核系統(tǒng)設(shè)計提供了參考價值。
參考文獻(xiàn)
[1] Kowalczyk J.Multiprocessor systems virtex-II series. Xilinx WP162(v1.1).2003.
[2] ASOKAN V.Designing multiprocessor systems in platform studio.Xilinx WP262(v2.0).2007.
[3] Xilinx.ML410 dual processor hardware build using EDK 8.2i SP1.2007.
[4] Asokan V.Dual processor reference design suite.Xilinx XAPP996(v1.0),2007.
[5] Harn Hua Ng.PPC405 lockstep system on ML310.Xilinx XAPP564(v1.0),2004.
[6] Bennett J K.Shared memory multiprocessing using the virtex II PPC:sharing memory,sharing a UART,and synchronization a guide for the XUP development board. University of Colorado at Boulder,2005.
[7] XPS Mutex(v1.00c).www.xilinx.com.2009,24(6).

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