我們?cè)诖颂峁┰敿?xì)信息,說明Missing Link電子公司的工程師是如何為我們的示例設(shè)計(jì)生成必要文件的,以及如何使用這些文件在Xilinx ML507評(píng)估平臺(tái)(其中包含一個(gè)Xilinx Virtex-5 XC5VFX70T器件)上復(fù)制結(jié)果。我們還說明如何以此設(shè)計(jì)為起點(diǎn)來完成您自己的APU增強(qiáng)型FPGA設(shè)計(jì)。
第 1 步:構(gòu)建協(xié)處理器
從理論上講,您幾乎可以構(gòu)建任何協(xié)處理器,只要能將其裝入您的FPGA即可。但請(qǐng)記住,一條用戶定義指令 (UDI) 每周期可以傳輸兩條32位的運(yùn)算元和一條 32 位的結(jié)果。我們的復(fù)數(shù)乘法協(xié)處理器是在文件src/cmplxmul.vhd中實(shí)現(xiàn)的。
第 2 步:構(gòu)建FCM封裝
為了節(jié)省面積,您的協(xié)處理器可能需要具有與我們的協(xié)處理器相似的多周期運(yùn)行方式。因此,您將需要用狀態(tài)機(jī)在協(xié)處理器和輔助處理單元 (APU) 之間實(shí)現(xiàn)簡單的握手協(xié)議。在我們的示例中,我們是在封裝“fcmcmul”內(nèi)做到了這一點(diǎn),此
封裝是在文件src/fcmcmul.vhd中實(shí)現(xiàn)的。
在封裝fcmcmul內(nèi),我們對(duì)復(fù)數(shù)乘法硬件模塊cmplxmul進(jìn)行了實(shí)例化,該模塊成為結(jié)構(gòu)協(xié)處理模塊 (FCM)。這樣,fcmcmul即可提供我們將其連接到 APU 所需的接口。您可以在 賽靈思公司的技術(shù)文檔UG200(從第188頁開始)中找到關(guān)于這些接口信號(hào)的詳細(xì)描述。重要的細(xì)節(jié)是第216頁上所示“先確認(rèn)連續(xù)非自主指令”的時(shí)序圖,其中顯示了APU 與FCM之間的協(xié)議。
第 3 步:FCM與APU連接
一般而言,您可以通過兩種方式將FCM連接到APU:通過使用Xilinx Platform Studio (XPS) 的圖形用戶界面,或者通過修改.mhs文件。我們發(fā)現(xiàn),當(dāng)將現(xiàn)有設(shè)計(jì)的一部分剪貼到新設(shè)計(jì)中時(shí),最易于修改 .mhs 文件。對(duì)于本示例也是如此,我們?cè)谖?syn/apu/system.mhs中連接FCM/封裝和APU。
我們建議您如法進(jìn)行。只要從我們的示例中將“BEGIN fcmcmul”到“END”的一段粘貼到您的 .mhs 文件中即可。要使其在 XPS 中正常工作,您還必須按預(yù)定義的文件/目錄結(jié)構(gòu)提供一套文件。在我們的示例中,我們調(diào)用了封裝模塊fcmcmul,所以文件/目錄結(jié)構(gòu)如下所示:
syn/apu/pcores/fcmcmul/data/fcmcmul_v2_1_0.mpd
syn/apu/pcores/fcmcmul/data/fcmcmul_v2_1_0.pao
syn/apu/pcores/fcmcmul/hdl/vhdl/fcmcmul.vhd
syn/apu/pcores/fcmcmul/hdl/vhdl/cmplxmul.vhd
.mpd文件包含F(xiàn)CM的端口說明。.pao文件提供與FCM關(guān)聯(lián)的模塊和文件的名稱,而XPS則在hdl/vhdl目錄中查找協(xié)處理器和封裝的VHDL源文件。
您應(yīng)該根據(jù)自己的APU增強(qiáng)型FPGA設(shè)計(jì)的需要復(fù)制和調(diào)整此樹狀結(jié)構(gòu)。
第 4 步:硬件仿真
我們提供了用ModelSim測試APU示例所需的必要文件。作為先決條件,您必須生成并編譯 賽靈思公司 仿真庫,但僅當(dāng)您未曾進(jìn)行此操作時(shí)才這樣做。您可以從XPS菜單“XPS→仿真→編譯仿真庫”完成此操作。然后,從XPS菜單“XPS→仿真→生成仿真”為整個(gè)設(shè)計(jì)生成所有 RTL 仿真文件。下一步是運(yùn)行RTL仿真,以驗(yàn)證您的APU設(shè)計(jì),尤其是驗(yàn)證APU、封裝和協(xié)處理器之間的握手協(xié)議。
仿真顯示APU在一個(gè)或兩個(gè)周期內(nèi)傳送運(yùn)算元的兩種可能性(如技術(shù)文檔UG200中第 216 頁上所述)。請(qǐng)注意 FCMAPUDONE和FCMAPURESULTVALID兩個(gè)信號(hào)。
第 5 步:軟件測試
對(duì)于復(fù)數(shù)乘法運(yùn)算,我們編寫了一個(gè)獨(dú)立的小程序 (syn/apu/aputest/aputest.c) 從軟件角度演示 APU 和協(xié)處理器的用法。此程序配置APU并定義UDI,然后,用我們的硬件協(xié)處理器運(yùn)行一個(gè)進(jìn)行復(fù)數(shù)乘法運(yùn)算的循環(huán),將其與僅軟件復(fù)數(shù)乘法運(yùn)算的結(jié)果進(jìn)行比較,并且提供性能分析。
您必須先配置PowerPC的APU,它才能正常工作。有兩種配置方法:您可以在 XPS 中點(diǎn)擊,然后為APU的某些控制寄存器輸入初始化值;也可以從使用APU的軟件程序中直接配置APU。我們感覺后一種方法較為明確可靠。
在我們的C源代碼文件中,您可以找到正確初始化APU所需的描述性C宏和函數(shù)調(diào)用。請(qǐng)根據(jù)需要將其復(fù)制粘貼到您的程序中。
在該循環(huán)中,我們首先使用UDI進(jìn)行復(fù)數(shù)乘法運(yùn)算,然后使用軟件宏ComplexMult進(jìn)行同樣的運(yùn)算。我們使用例程Start_Time和Stop_Time進(jìn)行性能分析。三個(gè)調(diào)用UDI1FCM_GPR_GPR_GPR實(shí)現(xiàn)三個(gè)周期的硬件復(fù)數(shù)乘法運(yùn)算。我們?cè)赬ilinx EDK生成的文件syn/apu/ppc440_0/include/xpseudo_asm_gcc.h中定義C宏UDI1FCM_GPR_GPR_GPR。我們通過匯編器助記符udi1fcm實(shí)現(xiàn)C宏UDI1FCM_GPR_GPR_GPR 因?yàn)橘愳`思公司 為匯編器打了補(bǔ)丁,所以此udi1fcm助記符(盡管顯然不是原PowerPC 440處理器指令集的組成部分)已經(jīng)是APU可以處理的正確指令。
在我們的測試用例中,aputest是XPS的軟件項(xiàng)目,我們對(duì)其進(jìn)行了編譯、匯編和鏈接,然后將其下載到Virtex-5 FXT的Block RAM中供PowerPC處理器執(zhí)行。
第 6 步:生成FPGA配置
您可以從XPS菜單“XPS→硬件→生成比特流”生成FPGA配置的位文件。為了讓您節(jié)省些時(shí)間,我們包括了一個(gè)針對(duì)Xilinx ML507開發(fā)平臺(tái)的位文件。您可以在中找到此文件。
第 7 步:運(yùn)行示例設(shè)計(jì)
下載FPGA配置的位文件,啟動(dòng)XPS調(diào)試器XMD(UART設(shè)置是115200-8-N-1),然后觀察示例設(shè)計(jì)。
調(diào)試器報(bào)告的運(yùn)行時(shí)間,對(duì)于僅軟件的設(shè)計(jì)是4,717個(gè)周期,對(duì)于UDI硬件加速的復(fù)數(shù)乘法運(yùn)算是1,936個(gè)周期??梢?,未經(jīng)時(shí)序優(yōu)化,在50 MHz下運(yùn)行,通過復(fù)數(shù)乘法運(yùn)算測得的加速度約為2.4倍。當(dāng)然,如果我們要使用流水線并提高并行度,協(xié)處理器運(yùn)行會(huì)快得多,可以將整體加速度提高到五至十倍。
評(píng)論
查看更多