國立中山大學資訊工程學系碩士論文多功能貼圖單元與繪圖處理 ...

58
國立中山大學資訊工程學系 碩士論文 Department of Computer Science and Engineering National Sun Yat-sen University Master Thesis 多功能貼圖單元與繪圖處理器之整合與驗證 Integration and Verification of A Multi-Function Texture Unit with Graphics Processor Units 研究生:林洋逸 Yang-Yi Lin 指導教授:張雲南 博士 Dr. Yun-Nan Chang 中華民國 一百零三年 September 2014 103

Transcript of 國立中山大學資訊工程學系碩士論文多功能貼圖單元與繪圖處理 ...

國立中山大學資訊工程學系

碩士論文

Department of Computer Science and Engineering

National Sun Yat-sen University

Master Thesis

多功能貼圖單元與繪圖處理器之整合與驗證

Integration and Verification of A Multi-Function Texture Unit

with Graphics Processor Units

研究生:林洋逸

Yang-Yi Lin

指導教授:張雲南 博士

Dr. Yun-Nan Chang

中華民國 一百零三年 九 月

September 2014

碩士論文

多功能貼圖單元與繪圖處理器之整合與驗證

研究生:林洋逸

103

學年度

國立中山大學資訊工程學系

碩士論文

Department of Computer Science and Engineering

National Sun Yat-sen University

Master Thesis

多功能貼圖單元與繪圖處理器之整合與驗證

Integration and Verification of A Multi-Function Texture Unit

with Graphics Processor Units

研究生:林洋逸

Yang-Yi Lin

指導教授:張雲南 博士

Dr. Yun-Nan Chang

中華民國 一百零三年 九 月

September 2014

i

ii

摘要

隨著對移動裝置中圖學應用的要求增加,如何設計有效率的嵌入式繪圖處理

單元已是個熱門的議題。在先前已提出一個多功能貼圖單元,此單元能提供與像

素上色相關的功能,其中包含不同模式的著色效果與貼圖。本論文首先將整合多

功能貼圖單元於一個能加速描繪與點陣化的向量圖形處理器。藉著整合這兩個模

組能完成一個有效率的向量圖形渲染處理器,並達成在顯示裝置上渲染向量圖形

物件的目的。而為了在著色程式執行時提供多樣性的貼圖功能,本論文也將多功

能貼圖單元整合於一個三維的多執行緒統一著色處理器。將多功能貼圖單元分別

整合於向量與三維繪圖處理器後,需進行包裝使其可以掛載於 advanced-

microcontroller-bus-architecture (AMBA)系統上。此外,在整合前多功能貼圖單元與

向量圖形處理器僅通過RTL模擬驗證,而本論文已將兩個整合完的處理器於 FPGA

上模擬驗證成功,並且能在 System-on-a-Programmable-Chip (SOPC)平台上執行展

示程式。

關鍵字:多功能貼圖單元, 向量圖形處理器, 三維繪圖處理器, RTL, FPGA

iii

Abstract

With the increasing demand of graphics applications in mobile devices, how to

design an efficient embedded graphics processor unit (GPU) has become a hot issue.

A multi-function texture unit has been proposed in the past, which can provide the

related pixel-coloring functions including different modes of painting and texturing.

This thesis first integrates this versatile texture unit with a vector graphics accelerator

which can accelerate the processes of tessellation and rasterization. By integrating

these two modules together, an efficient vector-graphics rendering processor can be

achieved, which can render the vector graphics objects into the display devices. Next,

the multi-function texture unit has also been integrated with a three-dimensional (3D)

unified multi-thread shader processor in order to provide various kinds of texture

functions during the execution of shading programs. Both vector and 3D graphics

processors after being integrated with the multi-function texture unit have been wrapped

with advanced-microcontroller-bus-architecture (AMBA) interfaces such that both can

be hooked on AMBA-based systems. The multi-function texture unit and the vector

graphics accelerator can only pass RTL simulation before integration. But now both

integrated processors have been successfully synthesized using FPGA, and can run

demo programs on the System-on-a-Programmable-Chip (SOPC) platform.

Keywords:multi-function texture unit, vector graphics accelerator, 3D graphics

processor, RTL, FPGA

iv

目錄

論文審定書………………………………………………………………………………i

摘要 .............................................................................................................................. ii

Abstract ....................................................................................................................... iii

圖次 ............................................................................................................................. vi

方程式索引 ................................................................................................................. ix

Chapter 1概論 .............................................................................................................. 1

1.1研究動機 ........................................................................................................ 1

1.2論文大綱 ........................................................................................................ 2

Chapter 2 研究背景與相關研究 .................................................................................. 3

2.1 電腦圖學介紹 ................................................................................................ 3

2.1.1 二維繪圖介紹 ..................................................................................... 3

2.1.2三維繪圖介紹 ...................................................................................... 6

2.2 多功能貼圖單元[1] ....................................................................................... 6

2.2.1 多功能貼圖單元[1]功能介紹.............................................................. 7

2.2.2 多功能貼圖單元[1]硬體介紹............................................................ 12

2.3 向量圖形處理器[2] ..................................................................................... 17

2.3.1向量圖形處理器[2]功能介紹 ............................................................ 18

2.3.2向量圖形處理器[2]硬體介紹 ............................................................ 21

2.4 三維繪圖處理器[3] ..................................................................................... 24

Chapter 3 多功能貼圖單元與繪圖處理器之整合 ..................................................... 26

3.1多功能貼圖單元與向量圖形處理器之整合 ................................................. 26

3.2多功能貼圖單元與三維繪圖處理器之整合 ................................................. 33

Chapter 4 驗證與結果分析 ....................................................................................... 37

4.1 EASY平台驗證 ........................................................................................... 37

v

4.2 FPGA板驗證................................................................................................ 41

4.2.1 驗證過程 ........................................................................................... 42

4.2.2 驗證結果 ........................................................................................... 44

Chapter 5 結論與未來目標 ....................................................................................... 45

5.1結論 .............................................................................................................. 45

5.2未來目標 ...................................................................................................... 45

參考文獻 .................................................................................................................... 46

vi

圖次

圖 2-1 Widing-count 示意圖 ..................................................................... 4

圖 2-2 填色法則 ....................................................................................... 4

圖 2-3 OpenVG pipeline ............................................................................ 5

圖 2-4 OpenGL ES 2.0 pipeline .................................................................. 6

圖 2-5 單色填充 ....................................................................................... 7

圖 2-6 漸層與停駐點 ............................................................................... 7

圖 2-7 放射漸層效果 ............................................................................... 9

圖 2-8 texture mapping ............................................................................. 9

圖 2-9 texture mapping-點對點 .............................................................. 10

圖 2-10 線性內插 ................................................................................... 10

圖 2-11 雙線性內插 ............................................................................... 11

圖 2-12 多功能貼圖單元架構圖 ............................................................ 12

圖 2-13 多功能貼圖單元-有限狀態機 ................................................... 14

圖 2-14 多功能貼圖單元硬體模組 ........................................................ 14

圖 2-15 Read_Paathdata模組-有限狀態機 ............................................. 16

圖 2-16 各功能參數對應暫存器位址圖 ................................................ 17

圖 2-17 指令格式 ................................................................................... 17

圖 2-18 找交點演算法 (a) 兩步驟執行(b) [2]提出單步驟執行............ 18

圖 2-19 三種WC 產生流程 .................................................................... 18

圖 2-20 Cap styles. ................................................................................... 19

圖 2-21 Join styles.................................................................................... 19

圖 2-22 (a) Dash Pattern (b) dash example. .............................................. 20

圖 2-23 Cap styles 連線處理 ................................................................... 21

圖 2-24 Join styles 連線處理 ................................................................... 21

vii

圖 2-25 向量圖形處理器架構圖 ............................................................ 22

圖 2-26 向量圖形處理器運作流程 ........................................................ 23

圖 2-27 向量圖形處理器輸入輸出介面 ................................................ 24

圖 2-28 三維繪圖處理器架構圖 ............................................................ 25

圖 2-29 指令格式圖 ............................................................................... 25

圖 3-1 多功能貼圖單元與向量圖形處理器整合架構圖 ....................... 26

圖 3-2 多功能貼圖單元與向量繪圖處理器整合介面 ........................... 27

圖 3-3 Interface Controller內輸入像素分配示意圖 ............................... 29

圖 3-4 整合後的路徑運作流程 .............................................................. 29

圖 3-5 控制向量圖形處理器流程的 FSM .............................................. 30

圖 3-6 修改後向量圖形處理器的 FSM .................................................. 30

圖 3-7 針對記憶體清除設計之示意圖 .................................................. 32

圖 3-8 整合後多功能貼圖單元-有限狀態機 ......................................... 33

圖 3-9 多功能貼圖單元與三維繪圖處理器整合介面 ........................... 34

圖 3-10 整合介面之訊號線時脈週期關係圖 ......................................... 35

圖 3-11 修改後多功能貼圖單元-有限狀態機 ....................................... 36

圖 3-12 修改後 GenTexelAddr模組-有限狀態機 ................................... 36

圖 4-1 EASY平台示意圖 ......................................................................... 38

圖 4-2 slave base 位址對應 ................................................................... 39

圖 4-3 整合後向量圖形處理器-wrapper主要訊號線 ........................... 40

