国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式方法的浮點(diǎn)單元驗(yàn)證系統(tǒng)設(shè)計(jì)

2012-07-25 03:19王云貴
微處理機(jī) 2012年1期
關(guān)鍵詞:浮點(diǎn)譯碼總線

王云貴,楊 靚

(西安微電子技術(shù)研究所,西安710054)

1 引言

目前芯片的驗(yàn)證已經(jīng)成為IC領(lǐng)域面臨的一大挑戰(zhàn)。對于IC前端設(shè)計(jì)而言,用于設(shè)計(jì)和驗(yàn)證的時(shí)間比例達(dá)到了3:7,即不得不把大部分時(shí)間用于驗(yàn)證,由此可見驗(yàn)證對于IC的重要性。對浮點(diǎn)單元而言,驗(yàn)證更加困難。Intel曾經(jīng)因?yàn)楸简v處理器的浮點(diǎn)錯(cuò)誤而損失了數(shù)以億計(jì)的美金,而且嚴(yán)重?fù)p害了公司的聲譽(yù)。為了對某定浮點(diǎn)合并的FALU[1]進(jìn)行驗(yàn)證,文獻(xiàn)[1]采用特殊數(shù)據(jù)和隨機(jī)數(shù)據(jù)相結(jié)合的方法對其進(jìn)行了充分的功能仿真,但是只進(jìn)行功能仿真是不夠的。在芯片流片前為了在實(shí)際電路中對其進(jìn)行驗(yàn)證,一般都需要用FPGA做原型驗(yàn)證。一種方法是直接把FALU綜合后下載到FPGA里對其進(jìn)行驗(yàn)證。這里采用另外一種方法,利用Xilinx公司FX系列帶PowerPC 405硬核的FPGA,通過APU控制器把FALU連接到PPC 405核,然后編寫測試程序,通過自定義指令訪問FALU,然后通過程序的運(yùn)算結(jié)果來判斷FALU的功能是否正確,即設(shè)計(jì)一個(gè)嵌入式處理器系統(tǒng)來對FALU(其它IP也可以)進(jìn)行驗(yàn)證。

2 創(chuàng)建硬件平臺

2.1 PowerPC 405流水結(jié)構(gòu)圖

PowerPC405處理器擁有輔助處理單元控制器APU(Auxiliary Processor Unit),使得用戶可以添加自定義指令集。用戶通過FPGA設(shè)計(jì)自己的IP核,也稱為結(jié)構(gòu)性從處理模塊FCM(Fabric Co-processor Module),完成必要功能(如加密解密、壓縮解壓縮以及浮點(diǎn)運(yùn)算),F(xiàn)CM通過使用FPGA邏輯資源來實(shí)現(xiàn)[2]。通過APU控制器,擴(kuò)展必要的指令,將FCM的功能流程與PowerPC405主處理器流水線更緊密的結(jié)合在一起,該方式具有的優(yōu)勢是其它方式,比如總線外設(shè)等方式無法達(dá)到的[3]。圖1顯示了PowerPC405處理器核、APU控制器以及結(jié)構(gòu)性從處理模塊三者之間的流水結(jié)構(gòu)[4]。

APU控制器主要解決兩個(gè)問題:一是進(jìn)行快速PowerPC405時(shí)鐘和慢速FCM接口時(shí)鐘之間的同步;二是譯碼某些FCM指令,把指令需要的CPU資源(比如需要 CPU的 GPR作為源操作數(shù))通知CPU。取決于FCM的應(yīng)用,APU控制器能夠譯碼所有指令,或者APU譯碼部分FCM譯碼部分,或者全部由 FCM 譯碼[5]。

當(dāng)指令到譯碼階段時(shí),它同時(shí)被傳給PowerPC處理器和APU控制器,如果這不是一條CPU能夠認(rèn)識的指令(即不是原生的PowerPC指令),處理器就期望APU控制器給其返回一個(gè)指令有效的響應(yīng)信號,如果APU指令有效,則處理器把需要的操作數(shù)傳送給APU。被傳給APU的指令可以是在指令集體系架構(gòu)(ISA)預(yù)先定義的也可以是用戶自定義的[3]。

圖1 PowerPC405流水結(jié)構(gòu)圖

2.2 創(chuàng)建一個(gè)基本系統(tǒng)

