• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于嵌入式方法的浮點單元驗證系統(tǒng)設(shè)計

      2012-07-25 03:19:20王云貴
      微處理機 2012年1期
      關(guān)鍵詞:浮點譯碼指令

      王云貴,楊 靚

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

      1 引言

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

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

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

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

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

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

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

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

      對大多數(shù)的嵌入式系統(tǒng)設(shè)計來說,Base System Builder(BSB)能夠自動進行基本的硬件和軟件平臺配置任務(wù)。如果目標開發(fā)板來自Xilinx公司或者其合作伙伴,BSB支持從相應(yīng)的開發(fā)板上選擇可用的外圍設(shè)備,自動使得FPGA管腳和目標板相匹配,創(chuàng)建一個完整的硬件平臺。如果在用戶自己設(shè)計的開發(fā)板上進行設(shè)計,BSB可以讓你根據(jù)你的板子選擇處理器核(MicroBlaze、PowerPC)和多種外圍設(shè)備,并且連接它們,這樣就創(chuàng)建了一個基本硬件平臺,通過這個起點,可以根據(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í)行完畢,對于自治指令來說,這個信號僅僅表示FCM能夠接收下一條指令了。

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

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

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

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

      (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)的位置,同時添加UDI的配置參數(shù)。下面夾在注釋行中間的就是手動添加的配置參數(shù),其它的由系統(tǒng)自動生成[7]。

      2.4 添加FCM模塊

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

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

      Hdl目錄用于存放FCM模塊的IP源碼,下面可以有兩個子目錄,如果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控制器連接起來了。至此,浮點單元驗證系統(tǒng)的硬件平臺就建立完畢了,PowerPC 405處理器能夠通過APU控制器訪問被測的浮點單元。

      圖3 將被測浮點單元fcmfalu連接到FCB總線上

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

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

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

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

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

      4 系統(tǒng)仿真

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

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

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

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

      5 結(jié)束語

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

      [1] 王云貴,楊靚.一種定浮點合并的FALU的設(shè)計與實現(xiàn)[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.

      猜你喜歡
      浮點譯碼指令
      聽我指令:大催眠術(shù)
      LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
      基于校正搜索寬度的極化碼譯碼算法研究
      基于浮點DSP的鐵路FSK信號檢測
      ARINC661顯控指令快速驗證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      從霍爾的編碼譯碼理論看彈幕的譯碼
      新聞傳播(2016年3期)2016-07-12 12:55:27
      LDPC 碼改進高速譯碼算法
      遙測遙控(2015年2期)2015-04-23 08:15:19
      基于FPGA的浮點FIR濾波器設(shè)計
      改進的Goldschmidt雙精度浮點除法器
      桂东县| 十堰市| 平阳县| 浦城县| 泸水县| 武清区| 时尚| 内丘县| 清苑县| 崇礼县| 敦化市| 即墨市| 仪陇县| 易门县| 乐山市| 阳春市| 商丘市| 新乡县| 德化县| 滨海县| 乌拉特后旗| 金湖县| 高阳县| 嘉禾县| 宁波市| 灌南县| 孝义市| 斗六市| 黄浦区| 佛山市| 太仆寺旗| 彭水| 江永县| 苏尼特右旗| 西城区| 澄迈县| 锦州市| 中阳县| 汝城县| 咸阳市| 五台县|