圖 4-4 各參數暫存器檔案大小 .............................................................. 40

圖 4-5 多功能貼圖單元-線性漸層 ......................................................... 41

圖 4-6 多功能貼圖單元-放射漸層 ......................................................... 41

圖 4-7 多功能貼圖單元-點對點貼圖 ..................................................... 41

圖 4-8 多功能貼圖單元-雙線性過濾 ..................................................... 41

圖 4-9 線性漸層-整合於 VectorGPU ...................................................... 41

viii

圖 4-10 語法問題-模組層級示意圖 ....................................................... 42

圖 4-11 合成錯誤訊息 ........................................................................... 43

圖 4-12 單色填充效果 ........................................................................... 44

圖 4-13 線性漸層-整合於 VectorGPU .................................................... 44

圖 4-14 Testbench 1-manga ..................................................................... 44

圖 4-15 Testbench 2-dude........................................................................ 44

圖 4-16 貼圖 1-整合於 3DGPU ............................................................... 44

圖 4-17 貼圖 2-整合於 3DGPU ............................................................... 44

ix

方程式索引

方程式 2-1 貝茲曲線 ............................................................................... 3

方程式 2-2 貝茲曲線與 division number ................................................. 3

方程式 2-3 線性漸層公式 ....................................................................... 8

方程式 2-4 線性漸層執行步驟 ................................................................ 8

方程式 2-5 放射漸層公式 ....................................................................... 8

方程式 2-6 線性內插公式 ..................................................................... 10

方程式 2-7 雙線性內插公式 .................................................................. 11

方程式 2-8 雙線性內插執行步驟 .......................................................... 11

1

Chapter 1 概論

1.1研究動機

電腦圖學發展至今已相當廣泛,若以繪圖方式區別可分為二維繪圖與三維繪

圖。二維繪圖是以許多的向量路徑描繪出圖案後再進行填色,由於發展較早且擁

有圖案縮放時失真率會較低這項特色,故在圖學的使用上相當頻繁。而近年為了

追求逼真的影視效果與遊戲畫面品質,三維圖學的相關研究更趨為熱門,許多研

究者因此提出各種架構與設計並完成硬體實作。

在學界與業界中為了開發較具規模的設計,常常會以一個研究團隊將設計依

功能拆為許多部份實作並各別驗證後,再交由整合工程師進行統合與測試,而透

過階段性驗證的設計,在整合後便能大幅提升整體設計的完成度。而在文獻中多

功能貼圖單元[1]、向量圖形處理器[2]與三維繪圖處理器[3]等三個設計,能藉由整

合多功能貼圖單元與向量圖形處理器賦予向量圖形處理器著色效果,且透過整合

多功能貼圖單元與三維繪圖處理器使得三維繪圖處理器擁有貼圖效果。首先多功

能貼圖單元(已達 RTL驗證階段)為內含應用於二維圖形與三維圖形的多項著色功

能,其中二維繪圖功能包含單色填充、線性漸層與放射漸層,三維繪圖功能則有

點對點貼圖與材質過濾貼圖等。向量圖形處理器(已達 RTL驗證階段)以新提出的

尋找交點演算法,搭配實作 OpenVG定義的 stroke style,並設計點陣化加速器產

生像素。三維繪圖處理器(已達 FPGA驗證階段)是基於 SIMT 架構設計的統一處理

器,支援除了貼圖外的多項著色效果。

為了能提升各設計的價值,本論文會使多功能貼圖單元與向量圖形處理器通

過 FPGA驗證階段,並整合多功能貼圖單元與向量圖形處理器,使輸出的像素能

帶多項顏色效果。此外也將整合多功能貼圖單元於三維繪圖處理器,使其擁有三

維繪圖必備的貼圖效果。

2

1.2論文大綱

本論文分為五章,第一章闡述研究動機與論文大綱;第二章描述本論文中欲

整合的三種硬體架構與運作流程,也包括向量圖形處理器與多功能貼圖單元支援

的各種功能;第三章將分別說明多功能貼圖單元與向量圖形處理器、三維繪圖處

理器的整合與設計;第四章分別說明於 EASY 平台與 FPGA驗證過程,並展示實

驗成果;而第五章則為本論文的結論與未來目標。

3

Chapter 2 研究背景與相關研究

本論文目的為整合多功能貼圖單元於向量圖形處理器與三維繪圖處理器,而

為了能設定輸入資料與觀察實驗結果是否正確,並有效率的整合與除錯,除了需

具備二維繪圖與三維繪圖的知識外,還需熟悉多功能貼圖單元[1]與向量圖形處理

器[2]的運作流程。因此本章一開始會分別說明二維與三維繪圖的相關背景,2.2和

2.3小節中將解說多功能貼圖單元和向量圖形處理器的硬體架構與運作流程,並介

紹支援的功能。最後一小節則介紹三維繪圖處理器與對貼圖行為的指令格式設

計。

2.1 電腦圖學介紹

本小節首先介紹二維繪圖原理,並以 OpenVG 定義的管線化流程為例來介紹

向量繪圖流程,隨後介紹三維繪圖原理與 OpenGL ES定義的管線化流程。

2.1.1 二維繪圖介紹

向量繪圖中的圖案是以許多的路徑建構而成,而在所有路徑描繪完成後再依

使用者選定的填色法則去填色。其中,每個路徑都是由一連串的區段組成,而最

常用來建構區段的方法即是貝茲曲線[4]、[5],如方程式 2-1所示,其中 P0 ~ P3代

表四個控制點,t 將由 0~1之間的連續等距數值代入。而如方程式 2-2所示,切割

的線段數 division number(DN)的多寡代表著區段繪製的精細度,其中決定切割線段

數 DN的演算法在[2]中提出。

, 10 )1(3)1(3)1(),,,( 3

3

2

2

1

2

0

3

3210 tPtPttPttPtPPPPBezier

方程式 2-1 貝茲曲線

}

/1

