一種用于3d圖學(xué)渲染加速的fpga芯片的制作方法
【專利摘要】本發(fā)明公開了一種用于3D圖學(xué)渲染加速的FPGA芯片,該3D?FPGA芯片由上層的可重構(gòu)層電路與下層的邏輯層電路相互疊加成為一體,該3DFPGA芯片根據(jù)數(shù)據(jù)流從輸入到輸出的順序依次包括PCIe接口模塊、3D裝填模塊、空間二分模塊、起始渲染模塊、3D渲染模塊和顯示模塊。與基于ASIC固定邏輯的光線跟蹤法渲染技術(shù)相比,本發(fā)明有ASIC所無的可編程性帶來的高度靈活性的優(yōu)勢(shì)。而相對(duì)于現(xiàn)今流行的FPGA芯片,本發(fā)明的FPGA芯片在3D圖學(xué)渲染加速的應(yīng)用上提供102倍級(jí)芯片邏輯密度的提升,且具有相對(duì)于現(xiàn)今通用基于CPU芯片或GPU芯片的3D圖學(xué)渲染技術(shù)有104倍級(jí)的加速性能。
【專利說明】—種用于3D圖學(xué)渲染加速的FPGA芯片
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及3D圖學(xué)渲染【技術(shù)領(lǐng)域】,尤其涉及一種用于3D圖學(xué)渲染加速的現(xiàn)場可編程門陣列(Field-Programmable Gate Array, FPGA)芯片。
【背景技術(shù)】
[0002]3D圖學(xué)渲染技術(shù)是現(xiàn)今3D計(jì)算機(jī)圖學(xué)(3D Computer Graphics)的應(yīng)用中需求性最高的技術(shù)。這個(gè)技術(shù)的最高訴求是在實(shí)時(shí)應(yīng)用中產(chǎn)生真實(shí)的視覺影像。朝著這個(gè)方向,3D圖學(xué)渲染技術(shù)的實(shí)現(xiàn)至今有3種方式:1.基于CPU或圖形處理器(Graphic ProcessingUnit, GPU)的3D圖學(xué)值染技術(shù)。2.基于專用集成電路(Application Specific integratedCircuit, ASIC)芯片固定邏輯的3D圖學(xué)渲染技術(shù)。3.基于FPGA芯片可重構(gòu)邏輯的3D圖學(xué)渲染技術(shù)。
[0003]在許多的大規(guī)模的3D應(yīng)用中,最耗時(shí)間的任務(wù)是將3D影像的視覺信息表達(dá)在2D的平面上。尤其是在將如3D工業(yè)設(shè)計(jì)、3D動(dòng)畫、3D電影特效編輯的工具用在大規(guī)模、復(fù)雜的繪圖設(shè)計(jì)(例如飛機(jī)、汽車的模型設(shè)計(jì))上,能夠迅速完成切面(Cutting Plane)、模型合并(Model Interrogation)、復(fù)雜著色(Sophisticated Shading)是一個(gè)基本的關(guān)鍵操作。這些不同的3D圖學(xué)應(yīng)用有一個(gè)共同的技術(shù)要求:高速的3D數(shù)字信號(hào)處理功能。在羅聰翼著的《Blender權(quán)威指南》書第7章第5節(jié)《渲染農(nóng)場》中敘述:著名的電影特效工作室Weta Digital在制作電影《2012》(注:2009年美國科幻災(zāi)難片)的過程中,花費(fèi)在單幀畫面上的渲染時(shí)間平均為20個(gè)小時(shí),而整個(gè)地震場景的特效幀數(shù)超過7000幀,所以總共的渲染時(shí)間大約為141,120小時(shí)。
[0004]根據(jù)Wikipedia報(bào)導(dǎo),現(xiàn)在3D應(yīng)用市場上的3D圖學(xué)工具幾乎全由基于光柵法的系統(tǒng)(Rasterization-Based System)。這個(gè)系統(tǒng)的軟件部分由 OpenGL API (www.0pengl.0rg)的庫函數(shù)以及它們的應(yīng)用組成,硬件部分全是CPU、GPU以及少數(shù)設(shè)計(jì)使用的專用定制芯片。自70年代開始至今,隨著CPU芯片(以Intel公司為首)與GPU芯片(以Nvidia公司為首)設(shè)計(jì)技術(shù)以及超深亞微米工藝(Ultra-Deep Submicron Processing Technology)芯片制造工藝的高度發(fā)展,基于光柵法的3D圖學(xué)工具的品質(zhì)與操作速度有特別的進(jìn)步。光柵法3D圖學(xué)系統(tǒng)的優(yōu)勢(shì)在于產(chǎn)品開發(fā)的周期短以及高度靈活性,但由于它的操作本質(zhì)上是指令級(jí)串行執(zhí)行的方式,速度的上升遠(yuǎn)遠(yuǎn)跟不上超深亞微米工藝根據(jù)摩爾定律(Moore’sLaw,工藝進(jìn)步帶來的芯片邏輯密度每18個(gè)月翻一倍)的進(jìn)步。迄今為止,經(jīng)過了 40年的努力,光柵法3D圖學(xué)應(yīng)用的速度仍未達(dá)到實(shí)時(shí)應(yīng)用的要求。近10年來,一些利用多核與配合CPU的定制硬件的光柵法系統(tǒng)報(bào)導(dǎo)略超過每秒24幀的視頻效果,但它們的開發(fā)周期漫長而成本昂貴。
[0005]光柵法系統(tǒng)的圖學(xué)設(shè)計(jì)是一個(gè)由設(shè)計(jì)者操縱的畫板式繪圖技術(shù)(Painter’ sAlgorithm)。它的效果是一個(gè)人的3D視覺以人為模擬的方式表達(dá)為2D畫板上繪畫的結(jié)果,而并非真實(shí)光學(xué)物理現(xiàn)象的仿真。
[0006]自70年代,一個(gè)基于物理光學(xué)的光線跟蹤法出現(xiàn),企圖得到一個(gè)物理上逼真的視覺效果,將光學(xué)中的反射、折射、透視與陰影的物理現(xiàn)象利用幾何光學(xué)的射線法計(jì)算出來。由于光線跟蹤法本質(zhì)上避免了不可見部分的跟蹤,計(jì)算量是物體復(fù)雜度的對(duì)數(shù)函數(shù),與光柵法計(jì)算量是情景復(fù)雜度的線性函數(shù)相比,在針對(duì)復(fù)雜情景的3D圖學(xué)應(yīng)用中有明顯的優(yōu)勢(shì)。但是它的計(jì)算量對(duì)現(xiàn)今的計(jì)算機(jī)軟件運(yùn)行速度而言是過分大的負(fù)擔(dān)。
[0007]自 2OOl 年開始,德國薩爾大學(xué)(Saarland University)由 Philipp Slusallek 教授帶領(lǐng)的計(jì)算機(jī)圖學(xué)小組研究以基于光線跟蹤法的硬件平行計(jì)算架構(gòu)來實(shí)踐3D圖學(xué)建模與渲染。在2006年9月的美國猶他州舉辦的IEEE會(huì)議(IEEE Symposium on InteractiveRay Tracing)上,該小組宣布了一個(gè)實(shí)時(shí)光線跟蹤的ASIC芯片設(shè)計(jì),可以達(dá)到每秒200中貞高品質(zhì)的畫面。根據(jù)德國汽車公司Volkswagan報(bào)導(dǎo),該芯片技術(shù)已為汽車工業(yè)提供一個(gè)新的汽車模型的可視化設(shè)計(jì)方法,避免了昂貴耗時(shí)的原型設(shè)計(jì),使得汽車工業(yè)的設(shè)計(jì)成本與產(chǎn)品上市周期降低30%。
[0008]綜合上述兩種3D圖學(xué)應(yīng)用系統(tǒng),即純軟件系統(tǒng)與純硬件系統(tǒng),在建模、渲染的性能與成本兩方面的優(yōu)劣勢(shì):純硬件的ASIC芯片雖然能產(chǎn)生遠(yuǎn)較純軟件的CPU或GPU方法高質(zhì)量、高性能的畫面,但成本太高,而且靈活度遠(yuǎn)不如后者,對(duì)多種3D圖學(xué)應(yīng)用不同的要求不能提供一種如利用CPU或GPU軟件的可編程調(diào)適的解決方案。
[0009]本發(fā)明的重點(diǎn)在于融合上述兩種3D圖學(xué)應(yīng)用解決方案各別的優(yōu)勢(shì),而又避開兩方案各別的缺點(diǎn)。更具體地,一方面保留純軟件方法的可編程模式,因而繼承它應(yīng)用的靈活性與可調(diào)試性,另一方面又針對(duì)3D圖學(xué)應(yīng)用所需的硬件速度優(yōu)勢(shì)提供具有高速操作性能的嵌入式ASIC模塊,讓這兩種組織在執(zhí)行3D應(yīng)用任務(wù)的時(shí)間與空間設(shè)計(jì)上交錯(cuò)存在,合作無間。其共存與合作的方式以及各自在軟件設(shè)計(jì)領(lǐng)域與硬件設(shè)計(jì)領(lǐng)域的形態(tài)都將由3D圖學(xué)應(yīng)用產(chǎn)品的性價(jià)比優(yōu)化點(diǎn)來決定。
【發(fā)明內(nèi)容】
[0010](一)要解決的技術(shù)問題
[0011]有鑒于此,本發(fā)明的主要目的在于提供一種用于3D圖學(xué)渲染加速的FPGA芯片,以提升3D圖學(xué)渲染速度及芯片邏輯密度。
[0012](二)技術(shù)方案
[0013]為達(dá)到上述目的,本發(fā)明提供了一種用于3D圖學(xué)渲染加速的FPGA芯片,該3DFPGA芯片由上層的可重構(gòu)層電路與下層的邏輯層電路相互疊加成為一體,該3D FPGA芯片根據(jù)數(shù)據(jù)流從輸入到輸出的順序依次包括PCIe接口模塊1、3D裝填模塊2、空間二分模塊
3、起始渲染模塊4、3D渲染模塊5和顯示模塊6。其中,可重構(gòu)層電路與邏輯層電路在該3DFPGA芯片中并存而形成一個(gè)疊加與緊密連接的完整結(jié)構(gòu)。
[0014]上述方案中,所述PCIe接口模塊I用于實(shí)現(xiàn)該3D FPGA芯片與外部PCIe總線的數(shù)據(jù)傳輸,前端接口與PCIe總線插槽連接,外部信號(hào)通過PCIe總線以差分信號(hào)的形式進(jìn)出芯片;PC硬碟的3D數(shù)據(jù)文檔中的3D數(shù)據(jù)以高速串口傳輸方式經(jīng)PC主機(jī)板上的PCIe插槽被傳送至本3D FPGA芯片的PCIe接口模塊的差分端口 ;PCIe接口模塊的后端接口與3D裝填模塊2連接。
[0015]上述方案中,所述3D裝填模塊2將來自主計(jì)算機(jī)(PC)經(jīng)由PCIe接口模塊I輸入的3D數(shù)據(jù)中的3D圖元數(shù)據(jù)緩存于外部的圖元SDRAM中,并將3D數(shù)據(jù)中的3D光學(xué)數(shù)據(jù)直接輸出至起始渲染模塊4,該3D光學(xué)數(shù)據(jù)至少包括攝像頭、材質(zhì)及光源信息。
[0016]上述方案中,所述空間二分模塊3用于將外部的圖元SDRAM中緩存的3D圖元數(shù)據(jù)轉(zhuǎn)換成空間二分KD樹型數(shù)據(jù)并緩存于外部的KD SDR上述方案中,所述起始渲染模塊4用于對(duì)3D裝填模塊輸入的至少包括攝像頭、材質(zhì)及光源信息的3D光學(xué)數(shù)據(jù)進(jìn)行分析和處理,產(chǎn)生3D渲染模塊所需的光學(xué)數(shù)據(jù),該光學(xué)數(shù)據(jù)至少包括射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù),并輸出給3D渲染模塊,同時(shí)產(chǎn)生3D渲染模塊渲染每幀3D畫面所需的啟動(dòng)信號(hào)以及處理3D渲染模塊結(jié)束每幀3D畫面渲染時(shí)產(chǎn)生的終結(jié)信號(hào)。
[0017]上述方案中,所述3D渲染模塊5對(duì)同步輸入的外部圖元SDRAM中緩存的3D圖元數(shù)據(jù)、KDSDRAM中緩存的空間二分KD樹型數(shù)據(jù)以及起始渲染模塊4的光學(xué)數(shù)據(jù)進(jìn)行3D渲染,并將渲染處理的結(jié)果輸出至顯示模塊6。
[0018]上述方案中,所述顯示模塊6對(duì)渲染處理的結(jié)果進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到顯示結(jié)果信息,并將得到的顯示結(jié)果信息緩存在外部的幀緩沖SDRAM中,以及將得到的顯示結(jié)果信息與從外部的幀緩沖SDRAM輸入的RGB顏色數(shù)據(jù)一起輸出給VGA顯示器以供本地監(jiān)視,同時(shí)反饋給PCIe接口模塊I以供主計(jì)算機(jī)處理。
[0019](三)有益效果
[0020]從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果:
[0021]1、本發(fā)明提供的用于3D圖學(xué)渲染加速的FPGA芯片,與現(xiàn)今流行的利用CPU或GPU的3D圖學(xué)軟件渲染技術(shù)用的指令級(jí)操作速度相比,芯片門級(jí)計(jì)算速度有IO4倍級(jí)的提升。另一方面,本發(fā)明利用靜態(tài)可重構(gòu)性(類似FPGA實(shí)踐的可編程性,即在編程階段決定可重構(gòu)電路的功能)保留CPU或GPU的可編程特性優(yōu)勢(shì)。同時(shí),本發(fā)明的動(dòng)態(tài)可重構(gòu)性(即在操作階段實(shí)時(shí)決定可重構(gòu)電路的功能)以實(shí)時(shí)的門級(jí)匹秒(10_12秒)級(jí)延遲的操作速度超越CPU或GPU指令級(jí)微秒(10_6秒)延遲的操作速度。
[0022]2、本發(fā)明提供的用于3D圖學(xué)渲染加速的FPGA芯片,與ASIC固定邏輯的光線跟蹤法渲染技術(shù)相比,可編程特性有ASIC所無的可編程性帶來的高度靈活性的優(yōu)勢(shì)。
[0023]3、本發(fā)明提供的用于3D圖學(xué)渲染加速的FPGA芯片,與現(xiàn)今流行的FPGA芯片相t匕,在3D圖學(xué)應(yīng)用的渲染加速上,不但有類似的可重構(gòu)特性,而且因提供嵌入式的浮點(diǎn)ALU模塊與嵌入式的緩存(Cache)模塊,解決3D渲染應(yīng)用對(duì)高精度浮點(diǎn)運(yùn)算與高速數(shù)據(jù)輸送功能的普遍需求,使芯片邏輯密度有IO2倍級(jí)的提升。
【專利附圖】
【附圖說明】
[0024]通過附圖形象而詳細(xì)地對(duì)上述
【發(fā)明內(nèi)容】
進(jìn)行描述,以使本發(fā)明的特點(diǎn)和優(yōu)點(diǎn)變得更加清晰,這些附圖包括:
[0025]圖1示出的是依照本發(fā)明第一實(shí)施例的3D FPGA芯片的結(jié)構(gòu)示意圖(架構(gòu)A)。
[0026]圖2示出的是依照本發(fā)明第二實(shí)施例的3D FPGA芯片的結(jié)構(gòu)示意圖(架構(gòu)B)。
[0027]圖3示出的是PCIe接口模塊的結(jié)構(gòu)示意圖。
[0028]圖4示出的是3D裝填模塊的結(jié)構(gòu)示意圖。
[0029]圖5示出的是空間二分模塊的結(jié)構(gòu)示意圖。
[0030]圖6示出的是起始渲染模塊的結(jié)構(gòu)示意圖。
[0031]圖7示出的是3D渲染模塊的結(jié)構(gòu)示意圖。[0032]圖8示出的是圖7中主路由模塊的結(jié)構(gòu)示意圖。
[0033]圖9示出的是圖7中穿越緩存模塊的結(jié)構(gòu)示意圖。
[0034]圖10示出的是圖7中渲染穿越模塊的結(jié)構(gòu)示意圖。
[0035]圖11示出的是圖10中穿越路由模塊的結(jié)構(gòu)示意圖。
[0036]圖12示出的是圖10中穿越管道模塊的結(jié)構(gòu)示意圖。
[0037]圖13示出的是圖12中穿越數(shù)據(jù)路徑模塊的結(jié)構(gòu)示意圖。
[0038]圖14示出的是圖10中穿越浮點(diǎn)ALU模塊的結(jié)構(gòu)示意圖。
[0039]圖15示出的是圖7中穿越FIFO模塊的結(jié)構(gòu)示意圖。
[0040]圖16示出的是圖7中列舉緩存模塊的結(jié)構(gòu)示意圖。
[0041]圖17示出的是圖7中渲染列舉模塊的結(jié)構(gòu)示意圖。
[0042]圖18示出的是圖17中列舉路由模塊的結(jié)構(gòu)示意圖。
[0043]圖19示出的是圖17中列舉管道模塊的結(jié)構(gòu)示意圖。
[0044]圖20示出的是圖19中列舉數(shù)據(jù)路徑模塊的結(jié)構(gòu)示意圖。
[0045]圖21示出的是圖7中列舉FIFO模塊的結(jié)構(gòu)示意圖。
[0046]圖22示出的是圖7中穿刺緩存模塊的結(jié)構(gòu)示意圖。
[0047]圖23示出的是圖7中渲染穿刺模塊的結(jié)構(gòu)示意圖。
[0048]圖24示出的是圖23中穿刺路由模塊的結(jié)構(gòu)示意圖。
[0049]圖25示出的是圖23中穿刺管道模塊的結(jié)構(gòu)示意圖。
[0050]圖26示出的是圖25中穿刺數(shù)據(jù)路徑模塊的結(jié)構(gòu)示意圖。
[0051]圖27示出的是圖23中穿刺浮點(diǎn)ALU模塊的結(jié)構(gòu)示意圖。
[0052]圖28示出的是圖7中著色FIFO模塊的結(jié)構(gòu)示意圖。
[0053]圖29示出的是圖7中著色緩存模塊的結(jié)構(gòu)示意圖。
[0054]圖30示出的是圖7中渲染著色模塊的結(jié)構(gòu)示意圖。
[0055]圖31示出的是圖30中著色路由模塊的結(jié)構(gòu)示意圖。
[0056]圖32示出的是圖30中著色管道模塊的結(jié)構(gòu)示意圖。
[0057]圖33示出的是圖32中著色數(shù)據(jù)路徑模塊的結(jié)構(gòu)示意圖。
[0058]圖34示出的是圖30中著色浮點(diǎn)ALU模塊的結(jié)構(gòu)示意圖。
[0059]圖35示出的是圖34中浮點(diǎn)ALU數(shù)據(jù)路徑模塊的結(jié)構(gòu)示意圖。
[0060]圖36示出的是圖35中浮點(diǎn)除法器模塊的結(jié)構(gòu)示意圖。
[0061]圖37示出的是圖7中顯示模塊的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0062]在下文中,通過參照附圖以及表格,本發(fā)明的實(shí)例將被詳細(xì)地描述。但是,本發(fā)明可以許多不同的形式加以實(shí)施,并不應(yīng)限定于這里給出的實(shí)例,該實(shí)例的提供是為了使本公開是徹底的和完整的,并且向熟悉本領(lǐng)域的人員全面地傳達(dá)本發(fā)明的思想。
[0063]3D FPGA芯片的結(jié)構(gòu)是一個(gè)為高速數(shù)字信號(hào)處理的可重構(gòu)的平行多進(jìn)程管線結(jié)構(gòu)。在下文中,所有在本發(fā)明中可重構(gòu)的部分結(jié)構(gòu)都以(*可重構(gòu))的標(biāo)記表明。
[0064]參照?qǐng)D1,架構(gòu)A是本發(fā)明的兩種實(shí)現(xiàn)結(jié)構(gòu)之一。圖1中的SDRAM與架構(gòu)A的3DFPGA芯片經(jīng)由芯片管腳直接連接,這是用于SDRAM與3D FPGA芯片共用同一個(gè)系統(tǒng)板的設(shè)計(jì)。該3D FPGA芯片由上層的可重構(gòu)層電路與下層的邏輯層電路相互疊加成為一體,可重構(gòu)層電路與邏輯層電路在該3D FPGA芯片中并存而形成一個(gè)疊加與緊密連接的完整結(jié)構(gòu)。
[0065]每個(gè)3D FPGA芯片由6個(gè)可重構(gòu)模塊構(gòu)成,根據(jù)數(shù)據(jù)流從輸入到輸出的順序依次包括PCIe接口模塊1、3D裝填模塊2、空間二分模塊3、起始渲染模塊4、3D渲染模塊5和顯示模塊6。
[0066]其中,PCIe接口模塊I用于實(shí)現(xiàn)該3D FPGA芯片與外部PCIe總線的數(shù)據(jù)傳輸,前端接口與PCIe總線插槽連接,外部信號(hào)通過PCIe總線以差分信號(hào)的形式進(jìn)出芯片。PC硬碟的3D數(shù)據(jù)文檔中的3D數(shù)據(jù)以高速串口傳輸方式經(jīng)PC主機(jī)板上的PCIe插槽被傳送至本3D FPGA芯片的PCIe接口模塊的差分端口(Differential Port)。PCIe接口模塊的后端接口與3D裝填模塊2連接。
[0067]3D裝填模塊2用于將來自主計(jì)算機(jī)(PC)經(jīng)由PCIe接口模塊I輸入的3D數(shù)據(jù)中的3D圖元數(shù)據(jù)緩存于外部的圖元SDRAM中,并將3D數(shù)據(jù)中的3D光學(xué)數(shù)據(jù)(例如攝像頭、材質(zhì)、光源信息)直接輸出至起始渲染模塊4。
[0068]空間二分模塊3用于將外部的圖元SDRAM中緩存的3D圖元數(shù)據(jù)轉(zhuǎn)換成空間二分KD樹型數(shù)據(jù)并緩存于外部的KD SDRAM中。
[0069]起始渲染模塊4用于對(duì)3D裝填模塊輸入的攝像頭、材質(zhì)、光源信息等3D光學(xué)數(shù)據(jù)進(jìn)行分析和處理,產(chǎn)生3D渲染模塊所需的射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù)等光學(xué)數(shù)據(jù),并輸出給3D渲染模塊,同時(shí)產(chǎn)生3D渲染模塊渲染每幀3D畫面所需的啟動(dòng)信號(hào)以及處理3D渲染模塊結(jié)束每巾貞3D畫面渲染時(shí)產(chǎn)生的終結(jié)信號(hào)。
[0070]3D渲染模塊5用于對(duì)同步輸入的外部圖元SDRAM中緩存的3D圖元數(shù)據(jù)、KD SDRAM中緩存的空間二分KD樹型數(shù)據(jù)以及起始渲染模塊4的光學(xué)數(shù)據(jù)進(jìn)行3D渲染,并將渲染處理的結(jié)果輸出至顯示模塊6。
[0071]顯示模塊6用于對(duì)渲染處理的結(jié)果進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到顯示結(jié)果信息,并將得到的顯示結(jié)果信息緩存在外部的幀緩沖SDRAM中,以及將得到的顯示結(jié)果信息與從外部的幀緩沖SDRAM輸入的RGB顏色數(shù)據(jù)一起輸出給VGA顯示器以供本地監(jiān)視,同時(shí)反饋給PCIe接口模塊I以供主計(jì)算機(jī)處理(例如智能識(shí)別或互聯(lián)網(wǎng)通信應(yīng)用)。
[0072]參照?qǐng)D2,架構(gòu)B是本發(fā)明的兩種實(shí)現(xiàn)結(jié)構(gòu)之二。架構(gòu)A與架構(gòu)B的唯一的差異在于本發(fā)明的3D FPGA芯片與外部SDRAM(包括圖元SDRAM、KD SDRAM與幀緩沖SDRAM)的數(shù)據(jù)交換方式。圖2中的所有SDRAM與3D FPGA芯片經(jīng)由外部的PCIe總線連接,這是用于PCIe插槽上SDRAM與3D FPGA芯片在各自不同的系統(tǒng)板的設(shè)計(jì)。目的在提高本發(fā)明在系統(tǒng)板設(shè)計(jì)上的擴(kuò)展靈活性以及降低系統(tǒng)板設(shè)計(jì)的成本。
[0073]其中,PCIe接口模塊1,用于實(shí)現(xiàn)該3D FPGA芯片與外部PCIe總線的數(shù)據(jù)傳輸,前端接口與PCIe總線插槽連接,外部信號(hào)通過PCIe總線以差分信號(hào)的形式進(jìn)出芯片。PC硬碟的3D數(shù)據(jù)文檔中的3D圖元數(shù)據(jù)以高速串口傳輸方式經(jīng)PC主機(jī)板上的PCIe插槽被傳送至本3D FPGA芯片的PCIe接口模塊的差分端口(Differential Port)。PCIe接口模塊的后端接口與3D裝填模塊2連接。
[0074]3D裝填模塊2,用于將來自主計(jì)算機(jī)(PC)經(jīng)由PCIe接口模塊I輸入的3D數(shù)據(jù)中的3D圖元數(shù)據(jù)依次通過PCIe接口模塊I和PCIe總線緩存于外部的圖元SDRAM中,并將3D數(shù)據(jù)中的3D光學(xué)數(shù)據(jù)(例如攝像頭、材質(zhì)、光源信息)直接輸出至起始渲染模塊4。[0075]空間二分模塊3,用于將依次通過PCIe接口模塊I和PCIe總線得到的外部圖元SDRAM中緩存的3D圖元數(shù)據(jù)轉(zhuǎn)換成空間二分KD樹型數(shù)據(jù),并依次通過PCIe接口模塊I和PCIe總線緩存于外部的KD SDRAM中。
[0076]起始渲染模塊4,用于對(duì)3D裝填模塊輸入的攝像頭、材質(zhì)、光源信息等3D光學(xué)數(shù)據(jù)進(jìn)行分析和處理,產(chǎn)生3D渲染模塊所需的射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù),并輸出給3D渲染模塊,同時(shí)產(chǎn)生3D渲染模塊渲染每幀3D畫面所需的啟動(dòng)信號(hào)以及處理3D渲染模塊結(jié)束每幀3D畫面渲染時(shí)產(chǎn)生的終結(jié)信號(hào)。
[0077]3D渲染模塊5,用于對(duì)同步輸入的外部圖元SDRAM中緩存的3D圖元數(shù)據(jù)、KD SDRAM中緩存的空間二分KD樹型數(shù)據(jù)以及起始渲染模塊4的光學(xué)數(shù)據(jù)進(jìn)行3D渲染,并將渲染處理的結(jié)果輸出至顯示模塊6。
[0078]顯示模塊6,用于對(duì)渲染處理的結(jié)果進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到顯示結(jié)果信息,并將得到的顯示結(jié)果信息依次通過PCIe接口模塊I和PCIe總線緩存在外部的幀緩沖SDRAM中,以及將得到的顯示結(jié)果信息與從外部的幀緩沖SDRAM輸入的RGB顏色數(shù)據(jù)一起輸出給VGA顯示器以供本地監(jiān)視,同時(shí)反饋給PCIe接口模塊I以供主計(jì)算機(jī)處理(例如智能識(shí)別或互聯(lián)網(wǎng)通信應(yīng)用)。
[0079]基于上述圖1所示的架構(gòu)A和圖2所示的架構(gòu)B,該FPGA芯片與外部SDRAM( SP圖元SDRAM、KD SDRAM與幀緩沖SDRAM)進(jìn)行數(shù)據(jù)交換,在架構(gòu)A中,該外部SDRAM中的圖元SDRAM直接連接于該FPGA芯片中的3D裝填模塊2和空間二分模塊3,該外部SDRAM中的KDSDRAM直接連接于該FPGA芯片中的空間二分模塊3和3D渲染模塊5,該外部SDRAM中的幀緩沖SDRAM直接連接于該FPGA芯片中的顯示模塊6。在架構(gòu)B中,該FPGA芯片是經(jīng)由外部的PCIe總線連接于該外部SDRAM中的圖元SDRAM、KD SDRAM與幀緩沖SDRAM。
[0080]下面結(jié)合圖3至圖37,對(duì)構(gòu)成本發(fā)明用于3D圖學(xué)渲染加速的FPGA芯片的PCIe接口模塊1、3D裝填模塊2、空間二分模塊3、起始渲染模塊4、3D渲染模塊5和顯示模塊6進(jìn)行詳細(xì)說明。
[0081]參照?qǐng)D3,PCIe接口模塊由兩個(gè)子模塊構(gòu)成,即PCIe核模塊與PCIe應(yīng)用模塊。PCIe核模塊用于執(zhí)行數(shù)據(jù)交換的物理層、數(shù)據(jù)鏈接層與處理層的協(xié)議邏輯。PCIe應(yīng)用模塊用于控制3D裝填模塊、空間二分模塊、3D渲染模塊以及顯示模塊與外部(圖1)或外部PCIe總線插槽上(圖2)的PC、圖元SDRAM、KD SDRAM以及幀緩存SDRAM之間的數(shù)據(jù)交換。
[0082]參照?qǐng)D4,3D裝填模塊包含3個(gè)模塊,即PCIe讀取模塊、3D分類模塊和圖元SDRAM控制模塊。PCIe讀取模塊用于從PCIe接口模塊I中獲取3D數(shù)據(jù)并傳輸給3D分類模塊。3D分類模塊用于將該3D數(shù)據(jù)分成二類數(shù)據(jù),一類為3D圖元數(shù)據(jù),輸出至外部圖元SDRAM,另一類為3D光學(xué)數(shù)據(jù)(即攝像頭、材質(zhì)、光源數(shù)據(jù)),輸出至起始渲染模塊4。圖元SDRAM控制模塊用于將該3D圖元數(shù)據(jù)輸出并緩存至外部圖元SDRAM。
[0083]參照?qǐng)D5,空間二分模塊包含6個(gè)模塊,即KD節(jié)堆棧FILO模塊、構(gòu)建KD模塊、二分模塊、成本計(jì)算模塊、二分位置FIFO模塊和圖元FIFO模塊。成本計(jì)算模塊與二分模塊從外部圖元SDRAM讀入各自所需的3D圖元數(shù)據(jù)同時(shí)分別緩沖于圖元FIFO模塊與二分位置FIFO模塊。二分模塊用自二分位置FIFO獲取的頂點(diǎn)產(chǎn)生3D情景圖元基于軸向包盒(Axis-Aligned Bounding Box,簡稱 AABB)的空間二分平面(Binary Space PartitionPlane),繼而利用成本計(jì)算模塊從圖元FIFO獲取的圖元頂點(diǎn)坐標(biāo)來計(jì)算KD樹(KD Tree)每一級(jí)AABB的二分成本,最終以成本最低的二分平面來完成該級(jí)的KD節(jié)二分。整個(gè)3D情景所有圖元的根KD節(jié)(Root KD Node)被空間二分模塊反復(fù)二分到個(gè)別的KD葉節(jié)(KD LeafNode),所有3D情景的圖元數(shù)據(jù)被轉(zhuǎn)換成一個(gè)KD樹型數(shù)據(jù)結(jié)構(gòu),進(jìn)而直接(A架構(gòu))或經(jīng)由PCIe接口模塊(B架構(gòu))輸出到外部的KD SDRAM。
[0084]空間二分模塊從外部的圖元SDRAM讀進(jìn)3D情景圖元數(shù)據(jù),根據(jù)KD空間二分算法(KD Binary Space Partition Algorithm)進(jìn)行反復(fù)空間二分,同時(shí)將所有被二分的KD樹內(nèi)部節(jié)(KD Tree Inner Node)信息記錄并輸入外部的KD SDRAM,直到每一個(gè)空間二分路徑到達(dá) KD 樹葉節(jié)(KD Tree Leaf Node)。
[0085]參照?qǐng)D6,起始渲染模塊包括起始ALU和起始狀態(tài)機(jī),起始ALU用于對(duì)3D裝填模塊輸入的3D光學(xué)數(shù)據(jù)進(jìn)行分析和處理,產(chǎn)生3D渲染模塊所需的射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù),并輸出給3D渲染模塊,同時(shí)處理3D渲染模塊結(jié)束每幀3D畫面渲染時(shí)產(chǎn)生的終結(jié)信號(hào)。起始狀態(tài)機(jī)用于產(chǎn)生3D渲染模塊渲染每巾貞3D畫面所需的啟動(dòng)信號(hào)。
[0086]參照?qǐng)D7,3D渲染模塊包含12個(gè)模塊,即主路由模塊,4個(gè)緩存模塊(穿越緩存模塊、列舉緩存模塊、穿刺緩存模塊、著色緩存模塊),4個(gè)渲染子模塊(渲染穿越模塊、渲染列舉模塊、渲染穿刺模塊、渲染著色模塊)以及3個(gè)間隔它們的FIFO模塊(穿越FIFO模塊、列舉FIFO模塊、穿刺FIFO模塊)。
[0087]3D渲染模塊中的主路由模塊、4個(gè)緩存模塊(穿越緩存模塊、列舉緩存模塊、穿刺緩存模塊、著色緩存模塊)、4個(gè)渲染子模塊(渲染穿越模塊、渲染列舉模塊、渲染穿刺模塊、渲染著色模塊)以及3個(gè)FIFO (穿越FIFO模塊、列舉FIFO模塊、穿刺FIFO模塊)的數(shù)據(jù)來源是:
[0088]I) KD SDRAM
[0089]存儲(chǔ)3D圖元經(jīng)空間二分法處理后的KD樹結(jié)構(gòu)數(shù)據(jù)。
[0090]2)圖元 SDRAM
[0091 ] 存儲(chǔ)3D情景的圖兀組成/[目息。
[0092]3) 3D光學(xué)數(shù)據(jù)
[0093]起始渲染模塊對(duì)3D裝填模塊輸入的3D光學(xué)數(shù)據(jù)(攝像頭、情景物體材質(zhì)以及光源的信息)進(jìn)行分析和處理,產(chǎn)生的3D渲染模塊所需的射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù)。
[0094]來自外部KD SDRAM的KD節(jié)數(shù)據(jù)輸入穿越緩存模塊。來自外部圖元SDRAM的圖元數(shù)據(jù)輸入主路由模塊。來自起始渲染模塊的光學(xué)數(shù)據(jù)輸入渲染穿越模塊。3D渲染的管線操作計(jì)算順序:渲染穿越模塊一> 穿越FIFO模塊一>渲染列舉模塊一>列舉FIFO模塊一>渲染穿刺模塊一>穿刺FIFO模塊一>渲染著色模塊。這個(gè)管線操作將沿光線跟蹤的方向從點(diǎn)到最近穿刺點(diǎn)(nearest intersect point),按直射一> 反射一> 折射的順序周而復(fù)始直到完成。
[0095]參照?qǐng)D8,3D渲染模塊中的主路由模塊包括主循環(huán)MUX模塊和主緩存讀取模塊,主循環(huán)MUX模塊從渲染列舉模塊、渲染穿刺模塊以及渲染著色模塊三個(gè)模塊中選擇一個(gè)模塊,主緩存讀取模塊從外部的圖元SDRAM輸入被選擇模塊所需的圖元數(shù)據(jù),主循環(huán)MUX模塊繼而將輸入圖元數(shù)據(jù)輸出給該被選擇模塊。
[0096]參照?qǐng)D9,3D渲染模塊中的穿越緩存模塊包括穿越CAM模塊、穿越TAG模塊和穿越緩存RAM模塊,其中的穿越CAM模塊與穿越TAG模塊接受并分析渲染穿越模塊對(duì)渲染穿越管道計(jì)算所需KD節(jié)數(shù)據(jù)的請(qǐng)求,繼而從穿越緩存RAM模塊(如果請(qǐng)求的KD節(jié)在本地,即Cache Hit)或從外部KD SDRAM(如果請(qǐng)求的KD節(jié)不在本地,即Cache Miss)輸入所需的KD節(jié)數(shù)據(jù)。
[0097]參照?qǐng)D10,3D渲染模塊中的渲染穿越模塊由穿越路由模塊、與64根(*可重構(gòu))射線1:1對(duì)應(yīng)的穿越管道模塊以及穿越浮點(diǎn)ALU構(gòu)成。來自穿越緩存模塊的KD節(jié)數(shù)據(jù)經(jīng)由穿越路由模塊輸入穿越路由模塊選擇的穿越管道模塊,對(duì)射線與輸入的KD節(jié)調(diào)用穿越浮點(diǎn)ALU模塊進(jìn)行渲染穿越計(jì)算,將結(jié)果的KD葉節(jié)ID輸出給穿越FIFO以備輸出給渲染列舉模塊。
[0098]參照?qǐng)D11,渲染穿越模塊中的穿越路由模塊包括循環(huán)選控模塊和穿越緩存讀取模塊,其中循環(huán)選控模塊以輪流循環(huán)(Round Robin)的方式在64根(*可重構(gòu))射線的穿越管道中選擇一個(gè)管道與穿越緩存模塊連接,穿越緩存讀取模塊從穿越緩存模塊輸入所需的KD節(jié)數(shù)據(jù)并交予穿越管道。
[0099]參照?qǐng)D12,渲染穿越模塊中的穿越管道模塊包括穿越狀態(tài)模塊、射線產(chǎn)生模塊、穿越控制模塊和穿越數(shù)據(jù)路徑模塊,用于執(zhí)行一根射線與一個(gè)KD節(jié)的穿越(Traverse)計(jì)算,包括射線與H)節(jié)包盒(KD Node Bounding Box)以及二分面(Splitting Plane)的穿刺(Intersect)計(jì)算。計(jì)算穿越整個(gè)KD樹所有KD節(jié)直到KD葉節(jié)(KD Leaf Node)。計(jì)算過程由穿越控制模塊中的有限狀態(tài)機(jī)(Finite State Machine)控制穿越數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。參照?qǐng)D12,所有64個(gè)穿越管道中的穿越數(shù)據(jù)路徑模塊共用同一個(gè)穿越浮點(diǎn)ALU模塊。
[0100]參照?qǐng)D13,穿越管道模塊中的穿越數(shù)據(jù)路徑模塊包括穿越堆疊模塊和穿越算法模塊,其核心模塊是穿越算法模塊,即射線與KD節(jié)包盒(KD Node Bounding Box)的空間二分平面(BSP Split Plane)的穿刺(Intersect)計(jì)算。當(dāng)射線同時(shí)穿越二分平面兩側(cè)的KD節(jié)時(shí),一方面繼續(xù)穿越下一級(jí)的KD節(jié),另一方面將暫時(shí)擱置的KD節(jié)登記于穿越堆棧FILO模塊。
[0101]參照?qǐng)D14,渲染穿越模塊中的穿越浮點(diǎn)ALU模塊包括穿越浮點(diǎn)ALU控制模塊和浮點(diǎn)ALU數(shù)據(jù)路徑模塊,用于接受穿越數(shù)據(jù)路徑模塊發(fā)出的ALU模式請(qǐng)求,由穿越浮點(diǎn)ALU控制模塊發(fā)出適當(dāng)?shù)目刂菩盘?hào),讓浮點(diǎn)ALU數(shù)據(jù)路徑模塊形成所需的穿越ALU計(jì)算公式來完成穿越浮點(diǎn)ALU計(jì)算。
[0102]參照?qǐng)D15,3D渲染模塊中的穿越FIFO模塊包含64個(gè)(*可重構(gòu))用于個(gè)別射線穿越計(jì)算的穿越FIFO子模塊。穿越FIFO模塊的輸入來自3D渲染模塊的渲染穿越模塊,由穿越路由模塊控制導(dǎo)入個(gè)別射線穿越計(jì)算的穿越FIFO子模塊。
[0103]參照?qǐng)D16,3D渲染模塊中的列舉緩存模塊包括列舉TAG模塊和列舉緩存RAM模塊,其中的列舉TAG模塊接受并分析渲染列舉模塊對(duì)渲染列舉管道計(jì)算所需圖元ID數(shù)據(jù)的請(qǐng)求,繼而從本模塊中的列舉緩存RAM模塊(如果請(qǐng)求的圖元ID在本地,即Cache Hit)或從外部圖元SDRAM(如果請(qǐng)求的圖元ID不在本地,即Cache Miss)輸入所需的圖元ID數(shù)據(jù)。
[0104]參照?qǐng)D17,3D渲染模塊中的渲染列舉模塊由列舉路由模塊與64根(*可重構(gòu))射線1:1對(duì)應(yīng)的列舉管道模塊構(gòu)成。來自列舉緩存模塊的圖元數(shù)據(jù)(即KD葉節(jié)圖元ID)經(jīng)由列舉路由模塊輸入列舉路由模塊選擇的列舉管道模塊,進(jìn)行渲染列舉計(jì)算(即以鏈表Linked List的方式求得所有KD葉節(jié)中的圖元ID),將結(jié)果的KD葉節(jié)圖元ID輸出給列舉FIFO以備輸入渲染穿刺模塊。
[0105]參照?qǐng)D18,渲染列舉模塊中的列舉路由模塊包括循環(huán)選控模塊和列舉緩存讀取模塊,其中的循環(huán)選控模塊以輪流循環(huán)(Round Robin)的方式在64根(*可重構(gòu))射線的列舉管道中選擇一個(gè)管道與列舉緩存連接,由列舉緩存讀取模塊從列舉緩存模塊輸入所需的KD葉節(jié)中的圖元數(shù)據(jù)并交予列舉管道。
[0106]參照?qǐng)D19,渲染列舉模塊中的列舉管道模塊包括列舉控制模塊和列舉數(shù)據(jù)路徑模塊,用于執(zhí)行渲染列舉計(jì)算。求得所有KD葉節(jié)中的圖元ID。計(jì)算過程由列舉控制模塊中的有限狀態(tài)機(jī)(Finite State Machine)控制列舉數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
[0107]參照?qǐng)D20,列舉管道模塊中的列舉數(shù)據(jù)路徑模塊的核心模塊足列舉算法模塊,即從圖元SDRAM中的圖元數(shù)據(jù)求得所有KD葉節(jié)中的圖元ID。
[0108]參照?qǐng)D21,3D渲染模塊中的列舉FIFO模塊包含64個(gè)(*可重構(gòu))用于個(gè)別射線列舉計(jì)算的列舉FIFO子模塊。列舉FIFO模塊的輸入來自3D渲染模塊的渲染列舉模塊,由列舉路由模塊控制導(dǎo)入個(gè)別射線列舉計(jì)算的列舉FIFO子模塊。
[0109]參照?qǐng)D22,3D渲染模塊中的穿刺緩存模塊包括穿刺TAG模塊和穿刺緩存RAM模塊,其中的穿刺TAG模塊接受并分析渲染穿刺模塊對(duì)渲染穿刺管道計(jì)算所需圖元頂點(diǎn)數(shù)據(jù)的請(qǐng)求,繼而從本模塊中的穿刺緩存RAM模塊(如果請(qǐng)求的圖元頂點(diǎn)數(shù)據(jù)在本地,即CacheHit)或從外部圖元SDRAM(如果請(qǐng)求的圖元頂點(diǎn)數(shù)據(jù)不在本地,即Cache Miss)輸入所需的圖元頂點(diǎn)數(shù)據(jù)。
[0110]參照?qǐng)D23,3D渲染模塊中的渲染穿刺模塊由穿刺路由模塊、64根(*可重構(gòu))射線I: I對(duì)應(yīng)的穿刺管道模塊以及穿刺浮點(diǎn)ALU模塊構(gòu)成。來自穿刺緩存模塊的頂點(diǎn)數(shù)據(jù)經(jīng)由穿刺路由模塊輸入穿刺路由模塊選擇的穿刺管道模塊,進(jìn)行渲染穿刺計(jì)算(即計(jì)算射線與圖元的穿刺是中Hit或不中Miss),將結(jié)果的圖元ID與穿刺點(diǎn)坐標(biāo)輸出給穿刺FIFO以備輸入渲染著色模塊。
[0111]參照?qǐng)D24,渲染穿刺模塊中的穿刺路由模塊包括循環(huán)選控模塊和穿刺緩存讀取模塊,其中的循環(huán)選控模塊以輪流循環(huán)(Round Robin)的方式在64根(*可重構(gòu))射線的穿刺管道中選擇一個(gè)管道與穿刺緩存連接,穿刺緩存讀取模塊從穿刺緩存模塊輸入所需的KD葉節(jié)中的圖元數(shù)據(jù)并交予穿刺管道。
[0112]參照?qǐng)D25,渲染穿刺模塊中的穿刺管道模塊包括穿刺控制模塊和穿刺數(shù)據(jù)路徑模塊,用于執(zhí)行渲染穿刺計(jì)算,計(jì)算射線與所有KD葉節(jié)中的圖元是否穿刺成功以及穿刺位置。計(jì)算過程由穿刺控制模塊中的有限狀態(tài)機(jī)(Finite State Machine)控制穿刺數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
[0113]參照?qǐng)D26,穿刺管道模塊在的穿刺數(shù)據(jù)路徑模塊的核心模塊是穿刺算法模塊,即從圖元SDRAM中的圖元頂點(diǎn)數(shù)據(jù)計(jì)算射線與圖元的穿刺與否及穿刺點(diǎn)位置。
[0114]參照?qǐng)D27,渲染穿刺模塊中的穿刺浮點(diǎn)ALU模塊包括穿刺浮點(diǎn)ALU控制模塊和浮點(diǎn)ALU數(shù)據(jù)路徑模塊,用于接受穿刺數(shù)據(jù)路徑模塊發(fā)出的ALU模式請(qǐng)求,由穿刺浮點(diǎn)ALU控制模塊發(fā)出適當(dāng)?shù)目刂菩盘?hào),讓浮點(diǎn)ALU數(shù)據(jù)路徑模塊形成所需的穿刺ALU計(jì)算公式來完成穿刺浮點(diǎn)ALU計(jì)算。
[0115]參照?qǐng)D28,3D渲染模塊中的穿刺FIFO模塊包含64個(gè)(*可重構(gòu))用于個(gè)別射線穿刺計(jì)算的穿刺FIFO子模塊。穿刺FIFO模塊的輸入來自3D渲染模塊的渲染穿刺模塊,由穿刺路由模塊控制導(dǎo)入個(gè)別射線穿刺計(jì)算的穿刺FIFO子模塊。
[0116]參照?qǐng)D29,3D渲染模塊中的著色緩存模塊包括著色TAG模塊和著色緩存RAM模塊,其中的著色TAG模塊接受并分析渲染著色模塊對(duì)渲染著色管道計(jì)算所需圖元光學(xué)數(shù)據(jù)(即顏色與材質(zhì))的請(qǐng)求,繼而從本模塊中的著色緩存RAM模塊(如果請(qǐng)求的圖元光學(xué)數(shù)據(jù)在本地,即Cache Hit)或從外部圖元SDRAM(如果請(qǐng)求的圖元光學(xué)數(shù)據(jù)不在本地,即CacheMiss)輸入所需的圖元光學(xué)數(shù)據(jù)。
[0117]參照?qǐng)D30,3D渲染模塊中的渲染著色模塊由著色路由模塊、64根(*可重構(gòu))射線I: I對(duì)應(yīng)的著色管道模塊以及著色浮點(diǎn)ALU模塊構(gòu)成。來自著色緩存模塊的圖元光學(xué)數(shù)據(jù)經(jīng)由著色路由模塊輸入著色路由模塊選擇的著色管道模塊,進(jìn)行渲染著色計(jì)算(即計(jì)算穿刺圖元的顏色),將結(jié)果的圖元顏色輸出給顯示模塊。
[0118]參照?qǐng)D31,渲染著色模塊中的著色路由模塊包括循環(huán)選控模塊和著色緩存讀取模塊,其中的循環(huán)選控模塊以輪流循環(huán)(Round Robin)的方式在64根(*可重構(gòu))射線的著色管道中選擇一個(gè)管道與著色緩存連接,由著色緩存讀取模塊從著色緩存模塊輸入所需的圖元光學(xué)數(shù)據(jù)并交予著色管道。
[0119]參照?qǐng)D32,渲染著色模塊中的著色管道模塊包括著色控制模塊和著色數(shù)據(jù)路徑模塊,用于執(zhí)行渲染著色計(jì)算,計(jì)算過程由著色控制模塊中的有限狀態(tài)機(jī)(Finite StateMachine)控制著色數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
[0120]參照?qǐng)D33,著色管道模塊中的著色數(shù)據(jù)路徑模塊包括著色算法模塊和著色堆疊模塊,其中的核心模塊是著色算法模塊,利用圖元SDRAM經(jīng)主路由模塊、著色緩存模塊以及著色路由模塊輸入的圖元光學(xué)數(shù)據(jù)計(jì)算每一個(gè)被跟蹤射線穿刺擊中的圖元的光學(xué)效應(yīng),即計(jì)算光源直射、反射與折射的光學(xué)顏色。計(jì)算將反復(fù)使用射線跟蹤,計(jì)算從每一直射光源擊中的圖元開始反復(fù)跟蹤每一擊中點(diǎn)上發(fā)生的反射與折射對(duì)擊中圖元所造成的光學(xué)顏色效應(yīng)。[0121 ] 參照?qǐng)D34,渲染著色模塊中的著色浮點(diǎn)ALU模塊包括著色浮點(diǎn)ALU控制模塊和浮點(diǎn)ALU數(shù)據(jù)路徑模塊,用于接受著色數(shù)據(jù)路徑模塊發(fā)出的ALU模式請(qǐng)求,由著色浮點(diǎn)ALU控制模塊發(fā)出適當(dāng)?shù)目刂菩盘?hào),讓浮點(diǎn)ALU數(shù)據(jù)路徑模塊形成所需的著色ALU計(jì)算公式來完成著色浮點(diǎn)ALU計(jì)算。
[0122]參照?qǐng)D35,著色浮點(diǎn)ALU模塊中的浮點(diǎn)ALU數(shù)據(jù)路徑模塊是3D渲染模塊的3個(gè)調(diào)用ALU的子模塊(即渲染穿越模塊、渲染穿刺模塊、渲染著色模塊)的每一個(gè)管道模塊共享的ALU計(jì)算模塊。每一個(gè)渲染子模塊的每一個(gè)管道模塊提供在個(gè)別ALU計(jì)算周期所需的ALU模式(ALU Mode),由個(gè)別的浮點(diǎn)ALU控制模塊(即穿越浮點(diǎn)ALU控制模塊、穿刺浮點(diǎn)ALU控制模塊、著色浮點(diǎn)ALU控制模塊)對(duì)該ALU模式進(jìn)行解碼而發(fā)出對(duì)浮點(diǎn)ALU數(shù)據(jù)路徑模塊的控制信號(hào)。浮點(diǎn)ALU數(shù)據(jù)路徑模塊包括3個(gè)浮點(diǎn)單元模塊和浮點(diǎn)除法模塊,3個(gè)浮點(diǎn)單元模塊即浮點(diǎn)單元O模塊、浮點(diǎn)單元I模塊、浮點(diǎn)單元2模塊,個(gè)別由輸入的OP碼(0PCode)控制,可執(zhí)行兩個(gè)32位IEEE 754浮點(diǎn)數(shù)的加法(+)或減法(-)或乘法(X)。浮點(diǎn)除法模塊只能執(zhí)行兩個(gè)32位IEEE 754浮點(diǎn)數(shù)的除法(+ )。
[0123]參照?qǐng)D36,浮點(diǎn)ALU數(shù)據(jù)路徑模塊中的浮點(diǎn)除法模塊由3個(gè)浮點(diǎn)單元組成,執(zhí)行兩個(gè)32位IEEE 754浮點(diǎn)數(shù)的除法。它的電路結(jié)構(gòu)與浮點(diǎn)ALU數(shù)據(jù)路徑模塊中的3個(gè)浮點(diǎn)單元的組合相同。它的邏輯結(jié)構(gòu)由靜態(tài)可重構(gòu)的編程模式?jīng)Q定。
[0124]同步輸入的外部圖元SDRAM中緩存的3D圖元數(shù)據(jù)、KD SDRAM中緩存的空間二分KD樹型數(shù)據(jù)以及起始渲染模塊的光學(xué)數(shù)據(jù)經(jīng)由主路由模塊、穿越緩存模塊與起始渲染模塊進(jìn)入3D渲染模塊的核心管線(Core Pipeline):渲染穿越模塊一>穿越FIFO模塊一>渲染列舉模塊一>列舉FIFO模塊一>渲染穿刺模塊一>穿刺FIFO模塊一>渲染著色模塊。3D渲染模塊的計(jì)算從起始渲染模塊獲取攝像頭原點(diǎn)與畫面象素位置開始,由渲染穿越模塊的穿越路由模塊以輪流循環(huán)(Round Robin)方式選擇一個(gè)穿越管道模塊對(duì)從KD SDRAM輸入進(jìn)穿越緩存模塊的3D情景所有KD節(jié)進(jìn)行自上而下反復(fù)的穿越計(jì)算直到擊中一個(gè)KD葉節(jié),并將KD葉節(jié)ID緩沖于穿越FIFO。渲染列舉模塊經(jīng)列舉路由模塊以輪流循環(huán)方式選擇一個(gè)列舉管道模塊,根據(jù)從穿越FIFO模塊讀出的KD葉節(jié)ID經(jīng)主路由模塊從外部圖元SDRAM輸入所有該KD葉節(jié)的圖元頂點(diǎn)ID進(jìn)列舉緩存模塊,繼而將圖元頂點(diǎn)ID緩沖于列舉FIFO模塊。渲染穿刺模塊經(jīng)穿刺路由模塊以輪流循環(huán)方式選擇一個(gè)穿刺管道模塊,根據(jù)從列舉FIFO模塊讀出的圖元頂點(diǎn)ID經(jīng)主路由模塊從外部圖元SDRAM輸入KD葉節(jié)所有圖元頂點(diǎn)進(jìn)穿刺緩存模塊,繼而進(jìn)行穿刺計(jì)算,將最近距離的穿刺圖元ID緩沖于穿刺FIFO模塊。渲染著色模塊經(jīng)著色路由模塊以輪流循環(huán)方式選擇一個(gè)著色管道模塊,根據(jù)從穿刺FIFO模塊讀出的穿刺圖元ID,經(jīng)主路由模塊從外部圖元SDRAM輸入穿刺圖元的法線方向與顏色進(jìn)著色緩存模塊,繼而進(jìn)行反復(fù)式著色計(jì)算,沿直接光、反射光、折射光在3D情景中的射線跟蹤路徑完成一個(gè)射線擊中的畫面象素的著色。起始渲染模塊將檢測一個(gè)畫塊(Tile)的渲染完成而啟動(dòng)3D渲染模塊對(duì)下一個(gè)畫塊的渲染。如此,周而復(fù)始直到整個(gè)畫面的渲染完成。
[0125]參照?qǐng)D37,顯示模塊包含4個(gè)模塊,即顯示狀態(tài)機(jī)模塊、VGA控制模塊、幀緩沖控制模塊和顯示PCIe控制模塊。顯示狀態(tài)機(jī)模塊控制VGA控制模塊、顯示PCIe控制模塊與幀緩沖控制模塊的數(shù)據(jù)輸入與行為時(shí)序:VGA控制模塊將顏色數(shù)據(jù)與VGA接口的同步信號(hào)送給外部的VGA RAMDAC芯片與VGA接口,幀緩沖控制模塊將3D渲染結(jié)果數(shù)據(jù)送給外部的幀緩存SDRAM (架構(gòu)A),顯示PCIe控制模塊將3D渲染結(jié)果數(shù)據(jù)送給PCIe接口模塊以緩存于外部的幀緩存SDRAM(架構(gòu)B)同時(shí)提供給外部PCIe總線插槽上的主計(jì)算機(jī)進(jìn)一步的處理(例如智能識(shí)別或互聯(lián)網(wǎng)通信應(yīng)用)。
[0126]顯示模塊從3D渲染模塊輸入象素顏色數(shù)據(jù),直接經(jīng)幀緩存控制模塊輸出入外部幀緩存SDRAM (架構(gòu)A),或經(jīng)PCIe輸出模塊由PCIe接口模塊輸出外部PCIe總線插槽上的幀緩存SDRAM卡(架構(gòu)B)。
[0127]從上述技術(shù)方案可以看出,本發(fā)明提供的3D FPGA芯片有以下的特征來超越ASIC芯片、CPU芯片、GPU芯片以及現(xiàn)今流行的FPGA芯片在3D圖學(xué)渲染加速應(yīng)用上的性價(jià)比:
[0128]I)、多道高速 PCIe 串型數(shù)據(jù)輸入與輸出(Multiple-Lane High-Speed PCIeSerial Data Input and Output)
[0129]2)、多射線平行數(shù)據(jù)管線處理(Multiple-Ray Parallel Data PipelinesProcessing)
[0130]3)、充分利用片上數(shù)據(jù)存儲(chǔ)單元,即RAM (Random Access Memory)、移位寄存器(Shift Register)、寄存器板塊(Register File),以先進(jìn)先出(First-1n First-Out,簡稱FIFO)、先進(jìn)后出(First-1n Last-Out,簡稱FIL0)與緩存(Cache)方式來最大優(yōu)化管線與管線之間的數(shù)據(jù)交換。
[0131]4)、集成式可重構(gòu)高速浮點(diǎn)運(yùn)算(加、減、乘、除的任意組合)單元。它可以靜態(tài)可重構(gòu)的編程模式來改變浮點(diǎn)運(yùn)算的組合,這樣的重構(gòu)方式在編程過程完成,也可以動(dòng)態(tài)信號(hào)模式來改變浮點(diǎn)運(yùn)算的組合,這樣的重構(gòu)方式在電路實(shí)時(shí)運(yùn)作的過程完成。兩種重構(gòu)方式的靈活配合充分利用進(jìn)步超深亞微米工藝技術(shù)帶來的高速門級(jí)運(yùn)算速度。
[0132]5)、多射線平行數(shù)據(jù)管線(Multiple-Ray Parallel Data Pipelining)邏輯以高速共享浮點(diǎn)運(yùn)算單元的方式完成3D渲染中的所有任務(wù),以達(dá)最高的《速度/芯片面積》性價(jià)比。
[0133]這些特征都將充分利用現(xiàn)今遵循Moore定律不斷進(jìn)步的超深亞微米CMOS工藝(Ultra-Deep Submicron CMOS Technology)來完成 3D 圖學(xué)?宣染加速的任務(wù)。
[0134]以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,該3D FPGA芯片由上層的可重構(gòu)層電路與下層的邏輯層電路相互疊加成為一體,該3D FPGA芯片根據(jù)數(shù)據(jù)流從輸入到輸出的順序依次包括PCIe接口模塊(1)、3D裝填模塊(2)、空間二分模塊(3)、起始渲染模塊(4)、3D渲染模塊(5)和顯不模塊(6) ο
2.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述可重構(gòu)層電路與所述邏輯層電路在該3D FPGA芯片中并存而形成一個(gè)疊加與緊密連接的完整結(jié)構(gòu)。
3.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述PCIe接口模塊(I)用于實(shí)現(xiàn)該3D FPGA芯片與外部PCIe總線的數(shù)據(jù)傳輸,前端接口與PCIe總線插槽連接,外部信號(hào)通過PCIe總線以差分信號(hào)的形式進(jìn)出芯片;PC硬碟的3D數(shù)據(jù)文檔中的3D數(shù)據(jù)以高速串口傳輸方式經(jīng)PC主機(jī)板上的PCIe插槽被傳送至本3D FPGA芯片的PCIe接口模塊的差分端口 ;PCIe接口模塊的后端接口與3D裝填模塊(2)連接。
4.根據(jù)權(quán)利要求3所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述PCIe接口模塊(I)包括PCIe核模塊與PCIe應(yīng)用模塊,其中PCIe核模塊用于執(zhí)行數(shù)據(jù)交換的物理層、數(shù)據(jù)鏈接層與處理層的協(xié)議邏輯;PCIe應(yīng)用模塊用于控制3D裝填模塊、空間二分模塊、3D渲染模塊以及顯示模塊與外部或外部PCIe總線插槽上的PC、圖元SDRAM、KD SDRAM以及幀緩存SDRAM之間的數(shù)據(jù)交換。
5.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述3D裝填模塊⑵將來自主計(jì)算機(jī)(PC)經(jīng)由PCIe接口模塊(I)輸入的3D數(shù)據(jù)中的3D圖元數(shù)據(jù)緩存于外部的圖元SDRAM中,并將3D數(shù)據(jù)中的3D光學(xué)數(shù)據(jù)直接輸出至起始渲染模塊(4),該3D光學(xué)數(shù)據(jù)至少包括攝像頭、材質(zhì)及光源信息。
6.根據(jù)權(quán)利要求5所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述3D裝填模塊(2)包括PCIe讀取模塊、3D分類模塊和圖元SDRAM控制模塊,其中: PCIe讀取模塊,用于從PCIe接口模塊(I)中獲取3D數(shù)據(jù)并傳輸給3D分類模塊; 3D分類模塊,用于將該3D數(shù)據(jù)分成二類數(shù)據(jù),一類為3D圖元數(shù)據(jù),輸出至外部圖元SDRAM,另一類為3D光學(xué)數(shù)據(jù),至少包括攝像頭、材質(zhì)、光源數(shù)據(jù),輸出至起始渲染模塊(4); 圖元SDRAM控制模塊,用于將該3D圖元數(shù)據(jù)輸出并緩存至外部圖元SDRAM。
7.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述空間二分模塊(3)用于將外部的圖元SDRAM中緩存的3D圖元數(shù)據(jù)轉(zhuǎn)換成空間二分KD樹型數(shù)據(jù)并緩存于外部的KD SDRAM中。
8.根據(jù)權(quán)利要求7所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述空間二分模塊(3)包括KD節(jié)堆棧FILO模塊、構(gòu)建KD模塊、二分模塊、成本計(jì)算模塊、二分位置FIFO模塊和圖元FIFO模塊,其中,成本計(jì)算模塊與二分模塊從外部圖元SDRAM讀入各自所需的3D圖元數(shù)據(jù)同時(shí)分別緩沖于圖元FIFO模塊與二分位置FIFO模塊;二分模塊用自二分位置FIFO獲取的頂點(diǎn)產(chǎn)生3D情景圖元基于軸向包盒的空間二分平面,繼而利用成本計(jì)算模塊從圖元FIFO獲取的圖元頂點(diǎn)坐標(biāo)來計(jì)算KD樹(KD Tree)每一級(jí)AABB的二分成本,最終以成本最低的二分平面來完成該級(jí)的KD節(jié)二分。
9.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述起始渲染模塊(4)用于對(duì)3D裝填模塊輸入的至少包括攝像頭、材質(zhì)及光源信息的3D光學(xué)數(shù)據(jù)進(jìn)行分析和處理,產(chǎn)生3D渲染模塊所需的光學(xué)數(shù)據(jù),該光學(xué)數(shù)據(jù)至少包括射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù),并輸出給3D渲染模塊,同時(shí)產(chǎn)生3D渲染模塊渲染每幀3D畫面所需的啟動(dòng)信號(hào)以及處理3D渲染模塊結(jié)束每幀3D畫面渲染時(shí)產(chǎn)生的終結(jié)信號(hào)。
10.根據(jù)權(quán)利要求9所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述起始渲染模塊(4)包括起始ALU和起始狀態(tài)機(jī),其中: 起始ALU用于對(duì)3D裝填模塊輸入的3D光學(xué)數(shù)據(jù)進(jìn)行分析和處理,產(chǎn)生3D渲染模塊所需的射線原點(diǎn)及畫面頂點(diǎn)數(shù)據(jù),并輸出給3D渲染模塊,同時(shí)處理3D渲染模塊結(jié)束每幀3D畫面渲染時(shí)產(chǎn)生的終結(jié)信號(hào); 起始狀態(tài)機(jī)用于產(chǎn)生3D渲染模塊渲染每幀3D畫面所需的啟動(dòng)信號(hào)。
11.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述3D渲染模塊(5)對(duì)同步輸入的外部圖元SDRAM中緩存的3D圖元數(shù)據(jù)、KD SDRAM中緩存的空間二分KD樹型數(shù)據(jù)以及起始渲染模塊(4)的光學(xué)數(shù)據(jù)進(jìn)行3D渲染,并將渲染處理的結(jié)果輸出至顯示模塊(6)。
12.根據(jù)權(quán)利要求11所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述3D渲染模塊(5)包括主路由模塊、穿越緩存模塊、列舉緩存模塊、穿刺緩存模塊、著色緩存模塊、渲染穿越模塊、渲染列舉模塊、渲染穿刺模塊、渲染著色模塊,以及間隔4個(gè)渲染模塊的穿越FIFO模塊、列舉FIFO模塊和穿刺FIFO模塊,其中: 來自外部KD SDRAM的KD節(jié)數(shù) 據(jù)輸入穿越緩存模塊,來自外部圖元SDRAM的圖元數(shù)據(jù)輸入主路由模塊,來自起始渲染模塊的光學(xué)數(shù)據(jù)輸入渲染穿越模塊; 3D渲染的管線操作計(jì)算順序:渲染穿越模塊一> 穿越FIFO模塊一>渲染列舉模塊一>列舉FIFO模塊一>渲染穿刺模塊一> 穿刺FIFO模塊一>渲染著色模塊,這個(gè)管線操作將沿光線跟蹤的方向從點(diǎn)到最近穿刺點(diǎn),按直射一 > 反射一 > 折射的順序周而復(fù)始直到完成。
13.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述主路由模塊包括主循環(huán)MUX模塊和主緩存讀取模塊,其中,主循環(huán)MUX模塊從渲染列舉模塊、渲染穿刺模塊以及渲染著色模塊三個(gè)模塊中選擇一個(gè)模塊,主緩存讀取模塊從外部的圖元SDRAM輸入被選擇模塊所需的圖元數(shù)據(jù),主循環(huán)MUX模塊繼而將輸入圖元數(shù)據(jù)輸出給該被選擇模塊。
14.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿越緩存模塊包括穿越CAM模塊、穿越TAG模塊和穿越緩存RAM模塊,其中的穿越CAM模塊與穿越TAG模塊接受并分析渲染穿越模塊對(duì)渲染穿越管道計(jì)算所需KD節(jié)數(shù)據(jù)的請(qǐng)求,繼而從穿越緩存RAM模塊或從外部KD SDRAM輸入所需的KD節(jié)數(shù)據(jù)。
15.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述渲染穿越模塊由穿越路由模塊、與64根可重構(gòu)射線1:1對(duì)應(yīng)的穿越管道模塊以及穿越浮點(diǎn)ALU構(gòu)成;來自穿越緩存模塊的KD節(jié)數(shù)據(jù)經(jīng)由穿越路由模塊輸入穿越路由模塊選擇的穿越管道模塊,對(duì)射線與輸入的KD節(jié)調(diào)用穿越浮點(diǎn)ALU模塊進(jìn)行渲染穿越計(jì)算,將結(jié)果的KD葉節(jié)ID輸出給穿越FIFO以備輸出給渲染列舉模塊。
16.根據(jù)權(quán)利要求15所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿越路由模塊包括循環(huán)選控模塊和穿越緩存讀取模塊,其中循環(huán)選控模塊以輪流循環(huán)的方式在64根可重構(gòu)射線的穿越管道中選擇一個(gè)管道與穿越緩存模塊連接,穿越緩存讀取模塊從穿越緩存模塊輸入所需的KD節(jié)數(shù)據(jù)并交予穿越管道。
17.根據(jù)權(quán)利要求15所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿越管道模塊包括穿越狀態(tài)模塊、射線產(chǎn)生模塊、穿越控制模塊和穿越數(shù)據(jù)路徑模塊,用于執(zhí)行一根射線與一個(gè)KD節(jié)的穿越計(jì)算,包括射線與KD節(jié)包盒以及二分面的穿刺計(jì)算,計(jì)算穿越整個(gè)KD樹所有KD節(jié)直到KD葉節(jié);計(jì)算過程由穿越控制模塊中的有限狀態(tài)機(jī)控制穿越數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
18.根據(jù)權(quán)利要求17所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿越數(shù)據(jù)路徑模塊包括穿越堆疊模塊和穿越算法模塊,其核心模塊是穿越算法模塊,用于執(zhí)行射線與KD節(jié)包盒的空間二分平面的穿刺計(jì)算,當(dāng)射線同時(shí)穿越二分平面兩側(cè)的KD節(jié)時(shí),一方面繼續(xù)穿越下一級(jí)的KD節(jié),另一方面將暫時(shí)擱置的KD節(jié)登記于穿越堆棧FILO模塊。
19.根據(jù)權(quán)利要求17所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿越管道模塊中的穿越數(shù)據(jù)路徑模塊共用同一個(gè)穿越浮點(diǎn)ALU模塊,穿越浮點(diǎn)ALU模塊包括穿越浮點(diǎn)ALU控制模塊和浮點(diǎn)ALU數(shù)據(jù)路徑模塊,用于接受穿越數(shù)據(jù)路徑模塊發(fā)出的ALU模式請(qǐng)求,由穿越浮點(diǎn)ALU控制模塊發(fā)出適當(dāng)?shù)目刂菩盘?hào),讓浮點(diǎn)ALU數(shù)據(jù)路徑模塊形成所需的穿越ALU計(jì)算公式來完成穿越浮點(diǎn)ALU計(jì)算。
20.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿越FIFO模塊包含64個(gè)可重構(gòu)的用于個(gè)別射線穿越計(jì)算的穿越FIFO子模塊,穿越FIFO模塊的輸入來自3D渲染模塊的渲染穿越模塊,由穿越路由模塊控制導(dǎo)入個(gè)別射線穿越計(jì)算的穿越FIFO子模塊。
21.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述列舉緩存模塊包括列舉TAG模塊和列舉緩存RAM模塊,其中的列舉TAG模塊接受并分析渲染列舉模塊對(duì)渲染列舉管道計(jì)算所需圖元ID數(shù)據(jù)的請(qǐng)求,繼而從列舉緩存RAM模塊或從外部圖元SDRAM輸入所需的圖元ID數(shù)據(jù)。`
22.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述渲染列舉模塊由列舉路由模塊與64根可重構(gòu)射線1:1對(duì)應(yīng)的列舉管道模塊構(gòu)成,來自列舉緩存模塊的圖元數(shù)據(jù)經(jīng)由列舉路由模塊輸入列舉路由模塊選擇的列舉管道模塊,進(jìn)行渲染列舉計(jì)算,將結(jié)果的KD葉節(jié)圖元ID輸出給列舉FIFO以備輸入渲染穿刺模塊。
23.根據(jù)權(quán)利要求22所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述列舉路由模塊包括循環(huán)選控模塊和列舉緩存讀取模塊,其中的循環(huán)選控模塊以輪流循環(huán)的方式在64根可重構(gòu)射線的列舉管道中選擇一個(gè)管道與列舉緩存連接,由列舉緩存讀取模塊從列舉緩存模塊輸入所需的KD葉節(jié)中的圖元數(shù)據(jù)并交予列舉管道。
24.根據(jù)權(quán)利要求22所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述列舉管道模塊包括列舉控制模塊和列舉數(shù)據(jù)路徑模塊,用于執(zhí)行渲染列舉計(jì)算,求得所有KD葉節(jié)中的圖元ID,計(jì)算過程由列舉控制模塊中的有限狀態(tài)機(jī)控制列舉數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
25.根據(jù)權(quán)利要求24所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述列舉數(shù)據(jù)路徑模塊的核心模塊是列舉算法模塊,用于從圖元SDRAM中的圖元數(shù)據(jù)求得所有KD葉節(jié)中的圖元ID。
26.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述列舉FIFO模塊包含64個(gè)可重構(gòu)的用于個(gè)別射線列舉計(jì)算的列舉FIFO子模塊,列舉FIFO模塊的輸入來自3D渲染模塊的渲染列舉模塊,由列舉路由模塊控制導(dǎo)入個(gè)別射線列舉計(jì)算的列舉FIFO子模塊。
27.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿刺緩存模塊包括穿刺TAG模塊和穿刺緩存RAM模塊,其中的穿刺TAG模塊接受并分析渲染穿刺模塊對(duì)渲染穿刺管道計(jì)算所需圖元頂點(diǎn)數(shù)據(jù)的請(qǐng)求,繼而從穿刺緩存RAM模塊或從外部圖元SDRAM輸入所需的圖元頂點(diǎn)數(shù)據(jù)。
28.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述渲染穿刺模塊由穿刺路由模塊、64根可重構(gòu)射線1:1對(duì)應(yīng)的穿刺管道模塊以及穿刺浮點(diǎn)ALU模塊構(gòu)成,來自穿刺緩存模塊的頂點(diǎn)數(shù)據(jù)經(jīng)由穿刺路由模塊輸入穿刺路由模塊選擇的穿刺管道模塊,進(jìn)行渲染穿刺計(jì)算,將結(jié)果的圖元ID與穿刺點(diǎn)坐標(biāo)輸出給穿刺FIFO以備輸入渲染著色模塊。
29.根據(jù)權(quán)利要求28所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿刺路由模塊包括循環(huán)選控模塊和穿刺緩存讀取模塊,其中的循環(huán)選控模塊以輪流循環(huán)的方式在64根可重構(gòu)射線的穿刺管道中選擇一個(gè)管道與穿刺緩存連接,穿刺緩存讀取模塊從穿刺緩存模塊輸入所需的KD葉節(jié)中的圖元數(shù)據(jù)并交予穿刺管道。
30.根據(jù)權(quán)利要求28所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿刺管道模塊包括穿刺控制模塊和穿刺數(shù)據(jù)路徑模塊,用于執(zhí)行渲染穿刺計(jì)算,計(jì)算射線與所有KD葉節(jié)中的圖元是否穿刺成功以及穿刺位置;計(jì)算過程由穿刺控制模塊中的有限狀態(tài)機(jī)控制穿刺數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
31.根據(jù)權(quán)利要求30所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿刺數(shù)據(jù)路徑模塊的核心模 塊是穿刺算法模塊,用于從圖元SDRAM中的圖元頂點(diǎn)數(shù)據(jù)計(jì)算射線與圖元的穿刺與否及穿刺點(diǎn)位置。
32.根據(jù)權(quán)利要求28所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿刺浮點(diǎn)ALU模塊包括穿刺浮點(diǎn)ALU控制模塊和浮點(diǎn)ALU數(shù)據(jù)路徑模塊,用于接受穿刺數(shù)據(jù)路徑模塊發(fā)出的ALU模式請(qǐng)求,由穿刺浮點(diǎn)ALU控制模塊發(fā)出適當(dāng)?shù)目刂菩盘?hào),讓浮點(diǎn)ALU數(shù)據(jù)路徑模塊形成所需的穿刺ALU計(jì)算公式來完成穿刺浮點(diǎn)ALU計(jì)算。
33.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述穿刺FIFO模塊包含64個(gè)可重構(gòu)的用于個(gè)別射線穿刺計(jì)算的穿刺FIFO子模塊;穿刺FIFO模塊的輸入來自3D渲染模塊的渲染穿刺模塊,由穿刺路由模塊控制導(dǎo)入個(gè)別射線穿刺計(jì)算的穿刺FIFO子模塊。
34.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述著色緩存模塊包括著色TAG模塊和著色緩存RAM模塊,其中的著色TAG模塊接受并分析渲染著色模塊對(duì)渲染著色管道計(jì)算所需圖元光學(xué)數(shù)據(jù)的請(qǐng)求,繼而從著色緩存RAM模塊或從外部圖元SDRAM輸入所需的圖元光學(xué)數(shù)據(jù)。
35.根據(jù)權(quán)利要求12所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述渲染著色模塊由著色路由模塊、64根可重構(gòu)射線1:1對(duì)應(yīng)的著色管道模塊以及著色浮點(diǎn)ALU模塊構(gòu)成;來自著色緩存模塊的圖元光學(xué)數(shù)據(jù)經(jīng)由著色路由模塊輸入著色路由模塊選擇的著色管道模塊,進(jìn)行渲染著色計(jì)算,將結(jié)果的圖元顏色輸出給顯示模塊。
36.根據(jù)權(quán)利要求35所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述著色路由模塊包括循環(huán)選控模塊和著色緩存讀取模塊,其中的循環(huán)選控模塊以輪流循環(huán)的方式在64根可重構(gòu)射線的著色管道中選擇一個(gè)管道與著色緩存連接,由著色緩存讀取模塊從著色緩存模塊輸入所需的圖元光學(xué)數(shù)據(jù)并交予著色管道。
37.根據(jù)權(quán)利要求35所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述著色管道模塊包括著色控制模塊和著色數(shù)據(jù)路徑模塊,用于執(zhí)行渲染著色計(jì)算,計(jì)算過程由著色控制模塊中的有限狀態(tài)機(jī)控制著色數(shù)據(jù)路徑模塊中的運(yùn)算邏輯來完成。
38.根據(jù)權(quán)利要求37所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述著色數(shù)據(jù)路徑模塊包括著色算法模塊和著色堆疊模塊,其中的核心模塊是著色算法模塊,利用圖元SDRAM經(jīng)主路由模塊、著色緩存模塊以及著色路由模塊輸入的圖元光學(xué)數(shù)據(jù)計(jì)算每一個(gè)被跟蹤射線穿刺擊中的圖元的光學(xué)效應(yīng),即計(jì)算光源直射、反射與折射的光學(xué)顏色;計(jì)算將反復(fù)使用射線跟蹤,計(jì)算從每一直射光源擊中的圖元開始反復(fù)跟蹤每一擊中點(diǎn)上發(fā)生的反射與折射對(duì)擊中圖元所造成的光學(xué)顏色效應(yīng)。
39.根據(jù)權(quán)利要求35所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述著色浮點(diǎn)ALU模塊包括著色浮點(diǎn)ALU控制模塊和浮點(diǎn)ALU數(shù)據(jù)路徑模塊,用于接受著色數(shù)據(jù)路徑模塊發(fā)出的ALU模式請(qǐng)求,由著色浮點(diǎn)ALU控制模塊發(fā)出適當(dāng)?shù)目刂菩盘?hào),讓浮點(diǎn)ALU數(shù)據(jù)路徑模塊形成所需的著色ALU計(jì)算公式來完成著色浮點(diǎn)ALU計(jì)算。
40.根據(jù)權(quán)利要求39所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述浮點(diǎn)ALU數(shù)據(jù)路徑模塊是3D渲染模塊的3個(gè)調(diào)用ALU的子模塊的每一個(gè)管道模塊共享的ALU計(jì)算模塊,這3個(gè)調(diào)用ALU的子模塊為渲染穿越模塊、渲染穿刺模塊、渲染著色模塊;每一個(gè)渲染子模塊的每一個(gè)管道模塊提供在個(gè)別ALU計(jì)算周期所需的ALU模式,由穿越浮點(diǎn)ALU控制模塊、穿刺浮點(diǎn)ALU控制模塊或著色浮點(diǎn)ALU控制模塊之一對(duì)該ALU模式進(jìn)行解碼而發(fā)出對(duì)浮點(diǎn)ALU數(shù)據(jù)路徑模塊的控制信號(hào)。
41.根據(jù)權(quán)利要求40所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述浮點(diǎn)ALU數(shù)據(jù)路徑模塊包括3個(gè)浮點(diǎn)單元模塊和浮點(diǎn)除法器模塊,3個(gè)浮點(diǎn)單元模塊是浮點(diǎn)單元O模塊、浮點(diǎn)單元I模塊、浮點(diǎn)單元2模塊,個(gè)別由輸入的OP碼控制,用于執(zhí)行兩個(gè)32位IEEE 754浮點(diǎn)數(shù)的加法(+)或減法(-)或乘法(X);浮點(diǎn)除法器模塊只能執(zhí)行兩個(gè)32位IEEE754浮點(diǎn)數(shù)的除法(+ )。
42.根據(jù)權(quán)利要求41所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述浮點(diǎn)除法器模塊由3個(gè)浮點(diǎn)單元組成,執(zhí)行兩個(gè)32位IEEE754浮點(diǎn)數(shù)的除法,這3個(gè)浮點(diǎn)單元的電路結(jié)構(gòu)與浮點(diǎn)ALU數(shù)據(jù)路徑模塊中的3個(gè)浮點(diǎn)單元的組合相同,這3個(gè)浮點(diǎn)單元的邏輯結(jié)構(gòu)由靜態(tài)可重構(gòu)的編程模式?jīng)Q定。
43.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述顯示模塊(6)對(duì)渲染處理的結(jié)果進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得到顯示結(jié)果信息,并將得到的顯示結(jié)果信息緩存在外部的幀緩沖SDRAM中,以及將得到的顯示結(jié)果信息與從外部的幀緩沖SDRAM輸入的RGB顏色數(shù)據(jù)一起輸出給VGA顯示器以供本地監(jiān)視,同時(shí)反饋給PCIe接口模塊⑴以供主計(jì)算機(jī)處理。
44.根據(jù)權(quán)利要求43所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,所述顯示模塊包括顯示狀態(tài)機(jī)模塊、VGA控制模塊、幀緩沖控制模塊和顯示PCIe控制模塊,其中:顯示狀態(tài)機(jī)模塊控制VGA控制模塊、顯示PCIe控制模塊與幀緩沖控制模塊的數(shù)據(jù)輸入與行為時(shí)序: VGA控制模塊將顏色數(shù)據(jù)與VGA接口的同步信號(hào)送給外部的VGA RAMDAC芯片與VGA接Π ; 幀緩沖控制模塊將3D渲染結(jié)果數(shù)據(jù)送給外部的幀緩存SDRAM ; 顯示PCIe控制模塊將3D渲染結(jié)果數(shù)據(jù)送給PCIe接口模塊以緩存于外部的幀緩存SDRAM,同時(shí)提供給外部PCIe總線插槽上的主計(jì)算機(jī)進(jìn)一步的處理。
45.根據(jù)權(quán)利要求1所述的用于3D圖學(xué)渲染加速的FPGA芯片,其特征在于,該FPGA芯片與外部SDRAM進(jìn)行數(shù)據(jù)交換,該外部SDRAM包括圖元SDRAM、KD SDRAM與幀緩沖SDRAM,其中: 該外部SDRAM中的圖元SDRAM直接連接于該FPGA芯片中的3D裝填模塊⑵和空間二分模塊(3),該外部SDRAM中的KD SDRAM直接連接于該FPGA芯片中的空間二分模塊(3)和3D渲染模塊(5),該外部SDRAM中的幀緩沖SDRAM直接連接于該FPGA芯片中的顯示模塊(6);或者 該FPGA芯片是經(jīng)由外部 的PCIe總線連接于該外部SDRAM中的圖元SDRAM、KD SDRAM與幀緩沖SDRAM。
【文檔編號(hào)】G06F17/50GK103559357SQ201310560232
【公開日】2014年2月5日 申請(qǐng)日期:2013年11月12日 優(yōu)先權(quán)日:2013年11月12日
【發(fā)明者】陳陵都 申請(qǐng)人:無錫市華磊易晶微電子有限公司