《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 顯示光電 > 設(shè)計(jì)應(yīng)用 > 異構(gòu)SoC圖形器中可編程剪裁器的設(shè)計(jì)與實(shí)現(xiàn)
異構(gòu)SoC圖形器中可編程剪裁器的設(shè)計(jì)與實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第2期
柏承雙1,蔣 林1,周建偉2
1.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710061; 2.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710061
摘要: 隨著圖形處理性能的不斷提升,圖形處理的運(yùn)算量也日益增多,傳統(tǒng)的嵌入式系統(tǒng)面臨著挑戰(zhàn)。解決這一問(wèn)題的方案之一是運(yùn)用可編程器件開(kāi)發(fā)適用于嵌入式系統(tǒng)的圖形處理器,從而提高處理速度。現(xiàn)代圖形處理器采用各種可編程的著色處理器,雖然ASIC的速度和功耗性能優(yōu)于可編程處理器,但其靈活性與可靠性卻是無(wú)法與可編程處理器比擬的。采用一種帶精簡(jiǎn)指令的微控制器架構(gòu),重點(diǎn)研究用匯編和可編程處理器協(xié)同實(shí)現(xiàn)平面剪裁功能,代替原來(lái)用純硬件實(shí)現(xiàn)的功能,該流水線執(zhí)行多指令多數(shù)據(jù)流(MIMD)。最后,使用大量的測(cè)試用例對(duì)點(diǎn)、線和三角形在FPGA開(kāi)發(fā)板上進(jìn)行相應(yīng)的驗(yàn)證。
中圖分類號(hào): TP391
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)02-0051-04
Design and implementation of programmable clipper in heterogeneous SoC
Bai Chengshuang1,Jiang Lin1,Zhou Jianwei2
1.College of Electronic Engineering,Xi′an University of Posts Telecommunications,Xi′an 710061,China; 2.College of Computer,Xi′an University of Posts Telecommunications,Xi′an 710061,China
Abstract: With the continuous improvement in graphics processing performance, the computation of graphics processing is also increasing day by day, and the traditional embedded system is facing challenges. One solution to this problem is to use a programmable device development for embedded system graphics processors to improve processing speed. Modern graphics processors use a variety of programmable shader processors. Although the speed and power performance of ASIC are better than that of programmable processor, its flexibility and reliability are unable to the programmable processor. In this paper, a micro-controller with a RISC architecture focuses on using assembly and programmable processor together to achieve the plane clipping function, instead of the function that the pure hardware implements. What′s more, the pipeline executes the multiple instruction multiple data stream(MIMD). Finally, it uses a large number of test points, lines and triangles in the FPGA development board to do the corresponding verifying.
Key words : programmable;plane clipped;graphics processor;micro-controller;the pipelined

 

0 引言

  計(jì)算機(jī)處理圖形信息時(shí),會(huì)遇到存儲(chǔ)的圖形較大,而屏幕只能顯示部分圖形的情況。比如把整幅地圖顯示在屏幕上,由于不能看到局部的細(xì)節(jié),使用縮放技術(shù)便可以把地圖中的局部區(qū)域放大顯示[1]。在放大指定區(qū)域時(shí),必須確定圖形中哪些部分落在范圍之內(nèi),哪些部分落在顯示范圍之外,以便顯示落在顯示范圍內(nèi)的圖形。裁剪的目的正是判斷某個(gè)圖形元素是否落在窗口之內(nèi),如落在窗口之內(nèi)則進(jìn)一步求得位于窗口內(nèi)的部分。

  平面剪裁是OpenGL經(jīng)典的圖形流水線的重要部件之一,也是最為復(fù)雜的部件之一。高性能的圖形處理必須通過(guò)高性能的硬件加速器來(lái)實(shí)現(xiàn)平面剪裁功能,本裁剪器最多支持6個(gè)裁剪面,客戶指定裁剪平面對(duì)世界空間中的物體進(jìn)行裁剪,將圖元在給定平面外的部分裁剪掉,保留面內(nèi)的部分,以實(shí)現(xiàn)特殊效果。比如,在三維視圖中標(biāo)示可見(jiàn)面[2]、對(duì)部分圖形進(jìn)行復(fù)制、移動(dòng)或刪除操作防止圖形邊界混淆、從特定場(chǎng)景中抽取指定部分等。它在計(jì)算機(jī)圖形處理中具有重要的意義。