. )1(3)1(3)1()(

{ 1

0

3

3

2

2

1

2

0

3

DNtt

PtPttPttPttf

DNtonfor

t

方程式 2-2 貝茲曲線與 division number

4

此外如圖 2-1所示,在點陣化時會根據路徑的方向賦予每個像素

winding-count(WC)值,而 WC值是以水平 scan-line與路徑的每個交點做判斷,從

winding-count 等於 0開始,若交點的路徑向上則 winding-count 加 1,路徑向下

winding-count 則減 1。等全部像素計算完成後由選定的填色法則填色,而如圖 2-2

填色法則分為兩種,首先 even/odd填色法則是指當該像素的 winding-count 為奇數

時填色,而 non-zero 填色法則是指當該像素 winding-count 為非零時填色。

2

1

11

1 10

圖 2-1 Widing-count 示意圖

圖 2-2 填色法則

在了解二維繪圖的基本原理後,可藉由定義於 OpenVG[6]的管線化繪圖流程

(如圖 2-3)為例子,搭配以下說明來了解向量圖形的繪圖流程:

path, transformation, stroke and paint definition:定義物件的路徑、stroke與

著色方式。此外也能定義不同的座標轉換矩陣。

Stroked path generation:根據先前選擇的路徑寬度、join style、cap style與

dash style 建構路徑。

5

Transformation:將先前定義的座標轉換矩陣對應到路徑的每個控制點。

Rasterization:此步驟將決定哪些像素將會顯現於螢幕上,即點陣化。並依選

用的填色法則決定螢幕上需著色的像素。

Clipping and masking:剔除超過使用者欲描繪區域的像素,此外也能藉由遮

罩修改像素顏色與 alpha值。

Paint generation:決定每個像素的顏色。可選擇指定的顏色或經過計算得出

的效果顏色。

image interpolation:OpenVG也支援將圖片映射至路徑區域內,如果圖片解

析度與螢幕輸出不匹配,將透過內插過濾運算得出適合的顏色值。

Color transformation, blending, and anti-aliasing:將顏色從原本的顏色空間

轉換至新的顏色空間,並可在之後進行混色效果。

Path/Transformation

/Stroke/Paint definition

Stroked Path

Generation

TransformationRasterization

Clipping and

Masking

Paint

Generation

Image

Interpolation

Blending and

Antialiasing

圖 2-3 OpenVG pipeline

6

2.1.2 三維繪圖介紹

圖 2-4 OpenGL ES 2.0 pipeline

不同於二維繪圖是以許多路徑構圖,三維繪圖通常是以許多三角形建構物件,

而最大的特色便是這些三角形帶有深度資訊,使得經過運算呈現在螢幕上時能有

立體逼真的效果。在三維座標進入 OpenGL ES[7]管線(如圖 2-4)後會進行座標轉換

的動作,如平移、縮放、旋轉與投影等,並在完成後將三維座標轉換為二維座標。

再透過點陣化將所有三角形內的像素計算出來,此時便可透過計算完的貼圖座標

到貼圖緩衝區抓取圖素(texel),並依需求可進行混色與透明度的操作。

2.2 多功能貼圖單元[1]

在[1]研究中提出了一多功能貼圖單元,其目的為提供繪圖處理器所需的多種

著色效果,如二維繪圖的線性漸層與放射漸層、三維繪圖的貼圖與材質過濾等功

能,都可依繪圖處理器的需求而整合。在 2.2.1 小節中會介紹多功能貼圖單元支援

的功能,包含二維繪圖的單色填充、線性漸層、放射漸層,與三維繪圖的點對點、

雙線性過濾貼圖功能。因該單元於[1]僅通過 RTL階段,為了將該單元整合於繪圖

處理器且通過 FPGA驗證,必須熟悉單元內的資料流向,故在 2.2.2小節中會說明

多功能貼圖單元的硬體設計與運作流程,以便整合時能分析如何修改,並刪除不

7

必要的運作流程以節省整體執行時間。

2.2.1 多功能貼圖單元[1]功能介紹

本小節將介紹多功能貼圖單元所支援的著色效果,其中二維繪圖著色效果包

含單色填充、線性漸層與放射漸層,三維繪圖著色效果包含點對點貼圖與雙線性

過濾貼圖。

單色填充:

如圖 2-5,單色填充是 OpenVG裡最基本的著色功能,是由使用者定義每條路

徑的顏色後,再依填色法則去填充描繪好的圖形,著色過程單純,不需另做特別

的顏色計算。

圖 2-5 單色填充

線性漸層:

線性漸層 (Linear Gradients)是 OpenVG裡的著色功能之一。首先決定停駐點

的位置(Stopi),再設定對應的停駐點顏色(Stopi_color),如圖 2-6,經由線性內插計

算便可得到每點的顏色結果。在複雜的圖形設計中可以定義多個停駐點與顏色,

但數值都得介於 0~1之間。

Stop0 = 0 Stop1 = 0.5 Stop2 = 1

Linear Interpolate Linear Interpolate

Stop0_color Stop1_color Stop2_color

圖 2-6 漸層與停駐點

8

在像素層級中每一點(x,y)都可以依其梯度值(g)搭配線性內插運算得出該點對

應到的漸層顏色。首先根據線性漸層公式如方程式 2-3,使用者必須先給定兩控制

點的座標,起點 Stop0 (x0,y0)與終點 Stop1 (x1,y1),再將(x,y)代入線性漸層公式得出

g值。

201

2

01

001001,yyxx

yyyyxxxxyxg

方程式 2-3 線性漸層公式

得到 g值後便可搭配顏色做線性內插運算,而為了簡化硬體實行可以將方程

式 2-3分解為方程式 2-4所顯示的五個步驟,其中 stop0_color與 stop1_color分別

代表起點與終點的顏色。

435

4

3

102

001

_10

_01

_

__

SSS

colorstopstopgS

colorstopgstopS

SxaparS

cparybparS

s

s

方程式 2-4 線性漸層執行步驟

放射漸層:

放射漸層需給的參數為顏色、半徑 r、中心點(cz,cy)與焦點(fx,fy)。其 g值公式

如方程式 2-5,效果如圖 2-7所示為一幅射狀的圓形。

222

2222

''

'''',

fyfxr

fxdyfydxdydxrfydyfxdxyxg

fyydy

fxxdx

cyfyfy

cxfxfx

'

'

方程式 2-5 放射漸層公式

9

圖 2-7 放射漸層效果

貼圖-點對點:

經過三維繪圖流程的設定、轉換後將會以許多三角形頂點座標組成物件,往

往又為了增加物件的擬真度,會賦予物件貼圖使其更逼真。貼圖對應(texture

mapping)即是將貼圖座標(s,t)對應到螢幕座標(x,y),如圖 2-8使物件擁有貼圖材質

的行為。

圖 2-8 texture mapping

最單純的貼圖對應即為點對點的方式。如圖 2-9所示,點對點貼圖代表著一個

圖素(texel)能對應到螢幕上的一個像素,若要貼圖完整無失真的貼上物件,就必須

使 screen space 與 texture space的大小相同才能達到。

10

Screen Space

y

x

Texture Space

t

s

圖 2-9 texture mapping-點對點

貼圖-材質過濾

實際應用上貼圖大小常常無法滿足點對點的要求,故可能因 screen space 與

texture space差異太大而在取樣圖素時產生失真的效果,因此各種材質過濾的方法

便被提出。而雙線性內插(Bi-linear interpolation)是利用兩個方向的線性內插得出新

圖素,可以改善非點對點對應造成的鋸齒感。

線性內插(Linear interpolation)則是一種在電腦圖學中廣泛應用的插值方法,它

能經由計算得出該點介於其他兩點間的資訊,如圖 2-10的 Texel[i]與 Texel[i+1]為

相鄰的兩圖素,其中 i代表整數、f代表小數,TexelLi[i.f]是根據方程式 2-6內插後

的圖素資訊。

f 1-f

Texel[i] Texel[i+1]TexelLi[i.f]

圖 2-10 線性內插

iTexeliTexelfiTexel

fiTexelfiTexelfiTexelLi

1

011.

方程式 2-6 線性內插公式

11

fy

fx

Texel[x,y] Texel[x+1,y]

Texel[x,y+1] Texel[x+1,y+1]

x

y

圖 2-11 雙線性內插

雙線性內插原理是選取座標緊鄰的四個圖素,如圖 2-11所示,其中 fx與 fy

為座標在 x軸和 y軸上的小數,先分別對同 x 軸上的兩對圖素 Texel[x,y]與

Texel[x+1,y] 、Texel[x,y+1]與 Texel[x+1,y+1]做線性內插,再將兩組圖素資訊對 y

方向做線性內插,共三次的線性內插完成一組雙線性內插,如方程式 2-7所示。

在硬體設計上可以將其分為三個執行步驟,如方程式 2-8所示以計算得出雙線性

內插結果。

yxTexelyxTexelfxyxTexel

yxTexelyxTexelfxyxTexelfy

yxTexelyxTexelfxyxTexel

fyyxTexelyxTexelfxyxTexel

fyyxTexelyxTexelfxyxTexelfyyfxxTexelBi

,,1,

1,1,11,

,,1,

01,1,11,

1,,1,.,.

方程式 2-7 雙線性內插公式

1213

2

1

1,1,11,

,,1,

SSfySS

yxTexelyxTexelfxyxTexelS

yxTexelyxTexelfxyxTexelS

方程式 2-8 雙線性內插執行步驟

12

2.2.2 多功能貼圖單元[1]硬體介紹

FunctionSelection

Paint FSM

P-Linear FSM

Texture FSM

testbench

RegisterFile

ALU3

ALU2

ALU1

ALU0

Arithmetic KernelFunction Table

DataControl

Output_data

Gen.PixelAddr.

Gen.TextureAddr.

Input_data

圖 2-12 多功能貼圖單元架構圖

多功能貼圖單元主要的硬體架構包含像素座標產生模組、圖素座標產生模組、

四個運算核心、分配各種功能的暫存器索引與計算流程索引的有限狀態機,並以

主要控制器排定模組間的資料流向。其硬體架構將依圖 2-12做以下解釋:

Arithmetic Kernel:多功能貼圖單元的運算核心,包含四個算術邏輯單元(三個

支援線性內插等運算,另一個額外提供倒數與開根號運算)。

Register File:用來儲存運算前的參數、運算過程中的資料與計算後的結果。

Data Control:多功能貼圖單元的主要控制器,會因應功能不同而控制

Arithmetic Kernel與 Register File的資料輸入輸出。

Function Selection:負責傳遞暫存器的輸入輸出位址與需要啟用多少個算術邏

輯單元。

Function Table:包含各功能演算法所需的運算子資訊與暫存器存取流程。

FSM:依據功能的不同各自使用有限狀態機去控制三組來源暫存器位址、一

組目標暫存器位址、運算子控制與算術邏輯單元使用量。

GenPixelAddr 、GenTextureAddr:前者為產生像素座標的模組,會根據使用

13

者定義的 n值(若要產生解析度 n乘 n的畫面座標,則給定 n值),連續產生 n

乘 n個像素點(即 n*n的正方形像素座標),其中像素點是在做完該點顏色計算

後才會產生下個像素點,如此反覆進行直到 n*n個像素點的顏色計算完畢;

而後者為產生包含整數與小數的圖素座標,其中小數部份則是為了測試雙線

性內插功能而給定的固定小數。其中像素座標格式為 8bit 整數與 8bit 小數組

成的定點數;圖素座標格式為 16bit 整數與 16bit 小數組成的定點數。

整體的運作流程可藉由 Data Control中的有限狀態機來解釋,如圖 2-13,多功

能貼圖單元在接受啟動訊號 path_ready後,會根據使用者選定的功能開始運行。

如果是二維圖形功能將會沿著外圍的 FSM狀態執行,其中 REQ_PIXELDATA與

WAIT_PIXELDATA兩個狀態是經由像素產生模組去模擬輸入端的像素座標,並在

執行各種功能運算時能代入計算;DET_PIXELOVER則是為了判斷是否已做完設

定的 n*n解析度(假設 n=8,則會在產生 64個像素後跳至狀態 FINISH),若未做完

則會繼續產生像素座標並計算顏色,不會跳至狀態 FINISH。若為貼圖功能會選擇

READ_TEXELS與 WAIT_TEXELS 這兩個狀態接著循環執行。

14

IDLE

FINISH

DET_FORMAT

EXE2D_READPATHDATA

REQ_PIXELDATA

WAIT_PIXELDATA

OP_FUNCTION

FRAME_WRITE

SEL_FUNFSM

DET_PIXELOVER

READ_TEXELS

WAIT_TEXELS

path_ready

圖 2-13 多功能貼圖單元-有限狀態機

Data ControlGen_texels Gen_pixel

Read_pathdata Op_module210 Op_moduleFunction_fsm

Function

Paintlinear , Paintradial , PointSample , Bi-linear … etc

ROM_8to10RCP

ROOTING_TABLE

Fraction_accessText_coordinate

圖 2-14 多功能貼圖單元硬體模組

15

接著以二維繪圖功能中的線性漸層功能當例子,並搭配圖 2-13有限狀態機與

所有的設計模組(如圖 2-14所示詳細列出配置參數的 Read_Paathdata模組、運算核

心模組與圖素產生模組),說明在接受運算需求至運算結束後硬體的詳細執行流程。

一開始多功能單元會停在圖 2-13中的狀態 IDLE,直到已從 CPU端讀入所有需要

的運算參數並放至對應的暫存器後(如圖 2-16),便拉起 path_ready啟動硬體並跳至

圖 2-13中的狀態 DET_FORMAT,在此處會依使用者選定的功能(format)為二維或

三維繪圖功能決定下個狀態。當跳到圖 2-13中狀態EXE2D_READPATHDATA時,

會發一啟動訊號 read_pathdata給圖 2-14中的 Read_Paathdata模組,此模組便依內

部有限狀態機與計數器開始將參數讀取到對應的暫存器,其有限狀態機如圖2-15。

當所有參數已放置到對應的暫存器後,會拉起 pathdata_ready通知可跳至圖 2-13

中的狀態 REQ_PIXELDATA,當跳至此狀態便可視為圖 2-14中 Gen_pixel模組的

啟動訊號,進而開始產生之後要做顏色計算的像素座標。此模組會在接收到啟動

訊號的下個時脈週期送出座標至對應的暫存器,並在送出座標後等待下次的啟動

訊號,如此反覆進行直到該座標為使用者設定解析度的最後座標點(即座標(x,y) =

(n-1, n-1)),就會結束模擬產生像素座標的動作。當接收到座標後會拉起 pixel_ready

訊號線,圖 2-13中的狀態 WAIT_PIXELDATA便會進入狀態 SEL_FUNFSM,在此

狀態中會對圖 2-14的 Function_fsm模組進行前置設定,並跳至狀態

OP_FUNCTION。

16

IDLE

SETTING

READING

WAIT_DATA

FINISH

path_ready

read_pathdata

par_count

ack

圖 2-15 Read_Paathdata模組-有限狀態機

Function 線性漸層 放射漸層 點取樣 雙線性內插

reg_0 par_a0 par_a0

reg_1 par_b0 par_a1

reg_2 par_c0 par_a2

reg_3 stop0_color par_b0 Texel[x,y] Texel[x,y]

reg_4 stop1_color par_b1 Texel[x+1,y]

reg_5 stop0 par_c0 Texel[x,y+1]

reg_6 stop1 par_c1 Texel[x+1,y+1]

reg_7 par_d1

reg_8 par_e1

reg_9 par_f1

reg_10 stop0_color

reg_11 stop1_color

reg_12 stop0

reg_13 stop1

reg_14 1

reg_15

reg_16

reg_17

reg_18

reg_19 x x

17

reg_20 y y

reg_21

reg_22

reg_23

reg_24

圖 2-16 各功能參數對應暫存器位址圖

當進入圖 2-13的狀態 OP_FUNCTION,圖 2-14 中 Function模組內的線性漸層

功能模組便開始動作。模組內會對方程式 2-4 所示的五個執行步驟中,分別需要的

3個來源暫存器索引、目的暫存器索引與該啟用的核心運算單元等資訊進行設定,

並整理成指令格式如圖 2-17所示。其中五個執行步驟為時序性的,需等待核心運

算單元執行完一個步驟後的訊號,才會跳至下一步驟。指令格式配置完成後,圖

2-14的 Data control模組則會依照指令格式中的暫存器索引,分別去對應的暫存器

抓取資料,且依格式中的 OP_control決定需啟用哪些核心運算單元。

R_regs2 R_regs1 R_regs0 OP_control W_reg

Bit0~Bit4 Bit5~Bit9 Bit10~Bit14 Bit15~Bit18 Bit19~Bit23

圖 2-17 指令格式

在核心運算單元計算出顏色值後,會於圖 2-13中的狀態 FRAME_WRITE 將

顏色送出並等待傳輸完成的訊號,若傳輸完成便會在 DET_PIXELOVER狀態判斷

是否已完成所有像素的運算,假使還有像素需運算便跳回 REQ_PIXELDATA狀態

反覆進行。

2.3 向量圖形處理器[2]

向量圖形處理器[2]的設計擁有幾項特色,其中此處理器提出了新的找交點方

法,如圖 2-18,將兩步驟運算彙整為僅需一步驟完成。在點陣化方面的設計採用

了目前較多人使用的方式(如圖 2-19 中 Scheme Ⅱ),此方法會對每條 scan-line建構

一組連結串列(link list)記錄所需的資訊,如[8]、[9]、[10]、[11]。

18

圖 2-18 找交點演算法 (a) 兩步驟執行(b) [2]提出單步驟執行

GET generation

AET generation

AE Sorting

edges

GET generation

FWC generation

buffer

FWC generation

Screen width

buffer

Screen width

Scr

een h

eight

Winding count

accumulation

Winding count

accumulation

Winding count

accumulation

Scheme I Scheme II Scheme III

AET generation

圖 2-19 三種 WC產生流程

因向量圖形處理器的設計著重於路徑的描繪與點陣化方法的實作,並無處理

對像素的著色,目前是將點陣化完的像素輸出至外部檔案,再配合軟體賦予顏色

值。而為了提升該繪圖處理器的完整度,需另外提供硬體模組來完成著色的動作,

本論文即以多功能貼圖單元來執行像素的著色運算。由於該處理器[2]尚處於 RTL

驗證階段,故為了通過 FPGA驗證必須先了解其使用介面與其運作流程,並在驗

證過程累積經驗以利之後的整合工作。此小節首先說明該處理器[2]支援的路徑繪

製效果,再對硬體與執行過程做介紹。

2.3.1 向量圖形處理器[2]功能介紹

在 OpenVG中使用者能依其需求賦予路徑(path)具有寬度的外殼(shell),這行

為稱之為 stroke,而 stroke又能呈現出實線與虛線的效果。當路徑的寬度大於一個

像素,則須選擇區段的起點與終點的 cap style,以及兩區段相連處的 join style。在

這小節裡將說明描繪路徑時,向量圖形處理器[2]支援的 stroke功能。

19

stroke type:

圖 2-20表示的是一個區段在 OpenVG裡定義的三種 cap style。如果使用的是

Butt style,在區段尾端將不會做任何額外的延伸處理;而採用 Round style 與 Square

style 將分別在區段尾端畫上一個半圓與一個半方形。圖 2-21則代表著相連兩區段

處可能的 join style。首先,Bevel style是將相連兩區段的外殼(shell)兩點做連接;

Round style 則是將相連兩區段的外殼兩點以弧形連接;Miter style 會把相連兩區段

的外殼做延伸直到交會。其中 Miter Length為內殼交會點與外殼交會點的距離。當

選擇Miter style 時,Miter Length將會與使用者定義的臨界值做比較:假設Miter

Length小於臨界值時採用Miter style,否則將採用 Bevel style。

Butt

Round

Square

圖 2-20 Cap styles.

Bevel Round Miter

MiterLength

圖 2-21 Join styles.

虛線(dash)區段可視為一連串交互開關(on/off)的子路徑(sub-path),每個路徑的

長度可由 Dash Pattern 與 Dash Phase來定義。Dash Pattern是儲存每個子路徑長度

的陣列,陣列第一個值為子路徑開啟時的長度,第二個值為子路徑關閉時的長度…

20

以此類推。Dash Phase則表示當使用 Dash Pattern 時需要位移多少值。依圖 2-22(a)

為例子,Dash Pattern為[5,20,20,25],Dash Phase 為 30。所以圖 2-22(b)中將以圖

2-22(a)中的第三區間的單位 5開始畫,換句話說,這區段將畫 15單位長的子路徑

與關閉 25單位長的子路徑。當畫到 Dash Pattern尾端時將接回 Dash Pattern的開頭

繼續畫,以此類推。其中每個開啟的子路徑的頭尾兩端需依照使用者選定的 cap

style 填色。而當前區段畫到尾端時,下個區段的第一個子路徑長度稱為 Dash Phase

Reset。如果不啟用 Dash Phase Reset,舊區段尾端未畫完的 Dash Pattern將被當成

新區段的 Dash Phase,且所有區段會使用原先的 Dash Phase。圖 2-22(b)即為不啟

用 Dash Phase Reset 的範例,區段 1的最後一個子路徑畫到 Dash Pattern第二區間

的單位 15處,所以區段 2起頭處將以剩餘的 5單位當作 Dash Phase,此後再重複

執行 Dash Pattern。

5 20 20 25

5 15

Dash Phase

15 25 5 15

5

20

25

5

Segment 1

Segment 2

Start Cap End Cap

(a)

(b)

圖 2-22 (a) Dash Pattern (b) dash example.

21

路徑如果要使用 stroke,則需描繪路徑的寬度、join與 cap的輪廓。然而因為

此區域未形成封閉圖形,導致在點陣化時無法套用填色法則上色,所以在實作上

需做額外的處理。如圖 2-23除了 Butt style 外,Round style 與 Square style在半圓

與半方的輪廓兩端需做連線,以形成封閉圖形。而 join style 中外輪廓兩點分別以

直線、圓弧與三角狀相連,內邊則是以兩條半個 stroke寬的線連接,如圖 2-24所

示。

Butt

Round

Square

圖 2-23 Cap styles連線處理

Bevel Round Miter

圖 2-24 Join styles連線處理

2.3.2向量圖形處理器[2]硬體介紹

[2]所提之向量圖形處理器架構圖如圖 2-25所示可以分為幾個部分,

Parameter_setting、Tessellation Processor、Data memory、AET Generator、Rasterization

22

accelerator 與整體架構的 Controller。首先 Parameter_setting 會送入需要的參數給

tessellation processor,且當 tessellation processor(採用圖 2-18方法)找到交點後,會

將交點資訊更新到 data memory,再交由 Rasterization accelerator 模組來運算。以下

幾條訊號線為各模組間的主要協定訊號線:

next_segment:訊號拉起會抓取下一組區段資料。

next_path:訊號拉起表示該路徑計算完成,將執行下一條路徑

filling rule:決定填色法則:non-zero 為 0,even-odd為 1。

en_TP、en_RA與 AETGen_enable:啟動 tessellation processor、rasterization

accelerator 與 AET Generator。

Tessellation

Processor

Pa

ram

eter_settin

g

Read data

valid

address

write data

read request

write request

Rasterization

accelerator

Next_

segment

next_path

en_TP

Controller

GET for

Path Contour

(linked list)

GET for

Stroke Contour

(linked list)

AET

AET

Generator

Read

data

Scan-line number

en_SB

Filling

Rule

Dash Pattern

Active Record

AETGen_enable

Attribute

parameters

Da

ta m

emo

ry

vector graphics processor

add

ress

Wri

te d

ata

Rea

d w

rite

CPU CPU

圖 2-25 向量圖形處理器架構圖

圖 2-26描述向量圖形處理器整體的繪圖流程,首先須清除與點陣化模組的相

關緩衝區,爾後路徑將一條接一條的開始渲染,其中每條路徑都得先將參數輸入

給 tessellation processor。在 tessellation processor 描繪路徑與 stroke(如有啟用)的同

時也會產生GET,此時便會進入點陣化階段並開始產生AET以決定要填色的區域。

如果有啟用 stroke功能,將會在該路徑點陣化結束後開始進行 stroke的點陣化。

23

圖 2-26 向量圖形處理器運作流程

在了解向量圖形處理器的運作流程後,可從向量圖形處理器的輸入輸出介面

去觀察,如圖 2-27所示,Parameter_setting與 Vector Graphics Processor 對應到圖

2-25黃色與橘色區塊,testbench則對應到 CPU。Parameter_setting除了提供每條路

徑中各區段的控制點外,也需傳入 join style、cap style 與 Dash Pattern等參數。此

外,由於 tessellation processor 中是以一個區段為最小處理單位,故輸入端會設置

一條訊號線 next_SEG,當為 0時讀取區段資料,為 1時開始描繪。圖中的

MemoryClear 則是用來清除 AET 與 SB/CB的訊號線。等到一條路徑內的所有區段

都已經過 tessellation processor找到交點,將會透過點陣化模組以 scan-line為單位,

陸續送出多個封包(一個封包代表最多內含 4組像素座標),其中每個封包代表在一

個時脈週期可能輸出 0~4個連續像素點。如圖 2-27所示,向量圖形處理器會將輸

出送至 testbench判斷後,再將有效像素輸出到外部檔案。而圖 2-27的(x,y)~ (x+3,y)

為輸出像素點;CV_Valid拉起表示當前封包是有效輸出;CV寬為 16bit,其中 CV[3]

為 1代表會輸出(x,y)、CV[7]為 1代表會輸出(x+1,y) 、CV[11]為 1代表會輸出

(x+2,y) 、CV[15]為 1代表會輸出(x+3,y);FIN_SCANLINE 拉起代表該條 scan-line

已完成;FIN_PATH則是這條路徑已全數點陣化結束,可開始進行下條路徑的描

繪。

24

Vector Graphics

Processor

P0

P1

P2

P3

Attribute

parameter

Segment 1

Segment 2

Last Segment

…Pat

h 1

Segment 1

Segment 2

Last Segment

…Pat

h 2

Segment 1

Segment 2

Last Segment

Las

t P

ath

Parameter_setting

LastPath

next_SEG

(x,y)

(x+1,y)

(x+2,y)

(x+3,y)

CV_Valid

FIN_SCANLINE

FIN_PATH

MemoryClear

CV

testbench

圖 2-27 向量圖形處理器輸入輸出介面

2.4 三維繪圖處理器[3]

三維繪圖處理器[3]設計是基於 SIMT 架構的多核心統一處理器,而 SIMT 架

構特色為架構內的數個執行緒會在同個時脈週期執行相同指令。在此處理器中已

支援了混色與透視的效果,但尚未支援著色功能中相當重要的貼圖效果,故若將

多功能貼圖單元整合進來,便能提升三維繪圖處理器的完整度。圖 2-28的

Texture_unit 即為本論文整合於三維繪圖處理器後的部份,詳細內容將會在章節 3.2

中介紹。

此外,處理器在執行 Texture指令時,並不會由此處理器的運算單元執行,而

是交由貼圖單元去完成。圖 2-29為三維繪圖處理器的指令格式,其中 Texture指令

的 Rd 是存放從外部記憶體讀回來貼圖資料的暫存器編號,Rs 是存放欲讀取的貼

圖座標,Rsam是存放貼圖編號以提供給多重貼圖使用,Bais/Lod則是執行濾波功

能時使用。

25

Rasterization Unit

Multi_core

ROP_unit

Constant MEM

256x128

MEM_control

Texture_unit

IN_VS512x64

IN_FS512x64

IN_ROM

Master1_Wrapper

SystemRegister

Bank0 (Warp 0)32 x 512

Bank1 (Warp 1)32 x 512

Bank2 Warp 232 x 512

Flow_ctrl (FSM)

Master0_Wrapper

Slave_Wrapp

er

vector_processor

vector_processor

vector_processor

vector_processor

Bank3 Warp 332 x 512

RAS fill unit8 set

vector_processor

RAS_BANK64 x 128(4 port)

VS fill unit8 set

FS fill unit16 set

Bank4 Warp 432 x 512

Bank5 Warp 532 x 512

Bank6 Warp 632 x 512

Bank7 Warp 732 x 512

Bank8 Warp 832 x 512

Bank9 Warp 932 x 512

Bank10 Warp 1032 x 512

Bank11 Warp 1132 x 512

Bank12 Warp 1232 x 512

Bank13 Warp 1332 x 512

Bank14 Warp 1432 x 512

Bank15 Warp 1532 x 512

SchedulerBANK_

Occupied_table

ArbiterArbiter

GPR_BANK

Data MEM512x512

圖 2-28 三維繪圖處理器架構圖

Type 63-59 58-53 52-47 46-41 40-33 32-25 24-1716-14

13-10

9

Special Fuction

Opcode (1-6) Rd Rs X Sw_Rd Sw_Rs X neg mask F

Data Transfer Opcode(8-10) Rd Rs Immediate value mask F

Arithmetic/Logic

Opcode (7,11,12,16-23)

Rd Rs Rt Sw_Rd Sw_Rs Sw_Rt neg mask

ShiftOpcode

(30) Rd Rs Rt Sw_Rd Sw_Rs Sw_Rt

Texture Opcoed (15) Rd Rs Rsam. Bias/Lod X

Branch Opcode (24-27) Rs1 Rs2 address

8-7

SV

SV

6

IF

IF

F SV IF

neg

mask F SV IF

mask F SV IF

X F SV IF

R/L

Sw_Rs1 Sw_Rs2

NOP/FinsihOpcode

(31)X IF

圖 2-29 指令格式圖

26

Chapter 3 多功能貼圖單元與繪圖處

理器之整合

本論文目標之一為將多功能貼圖單元整合於兩種圖形處理器-向量圖形處理器

與三維圖形處理器,而在此章會分兩小節說明整合時的介面與對各硬體的修改。

3.1多功能貼圖單元與向量圖形處理器之整

本小節將分為三個部分描述多功能貼圖單元與向量圖形處理器的整合,首先

提到的是兩模組間介面的設計與整合,再者為向量圖形處理器的修改與設計,最

後才是因應整合而修改的多功能貼圖單元設計。

多功能貼圖單元與向量圖形處理器整合介面:

圖 3-1為多功能貼圖單元與向量圖形處理器的整合架構圖,其中 Interface

Controller 為控制點陣化後像素的去向與對多功能貼圖單元的操作,

Rasterization memory為存放點陣化後像素的記憶體,而多功能貼圖單元則會

將計算完的位址與顏色輸出到 frame buffer。

Vector

graphics

processor

Rasterization memory

( 241x32 )

Modified

Multi-function

texture unit

Ras. data

CP

U

BUS

Interface

Controller

request (x,y)Fra

me B

uffer

Slavewrapper

Masterwrapper

圖 3-1 多功能貼圖單元與向量圖形處理器整合架構圖

27

而整合的介面可用圖 3-2來說明,(X,Y)、CV_Valid 與 CV為向量繪圖處

理器輸出的有效像素資訊,其中(X,Y)為一組像素座標,再經過 Interface

Controller 判斷後將有效像素存於 Rasterization memory等待使用;

FIN_SCANLINE 拉起代表該條 scan-line 已點陣化完畢,可開始進行多功能貼

圖單元的著色運算;Main_state則是通知介面控制器現在向量繪圖處理器處於

運行的哪階段,以利相關協定的設計;而 Paint_busy拉起的時間是從

FIN_SCANLINE 拉起後到該條 scan-line 的有效像素點都已執行完著色運算,

之後再拉低 Paint_busy訊號線進行下條 scan-line的點陣化。在多功能貼圖單

元第一次執行運算時,會透過 readpath(讀取訊號線)與R_data(參數資料訊號線)

將所需的參數資料放置對應的 register file 位置(如圖 2-6),而此後的每次運算

將不需再搬移資料;request 為多功能貼圖單元的啟動訊號,會搭配接收一組

座標(x,y)與執行的功能 format;在執行完一個像素的顏色運算後,會向介面控

制器發出 finish訊號表示運算完成,同時以 finish訊號當作寫至 frame buffer

的寫出訊號線,並將顏色與位址一併寫出,在 FPGA實驗板上顯示顏色。

Vector-GPUInterface

controller

Modified

multi-function

texture unit

(X,Y)

CV_Valid

CV

FIN_SCANLIN

E

Paint_busy

Main_state

(x,y)

request

format

finish

path_read

yR_data

color

address

readpath

Slavewrapper

Masterwrapper

圖 3-2 多功能貼圖單元與向量繪圖處理器整合介面

2.3.1小節中提到向量繪圖處理器一個週期可能會輸出四筆座標,而多功

能貼圖單元卻是以一個座標為基本處理單位,故本論文將點陣化一條 scan-line

後的座標儲存下來,再依序丟給多功能貼圖單元處理。以下將用圖 3-3來說明

28

Interface Controller 內的主要行為。在點陣化同一條 scan-line時,若當前的封

包為有效(即 CV_Valid=1),將會把該封包存入 Scan-line Buffer,並以當時的

CV值決定有效的 x座標(可能為 0~4個座標),其中 CV值的定義已於 2.3.2小

節中介紹。y座標則是因處同一條 scan-line 故值不變,所以 Scan-line Buffer

寬度為螢幕寬加上存放一個 y值的空間。而圖 3-3中 allocator 的工作是在

Scan-line Buffer 存完一個封包後,將 Scan-line Buffer 位址+4,以便儲存下個

封包,此外 allocator 也會偵測該條 scan-line是否點陣化完畢(圖 2-27中的

FIN_SCANLINE 訊號線拉起表示已點陣化完),若點陣化完畢則會停止存入動

作。舉例來說,若有效的輸出座標為(5,3)與(6,3),因封包是以 x座標為 0開始,

四個座標為一封包,故存入的形式為 Scan-line Buffer =[0,5,6,0,0、、、0,3]241。

當以 scan-line為單位的點陣化運算結束後,會拉起圖 2-27的

FIN_SCANLINE 訊號線,並開始逐點對多功能貼圖單元發出 request 訊號,等

完成一個座標的顏色計算且送到 frame buffer 後,再發出下個 request 訊號。反

覆進行 4倍的有效封包數後(因封包可能內含 4 個有效像素點,故有效像素點

數量最多為封包數乘 4),再開始進行下條 scan-line的點陣化。圖 3-4為整合

後處理一條路徑的流程示意圖,在圖下方的"Rasterization Step"部份便是[2]

的點陣化階段加上存入 Scan-line Buffer 的步驟,”P”是多功能貼圖單元執行階

段,”W”則是將位址與顏色送到 frame buffer。

29

+ +1

+2

+3

x 0 x 0 x 0 x 0

X

cv[3] cv[7] cv[11] cv[15]

X+1 X+2 X+3

1st packet

Screen width + one y-value=240+1

allocator

pixel 0 pixel 1 pixel 2 pixel 3

‧‧‧Scan-line Buffer

y

y

圖 3-3 Interface Controller 內輸入像素分配示意圖

..

Tessellation

Step

Time

SB/CB

Initialization

AET

Initialization

Rasterization

Step......

Rendering 1st Path

Attribute

Parameter

Setting

Paint

Step

Rasterization

Step

Paint

Step...

AET Generation Rasterization

Fisrt Scanline

AET Generation Rasterization

Fisrt Scanline

Path Rasterization Stroke Rasterization

P

1st scan line Last scan line

W P W P W ..P W P W P W

Mem

Clear

Step

圖 3-4 整合後的路徑運作流程

向量圖形處理器修改與設計:

為了整合與在 FPGA板驗證,本論文對向量圖形處理器的修改可分為兩

部份,首先將處理器中控制主要流程的有限狀態機從圖 3-5改為圖 3-6(以不啟

用 stroke為例子)。狀態”paint”內多功能貼圖單元會計算完該 scan-line的全部

有效像素點,再返回狀態”PathAETGeneration”。

30

Init

MemoryClear

WaitTP

PathAETGenerationPathCompute

圖 3-5 控制向量圖形處理器流程的 FSM

Init

MemoryClear

WaitTP

PathAETGeneration

PathCompute

Paint

Reset

paint_over

path_over

FIN_SCANLINE

圖 3-6 修改後向量圖形處理器的 FSM

第二部分則是[2]在撰寫記憶體行為時,以一個時脈週期去完成記憶體清

除的動作,這在合成時使用 Core Generator 產生的記憶體是無法做到的,故只

要[2]有使用到一次性清除記憶體行為的部份,本論文都會修改得以在 FPGA

31

板上驗證。需修改的部分為圖 2-25 中 Data Memory內的四塊記憶體(即圖 3-7

中的 Data Memory),而修改的時間點為圖 3-6內的”MemoryClear”與”Reset”兩

個狀態。在記憶體行為的相關設計可用以下條列與圖 3-7說明:

HWRITE、HADDR、HWDATA:原先向量圖形處理器[2]對記憶體的操作

行為,包括寫入、位址與資料的訊號線。

init_addr:從 0遞增至 4095的位址線。在狀態”MemoryClear”中以 4096(記

憶體寬度)個時脈週期將其清除為 32’hFFFFFFFF。([2]在硬體啟動時以一

個時脈週期清除整個記憶體,而本論文將此動作移到狀態 MemoryClear

中執行)

addr:在狀態”Reset”內需清除的位址線,會將記錄 Data Memory範圍的

BoundBox內的位址由小到大逐一送入。

BoundBox:用來記錄使用過 Data Memory範圍,如圖 3-7下方所示,其

時間點是在狀態”WaitTP”內會紀錄曾寫過的位址中其最大值與最小值,目

的是為了能在 Reset 狀態時減少需清除的空間,藉以提升效率。此外,因

清除動作是四塊記憶體同時進行,故會取 4個 BoundBox中的最小值與最

大值當真正的 BoundBox。

32

HADDR

addr

ctrl_reset

MemoryClear

init_addrAddress

1

HWRITE

ctrl_reset

(W/R)orReset

Data

Memory

32'hffffffff

HWDATA

ctrl_reset

WDorResetData

ReadData

Init MemoryClear WaitTPPathAET

GenerationPathCompute Paint Reset

ctrl_reset : 1 1 0 0 0 0 1

FSM ‧‧‧

BoundBox

updateBoundBox

reset

圖 3-7 針對記憶體清除設計之示意圖

多功能貼圖單元修改與設計:

多功能貼圖單元[1]中為了驗證各繪圖功能而設計了一模擬像素座標的模

組,如圖 2-12中的 GenPixelAddr,在整合時可以拿掉並改由接收向量圖形處

理器產生的座標。多功能貼圖單元的有限狀態機將由圖 2-13改為圖 3-8。本單

元會接受一組座標與向量圖形處理器的需求當啟動訊號,並在接收第一筆座

標計算時會經過狀態”READ_PATHDATA”將參數讀取至對應的暫存器檔案,

此後則沿狀態”REQ_PIXELDATA”為循環。狀態”OP_FUNCTION”運算結束時

會將顏色資訊送至 frame buffer,並回到”IDLE”等下個需求。

33

IDLE

DET_FORMAT

READ_PATHDATA

SEL_FUNFSM

OP_FUNCTION

wait VGPU

request

finish &

color

REQ_PIXELDATA

First time

read path data

others

圖 3-8 整合後多功能貼圖單元-有限狀態機

3.2多功能貼圖單元與三維繪圖處理器之整

由於三維繪圖處理器已在 FPGA板驗證成功,因此整合時不需更改到內部設

計。本小節以兩部分說明多功能貼圖單元與三維繪圖處理器的整合與修改。首先

是兩模組的整合介面說明,其次是因應整合對多功能貼圖單元的修改。

多功能貼圖單元與三維繪圖處理器整合介面:

三維繪圖處理器在執行貼圖指令時,會將執行貼圖動作所需的相關資訊

送入多功能貼圖單元,並在完成運算後把結果回傳。而整合介面的說明將用

以下條列與圖 3-9來解說:

format:功能選定。4’b1000為點對點貼圖,4’b1001為材質過濾-雙線性

內插。

texture_size:貼圖大小。若為 n即代表解析度是 n*n。

request:三維繪圖單元發出的需求,也是多功能貼圖單元的啟動訊號。

34

(u,v):貼圖座標。u、v大小在 0~1之間。

master_busy:當拉起時多功能貼圖單元必須停止動作。

FloatToInt:新增的格式轉換模組。將格式為 IEEE-754浮點數表示法的(u,v)

乘上解析度 n,且轉換為定點數表示法(s,t)。

read:由多功能貼圖單元發出的讀取需求,會搭配圖素座標(R_addr)並透

過 master wrapper 去外部記憶體抓取圖素資料。

R_addr:經過格式轉換後的圖素座標。

ack:已抓取到圖素,多功能貼圖單元可繼續運作。

tex_data:圖素資料。

finish:完成一筆運算的結束訊號。

color:顏色資訊。

GPU

FloatToInt

Modified Multi-function Texture Unit

format

request

texture_size

( u , v )

master_busy

finish

color

( s , t )

read

ack

tex_data

R_addr

Masterwrapper

BUS

Externalmemory

圖 3-9 多功能貼圖單元與三維繪圖處理器整合介面

在硬體運行時整合介面的主要訊號線執行關係如圖 3-10所示,當三維繪

圖處理器發出 request 訊號的同個時脈週期,貼圖座標也會在同時間送至多功

能貼圖單元。而在多功能貼圖單元發出讀取圖素的 read訊號後,需經過 4個

時脈週期來執行傳輸工作,並回傳 ack訊號通知已完成傳輸。此外若計算完一

個像素的顏色值後,會送出 finish訊號給三維繪圖處理器表示運算完畢,顏色

值也會在同個時脈週期一併送出。

35

request

CLK

u

v

data_u

data_v

read

ack

finish

color data

4 cycles for transmission

圖 3-10 整合介面之訊號線時脈週期關係圖

多功能貼圖單元修改與設計:

由於三維繪圖處理器已達 FPGA驗證階段,故在整合時只需配合處理器

的輸出輸入需求修改。除上述新增的浮點轉定點模組外,也對多功能貼圖單

元的有限狀態機進行修改,如圖 3-11。其中,圖 2-7裡的 FRAME_WRITE 狀

態原是為了等待將計算完的顏色送到外部記憶體,而整合後只是單純將顏色

送回三維繪圖處理器(因處理器可能會再進行混色等運算),而非送至 frame

buffer,故在有限狀態機的設計上將此狀態剔除。

另一方面,因三維繪圖處理器 Master wrapper 仲裁設計的原故,需增加一

條 busy線去控制多功能貼圖單元是否能到外部記憶體抓取資料(如圖 3-9中的

master_busy訊號線),故將此條訊號線加入圖 2-6 GenTexelAddr模組中的有限

狀態機判斷,如圖 3-12。

36

IDLE

DET_FORMAT

READ_TEXELS

WAIT_TEXELS

SEL_FUNFSM

OP_FUNCTION

wait GPU

request

finish &

color

圖 3-11 修改後多功能貼圖單元-有限狀態機

IDLE

DET_FRACTION

SETTING_FRACTION

READ_REQ

WAIT_DATA

DET_FORMAT

POINTSAMPLE

BILINEAR

FINISH

master_wrapper_busy

圖 3-12 修改後 GenTexelAddr模組-有限狀態機

37

Chapter 4 驗證與結果分析

由於多功能貼圖單元[1]與向量圖形處理器[2]僅通過 RTL模擬測試,故在整合

前需分別在 FPGA板上做驗證,藉以降低整合後在 FPGA板上的錯誤。而驗證的

過程首先將透過 EASY Platform,以 slave wrapper 包住 IP使其可以接收資料,同

時透過包裝 master wrapper 寫至外部檔案讀取驗證。在確認資料的輸出輸入與

wrapper訊號傳遞無誤後,便進入 FPGA版的驗證。在此階段會遇到的問題除了某

些 verilog code語法不能合成外,還可能有使用者 coding style 太過複雜,導致合成

時繞線失敗的現象。所以針對在 FPGA板上的錯誤修正與驗證,也是本篇論文實

作的價值之一。而本章節將以兩小節分別說明使用 EASY平台和 FPGA板實驗的

過程與結果。

4.1 EASY平台驗證

EASY平台為建置在 RTL層級並模擬 SOC硬體架構的平台,使用者能依照需

求更改平台上的硬體程式(如 arbiter),與透過平台上的 CPU 撰寫 C 語言對欲驗證

的硬體進行操作,最後由平台上的 frame buffer 模組將位址與顏色資訊寫到外部檔

案,以 Borland C++程式顯示在電腦螢幕上。如圖 4-1所示為 EASY平台示意圖,

ARM_CPU 會透過 ARM_DS-5 將 C 語言編譯成指令並放至 Instruction Memory 給

硬體執行,MY_IP 則擺放欲測試的硬體架構,另外附有一外部記憶體與 Frame

Buffer 將顏色與位址資訊寫至外部檔案。其中,礙於平台的限制 CPU 端並無法執

行讀檔的行為,故需將欲使用的資料以 head 檔的方式存放,同時資料量也不能太

大。

38

Master0_Wrapper

Slave5_Wrapper

MY_IP

Master_Wrapper

ARM_CPU

Slave1_Wrapper

InstructionMemory

AHB BUS

Slave2_Wrapper

ExternalMemory

Slave4_Wrapper

Frame_Buffer

圖 4-1 EASY平台示意圖

為了符合之後 FPGA 板的驗證,在 EASY 平台的測試上使用了一組 slave

wrapper (如圖 4-1 中的 Slave5_Wrapper)去接收來自 CPU 的輸入資料,其 slave 位

址對應如圖 4-2所示,包含了一個區段的控制點(P0x、P0y、P1x、P1y、P2x、P2y、

P3x、P3y)、一條路徑擁有多少區段(Seg/Path)、每條路徑對應的顏色(Color/Path)、

二維繪圖所需的參數 (parameters)、所選定的繪圖功能 (format)、總路徑數目

(PathNum)以及硬體的啟動訊號(Start_sig)。

parameter mapping address

P0x 0x22440000

P0y 0x22450000

P1x 0x22460000

P1y 0x22470000

P2x 0x22480000

P2y 0x22490000

39

P3x 0x224A0000

P3y 0x224B0000

Seg/Path 0x224C0000

Color/Path 0x224D0000

parameters 0x224E0000

format 0x224F1000

PathNum 0x224F2000

Start_sig 0x224F0000

圖 4-2 slave base 位址對應

而在硬體執行完一筆顏色的計算時,必須將顏色資訊與該點的位址送至 frame

buffer,故撰寫了一組 master wrapper 能主動抓取位址與顏色並送至 frame buffer,

而 wrapper與測試硬體的主要協定如圖 4-3。圖中訊號線 hsel與 hwrite拉起代表此

slave已被選取且可被寫入,並在拉起的同時將 C程式撰寫的位址與資料透過 haddr

與 hwdata 訊號線送入。因為有多種參數需寫入,所以圖 4-3 中的藍色區塊(slave

wrapper)分配了各項參數的暫存器檔案(各參數的暫存器檔案大小如圖 4-4 所示),

而參數(以參數 P0x 為例)寫入暫存器檔案的時間點是當 hsel 及 hwrite 拉起與

haddr[31:16] = 16’h2244的時候(配合圖 4-2中 P0x的 mapping address),且因傳遞時

BUS 位址為 word address 而 IP 位址為 byte address,故寫入的位址需除以 4(如圖

4-3中的haddr[13:2])。Master wrapper則會在mwrite拉起時將位址與顏色透過maddr

與 mwdata 送至 frame buffer,並在傳輸結束後拉起 mack 通知 Interface controller

已完成一筆資料的傳輸。其中 mwrite 即為圖 3-2 的 finish訊號線,maddr 為圖 3-2

的 address訊號線,而 mwdata為圖 3-2的 color 值。

40

Rasterization memory

( 241x32 )

Multi-function

texture unit

Ras. data

CP

U

BUS

Interface

Controller

request (x,y)

Fra

me B

uffer

haddr

hwdata

hwrite

hsel

maddr

mwdata

mwrite

mack

Register File

P0x

Start_sig

hwdatahaddr[13:2]

haddr[31:16] = 16'h224F

hwritehsel

hwdatahaddr[13:2]

haddr[31:16] = 16'h2244

hwritehsel

Para

meter_

setting

Vector graphics

processor

‧‧‧‧

‧‧‧‧

Slave wrapper

Master wrapper

address

color

finish

圖 4-3 整合後向量圖形處理器-wrapper主要訊號線

參數 P0x~P3y、

Seg/path

Color/Path parameters format PathNum Start_sig

大小(寬*長) 5000*32 300*32 21*32 1*4 1*32 1*1

圖 4-4 各參數暫存器檔案大小

透過撰寫 wrapper 包裝硬體後,再經由與 FPGA板驗證環境相當類似的 EASY

平台測試後,將使用 Borland C++軟體把輸出至檔案的結果呈現在螢幕上,以下則

為各種功能於 EASY平台驗證的成果:

41

圖 4-9 線性漸層-整合於 VectorGPU

4.2 FPGA板驗證

本小節首先詳細敘述在 FPGA驗證階段所遇到的困難,並說明是如何解決問

題,並在章節 4.2.2中展示於 FPGA開發板上的實驗結果。而以下四套軟體為 FPGA

驗證階段所使用的:

Synplify Premier:Synopsys 公司所開發的軟體。此軟體的優點主要有兩個,

首先 Synplify能對合成的硬體有優化效果,使得之後使用 Xilinx合成時速度

會加快;第二點則是 Synplify能搭配 Identify軟體於合成時標記欲觀測的訊號

線,並等硬體於開發板上運作時觀測波形,方便除錯工作進行。

圖 4-5 多功能貼圖單元-線性漸層 圖 4-6 多功能貼圖單元-放射漸層

圖 4-7 多功能貼圖單元-點對點貼圖 圖 4-8 多功能貼圖單元-雙線性過濾

42

Xilinx ISE Design Suite 14.1:Xilinx公司所開發的軟體。可對使用者撰寫的

verilog code合成,也可使用 Synplify合成後的 EDF檔做第二階段合成。

Xilinx Core Generator:Xilinx公司所開發的軟體。可將某些制式模組以提供的

硬體程式庫替換,並在燒錄時將該模組存放到開發板中的對應區塊,如此便

可省下開發板主要的邏輯區塊。

RealView Debugger v1.8:ARM公司所開發的軟體。讓使用者撰寫 C語言驅動

開發板上的 CPU與開發板做溝通。

4.2.1 驗證過程

在通過 EASY平台驗證後代表硬體的 wrapper 層包裝是正確的,而 FPGA驗

證階段會先使用 Synplify軟體合成,合成完畢再使用 xilinx合成。先使用 Synplify

合成的原因在於它能將想觀測的訊號線標記並等 xilinx合成後,於上 FPGA板測試

時便能觀測之前標記的訊號線波形,提升除錯的方便性。使用 FPGA板測試時出

現的問題用以下條列來說明:

verilog語法問題:撰寫者有時為了方便會使用下列語法撰寫程式,B.C.c,

在模組 A中便能使用訊號線 c。如圖 4-10示意,模組 A為最外層模組,

模組 B為模組 A內的子模組,模組 C為模組 B內的子模組,c為模組 C

內的某條 wire訊號。這種寫法雖可避免撰寫時模組輸入輸出埠的雜亂,

但在 FPGA驗證階段是無法合成的,故需將有使用到此語法的程式全數

改為接線才能通過合成。

module A( );

module B

module C( );

wire c;

.

.

.

assign temp =B.C.c;

.

.

圖 4-10 語法問題-模組層級示意圖

43

verilog撰寫方式:撰寫者有時在描述行為時,會將硬體行為寫得太複雜,

導致使用 xilinx合成時繞線失敗。故解決辦法必須將各模組拆開合成,找

出有問題的模組後,將行為修改成較易繞線的形式。

模組層級過多:合成時也曾出現如圖 4-11的錯誤,而光從錯誤訊息並無

法推測合成失敗的原因。故解決辦法為將每個模組拆開獨立合成測試,

再階層式的把數個模組打包合成測試,經過多次的測試發現層級太多的

子模組會導致此種合成失敗,所以便將這些子模組的行為移至上一層後,

合成便可以通過。

圖 4-11 合成錯誤訊息

EASY平台與 FPGA階段差異:理論上在 EASY平台使用的 C語言檔能

直接在 FPGA階段使用,但若在 FPGA階段使用的 head檔較大,編譯軟

體 CodeWarrior 在編譯時會出現錯誤(但不會出現任何錯誤訊息),導致在

上 FPGA板測試時可能只會傳送部份資料給硬體,造成結果的不正確。

故在 FPGA階段的 C語言檔最好是以讀檔方式撰寫,才可縮小兩階段驗

證環境的差異。

CoreGenerator 的使用[15]:在 3.1小節提及的一次性記憶體清除行為,本

以為 CoreGenerator 提供的 reset pin能在初始時將記憶體清除為設定值,

並在該訊號線拉起時清除當個時脈週期送入位址為設定值。但經過獨立

測試記憶體行為時,發現 reset pin只會在拉起的下個時脈週期送出設定值,

而無清除記憶體行為(不會依照送入的位址去清除記憶體),也無法在硬體

初始階段將記憶體清除為設定值(因初始無法清除整塊記憶體,故在設計

上將此行為移至圖 3-6中的狀態MemoryClear 執行)。故解決辦法為使用

write pin(寫入的訊號線)代替 reset pin來進行清除行為便可正常運作。

44

4.2.2 驗證結果

在經歷以上問題且反覆修改與測試後,已在MDK330開發板上驗證成功,其

實驗結果如下:

圖 4-12 單色填充效果 圖 4-13 線性漸層-整合於 VectorGPU

圖 4-14 Testbench 1-manga 圖 4-15 Testbench 2-dude

圖 4-16 貼圖 1-整合於 3DGPU 圖 4-17 貼圖 2-整合於 3DGPU

45

Chapter 5 結論與未來目標

5.1 結論

本論文先分別對多功能貼圖單元與向量圖形處理器進行 FPGA階段的驗證,

解決不少因語法或撰寫方式而導致合成失敗的部份,並在驗證成功後著手整合工

作。整合除了須對各硬體的介面相當清楚外,也須了解各硬體的運作流程讓兩者

間的協定能正確執行。此外也得考慮運算途中有對外部記憶體讀取的狀況,如三

維繪圖處理器的整合。而整合後兩處理器都已通過 FPGA驗證,除了大幅的提升

實驗價值外,同時也說明整合工作的重要性。

5.2 未來目標

本論文已成功將多功能貼圖單元整合於兩處理器中,故未來能藉由修改與新

增多功能貼圖單元的功能,來擴展處理器的著色效果與價值。可增設的新功能以

二維繪圖與三維繪圖做分類:

二維繪圖功能:在 OpenVG定義中也有支援遮罩與混色效果,在未來能

將這些功能加入本設計中。

三維繪圖功能:為追求更逼真的貼圖效果,能加入材質過濾-三線性內插

的設計;而當貼圖需求量很大時,可透過設計貼圖解壓縮技術提升貼圖

的儲存量,也可降低多功能貼圖單元到外部讀取資料時的頻寬。

在向量圖形處理器方面,圖 2-25中 Tessellation Processor、Rasterization

accelerator 模組並無採用 pipeline 設計,故在執行運算時必有一模組閒置而降低繪

圖效能,而如何提升硬體使用率也是未來可思量的方向。另一方面,可將多功能

貼圖單元、向量圖形處理器與三維繪圖處理器整合,使其成為包含二維與三維繪

圖功能的處理器。

46

參考文獻

[1]. 李堃瑋, “進階多功能貼圖單元設計”,國立中山大學資訊工程學系碩士論

文,2011.

[2]. 董庭吉, “搭載曲線細分處理器之向量圖形加速器設計與實作”,國立中山大學

資訊工程學系碩士論文,2014.

[3]. 楊賀鈞, “基於 SIMT架構之多核繪圖處理器之設計與實作”,國立中山大學資訊

工程學系碩士論文,2014.

[4]. Habib, Z. and Sakai, M., “Smoothing arc splines by cubic curves,” in Proceedings

of the 2009 Sixth International Conference on Computer Graphics, Imaging and

Visualization, Tianjin, pp. 199–204, 2009.

[5]. Zeng, Z. and Chen, L., “On the best Bézier approximation of ellipses,” in

Proceedings of the 2009 International Joint Conference on Computational

Sciences and Optimization, Hainan Island, pp. 1021–1026, 2009.

[6]. http://www.khronos.org/openvg/

[7]. http://www.khronos.org/opengles/2_X/

[8]. Kim, D., Cha, K. and Chae, S.-I., “A high-performance OpenVG accelerator with

dual-scanline filling rendering,” IEEE Transactions on Consumer Electronics, vol.

54, issue 3, pp. 1303-1311, August 2008.

[9]. Kallio, K., “Scanline edge-flag algorithm for antialiasing,” Theory and Practice of

Computer Graphics Conference, UK, pp. 81-88, June 2007.

[10]. Tong, T. C. and Chang, Y. N., “A low cost 2D graphics anti-aliasing rendering

scheme,” in Proc. Int. Symp. Next-Generat. Electron., Kaohsiung, Taiwan, Nov.

2010, pp. 207–210.

[11]. Shen, Y. L., Seo, S. W., Zhang, Y. and Oh, H. C., “A low hardware cost 2D vector

47

graphic rendering algorithm for supersampling antialiasing,” in Proc. 2nd Int.

Workshop ETCS, vol. 1. 2010, pp. 141–144.

[12]. http://www.cs.indiana.edu/hmg/le/project-home/xilinx/ise_10.1/ISE/coregen/ip/xili

nx/primary/com/xilinx/ip/blk_mem_gen_v2_2/doc/blk_mem_gen_ds512.pdf