《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 圖形處理中投影變換的硬件設(shè)計(jì)與驗(yàn)證
圖形處理中投影變換的硬件設(shè)計(jì)與驗(yàn)證
來(lái)源:電子技術(shù)應(yīng)用2013年第2期
楊世旺1,蔣 林2,蘇 誠(chéng)1
1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710061; 2.西安郵電大學(xué) 研究生院,陜西 西安710061
摘要: 描述了基于浮點(diǎn)處理單元的投影變換的硬件實(shí)現(xiàn)。以提高速度為設(shè)計(jì)目標(biāo),采用Verilog語(yǔ)言進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),使用ISE進(jìn)行邏輯綜合,并用SystemVerilog進(jìn)行建模驗(yàn)證。結(jié)果表明,本設(shè)計(jì)極大地提高了圖形處理的速度。
中圖分類號(hào): TP302;TP393
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)02-0042-03
The hardware design and verification of projection in graphics process
Yang Shiwang1,Jiang Lin2,Su Cheng1
1.Department of Computer Science,Xi′an University of Posts and Telecommunications,Xi′an 710061,China; 2.Department of Graduate,Xi′an University of Posts and Telecommunications,Xi′an 710061,China
Abstract: This paper describes the hardware implementation of projection which based on float-point processing unit. In order to improve the speed,the hardware is designed and implemented on Verilog language, ISE is used for logic synthesis,and SystemVerilog is used for verification. The result shows that the speed is increased by this design.
Key words : graphics pipeline;hardware implementation;logic synthesis;projection

    隨著計(jì)算機(jī)科學(xué)的快速發(fā)展,人們對(duì)于圖形處理的要求也越來(lái)越高,而三維圖形顯示是圖形處理的核心[1]。三維圖形顯示的基礎(chǔ)是圖形變換,即將幾何對(duì)象的三維坐標(biāo)轉(zhuǎn)換到屏幕上所需要進(jìn)行的一系列坐標(biāo)變換,包括幾何變換、投影變換、裁剪和視窗變換。投影變換是在世界坐標(biāo)系中建立的,而計(jì)算機(jī)屏幕所顯示的圖形是在給定視點(diǎn)和視線方向下的二維屏幕投影[2],所以投影變換是整個(gè)圖形處理的關(guān)鍵部分。

    投影變換完成圖元由世界空間到相機(jī)空間的轉(zhuǎn)換,然后再經(jīng)過(guò)映射得到二維屏幕上的圖形。因此,投影變換的效率極大地影響了圖元的轉(zhuǎn)換速度。本文所設(shè)計(jì)的硬件結(jié)構(gòu)能加快轉(zhuǎn)換的速度,從而使整個(gè)圖形處理流水線的效率也得到提高。
1 圖形處理流水線
    圖形處理采用流水線結(jié)構(gòu)實(shí)現(xiàn),其命令流程是:首先將每條命令送入命令處理器,然后按照流水線依次流入后續(xù)單元,每個(gè)單元按照需求,將相關(guān)命令內(nèi)容存入當(dāng)前參數(shù)存儲(chǔ)器,每條命令可能在某個(gè)單元終止。其處理過(guò)程是:當(dāng)一條命令到達(dá)某個(gè)單元,如果是本單元要執(zhí)行的操作,則執(zhí)行命令,然后將結(jié)果送入下一單元或者緩存;如果有本級(jí)所需的信息,則抽取信息,存入當(dāng)前狀態(tài)存儲(chǔ)器或者緩存;如果命令在后續(xù)單元還要進(jìn)行計(jì)算,則將命令傳送到下一單元。圖形處理流水線如圖1所示。

    本文針對(duì)圖形處理流水線結(jié)構(gòu),設(shè)計(jì)了其中的投影變換單元。該流水線從命令處理開(kāi)始,首先從客戶端讀取命令,將頂點(diǎn)進(jìn)行幾何變換并染色,當(dāng)有光照的情況下用phong模型染色,圖元生成將經(jīng)過(guò)上述變換的頂點(diǎn)裝配成指定的點(diǎn)、線或三角形,通過(guò)投影變換將頂點(diǎn)變換到規(guī)范的立方體中;然后剪裁掉位于立方體外的圖形,只顯示立方體內(nèi)的圖形,并且重新裝配剪裁后的圖形;再通過(guò)視窗變換把用戶坐標(biāo)系中的點(diǎn)變換到屏幕坐標(biāo)系中,計(jì)算圖形中的坐標(biāo)和像素;最后把每個(gè)點(diǎn)的顏色和坐標(biāo)等數(shù)據(jù)送給幀緩存,由幀緩存輸出到屏幕上,得到最終要顯示的圖形。本文將著重介紹投影變換部分。
2 投影變換原理及使用方法
    在圖形學(xué)中,根據(jù)投影中心與投影平面之間的距離不同,可將投影分為透視投影和正投影。透視投影類似于人對(duì)客觀世界的觀察方式,它的特點(diǎn)是距離觀察點(diǎn)近的物體比較大,而距離遠(yuǎn)的物體相對(duì)比較?。徽队笆俏矬w直接映射到屏幕上,它實(shí)際上是透視投影的一種特例,即觀察點(diǎn)在無(wú)窮遠(yuǎn)或者觀察點(diǎn)由一個(gè)點(diǎn)變?yōu)橐粋€(gè)面[3]。
    投影變換就是要確定一個(gè)視景體,其作用有兩個(gè):(1)確定物體投影到屏幕的方式,即是透視投影還是正投影;(2)確定從圖像上裁剪掉哪些物體或物體的哪部分。
    透視投影的示意圖[4]如圖2所示,其視景體是一個(gè)平截頭體,在這個(gè)體積內(nèi)的物體投影到錐的頂點(diǎn),平截頭體外的圖元被裁剪掉[5]。