1 可編程裁剪器硬件設(shè)計(jì)


001.jpg

  作為3D圖形加速器的重要組成部分,平面剪裁在計(jì)算機(jī)圖形處理中具有十分重要的意義。本剪裁器由命令解析(CMD Unit)模塊、控制電路(Ctrl Unit)模塊、裝配電路(Assemb Unit)模塊及微控制器(MCU)模塊構(gòu)成,總體結(jié)構(gòu)如圖1所示。可編程設(shè)計(jì)體現(xiàn)在用底層匯編在微控制器上運(yùn)行,已完成平面裁剪功能,其余的3個(gè)模塊為外圍電路,對(duì)微控制器完成圖元裁剪起輔助加速作用,以便高效實(shí)時(shí)地完成裁剪功能。MCU采用自主研發(fā)的支持90位雙發(fā)射指令、4級(jí)流水線RSIC結(jié)構(gòu),含有4片獨(dú)立的32×256RAM數(shù)據(jù)存儲(chǔ)(BANK)單元,完成并行存儲(chǔ)的功能,即一個(gè)時(shí)鐘沿可對(duì)4塊存儲(chǔ)體進(jìn)行讀或?qū)?,尋址范圍?k,應(yīng)用于裁剪過(guò)程中所用數(shù)據(jù)的讀寫(xiě)。本微控制器可直接在BANK中進(jìn)行數(shù)據(jù)讀寫(xiě)操作,避免了通過(guò)寄存器來(lái)對(duì)BANK讀寫(xiě),大大減少的讀寫(xiě)數(shù)據(jù)周期,提高了運(yùn)算效率。

  各模塊功能如下:

  (1)CMD Unit:接受GPU內(nèi)部管線上一級(jí)傳來(lái)的GPU內(nèi)部148位命令,如果是與平面裁剪無(wú)關(guān)的命令,則不做任何處理,將其透?jìng)鹘o下一級(jí),如果與平面裁剪有關(guān),則對(duì)命令進(jìn)行解析,將矩陣和圖元信息、參數(shù)個(gè)數(shù)及屬性個(gè)數(shù)等信息存入微控制器中的數(shù)據(jù)BANK中。

  (2)Ctrl Unit:利用數(shù)字電路設(shè)計(jì)常用的有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)原理控制命令解析、命令裝配模塊和微控制器間的通信,并采用雙軌握手協(xié)議完成GPU內(nèi)部管線上下級(jí)間的信號(hào)交互,圖2為其狀態(tài)轉(zhuǎn)移圖。

002.jpg

  (3)MCU:本RISC處理器具有超長(zhǎng)指令字(VLIW)結(jié)構(gòu),由指令讀取、指令解碼、執(zhí)行和前饋4級(jí)流水線等組成。超長(zhǎng)指令字的寬度為兩條RISC指令,即能夠同時(shí)解析兩條RISC指令,并將譯碼的結(jié)果發(fā)送到相應(yīng)的兩條處理流水線中。將平面裁剪匯編指令固化到指令ROM,并通過(guò)數(shù)據(jù)存儲(chǔ)、取指單元、譯碼單元、地址流水線單元、整數(shù)和浮點(diǎn)數(shù)運(yùn)算流水線等11個(gè)模塊實(shí)現(xiàn)可編程裁剪的功能。MCU結(jié)構(gòu)如圖3。

003.jpg

  (4)Assemb Unit:該模塊讀出在MCU完成平面裁剪后存儲(chǔ)在微控單元BANK中的圖元信息,并對(duì)裁剪后新的頂點(diǎn)重新裝配為148位GPU內(nèi)部命令,發(fā)送到管線的下一級(jí)。

