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


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

    系統具有2個PowerPC405處理器:PPC_0和PPC_1,兩個處理器具有各自獨立的私有Boot BRAM,用于存儲相應的應用程序。PPC_0通過總線PLB_0控制外設SDRAM,PPC_1通過總線PLB1控制外設LED_4Bits。兩個處理器具有各自的中斷控制器和復位控制器。JTAG具有2個PowerPC的接口,并通過共享串口進行信息輸出。
    雙核系統設計流程如下:
    (1)利用BSB(Base system Builder)向導生成單核系統。
    系統BSB設置的參數如下:
    · 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不支持雙核系統設計,因此需要手動添加和配置相關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命令,系統自動分配地址空間。由于軟件本身不支持雙核系統設計,在地址空間沖突時,需要手動對沖突的地址空間進行調整。使用Generate Bitstream可產生系統的硬件比特流。
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提供多核環境下處理器對共享設備的互斥訪問。其原理是:Mutex具有32 bit的寫數據寄存器,如圖2所示。CPU_0訪問共享資源前,先向該數據寄存器寫自己的CPU_ID,如果Mutex設備空閑,則將CPUID寫入寄存器,并Lock置1。CPU_0通過查詢和比較寫數據寄存器和自己的CPUID,以確定是否獲得訪問共享資源的權限。沒有獲得權限,則等待或者退出;獲得權限后,對共享資源訪問,訪問結束后釋放鎖。其在系統中的連接如圖3所示。

 

 

    xps_mutex連接到PLB0和PLB1總線上,初始化時需要對其地址進行配置。在設計過程中發現,由于Xilinx的軟件設計問題,EDK10在頭文件xparameters.h中不能正常生成SPLB1的地址,表現為軟件自動生成的SPLB1和SPLB0的地址相同,會造成Mutex初始化失敗。因此在初始化Mutex時,切勿直接使用XMutex_LookupConfig()函數。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 系統測試結果
2.3.1 共享串口測試

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

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

    PPC_0對共享BRAM進行寫數據操作,數據依次為0~4,每次寫操作完成后將SSHM_READFLAG置1。PPC_1在PPC_0每次數據操作完畢后,檢測到SSHM_READFLAG為1時進行讀數據操作,操作完成后置SSHM_READFLAG為0。
    本文完成基于Virtex-II pro開發板的雙核PowerPC系統的構建,提高板上資源利用效率。系統通過Mutex的互鎖機制完成對共享資源的控制。共享串口輸出調試結果,解決了開發板的單串口不易調試的問題;通過共享BRAM進行數據交換,可以實現系統的并行協同處理;直接下載比特流即可實現雙核的系統運行,調試和系統運行更為方便。該系統為使用Virtex-II Pro開發板進行雙核系統設計提供了參考價值。
參考文獻
[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網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 一本色道久久综合亚洲精品高清 | 国产成人综合高清在线观看 | 亚欧洲精品bb | 国产综合在线视频 | 91免费网| 日批视频免费观看 | 天堂在线观看视频观看www | 日韩天天操| 成人影视网站 | 日韩精品视频免费网址 | 国产一区精品在线 | 欧美日韩色视频在线观看 | 亚洲人人看| 日本三级欧美三级人妇英文 | 成人区精品一区二区不卡亚洲 | 青青青青青青草 | 噜噜噜色 | 日本在线看小视频网址 | 成αv人| 亚洲综合在线另类色区奇米 | 在线成年人视频 | 一本大道香蕉高清视频在线 | 精品欧美高清不卡在线 | 人人添人人麦人人爽夜欢视频 | 欧美色图亚洲图片 | 精品一区二区三区影院在线午夜 | 制服丝袜中文字幕第一页 | 在线观看免费午夜大片 | 丝袜视频网在线观看 | xx性动漫xx无尽xx老师 | 日韩1级片 | 飘花国产午夜精品不卡 | 日韩精品特黄毛片免费看 | 狠狠澡夜夜澡人人爽 | 黄色片视频在线免费观看 | 一区视频在线 | 亚洲精品性夜夜夜 | 日本成人激情 | 黄色影院免费看 | 国产成人精品日本亚洲专一区 | 日韩精品手机在线 |