3.2 投影變換整體框圖
    投影變換的整體框圖如圖5所示,其中din、dout為輸入/輸出命令信號(hào),vin、vout為輸入/輸出有效信號(hào),rin、rout為輸入/輸出反饋信號(hào)。浮點(diǎn)乘法和加法主要用來(lái)完成矩陣與矩陣的運(yùn)算和矩陣與向量的計(jì)算,控制器主要用于控制上下級(jí)之間的握手信號(hào),并控制數(shù)據(jù)有序地向浮點(diǎn)運(yùn)算器發(fā)送。


3.3 控制器的設(shè)計(jì)
    控制器的設(shè)計(jì)可以采用微程序式設(shè)計(jì)或硬件連接式設(shè)計(jì),本文采用硬件連接的設(shè)計(jì),同時(shí)采用狀態(tài)機(jī)來(lái)控制。具體的狀態(tài)轉(zhuǎn)移圖如圖6所示。

 

 

4 驗(yàn)證平臺(tái)與實(shí)驗(yàn)結(jié)果
4.1 驗(yàn)證平臺(tái)結(jié)構(gòu)

    本文基于SystemVerilog語(yǔ)言對(duì)投影變換單元構(gòu)建了驗(yàn)證平臺(tái),通過(guò)產(chǎn)生輸入激勵(lì)對(duì)其功能進(jìn)行驗(yàn)證,驗(yàn)證平臺(tái)結(jié)構(gòu)如圖7所示。對(duì)于投影變換功能的測(cè)試采用固定測(cè)試的方法,根據(jù)所列出的測(cè)試點(diǎn)編寫(xiě)對(duì)應(yīng)的測(cè)試激勵(lì),驗(yàn)證各種圖元經(jīng)過(guò)投影變換之后結(jié)果是否正確。
    輸入激勵(lì)分為透視投影的測(cè)試、平行投影的測(cè)試和其他透?jìng)黝惷畹臏y(cè)試,其目的是產(chǎn)生待測(cè)數(shù)據(jù)。這里,待測(cè)設(shè)計(jì)指本設(shè)計(jì)的硬件電路。采用自動(dòng)化比較機(jī)制,實(shí)現(xiàn)硬件電路和行為模型的聯(lián)合仿真。將輸出結(jié)果進(jìn)行對(duì)比,如果兩者的結(jié)果相同,則表示功能正確;否則,報(bào)錯(cuò)。
4.2 仿真結(jié)果
    本設(shè)計(jì)采用Verilog語(yǔ)言實(shí)現(xiàn)投影變換的功能,通過(guò)ModelSim 6.5進(jìn)行仿真,以驗(yàn)證功能的正確性,仿真結(jié)果如圖8所示。首先輸入glLoadIdentity命令,把當(dāng)前矩陣變?yōu)閱挝痪仃?;然后輸入一個(gè)投影矩陣,將單位矩陣與該矩陣相乘得到新的當(dāng)前矩陣;最后輸入一組頂點(diǎn)向量,經(jīng)過(guò)計(jì)算得到新的頂點(diǎn)向量并將其輸出到下一級(jí)。通過(guò)仿真波形可知,電路能夠?qū)崿F(xiàn)投影變換的功能。

4.3 綜合結(jié)果
    使用Xilinx的ISE綜合工具進(jìn)行邏輯綜合,選用xc6vlx550t的開(kāi)發(fā)板,綜合的最大時(shí)鐘頻率可以達(dá)到250 MHz,而參考文獻(xiàn)[6]中的工作頻率只能達(dá)到101 MHz,且其計(jì)算精度也比較低。因此,采用硬件設(shè)計(jì)可以極大地提高運(yùn)算速度和精度。
    本文通過(guò)對(duì)圖形處理流水線的介紹,提出了投影變換的硬件實(shí)現(xiàn)方法,詳細(xì)描述了電路的內(nèi)部模塊,并對(duì)電路進(jìn)行了功能仿真和行為建模驗(yàn)證,從而使電路更加準(zhǔn)確。通過(guò)對(duì)圖形處理流水線中投影變換模塊的設(shè)計(jì)實(shí)現(xiàn),為以后圖形處理的研究工作提供了有力的依據(jù)。
參考文獻(xiàn)
[1] MOLLER T A,HAINCS E,HOFFMAN N.Real-time  rendering,3rd edition[M].A.K.Peters,Wellesley,MA,2008.
[2] 陳超.用OpenGL生成三維投影模型的研究[J].電子商務(wù),2011(11):68-69.
[3] 梁柳青.OpenGL中的投影變換[J].天津成人高等學(xué)校聯(lián)合學(xué)報(bào),2000,2(3):50-54.
[4] 黃章進(jìn).高級(jí)計(jì)算機(jī)圖形學(xué)[Z].中國(guó)科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院,2008.
[5] SHREINER D,the Khronos OpenGL ARB Working Group. OpenGL programming guide[M].Seventh Edition.北京:機(jī)械工業(yè)出版社,2010.
[6] 林炎光,孫紅勝,王志民.基于FPGA的透視投影變換算法的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2009,35(5):47-51.

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