2可編程裁剪器算法和軟件設(shè)計(jì)

  2.1 平面裁剪算法

  與三維剪裁不同,平面裁剪通過(guò)圖元在給定的任意平面內(nèi)外進(jìn)行判別,對(duì)每個(gè)點(diǎn)只要它的視覺(jué)坐標(biāo)(x,y,z,w)滿足(A,B,C,D)M-1(x,y,z,w)T≥0就于此平面內(nèi)側(cè),否則都將被裁剪掉。其中,(A,B,C,D)為平面系數(shù),M是在調(diào)用裁剪平面時(shí)當(dāng)前的模型視圖矩陣。

  平面裁剪采用經(jīng)典的Sutherland-Hodgman[3]多邊形裁剪算法,利用給定的平面與世界坐標(biāo)系下的圖元間的位置關(guān)系,計(jì)算直線與平面的交點(diǎn),并結(jié)合線性插值計(jì)算交點(diǎn)的屬性傳至流水線下一級(jí),完成對(duì)圖元的剪裁。

  當(dāng)定義的一個(gè)裁剪面依次裁剪多邊形的每一條邊后,組成新的多邊形,再經(jīng)下一個(gè)裁剪面處理,步驟相同。在所有裁剪面完成后,將保留的多邊形信息存儲(chǔ)在MCU的BANK中,最后重新裝配成圖元發(fā)送給管線的下一級(jí)。下面是一段基于SH裁剪算法的偽代碼。

  If(the specified plane is enable) {

  SutherlandHodgman(clipped primitive);

  for(i=0;i<outlength;i++)   {

  InVertex[i] = outVertex[i];

  outVertex[i].x = 0;

  outVertex[i].y = 0;

  outVertex[i].z = 0;

  }

  inlength = outlength;

  }

  2.2 平面裁剪軟件設(shè)計(jì)

  在計(jì)算機(jī)圖形學(xué)中,基本圖元只有點(diǎn)、線和三角形,其他任何復(fù)雜圖元均由這3種圖元構(gòu)成,平面裁剪就是采用SH算法對(duì)這3種基本圖元進(jìn)行裁剪,丟棄位于裁剪面之外的圖元信息,采用線性插值的算法,算出位于裁剪面內(nèi)的圖元信息,并將其發(fā)給GPU管線下一級(jí)。平面裁剪軟件設(shè)計(jì)流程如圖4。

004.jpg

3 功能仿真驗(yàn)證與原型開(kāi)發(fā)

  采用SystemVerilog編寫(xiě)頂層測(cè)試文件,搭建相應(yīng)的平面裁剪軟硬件協(xié)同驗(yàn)證平臺(tái)[4],仿真使用Mentor公司的QuestaSim 6.5(Linux環(huán)境)工具,綜合使用Xilinx公司的ISE14.2工具,并選用Dini Group最新的DNV6_F2PCIE開(kāi)發(fā)板進(jìn)行原型開(kāi)發(fā)。

  3.1 功能仿真驗(yàn)證

  該平臺(tái)采用軟件自動(dòng)比較的方法進(jìn)行自動(dòng)化驗(yàn)證[5]。每一個(gè)測(cè)試點(diǎn)同時(shí)在Visual Studio 2008環(huán)境、SystemVerilog模型和HDL描述的硬件系統(tǒng)中運(yùn)行,比較繪制結(jié)果,將模型和硬件系統(tǒng)作模塊級(jí)輸出比較,以確保所有功能的仿真是正確的。

  根據(jù)測(cè)試點(diǎn)編寫(xiě)的點(diǎn)、線和三角形的激勵(lì),產(chǎn)生待測(cè)數(shù)據(jù)。將預(yù)先得到的參考結(jié)果存入FIFO中用于驗(yàn)證模型的正確性。經(jīng)過(guò)待測(cè)模型(DUV)進(jìn)行相應(yīng)的處理后生成輸出響應(yīng),與參考結(jié)果中的值進(jìn)行比較,如果兩者的值相同,表示功能正確;否則標(biāo)識(shí)錯(cuò)誤位置,及時(shí)修改錯(cuò)誤點(diǎn),加速了硬件開(kāi)發(fā)。圖5所示為該平臺(tái)的架構(gòu)。