對大多數(shù)的嵌入式系統(tǒng)設(shè)計(jì)來說,Base System Builder(BSB)能夠自動進(jìn)行基本的硬件和軟件平臺配置任務(wù)。如果目標(biāo)開發(fā)板來自Xilinx公司或者其合作伙伴,BSB支持從相應(yīng)的開發(fā)板上選擇可用的外圍設(shè)備,自動使得FPGA管腳和目標(biāo)板相匹配,創(chuàng)建一個(gè)完整的硬件平臺。如果在用戶自己設(shè)計(jì)的開發(fā)板上進(jìn)行設(shè)計(jì),BSB可以讓你根據(jù)你的板子選擇處理器核(MicroBlaze、PowerPC)和多種外圍設(shè)備,并且連接它們,這樣就創(chuàng)建了一個(gè)基本硬件平臺,通過這個(gè)起點(diǎn),可以根據(jù)需要添加更多的外圍設(shè)備,通過XPS工具的支持,還可以添加定制的外設(shè)。

2.3 添加FCB總線

基本系統(tǒng)建好后,打開IP核目錄子窗口,展開Bus and Bridge目錄,選擇Fabric Co-processor Bus(FCB),右擊,選擇添加IP,則將FCB總線添加到系統(tǒng)了,在編輯窗口的 Bus Interface子窗口中展開ppc405_0目錄,在MFCB欄的下拉菜單中選擇fcb_v10_0,這樣就將FCB連接到了PowerPC405處理器上。

圖2 添加FCB總線

APU控制器和FCM模塊之間有很多信號,但是一般只用到其中的少部分。下面對用到的重要接口信號做簡單介紹。

從FCM輸出到APU的信號:

(1)FCMAPURESULT[0:31],通過 APU 傳給CPU的FCM模塊的執(zhí)行結(jié)果。

(2)FCMAPUDONE,通知APU控制器:FCM中的指令執(zhí)行完畢,對于自治指令來說,這個(gè)信號僅僅表示FCM能夠接收下一條指令了。

(3)FCMAPURESULTVALID,表示結(jié)果FCMAPURESULT[0:31]等信號值有效。

從PowerPC405處理器通過APU控制器傳給FCM模塊的信號:

(4)APUFCMINSTRUCTION[0:31],通過 APU傳給FCM模塊的指令,當(dāng)APUFCMINSTRVALID信號為高時(shí),它的值有效。

(5)APUFCMINSTRVALID,在兩種情況下這個(gè)信號會變高,一是APU控制器譯碼了一個(gè)有效的APU指令,二是一個(gè)未譯碼的指令傳給 FCM,由FCM進(jìn)行譯碼。

(6)APUFCMRADATA[0:31],從通用寄存器GPR傳過來的源操作數(shù)(RA)。

(7)APUFCMRBDATA[0:31],從通用寄存器GPR傳過來的源操作數(shù)(RB)。

(8)APUFCMOPERANDVALID,表示傳過來的操作數(shù)有效。

(9)APUFCMDECUDI[0:2],指示 APU 控制器譯碼的是哪條UDI指令(總共8條)。

為了能夠使用APU與UDI,需要在system.mhs文件中將其使能,在system.mhs中找到ppc405_virtex4,把APU使能控制參數(shù)添加到相應(yīng)的位置,同時(shí)添加UDI的配置參數(shù)。下面夾在注釋行中間的就是手動添加的配置參數(shù),其它的由系統(tǒng)自動生成[7]。

2.4 添加FCM模塊

在工程目錄下,有個(gè)叫pcores的文件夾,這是用來放置用戶自己IP的文件夾。文中設(shè)計(jì)的FCM模塊就是需要驗(yàn)證的浮點(diǎn)單元FALU,在工程中的名字叫fcmfalu。在pcores目錄下面新建一個(gè)子目錄:fcmfalu_v1_00_a,在這個(gè)目錄下新建兩個(gè)子目錄:data和hdl。如果FCM模塊中要用到Xilinx公司提供的IP,則還需要建立一個(gè)叫netlist的目錄,這個(gè)目錄用來放置這類IP的網(wǎng)表文件。

在data目錄下新建兩個(gè)文件:fcmfalu_v2_1_0.pao和fcmfalu_v2_1_0.mpd。后綴為.pao(Peripheral Analyze Order)的文件包含了用于綜合的HDL文件,定義了仿真時(shí)的分析順序;后綴為.mpd(Microprocessor Peripheral Definition)的文件定義了IP的接口信號,它具有如下三個(gè)特點(diǎn):列出了總線接口的端口和默認(rèn)連接關(guān)系,列出了參數(shù)和默認(rèn)值。另外還有一個(gè)后綴為.bbd(Black Box Definition)的文件,它定義了FCM模塊中黑盒子部分的網(wǎng)表文件的存放位置,如果FCM模塊中使用了這類IP,則需要這個(gè)文件,如果沒有使用,則不需要。

Hdl目錄用于存放FCM模塊的IP源碼,下面可以有兩個(gè)子目錄,如果IP是使用VHDL描述的,則將.vhd文件放在vhdl目錄下;反之,如果IP是用Verilog HDL描述的,則將.v文件放在verilog子目錄下。

