?

圖形處理中投影變換的硬件設計與驗證

2013-12-07 06:18楊世旺
電子技術應用 2013年2期
關鍵詞:視景流水線命令

楊世旺,蔣 林,蘇 誠

(1.西安郵電大學 計算機學院,陜西 西安 710061;2.西安郵電大學 研究生院,陜西 西安 710061)

隨著計算機科學的快速發展,人們對于圖形處理的要求也越來越高,而三維圖形顯示是圖形處理的核心[1]。三維圖形顯示的基礎是圖形變換,即將幾何對象的三維坐標轉換到屏幕上所需要進行的一系列坐標變換,包括幾何變換、投影變換、裁剪和視窗變換。投影變換是在世界坐標系中建立的,而計算機屏幕所顯示的圖形是在給定視點和視線方向下的二維屏幕投影[2],所以投影變換是整個圖形處理的關鍵部分。

投影變換完成圖元由世界空間到相機空間的轉換,然后再經過映射得到二維屏幕上的圖形。因此,投影變換的效率極大地影響了圖元的轉換速度。本文所設計的硬件結構能加快轉換的速度,從而使整個圖形處理流水線的效率也得到提高。

1 圖形處理流水線

圖形處理采用流水線結構實現,其命令流程是:首先將每條命令送入命令處理器,然后按照流水線依次流入后續單元,每個單元按照需求,將相關命令內容存入當前參數存儲器,每條命令可能在某個單元終止。其處理過程是:當一條命令到達某個單元,如果是本單元要執行的操作,則執行命令,然后將結果送入下一單元或者緩存;如果有本級所需的信息,則抽取信息,存入當前狀態存儲器或者緩存;如果命令在后續單元還要進行計算,則將命令傳送到下一單元。圖形處理流水線如圖1所示。

本文針對圖形處理流水線結構,設計了其中的投影變換單元。該流水線從命令處理開始,首先從客戶端讀取命令,將頂點進行幾何變換并染色,當有光照的情況下用phong模型染色,圖元生成將經過上述變換的頂點裝配成指定的點、線或三角形,通過投影變換將頂點變換到規范的立方體中;然后剪裁掉位于立方體外的圖形,只顯示立方體內的圖形,并且重新裝配剪裁后的圖形;再通過視窗變換把用戶坐標系中的點變換到屏幕坐標系中,計算圖形中的坐標和像素;最后把每個點的顏色和坐標等數據送給幀緩存,由幀緩存輸出到屏幕上,得到最終要顯示的圖形。本文將著重介紹投影變換部分。

2 投影變換原理及使用方法

在圖形學中,根據投影中心與投影平面之間的距離不同,可將投影分為透視投影和正投影。透視投影類似于人對客觀世界的觀察方式,它的特點是距離觀察點近的物體比較大,而距離遠的物體相對比較??;正投影是物體直接映射到屏幕上,它實際上是透視投影的一種特例,即觀察點在無窮遠或者觀察點由一個點變為一個面[3]。

投影變換就是要確定一個視景體,其作用有兩個:(1)確定物體投影到屏幕的方式,即是透視投影還是正投影;(2)確定從圖像上裁剪掉哪些物體或物體的哪部分。

透視投影的示意圖[4]如圖2所示,其視景體是一個平截頭體,在這個體積內的物體投影到錐的頂點,平截頭體外的圖元被裁剪掉[5]。

由 glFrustum(left,right,bottom,top,near,far)命令定義這個視景體,計算透視矩陣M,并乘以當前矩陣C,使C′=CM。這個視景體可以是不對稱的[5]。由glFrustum命令計算的透視矩陣為:

正投影的示意圖如圖3所示,其視景體是一個長方體,它同透視投影一樣,只保留視景體內的圖元。由 glOrtho(left,right,bottom,top,near,far)命 令[5]定 義 正投影視景體,由它計算得到的正投影矩陣為:

投影變換主要是通過矩陣與矩陣相乘、矩陣與向量相乘來實現的。其主要操作包括:輸入一個矩陣,完成當前矩陣與該矩陣的乘積,并將其結果保存為投影矩陣;輸入一個頂點向量,把投影矩陣與該頂點向量相乘并把得到的結果(即新的頂點向量)送到輸出端。具體的運算公式為:

其中C′是最新的當前矩陣,V0是輸入的頂點向量。本設計采用流水線結構的浮點運算器,可以提高運算速度并保證數據的精度。

3 投影變換的硬件實現

