亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Handel-C的軟硬件協(xié)同驗證方法

        2012-06-03 09:15:12劉舜奎蔡藝軍
        電子技術(shù)應(yīng)用 2012年10期
        關(guān)鍵詞:系統(tǒng)設(shè)計

        劉舜奎,蔡藝軍

        (廈門大學 電子工程系,福建 廈門361005)

        在數(shù)字集成電路的設(shè)計中,需要通過仿真來檢驗設(shè)計是否可實現(xiàn)預(yù)期的功能。仿真需要為設(shè)計項目建立一個測試平臺,為設(shè)計項目提供盡可能完備的測試激勵和可供觀測的輸出響應(yīng),根據(jù)輸出響應(yīng)信息可判斷設(shè)計項目是否可實現(xiàn)預(yù)期的功能。隨著系統(tǒng)設(shè)計復(fù)雜性的不斷增加,當設(shè)計集成度超過百萬門后,設(shè)計正確性的驗證就比設(shè)計本身還要困難,系統(tǒng)仿真的實時性很難滿足要求。在對復(fù)雜電路進行軟件仿真時,系統(tǒng)的仿真時間往往占據(jù)了設(shè)計的大部分,系統(tǒng)某些電路功能的仿真驗證常常需要幾個小時甚至幾天。因此,如何提高仿真效率、減少仿真復(fù)雜度、縮短仿真時間,成為系統(tǒng)設(shè)計中的關(guān)鍵問題。

        為了方便而快速地實現(xiàn)仿真驗證,及時得到測試結(jié)果,本文提出運用硬件加速的思想,并以O(shè)penGL-ES算法中的坐標變換算法為例,將其作為待驗證的IP放在整個OpenGL-ES軟件平臺上進行測試。利用Handel-C語言對該IP進行FPGA實現(xiàn),并采用Bus Master DMA的通信方式在軟、硬件之間進行通信,實現(xiàn)軟硬件協(xié)同加速仿真。選用以O(shè)penGL-ES為例是因為該算法為開源的;采用C++實現(xiàn),存在大量矩陣運算,將其用 FPGA實現(xiàn),可充分利用硬件并行的特性。同時,也因為Handel-C與C語言的高度相似性,開發(fā)周期得到了明顯的縮短。

        1 OpenGL ES及相關(guān)算法分析

        OpenGL ES 1.1的繪圖主要分兩個階段:幾何處理階段和光柵化處理階段[1-2],如圖1所示。

        圖1 OpenGL ES 1.1繪圖流水線

        本文關(guān)注的是幾何處理階段中的坐標轉(zhuǎn)換模塊。通過線性代數(shù)的方法將物件的三維空間模型進行移動、縮放和變形等,借助由控制物體上每個點的坐標變動,可以實現(xiàn)對物體的移動、縮放和旋轉(zhuǎn)。對應(yīng)的三種頂點坐標變換算法為平移變換、縮放變換和旋轉(zhuǎn)變換,均通過頂點坐標構(gòu)成的矩陣相乘來實現(xiàn),其中旋轉(zhuǎn)變換算法的運算量最大?,F(xiàn)以繞任意軸的旋轉(zhuǎn)變換算法為例,簡單介紹其實現(xiàn)步驟。

        設(shè)旋轉(zhuǎn)軸 AB由任意一點A(xa,ya,za)及其方向向量(a,b,c)定義,空間一點Q(xq,yq,zq)繞 AB 軸旋轉(zhuǎn) θ角到Q′(xq′,yq′,zq′),則可以通過下列步驟來實現(xiàn)Q點的旋轉(zhuǎn):

        (1)將A點移到坐標原點。

        (2)使AB分別繞X軸、Y軸旋轉(zhuǎn)適當角度與Z軸重合。

        (3)將 AB繞Z軸旋轉(zhuǎn) φ。

        (4)作上述變換的逆變換,使AB回到原來位置。即:

        其 中 ,RAB(θ)=T-1(xa,ya,za)Rx-1(α)Ry-1(β)Rz(θ)Rx(α)T(xa,ya,za),矩陣T為平移矩陣,R為繞某坐標軸的旋轉(zhuǎn)矩陣,而α、β分別為AB在YOZ平面與XOY平面的投影與Z軸的夾角。

        該系統(tǒng)采用的演示程序中,旋轉(zhuǎn)軸為單位軸(nx,ny,nz),則旋轉(zhuǎn)矩陣 RAB(θ)為如下形式:

        2 HANDEL-C及開發(fā)流程

        本設(shè)計采用Handel-C、硬件描述語言和C++協(xié)同開發(fā)的方式,其一般開發(fā)流程如圖2所示。

        Handel-C的代碼默認從頂部開始串行執(zhí)行到底部,每一條語句占用一個時鐘周期[3]。但Handel-C同樣支持并行處理機制,這是通過使用關(guān)鍵字“par”來實現(xiàn)的。坐標變換算法中涉及到大量的矩陣乘法運算,而矩陣乘法運算中乘積矩陣的所有元素互相獨立、互不相關(guān),可以將其并行實現(xiàn)。因此該設(shè)計充分利用了Handel-C的并行機制,使矩陣乘法的效率大大提高。

        Handel-C支持和C語言一樣的數(shù)組形式。Handel-C中的數(shù)組可以讓所有變量在一個時鐘周期內(nèi)被并行地訪問,從而提高變量的存儲和讀取效率。例如用來求定點數(shù)平方根倒數(shù)的函數(shù)EGL_InvSqrt()中用到了查表法,表的大小只有8×16 bit,而該函數(shù)在旋轉(zhuǎn)算法中被大量用到。因此為了提高效率,采用數(shù)組的形式定義該表。

        但索引一個大數(shù)組將耗用大量的硬件資源,這時可以換成用RAM或ROM來實現(xiàn)。Handel-C提供了“ram”或“rom”關(guān)鍵字來解決該問題[4]。例如在旋轉(zhuǎn)變換算法中,涉及到三角函數(shù)運算sine和cosine,同樣采用查表法來實現(xiàn),而表的大小為1 024×16 bit,這時必須用ROM來實現(xiàn),使用“rom”關(guān)鍵字定義該表即可。

        由以上特點可以看出,該設(shè)計采用Handel-C可以從開發(fā)流程的各個環(huán)節(jié)降低開發(fā)難度,從而縮短開發(fā)周期。

        3 系統(tǒng)設(shè)計與實現(xiàn)

        3.1 Bus Master DMA

        為了滿足整個系統(tǒng)的實時數(shù)據(jù)處理要求,該設(shè)計選用PCI Express接口在FPGA與PC之間實現(xiàn)數(shù)據(jù)傳輸。當采用8通道的PCI Express數(shù)據(jù)傳輸時,可實現(xiàn)4 GB/s的傳輸速率,滿足該系統(tǒng)對數(shù)據(jù)處理的實時性要求。

        本設(shè)計采用BMD(Bus Master DMA)的實現(xiàn)方式,BMD的DMA引擎被內(nèi)嵌在PCI Express架構(gòu)的endpoint端,負責在系統(tǒng)內(nèi)存與endpoint之間移動數(shù)據(jù)。endpoint即為該系統(tǒng)的硬件部分,即內(nèi)嵌了DMA引擎的坐標變換模塊。

        3.2 系統(tǒng)硬件設(shè)計

        采用Handel-C與Verilog混合設(shè)計的方法對該系統(tǒng)的硬件平臺進行設(shè)計,其中較多涉及到調(diào)度及狀態(tài)轉(zhuǎn)換的模塊用Handel-C設(shè)計,涉及到較為嚴格的時序要求的模塊用Verilog設(shè)計。該系統(tǒng)的硬件整體框圖(省略BMD控制部分)如圖3所示。

        其中PC部分為系統(tǒng)軟件部分,包括OpenGL-ES中除坐標變換算法以外的其他部分,以及DMA傳輸控制的軟件部分;RX和TX模塊分別為DMA的接收和發(fā)送引擎,即BMD架構(gòu)中Initiator Logic模塊里的 Rx和Tx??梢?,DMA已經(jīng)內(nèi)嵌在系統(tǒng)硬件設(shè)計中;myram1和myram2為雙口RAM,具有獨立的數(shù)據(jù)讀寫和時鐘端口,作為輸入和輸出緩存,同時隔離了用戶IP和PCIe兩部分的時鐘,為實現(xiàn)雙時鐘工作提供了條件;genclock為DCM模塊,對PCIe的輸入時鐘進行5分頻,得到50 MHz的時鐘供用戶 ip使用,除了 myram1的 clkb、myram2的clka以及myip的clk為50 MHz外,其他時鐘均為250 MHz;control模塊為控制信號的跨時鐘域轉(zhuǎn)換模塊,因為控制信號rx_done_output從頻率高的時鐘域輸出到頻率低的時鐘域,必須對其進行轉(zhuǎn)換,才能使其在頻率低的時鐘域內(nèi)被有效識別。

        myip部分內(nèi)含myTransform IP核,這部分為用戶自定義的IP,其內(nèi)部結(jié)構(gòu)如圖4所示。

        其中,myTransform模塊為由Handel-C轉(zhuǎn)換而來的坐標變換模塊,它有 4個數(shù)據(jù)輸入口(angle,x,y,z)和 10個數(shù)據(jù)輸出口(my_m_elements_1~my_m_elements_a)。而myip為1個數(shù)據(jù)輸入口和1個數(shù)據(jù)輸出口,即串行輸入和串行輸出。為了將myTransform模塊封裝成myip的串行輸入、輸出形式,在輸入、輸出端分別有一個4 bit串/并轉(zhuǎn)換模塊4-bit Serial2Par和10 bit并/串轉(zhuǎn)換模塊10-bit Par2Serial;而Control_Logic為myip模塊的邏輯控制模塊,主要實現(xiàn)以下功能:

        (1)對各模塊的開始(start)與完成(done)信號進行處理,并根據(jù)這兩個信號對各模塊的工作進行調(diào)度。包括整個myip模塊、myTransform模塊、串/并模塊和并/串模塊。

        (2)對外部兩個雙口ram的讀寫進行控制,包括地址和寫使能信號的控制。

        這里的用戶IP即myTransform模塊,根據(jù)用戶IP的數(shù)據(jù)輸入、輸出形式,只要改變串/并轉(zhuǎn)換的位數(shù)和并/串轉(zhuǎn)換的位數(shù),即可實現(xiàn)用戶IP模塊與myip模塊的整合,而無需改變myip模塊的接口以及控制信號,為該系統(tǒng)的通用性提供了保證。

        3.3 系統(tǒng)軟件設(shè)計

        軟件包括兩部分:DMA通信部分和OpenGL-ES中除了坐標變換算法以外的其他部分。

        DMA通信部分又分為驅(qū)動層和應(yīng)用層接口。驅(qū)動層的設(shè)計涉及到Windows下PCIe驅(qū)動程序的編寫,不是本文的討論重點;應(yīng)用層接口是在驅(qū)動層的基礎(chǔ)上生成API,用以在應(yīng)用程序中進行相關(guān)的 DMA操作(主要包括DMA器件的打開和關(guān)閉、讀寫DMA的設(shè)置、DMA啟動以及DMA各寄存器的讀寫操作等)。

        將原始的OpenGL-ES中坐標變換模塊用DMA操作代替:首先打開 DMA器件、復(fù)位 DMA器件、設(shè)置DMA傳輸中各寄存器的值,再將輸入?yún)?shù)放到相應(yīng)內(nèi)存(TLPReadBuffer)中,然后啟動DMA操作,將該內(nèi)存的值通過PCIe傳到開發(fā)板上進行處理,處理完后的數(shù)據(jù)再通過DMA寫操作寫進PC相應(yīng)的內(nèi)存(TLPWriteBuffer)中。通過不斷讀取寫操作完成寄存器的值,來判斷寫操作是否完成。如果寫操作未完成,則繼續(xù)讀取該寄存器值來判斷,若讀取次數(shù)超出設(shè)定值,則重新啟動DMA。當寫操作完成時,從相應(yīng)內(nèi)存(TLPWriteBuffer)中讀取處理完的數(shù)據(jù),即為坐標變換模塊的返回值。軟件工作流程如圖5所示。

        圖5 軟件工作流程

        啟動DMA操作實際上包括啟動DMA讀和寫的操作。DMA硬件會先啟動讀操作,將內(nèi)存中的值讀入開發(fā)板,然后經(jīng)過用戶IP進行處理完后,寫回內(nèi)存。因此只需要確定DMA寫操作完成即可,此時整個DMA讀寫操作也一定完成。

        4 性能分析與驗證

        經(jīng)過軟件仿真驗證各模塊功能完全正確之后,將該設(shè)計進行軟、硬件聯(lián)合驗證。

        本設(shè)計采用的硬件驗證平臺為Avnet公司的AES-XLX-V5SXT-PCIE50-G開發(fā)板,該開發(fā)板的FPGA芯片型號為Xilinx公司Virtex5系列的xc5vsx50t[5]。

        針對一些運行時間較長的單元,在Handel-C中加入par并行處理進行優(yōu)化,在ISE11.1中用XST進行綜合。表1體現(xiàn)了加入par之前和之后所耗資源的對比。

        表1 資源使用情況

        由表1可以看出,加入并行處理后資源消耗有所增加,但處于合理范圍內(nèi)。

        用ISE11.1對綜合后的網(wǎng)表進行實現(xiàn),生成.bit文件并下載到開發(fā)板中,聯(lián)合軟件部分進行協(xié)同驗證。為了將其與傳統(tǒng)Modelsim仿真速度作對比,這里將模塊處理復(fù)雜度擴大10 000倍,即可明顯看出該驗證方法的速度優(yōu)勢。表2給出了在PC主頻2.66 GHz下,從Rst信號到Done信號之間仿真消耗的時間對比。由表中可看出,本文采用的驗證方法在仿真速度上是傳統(tǒng)ModelSim仿真的778倍,即使對經(jīng)過Modelsim優(yōu)化后的節(jié)點進行仿真,也快了202倍。

        表2 仿真速度比較

        本文用Handel-C設(shè)計和實現(xiàn)了OpenGL-ES的坐標變換算法,并將其與軟件平臺進行軟、硬件協(xié)同驗證。結(jié)果表明,Handel-C能夠用來實現(xiàn)復(fù)雜的算法,并且比傳統(tǒng)的HDL設(shè)計方法更為高效;通過該方法建立的軟、硬件仿真平臺對IP進行驗證,具有更高的效率。

        [1]孫家廣.計算機圖形學(第三版)[M].北京:清華大學出版社,1999.

        [2]Munshi.OpenGL ES common/common-lite profile specification[S].2004.

        [3]Celoxica.Handel-C language reference manual[Z].2005.

        [4]Celoxica.Handel-C code optimization[Z].2003.

        [5]Xilinx.Virtex-5 FPGA user guide[Z].2009.

        猜你喜歡
        系統(tǒng)設(shè)計
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        何為設(shè)計的守護之道?
        《豐收的喜悅展示設(shè)計》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        瞞天過?!律O(shè)計萌到家
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        設(shè)計秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        亚洲一区丝袜美腿在线观看 | 亚洲av永久无码天堂网毛片| 99视频在线国产| 国产女主播免费在线观看| 日本视频在线观看二区| 亚洲精品国偷拍自产在线观看| 一本一本久久a久久精品综合 | 中文片内射在线视频播放| 亚洲中文字幕日产无码| 50岁熟妇的呻吟声对白| 国产精品1区2区| 亚洲熟女少妇精品久久| 亚洲熟妇无码久久精品| 国产乱子伦在线观看| 韩日无码不卡| 免费看av网站在线亚洲| 波多野结衣久久精品99e| 免费的成年私人影院网站| 久久精品有码中文字幕1| 国产一区二区三区av免费| 无码人妻av免费一区二区三区| 五月天国产精品| 漂亮人妻被强中文字幕乱码 | 亚洲午夜精品久久久久久一区| 国产成版人性视频免费版| 一个色综合中文字幕人妻激情视频 | 亚洲V无码一区二区三区四区观看| 国产伦精品一区二区三区| 国产在热线精品视频| 人禽无码视频在线观看| 久久精品国产亚洲av热九九热 | 国产又黄又爽又色的免费| 亚洲伊人久久成人综合网| 日韩日本国产一区二区| 隔壁老王国产在线精品| 国产真实乱人偷精品人妻| 国产一区二区三区av免费观看| 亚洲高清中文字幕视频| 日躁夜躁狠狠躁2001| 精品久久久久久午夜| 日本亚洲系列中文字幕|