把data、hdl以及netlist文件夾下面的文件都設(shè)置好后,在XPS的菜單欄中選擇Project->Rescan User Repositories,則XPS會把用戶IP加載到工程信息域窗口的IP目錄子窗口的Project Local PCores下面,右擊用戶IP核fcmfalu,選擇添加IP,這樣就把用戶IP核fcmfalu添加到系統(tǒng)中了,然后在編輯窗口的Bus Interfaces子窗口的fcmfalu_0欄的下拉列表里面選擇fcb_v10_0,這樣就把FCM模塊fcmfalu連接到FCB總線上了,如圖3所示。2.3節(jié)中,把FCB總線連到了PowerPC405處理器的APU控制器上,這樣FCM模塊就通過FCB總線與APU控制器連接起來了。至此,浮點(diǎn)單元驗(yàn)證系統(tǒng)的硬件平臺就建立完畢了,PowerPC 405處理器能夠通過APU控制器訪問被測的浮點(diǎn)單元。

圖3 將被測浮點(diǎn)單元fcmfalu連接到FCB總線上

3 創(chuàng)建測試程序

有兩種創(chuàng)建應(yīng)用軟件的方法:一是直接用XPS,二是使用SDK(Software Development Kit)。SDK是EDK工具中與XPS互補(bǔ)的一種工具,它用來開發(fā)應(yīng)用軟件工程,它基于Eclipse開源標(biāo)準(zhǔn)。對于較大的應(yīng)用軟件開發(fā),Xilinx推薦使用SDK。

嵌入式軟件平臺為每個(gè)處理器定義硬件外設(shè)的驅(qū)動程序(板級支持包),庫文件,標(biāo)準(zhǔn)輸入輸出接口,中斷處理程序和其它相關(guān)的軟件屬性?;谲浖脚_,XPS可以進(jìn)一步定義在各個(gè)處理器上運(yùn)行的應(yīng)用軟件,在軟件平臺設(shè)置窗口可以設(shè)置驅(qū)動程序,庫文件以及操作系統(tǒng)。

默認(rèn)的操作系統(tǒng)是Standalone,它提供板級支持包,這意味著在應(yīng)用程序和硬件平臺之間沒有操作系統(tǒng),應(yīng)用軟件通過直接調(diào)用驅(qū)動程序操作硬件平臺,應(yīng)用程序可以使用驅(qū)動程序和基本的庫文件。standalone是一種簡單、低層次的軟件層,它提供對基本處理器特征的訪問,比如:高速緩存、中斷以及基本輸出等。這種模式不適合復(fù)雜的應(yīng)用程序,但是它提供了基本的庫文件,因此對簡單應(yīng)用是非常適合的,軟件平臺設(shè)置好后就可以編寫用戶程序了。

為了對浮點(diǎn)單元進(jìn)行驗(yàn)證,需要編寫相應(yīng)的浮點(diǎn)測試程序讓其執(zhí)行,這樣就可以通過程序的結(jié)果來判斷浮點(diǎn)單元是否正確。文獻(xiàn)[1]設(shè)計(jì)的FALU能夠執(zhí)行21條指令,為了簡便起見,這里僅演示對浮點(diǎn)加法指令進(jìn)行測試,其它指令的測試原理是一樣的。自定義指令UDI1FCM_GPR_GPR_GPR(aa0,bb1,bb2)的作用是把bb1,bb2兩個(gè)源操作數(shù)傳遞給浮點(diǎn)單元執(zhí)行,浮點(diǎn)單元執(zhí)行完畢后把運(yùn)算結(jié)果返回給PowerPC 405處理器,PowerPC 405將結(jié)果保存在變量aa0中。最簡單的測試程序如下所示。

4 系統(tǒng)仿真

硬件平臺和測試軟件都創(chuàng)建完畢后,對浮點(diǎn)單元FALU進(jìn)行驗(yàn)證的嵌入式系統(tǒng)就建好了,下一步就可以進(jìn)行仿真了。大多數(shù)現(xiàn)代仿真器要求在使用它們進(jìn)行仿真之前首先編譯HDL庫,編譯HDL庫的好處包括更快的執(zhí)行速度和更少的內(nèi)存占用量。

在仿真庫編譯過程中如果沒有錯(cuò)誤產(chǎn)生,就可以進(jìn)行下一步的操作:產(chǎn)生仿真模型。EDK產(chǎn)生一個(gè)后綴為.do的文件來編譯產(chǎn)生的仿真模型,這個(gè)文件包含了仿真庫的映射和編譯命令,在Modlesim中輸入do system.do編譯仿真模型,仿真模型編譯完畢之后,在仿真之前還必須加載仿真文件,加載命令取決于頂層的HDL語言,如果EDK創(chuàng)建的頂層文件是VHDL格式的,則用vsim system命令加載設(shè)計(jì),如果是Verilog格式的,則用vsim system glbl命令加載設(shè)計(jì)。系統(tǒng)仿真波形如圖4所示。