為了更加全面地驗證投影變換的功能,本文采用SystemVerilog語言搭建了投影變換的行為模型,在模型中實現了投影變換的功能,為硬件電路的設計提供參考,并以行為模型作為驗證硬件電路時的參考設計,從而能夠全面驗證電路功能的正確性。

3.1 投影變換的行為模型

根據投影變換的功能,行為模型的設計流程如圖4所示。首先接收命令,如果需要修改的是投影矩陣,則根據收到的命令設置當前矩陣為單位矩陣或指定矩陣,然后根據投影類型對圖元進行透視投影或平行投影,結束后發送到流水線的下一級;如果需要修改的不是投影矩陣,則將命令透傳到下一級。

圖4 投影變換行為模型流程圖

3.2 投影變換整體框圖

投影變換的整體框圖如圖 5所示,其中 din、dout為輸入/輸出命令信號,vin、vout為輸入/輸出有效信號,rin、rout為輸入/輸出反饋信號。浮點乘法和加法主要用來完成矩陣與矩陣的運算和矩陣與向量的計算,控制器主要用于控制上下級之間的握手信號,并控制數據有序地向浮點運算器發送。

圖5 投影變換整體框圖

3.3 控制器的設計

控制器的設計可以采用微程序式設計或硬件連接式設計,本文采用硬件連接的設計,同時采用狀態機來控制。具體的狀態轉移圖如圖6所示。

4 驗證平臺與實驗結果

4.1 驗證平臺結構

本文基于SystemVerilog語言對投影變換單元構建了驗證平臺,通過產生輸入激勵對其功能進行驗證,驗證平臺結構如圖7所示。對于投影變換功能的測試采用固定測試的方法,根據所列出的測試點編寫對應的測試激勵,驗證各種圖元經過投影變換之后結果是否正確。

輸入激勵分為透視投影的測試、平行投影的測試和其他透傳類命令的測試,其目的是產生待測數據。這里,待測設計指本設計的硬件電路。采用自動化比較機制,實現硬件電路和行為模型的聯合仿真。將輸出結果進行對比,如果兩者的結果相同,則表示功能正確;否則,報錯。

4.2 仿真結果

本設計采用Verilog語言實現投影變換的功能,通過ModelSim 6.5進行仿真,以驗證功能的正確性,仿真結果如圖8所示。首先輸入glLoadIdentity命令,把當前矩陣變為單位矩陣;然后輸入一個投影矩陣,將單位矩陣與該矩陣相乘得到新的當前矩陣;最后輸入一組頂點向量,經過計算得到新的頂點向量并將其輸出到下一級。通過仿真波形可知,電路能夠實現投影變換的功能。

4.3 綜合結果

使用Xilinx的ISE綜合工具進行邏輯綜合,選用xc6-vlx550t的開發板,綜合的最大時鐘頻率可以達到250 MHz,而參考文獻[6]中的工作頻率只能達到 101 MHz,且其計算精度也比較低。因此,采用硬件設計可以極大地提高運算速度和精度。

本文通過對圖形處理流水線的介紹,提出了投影變換的硬件實現方法,詳細描述了電路的內部模塊,并對電路進行了功能仿真和行為建模驗證,從而使電路更加準確。通過對圖形處理流水線中投影變換模塊的設計實現,為以后圖形處理的研究工作提供了有力的依據。

[1]MOLLER T A,HAINCS E,HOFFMAN N.Real-time rendering,3rd edition[M].A.K.Peters,Wellesley,MA,2008.

[2]陳超.用OpenGL生成三維投影模型的研究[J].電子商務,2011(11):68-69.

[3]梁柳青.OpenGL中的投影變換[J].天津成人高等學校聯合學報,2000,2(3):50-54.

[4]黃章進.高級計算機圖形學[Z].中國科學技術大學計算機學院,2008.

[5]SHREINER D,the Khronos OpenGL ARB Working Group.OpenGL programming guide[M].Seventh Edition.北京:機械工業出版社,2010.

[6]林炎光,孫紅勝,王志民.基于 FPGA的透視投影變換算法的設計與實現[J].電子技術應用,2009,35(5):47-51.

猜你喜歡
視景流水線命令
只聽主人的命令
虛擬現實技術在游戲設計中的應用及研究
流水線
移防命令下達后
這是人民的命令
報廢汽車拆解半自動流水線研究
全回轉拖輪運動建模與視景仿真
流水線生產殺死藝術
基于Vortex與Vega Prime的車輛模擬器動力學與視景仿真
SIMATIC IPC3000 SMART在汽車流水線領域的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合