005.jpg

  經(jīng)過(guò)自動(dòng)對(duì)比,硬件結(jié)果與仿真模型的誤差在可控范圍之內(nèi),基本完成功能驗(yàn)證。

  3.2 原型開(kāi)發(fā)

  基于上述設(shè)計(jì)方案,根據(jù)電路規(guī)模和性能要求,選擇Xilinx公司的XC6VLX550T進(jìn)行原型開(kāi)發(fā)。選用Xilinx公司提供的綜合工具[6]ISE14.2,單獨(dú)綜合平面裁剪模塊頻率為232.504 MHz,所占Slice為14%。采用DNV6_F2PCIE FPGA開(kāi)發(fā)板進(jìn)行功能驗(yàn)證,啟動(dòng)6個(gè)裁剪面對(duì)世界空間中的物體進(jìn)行裁剪前后如圖6所示。

006.jpg

  由圖6可以看出,本裁剪器能完成基于OpenGL 1.3標(biāo)準(zhǔn)的裁剪功能,能夠高效、實(shí)時(shí)地將圖元在給定平面外的部分裁剪掉,保留面內(nèi)的部分,以實(shí)現(xiàn)特殊效果。

4 結(jié)論

  本文對(duì)可編程裁剪器的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行深入分析,完成可編程平面裁剪器的設(shè)計(jì)與實(shí)現(xiàn)。通過(guò)采用SystemVerilog搭建相應(yīng)的軟硬件協(xié)同仿真驗(yàn)證平臺(tái),完成了模型和HDL描述的硬件自動(dòng)化驗(yàn)證,加速了軟硬件開(kāi)發(fā)過(guò)程,并最終在FPGA上完成原型開(kāi)發(fā)與功能驗(yàn)證。從中得出了以下結(jié)論:

  (1)計(jì)算機(jī)和信息技術(shù)的快速發(fā)展使人們對(duì)微處理器的性能要求越來(lái)越高??删幊烫幚砥骶哂懈叨鹊撵`活性和成熟性,而性能也可能接近ASIC。本文所設(shè)計(jì)的裁剪器充分利用了處理器的靈活性,并采用底層匯編實(shí)現(xiàn)了裁剪功能,完成了實(shí)時(shí)高效裁剪圖形的目的。

  (2)為提高處理數(shù)據(jù)效率,處理器還采用前饋機(jī)制,將執(zhí)行后的數(shù)據(jù)和地址返回給解碼控制端。除執(zhí)行本地指令流外,流水線還可執(zhí)行MIMD數(shù)據(jù)流。MIMD被普遍引用于當(dāng)前CPU中,本裁剪器的核心模塊微控制器就采用了MIMD的方式,提升了數(shù)據(jù)吞吐量。

  (3)為了加速裁剪過(guò)程,給處理器配套外圍電路,完成命令解析,狀態(tài)控制和命令裝配。

  (4)使用匯編語(yǔ)言描實(shí)現(xiàn)可編程剪裁器的圖元裁剪部分,同樣可以用匯編程序代替前后端接收(譯碼)和發(fā)送(裝配)電路,完成基于該處理器的通用剪裁器的設(shè)計(jì)工作,使其靈活性大大增強(qiáng)。

參考文獻(xiàn)

  [1] 王浩鵬.二維圖形的裁剪算法研究與改進(jìn)[D].西安:西安電子科技大學(xué),2011.

  [2] 孫楊.計(jì)算機(jī)輔助隱形牙齒正畸功能實(shí)現(xiàn)[D].杭州:浙江大學(xué),2010.

  [3] SULAND I E,HODGMAN G W.Reentrant polygon clipping[J].Communication of ACM,1974,17(1):32-42.

  [4] 山蕊.基于System Verilog的可重用驗(yàn)證平臺(tái)[J].電子技術(shù)應(yīng)用,2013(5):38-40.

  [5] 陳永光.RTL層次之系統(tǒng)互連線及系統(tǒng)電路的軟件自動(dòng)化驗(yàn)證方法研究[D].成都:電子科技大學(xué),2012.

  [6] 田耕,許文波.Xilinx ISE design suite 10.x FPGA 開(kāi)發(fā)指南[M].北京:人民郵電出版社,2008.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。