圖4 系統(tǒng)仿真波形

從仿真波形可以看出PowerPC405處理器根據(jù) 測試軟件中的指令向 FCM模塊(在這里是被測FALU單元)發(fā)出了正確的控制信號,如instrvalid(指令有效)信號、instruction(指令)信號、decoded(指令譯碼)信號、decudivalid(UDI有效)信號、operandvalid(操作數(shù)有效)信號以及兩個(gè)操作數(shù)afufcmradata、afufcmrbdata。FCM 接到 PowerPC405發(fā)出的指令信號和數(shù)據(jù)信號后進(jìn)行計(jì)算,計(jì)算結(jié)束后把結(jié)果返回給PowerPC405,并給出相應(yīng)的指示信號:fcmapudone,fcmapuresultvalid以及返回的結(jié)果:fcmapuresult。根據(jù)仿真波形可以看出,本系統(tǒng)能夠有效的對被測IP進(jìn)行驗(yàn)證。如果需要對浮點(diǎn)單元進(jìn)行更完善的驗(yàn)證,可以編寫更加復(fù)雜的測試程序。很明顯,通過這種嵌入式方法對浮點(diǎn)單元進(jìn)行驗(yàn)證(其它功能的IP也類似)比直接將其網(wǎng)表下載到FPGA里進(jìn)行驗(yàn)證要好的多。

5 結(jié)束語

介紹了一種基于嵌入式系統(tǒng)對浮點(diǎn)單元進(jìn)行驗(yàn)證的方法,該方法對其它IP的驗(yàn)證也一樣適用。該驗(yàn)證系統(tǒng)的硬件平臺基于Xilinx公司FX系列帶PowerPC 405處理器硬核的FPGA,該FPGA有APU控制器接口,通過該接口PowerPC 405處理器可以對被測IP進(jìn)行訪問,然后通過編寫測試程序?qū)Ω↑c(diǎn)單元進(jìn)行測試,通過程序的運(yùn)行結(jié)果來判斷浮點(diǎn)單元的正確性。上面的例子說明了該方法的有效性。當(dāng)然,也可以用這種方法構(gòu)建一個(gè)嵌入式系統(tǒng),讓PowerPC 405處理器執(zhí)行簡單指令,讓FCM模塊執(zhí)行復(fù)雜的運(yùn)算密集型指令,通過這種方法可使系統(tǒng)速度提高數(shù)倍到數(shù)十倍[7]。

[1] 王云貴,楊靚.一種定浮點(diǎn)合并的FALU的設(shè)計(jì)與實(shí)現(xiàn)[J].微處理機(jī),2011,32(2):7-9,13.

[2] Xilinx.Virtex-4FPGA User Guide UG070(v2.6)[Z].Xilinx.,2008.

[3] Xilinx.PowerPC 405 Processor Block Reference Guide Embedded Development Kit UG018(v2.4)[Z].Xilinx.,2010.

[4] Xilinx.PowerPC ProcessorReferenceGuideUG011(v1.3)[Z].Xilinx.,2010.

[5] Xilinx.Fabric Co-processor Bus(FCB)(v1.00a).Product Specification.DS308[Z].Xilinx.,2009.

[6] Xilinx.Implementing a Virtex-4 FX C-to-HDL Hardware Coprocessor Accelerator in a PowerPC Design Design Guide.UG096(v2.0)[Z].Xilinx.,2007.

[7] Endric Schubert,F(xiàn)elix Eckstein.Extend the PowerPC Instruction Set for Complex Number Arithmetic Using the APU inside a Xilinx Virtex-5-FXT[J].Xcell.Journal Fourth Quarter 2008:44-47.

猜你喜歡
浮點(diǎn)譯碼總線
LEO星座增強(qiáng)GNSS PPP模糊度浮點(diǎn)解與固定解性能評估
分段CRC 輔助極化碼SCL 比特翻轉(zhuǎn)譯碼算法
基于校正搜索寬度的極化碼譯碼算法研究
基于Simulink浮點(diǎn)模型和定點(diǎn)模型的問題研究
基于浮點(diǎn)DSP的鐵路FSK信號檢測
一種基于CAN總線的誤碼測試方法
從霍爾的編碼譯碼理論看彈幕的譯碼
CAN總線并發(fā)通信時(shí)下位機(jī)應(yīng)用軟件設(shè)計(jì)
LDPC 碼改進(jìn)高速譯碼算法
基于CAN總線的水下通信系統(tǒng)設(shè)計(jì)