《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Virtex-II Pro的雙核系統(tǒng)構建
基于Virtex-II Pro的雙核系統(tǒng)構建
來源:電子技術應用2011年第7期
呂 平,,趙明生
(清華大學 電子工程系,,北京100084)
摘要: 基于Xilinx的Virtex-II Pro開發(fā)板實現(xiàn)了雙PowerPC405核硬件系統(tǒng)構建,支持對共享存儲器的訪問及共享串口輸出,。重點給出了系統(tǒng)的構建方法及共享資源控制機制,,測試結果驗證了系統(tǒng)的可行性,。
中圖分類號: TN791
文獻標識碼: 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


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

    系統(tǒng)具有2個PowerPC405處理器:PPC_0和PPC_1,,兩個處理器具有各自獨立的私有Boot BRAM,,用于存儲相應的應用程序。PPC_0通過總線PLB_0控制外設SDRAM,,PPC_1通過總線PLB1控制外設LED_4Bits,。兩個處理器具有各自的中斷控制器和復位控制器。JTAG具有2個PowerPC的接口,,并通過共享串口進行信息輸出,。
    雙核系統(tǒng)設計流程如下:
    (1)利用BSB(Base system Builder)向導生成單核系統(tǒng)。
    系統(tǒng)BSB設置的參數(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)設計,因此需要手動添加和配置相關IP,,需添加的IP核有:
    ppc405, plb_v46, plb2plb_bridge, bram_block, opb_intc plb_bram_if_cntlr, xps_mutex
    MHS(Microprocessor Hardware Specification)是描述硬件結構的文件,,需要修改MHS文件對添加的IP核進行配置。這里給出主要的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  //復位
      BUS_INTERFACE JTAGPPC = jtagppc_cntlr_0_1   
#用于PPC_1調試
      BUS_INTERFACE IPLB0=plb1//總線
      BUS_INTERFACE DPLB0=plb1
      PORT EICC405EXTINPUTIRQ=xps_intc_1_Irq
      PORT CPMC405CLOCK=proc_clk_s  //時鐘
    END    
    ②對Mutex核進行配置
    BEGIN xps_mutex
      PARAMETER INSTANCE = xps_mutex_0
      PARAMETER HW_VER = 1.00.a
      PARAMETER C_NUM_MUTEX = 2
      PARAMETER C_SPLB0_BASEADDR = 0x82400000
#該地址應用于Mutex初始化
      PARAMETER C_SPLB0_HIGHADDR = 0x8240ffff
      PARAMETER C_SPLB1_BASEADDR = 0x82600000
#該地址應用于Mutex初始化
      PARAMETER C_SPLB1_HIGHADDR = 0x8260ffff
      BUS_INTERFACE SPLB1 = plb1
      BUS_INTERFACE SPLB0 = plb0
    END
    ③共享BRAM核進行配置
    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)設計,在地址空間沖突時,,需要手動對沖突的地址空間進行調整,。使用Generate Bitstream可產生系統(tǒng)的硬件比特流。
2 軟件工程設計
2.1 軟件工程構建

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

 

 

    xps_mutex連接到PLB0和PLB1總線上,初始化時需要對其地址進行配置,。在設計過程中發(fā)現(xiàn),,由于Xilinx的軟件設計問題,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,
//該地址需要對應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)測試結果
2.3.1 共享串口測試

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

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

    PPC_0對共享BRAM進行寫數(shù)據(jù)操作,,數(shù)據(jù)依次為0~4,,每次寫操作完成后將SSHM_READFLAG置1。PPC_1在PPC_0每次數(shù)據(jù)操作完畢后,,檢測到SSHM_READFLAG為1時進行讀數(shù)據(jù)操作,,操作完成后置SSHM_READFLAG為0。
    本文完成基于Virtex-II pro開發(fā)板的雙核PowerPC系統(tǒng)的構建,,提高板上資源利用效率,。系統(tǒng)通過Mutex的互鎖機制完成對共享資源的控制。共享串口輸出調試結果,,解決了開發(fā)板的單串口不易調試的問題,;通過共享BRAM進行數(shù)據(jù)交換,,可以實現(xiàn)系統(tǒng)的并行協(xié)同處理;直接下載比特流即可實現(xiàn)雙核的系統(tǒng)運行,,調試和系統(tǒng)運行更為方便,。該系統(tǒng)為使用Virtex-II Pro開發(fā)板進行雙核系統(tǒng)設計提供了參考價值。
參考文獻
[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).

此內容為AET網(wǎng)站原創(chuàng),,未經授權禁止轉載,。