首页 / 专利库 / 电脑编程 / 算法 / 光线跟踪算法 / 一种用于3D图学渲染加速的FPGA芯片

一种用于3D图学渲染加速的FPGA芯片

阅读:859发布:2020-05-26

专利汇可以提供一种用于3D图学渲染加速的FPGA芯片专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种用于3D图学 渲染 加速 的FPGA芯片,该3D FPGA芯片由上层的可重构层 电路 与下层的逻辑层电路相互 叠加 成为一体,该3DFPGA芯片根据数据流从输入到输出的顺序依次包括PCIe 接口 模 块 、3D装填模块、空间二分模块、起始渲染模块、3D渲染模块和显示模块。与基于ASIC固定逻辑的 光线 跟踪 法渲染技术相比,本发明有ASIC所无的可编程性带来的高度灵活性的优势。而相对于现今流行的FPGA芯片,本发明的FPGA芯片在3D图学渲染加速的应用上提供102倍级芯片逻辑 密度 的提升,且具有相对于现今通用基于CPU芯片或GPU芯片的3D图学渲染技术有104倍级的加速性能。,下面是一种用于3D图学渲染加速的FPGA芯片专利的具体信息内容。

1.一种用于3D图学渲染加速的FPGA芯片,其特征在于,该3D FPGA芯片由上层的可重构层电路与下层的逻辑层电路相互叠加成为一体,该3D FPGA芯片根据数据流从输入到输出的顺序依次包括PCIe接口(1)、3D装填模块(2)、空间二分模块(3)、起始渲染模块(4)、
3D渲染模块(5)和显示模块(6),其中:
3D装填模块(2),用于将来自主计算机(PC)经由PCIe接口模块(1)输入的3D数据中的3D图元数据缓存于外部的图元SDRAM中,并将3D数据中的3D光学数据直接输出至起始渲染模块(4),该3D光学数据至少包括摄像头、材质及光源信息;
空间二分模块(3),用于将外部的图元SDRAM中缓存的3D图元数据转换成空间二分KD树型数据并缓存于外部的KD SDRAM中;
起始渲染模块(4),用于对3D装填模块输入的至少包括摄像头、材质及光源信息的3D光学数据进行分析和处理,产生3D渲染模块所需的光学数据,该光学数据至少包括射线原点及画面顶点数据,并输出给3D渲染模块,同时产生3D渲染模块渲染每3D画面所需的启动信号以及处理3D渲染模块结束每帧3D画面渲染时产生的终结信号;
3D渲染模块(5),用于对同步输入的外部图元SDRAM中缓存的3D图元数据、KD SDRAM中缓存的空间二分KD树型数据以及起始渲染模块(4)的光学数据进行3D渲染,并将渲染处理的结果输出至显示模块(6)。
2.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述可重构层电路与所述逻辑层电路在该3D FPGA芯片中并存而形成一个叠加与紧密连接的完整结构。
3.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述PCIe接口模块(1)用于实现该3D FPGA芯片与外部PCIe总线的数据传输,前端接口与PCIe总线插槽连接,外部信号通过PCIe总线以差分信号的形式进出芯片;PC硬碟的3D数据文档中的3D数据以高速串口传输方式经PC主机板上的PCIe插槽被传送至本3D FPGA芯片的PCIe接口模块的差分端口;PCIe接口模块的后端接口与3D装填模块(2)连接。
4.根据权利要求3所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述PCIe接口模块(1)包括PCIe核模块与PCIe应用模块,其中PCIe核模块用于执行数据交换的物理层、数据链接层与处理层的协议逻辑;PCIe应用模块用于控制3D装填模块、空间二分模块、3D渲染模块以及显示模块与外部或外部PCIe总线插槽上的PC、图元SDRAM、KD SDRAM以及帧缓存SDRAM之间的数据交换。
5.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述3D装填模块(2)包括PCIe读取模块、3D分类模块和图元SDRAM控制模块,其中:
PCIe读取模块,用于从PCIe接口模块(1)中获取3D数据并传输给3D分类模块;
3D分类模块,用于将该3D数据分成二类数据,一类为3D图元数据,输出至外部图元SDRAM,另一类为3D光学数据,至少包括摄像头、材质、光源数据,输出至起始渲染模块(4);
图元SDRAM控制模块,用于将该3D图元数据输出并缓存至外部图元SDRAM。
6.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述空间二分模块(3)包括KD节堆栈FILO模块、构建KD模块、二分模块、成本计算模块、二分位置FIFO模块和图元FIFO模块,其中,成本计算模块与二分模块从外部图元SDRAM读入各自所需的3D图元数据同时分别缓冲于图元FIFO模块与二分位置FIFO模块;二分模块用自二分位置FIFO获取的顶点产生3D情景图元基于轴向包盒的空间二分平面,继而利用成本计算模块从图元FIFO获取的图元顶点坐标来计算KD树(KD Tree)每一级AABB的二分成本,最终以成本最低的二分平面来完成该级的KD节二分。
7.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述起始渲染模块(4)包括起始ALU和起始状态机,其中:
起始ALU用于对3D装填模块输入的3D光学数据进行分析和处理,产生3D渲染模块所需的射线原点及画面顶点数据,并输出给3D渲染模块,同时处理3D渲染模块结束每帧3D画面渲染时产生的终结信号;
起始状态机用于产生3D渲染模块渲染每帧3D画面所需的启动信号。
8.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述3D渲染模块(5)包括主路由模块、穿越缓存模块、列举缓存模块、穿刺缓存模块、着色缓存模块、渲染穿越模块、渲染列举模块、渲染穿刺模块、渲染着色模块,以及间隔4个渲染模块的穿越FIFO模块、列举FIFO模块和穿刺FIFO模块,其中:
来自外部KD SDRAM的KD节数据输入穿越缓存模块,来自外部图元SDRAM的图元数据输入主路由模块,来自起始渲染模块的光学数据输入渲染穿越模块;
3D渲染的管线操作计算顺序:渲染穿越模块->穿越FIFO模块->渲染列举模块->列举FIFO模块->渲染穿刺模块->穿刺FIFO模块->渲染着色模块,这个管线操作将沿光线跟踪的方向从点到最近穿刺点,按直射->反射->折射的顺序周而复始直到完成。
9.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述主路由模块包括主循环MUX模块和主缓存读取模块,其中,主循环MUX模块从渲染列举模块、渲染穿刺模块以及渲染着色模块三个模块中选择一个模块,主缓存读取模块从外部的图元SDRAM输入被选择模块所需的图元数据,主循环MUX模块继而将输入图元数据输出给该被选择模块。
10.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿越缓存模块包括穿越CAM模块、穿越TAG模块和穿越缓存RAM模块,其中的穿越CAM模块与穿越TAG模块接受并分析渲染穿越模块对渲染穿越管道计算所需KD节数据的请求,继而从穿越缓存RAM模块或从外部KD SDRAM输入所需的KD节数据。
11.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述渲染穿越模块由穿越路由模块、与64根可重构射线1:1对应的穿越管道模块以及穿越浮点ALU构成;来自穿越缓存模块的KD节数据经由穿越路由模块输入穿越路由模块选择的穿越管道模块,对射线与输入的KD节调用穿越浮点ALU模块进行渲染穿越计算,将结果的KD叶节ID输出给穿越FIFO模块以备输出给渲染列举模块。
12.根据权利要求11所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿越路由模块包括循环选控模块和穿越缓存读取模块,其中循环选控模块以轮流循环的方式在64根可重构射线的穿越管道中选择一个管道与穿越缓存模块连接,穿越缓存读取模块从穿越缓存模块输入所需的KD节数据并交予穿越管道。
13.根据权利要求11所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿越管道模块包括穿越状态模块、射线产生模块、穿越控制模块和穿越数据路径模块,用于执行一根射线与一个KD节的穿越计算,包括射线与KD节包盒以及二分面的穿刺计算,计算穿越整个KD树所有KD节直到KD叶节;计算过程由穿越控制模块中的有限状态机控制穿越数据路径模块中的运算逻辑来完成。
14.根据权利要求13所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿越数据路径模块包括穿越堆叠模块和穿越算法模块,其核心模块是穿越算法模块,用于执行射线与KD节包盒的空间二分平面的穿刺计算,当射线同时穿越二分平面两侧的KD节时,一方面继续穿越下一级的KD节,另一方面将暂时搁置的KD节登记于穿越堆栈FILO模块。
15.根据权利要求13所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿越管道模块中的穿越数据路径模块共用同一个穿越浮点ALU模块,穿越浮点ALU模块包括穿越浮点ALU控制模块和浮点ALU数据路径模块,用于接受穿越数据路径模块发出的ALU模式请求,由穿越浮点ALU控制模块发出适当的控制信号,让浮点ALU数据路径模块形成所需的穿越ALU计算公式来完成穿越浮点ALU计算。
16.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿越FIFO模块包含64个可重构的用于个别射线穿越计算的穿越FIFO子模块,穿越FIFO模块的输入来自3D渲染模块的渲染穿越模块,由穿越路由模块控制导入个别射线穿越计算的穿越FIFO子模块。
17.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述列举缓存模块包括列举TAG模块和列举缓存RAM模块,其中的列举TAG模块接受并分析渲染列举模块对渲染列举管道计算所需图元ID数据的请求,继而从列举缓存RAM模块或从外部图元SDRAM输入所需的图元ID数据。
18.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述渲染列举模块由列举路由模块与64根可重构射线1:1对应的列举管道模块构成,来自列举缓存模块的图元数据经由列举路由模块输入列举路由模块选择的列举管道模块,进行渲染列举计算,将结果的KD叶节图元ID输出给列举FIFO以备输入渲染穿刺模块。
19.根据权利要求18所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述列举路由模块包括循环选控模块和列举缓存读取模块,其中的循环选控模块以轮流循环的方式在
64根可重构射线的列举管道中选择一个管道与列举缓存连接,由列举缓存读取模块从列举缓存模块输入所需的KD叶节中的图元数据并交予列举管道。
20.根据权利要求18所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述列举管道模块包括列举控制模块和列举数据路径模块,用于执行渲染列举计算,求得所有KD叶节中的图元ID,计算过程由列举控制模块中的有限状态机控制列举数据路径模块中的运算逻辑来完成。
21.根据权利要求20所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述列举数据路径模块的核心模块是列举算法模块,用于从图元SDRAM中的图元数据求得所有KD叶节中的图元ID。
22.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述列举FIFO模块包含64个可重构的用于个别射线列举计算的列举FIFO子模块,列举FIFO模块的输入来自3D渲染模块的渲染列举模块,由列举路由模块控制导入个别射线列举计算的列举FIFO子模块。
23.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿刺缓存模块包括穿刺TAG模块和穿刺缓存RAM模块,其中的穿刺TAG模块接受并分析渲染穿刺模块对渲染穿刺管道计算所需图元顶点数据的请求,继而从穿刺缓存RAM模块或从外部图元SDRAM输入所需的图元顶点数据。
24.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述渲染穿刺模块由穿刺路由模块、64根可重构射线1:1对应的穿刺管道模块以及穿刺浮点ALU模块构成,来自穿刺缓存模块的顶点数据经由穿刺路由模块输入穿刺路由模块选择的穿刺管道模块,进行渲染穿刺计算,将结果的图元ID与穿刺点坐标输出给穿刺FIFO模块以备输入渲染着色模块。
25.根据权利要求24所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿刺路由模块包括循环选控模块和穿刺缓存读取模块,其中的循环选控模块以轮流循环的方式在
64根可重构射线的穿刺管道中选择一个管道与穿刺缓存连接,穿刺缓存读取模块从穿刺缓存模块输入所需的KD叶节中的图元数据并交予穿刺管道。
26.根据权利要求24所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿刺管道模块包括穿刺控制模块和穿刺数据路径模块,用于执行渲染穿刺计算,计算射线与所有KD叶节中的图元是否穿刺成功以及穿刺位置;计算过程由穿刺控制模块中的有限状态机控制穿刺数据路径模块中的运算逻辑来完成。
27.根据权利要求26所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿刺数据路径模块的核心模块是穿刺算法模块,用于从图元SDRAM中的图元顶点数据计算射线与图元的穿刺与否及穿刺点位置。
28.根据权利要求24所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿刺浮点ALU模块包括穿刺浮点ALU控制模块和浮点ALU数据路径模块,用于接受穿刺数据路径模块发出的ALU模式请求,由穿刺浮点ALU控制模块发出适当的控制信号,让浮点ALU数据路径模块形成所需的穿刺ALU计算公式来完成穿刺浮点ALU计算。
29.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述穿刺FIFO模块包含64个可重构的用于个别射线穿刺计算的穿刺FIFO子模块;穿刺FIFO模块的输入来自3D渲染模块的渲染穿刺模块,由穿刺路由模块控制导入个别射线穿刺计算的穿刺FIFO子模块。
30.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述着色缓存模块包括着色TAG模块和着色缓存RAM模块,其中的着色TAG模块接受并分析渲染着色模块对渲染着色管道计算所需图元光学数据的请求,继而从着色缓存RAM模块或从外部图元SDRAM输入所需的图元光学数据。
31.根据权利要求8所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述渲染着色模块由着色路由模块、64根可重构射线1:1对应的着色管道模块以及着色浮点ALU模块构成;来自着色缓存模块的图元光学数据经由着色路由模块输入着色路由模块选择的着色管道模块,进行渲染着色计算,将结果的图元颜色输出给显示模块。
32.根据权利要求31所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述着色路由模块包括循环选控模块和着色缓存读取模块,其中的循环选控模块以轮流循环的方式在
64根可重构射线的着色管道中选择一个管道与着色缓存模块连接,由着色缓存读取模块从着色缓存模块输入所需的图元光学数据并交予着色管道。
33.根据权利要求31所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述着色管道模块包括着色控制模块和着色数据路径模块,用于执行渲染着色计算,计算过程由着色控制模块中的有限状态机控制着色数据路径模块中的运算逻辑来完成。
34.根据权利要求33所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述着色数据路径模块包括着色算法模块和着色堆叠模块,其中的核心模块是着色算法模块,利用图元SDRAM经主路由模块、着色缓存模块以及着色路由模块输入的图元光学数据计算每一个被跟踪射线穿刺击中的图元的光学效应,即计算光源直射、反射与折射的光学颜色;计算将反复使用射线跟踪,计算从每一直射光源击中的图元开始反复跟踪每一击中点上发生的反射与折射对击中图元所造成的光学颜色效应。
35.根据权利要求31所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述着色浮点ALU模块包括着色浮点ALU控制模块和浮点ALU数据路径模块,用于接受着色数据路径模块发出的ALU模式请求,由着色浮点ALU控制模块发出适当的控制信号,让浮点ALU数据路径模块形成所需的着色ALU计算公式来完成着色浮点ALU计算。
36.根据权利要求35所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述浮点ALU数据路径模块是3D渲染模块的3个调用ALU的子模块的每一个管道模块共享的ALU计算模块,这3个调用ALU的子模块为渲染穿越模块、渲染穿刺模块、渲染着色模块;每一个渲染子模块的每一个管道模块提供在个别ALU计算周期所需的ALU模式,由穿越浮点ALU控制模块、穿刺浮点ALU控制模块或着色浮点ALU控制模块之一对该ALU模式进行解码而发出对浮点ALU数据路径模块的控制信号。
37.根据权利要求36所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述浮点ALU数据路径模块包括3个浮点单元模块和浮点除法器模块,3个浮点单元模块是浮点单元0模块、浮点单元1模块、浮点单元2模块,分别由输入的OP码控制,用于执行两个32位IEEE 
754浮点数的加法(+)或减法(-)或乘法(X);浮点除法器模块只能执行两个32位IEEE 754浮点数的除法(÷)。
38.根据权利要求37所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述浮点除法器模块由3个浮点单元组成,执行两个32位IEEE754浮点数的除法,这3个浮点单元的电路结构与浮点ALU数据路径模块中的3个浮点单元的组合相同,这3个浮点单元的逻辑结构由静态可重构的编程模式决定。
39.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述显示模块(6)对渲染处理的结果进行数据转换,得到显示结果信息,并将得到的显示结果信息缓存在外部的帧缓冲SDRAM中,以及将得到的显示结果信息与从外部的帧缓冲SDRAM输入的RGB颜色数据一起输出给VGA显示器以供本地监视,同时反馈给PCIe接口模块(1)以供主计算机处理。
40.根据权利要求39所述的用于3D图学渲染加速的FPGA芯片,其特征在于,所述显示模块包括显示状态机模块、VGA控制模块、帧缓冲控制模块和显示PCIe控制模块,其中:
显示状态机模块控制VGA控制模块、显示PCIe控制模块与帧缓冲控制模块的数据输入与行为时序:
VGA控制模块将颜色数据与VGA接口的同步信号送给外部的VGA RAMDAC芯片与VGA接口;
帧缓冲控制模块将3D渲染结果数据送给外部的帧缓存SDRAM;
显示PCIe控制模块将3D渲染结果数据送给PCIe接口模块以缓存于外部的帧缓存SDRAM,同时提供给外部PCIe总线插槽上的主计算机进一步的处理。
41.根据权利要求1所述的用于3D图学渲染加速的FPGA芯片,其特征在于,该FPGA芯片与外部SDRAM进行数据交换,该外部SDRAM包括图元SDRAM、KD SDRAM与帧缓冲SDRAM,其中:
该外部SDRAM中的图元SDRAM直接连接于该FPGA芯片中的3D装填模块(2)和空间二分模块(3),该外部SDRAM中的KD SDRAM直接连接于该FPGA芯片中的空间二分模块(3)和3D渲染模块(5),该外部SDRAM中的帧缓冲SDRAM直接连接于该FPGA芯片中的显示模块(6);或者该FPGA芯片是经由外部的PCIe总线连接于该外部SDRAM中的图元SDRAM、KD SDRAM与帧缓冲SDRAM。

说明书全文

一种用于3D图学渲染加速的FPGA芯片

技术领域

[0001] 本发明涉及3D图学渲染技术领域,尤其涉及一种用于3D图学渲染加速的现场可编程阵列(Field-Programmable Gate Array,FPGA)芯片。

背景技术

[0002] 3D图学渲染技术是现今3D计算机图学(3D Computer Graphics)的应用中需求性最高的技术。这个技术的最高诉求是在实时应用中产生真实的视觉影像。朝着这个方向,3D图学渲染技术的实现至今有3种方式:1.基于CPU或图形处理器(Graphic Processing Unit,GPU)的3D图学渲染技术。2.基于专用集成电路(Application Specific integrated Circuit,ASIC)芯片固定逻辑的3D图学渲染技术。3.基于FPGA芯片可重构逻辑的3D图学渲染技术。
[0003] 在许多的大规模的3D应用中,最耗时间的任务是将3D影像的视觉信息表达在2D的平面上。尤其是在将如3D工业设计、3D动画、3D电影特效编辑的工具用在大规模、复杂的绘图设计(例如飞机、汽车的模型设计)上,能够迅速完成切面(Cutting Plane)、模型合并(Model Interrogation)、复杂着色(Sophisticated Shading)是一个基本的关键操作。这些不同的3D图学应用有一个共同的技术要求:高速的3D数字信号处理功能。在罗聪翼著的《Blender权威指南》书第7章第5节《渲染农场》中叙述:著名的电影特效工作室Weta Digital在制作电影《2012》(注:2009年美国科幻灾难片)的过程中,花费在单画面上的渲染时间平均为20个小时,而整个地震场景的特效帧数超过7000帧,所以总共的渲染时间大约为141,120小时。
[0004] 根据Wikipedia报导,现在3D应用市场上的3D图学工具几乎全由基于光栅法的系统(Rasterization-Based System)。这个系统的软件部分由OpenGL API(www.opengl.org)的库函数以及它们的应用组成,硬件部分全是CPU、GPU以及少数设计使用的专用定制芯片。自70年代开始至今,随着CPU芯片(以Intel公司为首)与GPU芯片(以Nvidia公司为首)设计技术以及超深亚微米工艺(Ultra-Deep Submicron Processing Technology)芯片制造工艺的高度发展,基于光栅法的3D图学工具的品质与操作速度有特别的进步。光栅法3D图学系统的优势在于产品开发的周期短以及高度灵活性,但由于它的操作本质上是指令级串行执行的方式,速度的上升远远跟不上超深亚微米工艺根据摩尔定律(Moore’s Law,工艺进步带来的芯片逻辑密度每18个月翻一倍)的进步。迄今为止,经过了40年的努,光栅法3D图学应用的速度仍未达到实时应用的要求。近10年来,一些利用多核与配合CPU的定制硬件的光栅法系统报导略超过每秒24帧的视频效果,但它们的开发周期漫长而成本昂贵。
[0005] 光栅法系统的图学设计是一个由设计者操纵的画板式绘图技术(Painter’s Algorithm)。它的效果是一个人的3D视觉以人为模拟的方式表达为2D画板上绘画的结果,而并非真实光学物理现象的仿真。
[0006] 自70年代,一个基于物理光学的光线跟踪法出现,企图得到一个物理上逼真的视觉效果,将光学中的反射、折射、透视与阴影的物理现象利用几何光学的射线法计算出来。由于光线跟踪法本质上避免了不可见部分的跟踪,计算量是物体复杂度的对数函数,与光栅法计算量是情景复杂度的线性函数相比,在针对复杂情景的3D图学应用中有明显的优势。但是它的计算量对现今的计算机软件运行速度而言是过分大的负担。
[0007] 自2001年开始,德国萨尔大学(Saarland University)由Philipp Slusallek教授带领的计算机图学小组研究以基于光线跟踪法的硬件平行计算架构来实践3D图学建模与渲染。在2006年9月的美国犹他州举办的IEEE会议(IEEE Symposium on Interactive Ray Tracing)上,该小组宣布了一个实时光线跟踪的ASIC芯片设计,可以达到每秒200帧高品质的画面。根据德国汽车公司Volkswagan报导,该芯片技术已为汽车工业提供一个新的汽车模型的可视化设计方法,避免了昂贵耗时的原型设计,使得汽车工业的设计成本与产品上市周期降低30%。
[0008] 综合上述两种3D图学应用系统,即纯软件系统与纯硬件系统,在建模、渲染的性能与成本两方面的优劣势:纯硬件的ASIC芯片虽然能产生远较纯软件的CPU或GPU方法高质量、高性能的画面,但成本太高,而且灵活度远不如后者,对多种3D图学应用不同的要求不能提供一种如利用CPU或GPU软件的可编程调适的解决方案。
[0009] 本发明的重点在于融合上述两种3D图学应用解决方案各别的优势,而又避开两方案各别的缺点。更具体地,一方面保留纯软件方法的可编程模式,因而继承它应用的灵活性与可调试性,另一方面又针对3D图学应用所需的硬件速度优势提供具有高速操作性能的嵌入式ASIC模,让这两种组织在执行3D应用任务的时间与空间设计上交错存在,合作无间。其共存与合作的方式以及各自在软件设计领域与硬件设计领域的形态都将由3D图学应用产品的性价比优化点来决定。

发明内容

[0010] (一)要解决的技术问题
[0011] 有鉴于此,本发明的主要目的在于提供一种用于3D图学渲染加速的FPGA芯片,以提升3D图学渲染速度及芯片逻辑密度。
[0012] (二)技术方案
[0013] 为达到上述目的,本发明提供了一种用于3D图学渲染加速的FPGA芯片,该3D FPGA芯片由上层的可重构层电路与下层的逻辑层电路相互叠加成为一体,该3D FPGA芯片根据数据流从输入到输出的顺序依次包括PCIe接口模块1、3D装填模块2、空间二分模块3、起始渲染模块4、3D渲染模块5和显示模块6。其中,可重构层电路与逻辑层电路在该3D FPGA芯片中并存而形成一个叠加与紧密连接的完整结构。
[0014] 上述方案中,所述PCIe接口模块1用于实现该3D FPGA芯片与外部PCIe总线的数据传输,前端接口与PCIe总线插槽连接,外部信号通过PCIe总线以差分信号的形式进出芯片;PC硬碟的3D数据文档中的3D数据以高速串口传输方式经PC主机板上的PCIe插槽被传送至本3D FPGA芯片的PCIe接口模块的差分端口;PCIe接口模块的后端接口与3D装填模块2连接。
[0015] 上述方案中,所述3D装填模块2将来自主计算机(PC)经由PCIe接口模块1输入的3D数据中的3D图元数据缓存于外部的图元SDRAM中,并将3D数据中的3D光学数据直接输出至起始渲染模块4,该3D光学数据至少包括摄像头、材质及光源信息。
[0016] 上述方案中,所述空间二分模块3用于将外部的图元SDRAM中缓存的3D图元数据转换成空间二分KD树型数据并缓存于外部的KD SDR上述方案中,所述起始渲染模块4用于对3D装填模块输入的至少包括摄像头、材质及光源信息的3D光学数据进行分析和处理,产生
3D渲染模块所需的光学数据,该光学数据至少包括射线原点及画面顶点数据,并输出给3D渲染模块,同时产生3D渲染模块渲染每帧3D画面所需的启动信号以及处理3D渲染模块结束每帧3D画面渲染时产生的终结信号。
[0017] 上述方案中,所述3D渲染模块5对同步输入的外部图元SDRAM中缓存的3D图元数据、KDSDRAM中缓存的空间二分KD树型数据以及起始渲染模块4的光学数据进行3D渲染,并将渲染处理的结果输出至显示模块6。
[0018] 上述方案中,所述显示模块6对渲染处理的结果进行数据转换,得到显示结果信息,并将得到的显示结果信息缓存在外部的帧缓冲SDRAM中,以及将得到的显示结果信息与从外部的帧缓冲SDRAM输入的RGB颜色数据一起输出给VGA显示器以供本地监视,同时反馈给PCIe接口模块1以供主计算机处理。
[0019] (三)有益效果
[0020] 从上述技术方案可以看出,本发明具有以下有益效果:
[0021] 1、本发明提供的用于3D图学渲染加速的FPGA芯片,与现今流行的利用CPU或GPU的3D图学软件渲染技术用的指令级操作速度相比,芯片门级计算速度有104倍级的提升。另一方面,本发明利用静态可重构性(类似FPGA实践的可编程性,即在编程阶段决定可重构电路的功能)保留CPU或GPU的可编程特性优势。同时,本发明的动态可重构性(即在操作阶段实时决定可重构电路的功能)以实时的门级匹秒(10-12秒)级延迟的操作速度超越CPU或GPU指令级微秒(10-6秒)延迟的操作速度。
[0022] 2、本发明提供的用于3D图学渲染加速的FPGA芯片,与ASIC固定逻辑的光线跟踪法渲染技术相比,可编程特性有ASIC所无的可编程性带来的高度灵活性的优势。
[0023] 3、本发明提供的用于3D图学渲染加速的FPGA芯片,与现今流行的FPGA芯片相比,在3D图学应用的渲染加速上,不但有类似的可重构特性,而且因提供嵌入式的浮点ALU模块与嵌入式的缓存(Cache)模块,解决3D渲染应用对高精度浮点运算与高速数据输送功能的普遍需求,使芯片逻辑密度有102倍级的提升。附图说明
[0024] 通过附图形象而详细地对上述发明内容进行描述,以使本发明的特点和优点变得更加清晰,这些附图包括:
[0025] 图1示出的是依照本发明第一实施例的3D FPGA芯片的结构示意图(架构A)。
[0026] 图2示出的是依照本发明第二实施例的3D FPGA芯片的结构示意图(架构B)。
[0027] 图3示出的是PCIe接口模块的结构示意图。
[0028] 图4示出的是3D装填模块的结构示意图。
[0029] 图5示出的是空间二分模块的结构示意图。
[0030] 图6示出的是起始渲染模块的结构示意图。
[0031] 图7示出的是3D渲染模块的结构示意图。
[0032] 图8示出的是图7中主路由模块的结构示意图。
[0033] 图9示出的是图7中穿越缓存模块的结构示意图。
[0034] 图10示出的是图7中渲染穿越模块的结构示意图。
[0035] 图11示出的是图10中穿越路由模块的结构示意图。
[0036] 图12示出的是图10中穿越管道模块的结构示意图。
[0037] 图13示出的是图12中穿越数据路径模块的结构示意图。
[0038] 图14示出的是图10中穿越浮点ALU模块的结构示意图。
[0039] 图15示出的是图7中穿越FIFO模块的结构示意图。
[0040] 图16示出的是图7中列举缓存模块的结构示意图。
[0041] 图17示出的是图7中渲染列举模块的结构示意图。
[0042] 图18示出的是图17中列举路由模块的结构示意图。
[0043] 图19示出的是图17中列举管道模块的结构示意图。
[0044] 图20示出的是图19中列举数据路径模块的结构示意图。
[0045] 图21示出的是图7中列举FIFO模块的结构示意图。
[0046] 图22示出的是图7中穿刺缓存模块的结构示意图。
[0047] 图23示出的是图7中渲染穿刺模块的结构示意图。
[0048] 图24示出的是图23中穿刺路由模块的结构示意图。
[0049] 图25示出的是图23中穿刺管道模块的结构示意图。
[0050] 图26示出的是图25中穿刺数据路径模块的结构示意图。
[0051] 图27示出的是图23中穿刺浮点ALU模块的结构示意图。
[0052] 图28示出的是图7中着色FIFO模块的结构示意图。
[0053] 图29示出的是图7中着色缓存模块的结构示意图。
[0054] 图30示出的是图7中渲染着色模块的结构示意图。
[0055] 图31示出的是图30中着色路由模块的结构示意图。
[0056] 图32示出的是图30中着色管道模块的结构示意图。
[0057] 图33示出的是图32中着色数据路径模块的结构示意图。
[0058] 图34示出的是图30中着色浮点ALU模块的结构示意图。
[0059] 图35示出的是图34中浮点ALU数据路径模块的结构示意图。
[0060] 图36示出的是图35中浮点除法器模块的结构示意图。
[0061] 图37示出的是图7中显示模块的结构示意图。

具体实施方式

[0062] 在下文中,通过参照附图以及表格,本发明的实例将被详细地描述。但是,本发明可以许多不同的形式加以实施,并不应限定于这里给出的实例,该实例的提供是为了使本公开是彻底的和完整的,并且向熟悉本领域的人员全面地传达本发明的思想。
[0063] 3D FPGA芯片的结构是一个为高速数字信号处理的可重构的平行多进程管线结构。在下文中,所有在本发明中可重构的部分结构都以(*可重构)的标记表明。
[0064] 参照图1,架构A是本发明的两种实现结构之一。图1中的SDRAM与架构A的3D FPGA芯片经由芯片管脚直接连接,这是用于SDRAM与3D FPGA芯片共用同一个系统板的设计。该3D FPGA芯片由上层的可重构层电路与下层的逻辑层电路相互叠加成为一体,可重构层电路与逻辑层电路在该3D FPGA芯片中并存而形成一个叠加与紧密连接的完整结构。
[0065] 每个3D FPGA芯片由6个可重构模块构成,根据数据流从输入到输出的顺序依次包括PCIe接口模块1、3D装填模块2、空间二分模块3、起始渲染模块4、3D渲染模块5和显示模块6。
[0066] 其中,PCIe接口模块1用于实现该3D FPGA芯片与外部PCIe总线的数据传输,前端接口与PCIe总线插槽连接,外部信号通过PCIe总线以差分信号的形式进出芯片。PC硬碟的3D数据文档中的3D数据以高速串口传输方式经PC主机板上的PCIe插槽被传送至本3D FPGA芯片的PCIe接口模块的差分端口(Differential Port)。PCIe接口模块的后端接口与3D装填模块2连接。
[0067] 3D装填模块2用于将来自主计算机(PC)经由PCIe接口模块1输入的3D数据中的3D图元数据缓存于外部的图元SDRAM中,并将3D数据中的3D光学数据(例如摄像头、材质、光源信息)直接输出至起始渲染模块4。
[0068] 空间二分模块3用于将外部的图元SDRAM中缓存的3D图元数据转换成空间二分KD树型数据并缓存于外部的KD SDRAM中。
[0069] 起始渲染模块4用于对3D装填模块输入的摄像头、材质、光源信息等3D光学数据进行分析和处理,产生3D渲染模块所需的射线原点及画面顶点数据等光学数据,并输出给3D渲染模块,同时产生3D渲染模块渲染每帧3D画面所需的启动信号以及处理3D渲染模块结束每帧3D画面渲染时产生的终结信号。
[0070] 3D渲染模块5用于对同步输入的外部图元SDRAM中缓存的3D图元数据、KD SDRAM中缓存的空间二分KD树型数据以及起始渲染模块4的光学数据进行3D渲染,并将渲染处理的结果输出至显示模块6。
[0071] 显示模块6用于对渲染处理的结果进行数据转换,得到显示结果信息,并将得到的显示结果信息缓存在外部的帧缓冲SDRAM中,以及将得到的显示结果信息与从外部的帧缓冲SDRAM输入的RGB颜色数据一起输出给VGA显示器以供本地监视,同时反馈给PCIe接口模块1以供主计算机处理(例如智能识别或互联网通信应用)。
[0072] 参照图2,架构B是本发明的两种实现结构之二。架构A与架构B的唯一的差异在于本发明的3D FPGA芯片与外部SDRAM(包括图元SDRAM、KD SDRAM与帧缓冲SDRAM)的数据交换方式。图2中的所有SDRAM与3D FPGA芯片经由外部的PCIe总线连接,这是用于PCIe插槽上SDRAM与3D FPGA芯片在各自不同的系统板的设计。目的在提高本发明在系统板设计上的扩展灵活性以及降低系统板设计的成本。
[0073] 其中,PCIe接口模块1,用于实现该3D FPGA芯片与外部PCIe总线的数据传输,前端接口与PCIe总线插槽连接,外部信号通过PCIe总线以差分信号的形式进出芯片。PC硬碟的3D数据文档中的3D图元数据以高速串口传输方式经PC主机板上的PCIe插槽被传送至本3D FPGA芯片的PCIe接口模块的差分端口(Differential Port)。PCIe接口模块的后端接口与
3D装填模块2连接。
[0074] 3D装填模块2,用于将来自主计算机(PC)经由PCIe接口模块1输入的3D数据中的3D图元数据依次通过PCIe接口模块1和PCIe总线缓存于外部的图元SDRAM中,并将3D数据中的3D光学数据(例如摄像头、材质、光源信息)直接输出至起始渲染模块4。
[0075] 空间二分模块3,用于将依次通过PCIe接口模块1和PCIe总线得到的外部图元SDRAM中缓存的3D图元数据转换成空间二分KD树型数据,并依次通过PCIe接口模块1和PCIe总线缓存于外部的KD SDRAM中。
[0076] 起始渲染模块4,用于对3D装填模块输入的摄像头、材质、光源信息等3D光学数据进行分析和处理,产生3D渲染模块所需的射线原点及画面顶点数据,并输出给3D渲染模块,同时产生3D渲染模块渲染每帧3D画面所需的启动信号以及处理3D渲染模块结束每帧3D画面渲染时产生的终结信号。
[0077] 3D渲染模块5,用于对同步输入的外部图元SDRAM中缓存的3D图元数据、KD SDRAM中缓存的空间二分KD树型数据以及起始渲染模块4的光学数据进行3D渲染,并将渲染处理的结果输出至显示模块6。
[0078] 显示模块6,用于对渲染处理的结果进行数据转换,得到显示结果信息,并将得到的显示结果信息依次通过PCIe接口模块1和PCIe总线缓存在外部的帧缓冲SDRAM中,以及将得到的显示结果信息与从外部的帧缓冲SDRAM输入的RGB颜色数据一起输出给VGA显示器以供本地监视,同时反馈给PCIe接口模块1以供主计算机处理(例如智能识别或互联网通信应用)。
[0079] 基于上述图1所示的架构A和图2所示的架构B,该FPGA芯片与外部SDRAM(即图元SDRAM、KD SDRAM与帧缓冲SDRAM)进行数据交换,在架构A中,该外部SDRAM中的图元SDRAM直接连接于该FPGA芯片中的3D装填模块2和空间二分模块3,该外部SDRAM中的KD SDRAM直接连接于该FPGA芯片中的空间二分模块3和3D渲染模块5,该外部SDRAM中的帧缓冲SDRAM直接连接于该FPGA芯片中的显示模块6。在架构B中,该FPGA芯片是经由外部的PCIe总线连接于该外部SDRAM中的图元SDRAM、KD SDRAM与帧缓冲SDRAM。
[0080] 下面结合图3至图37,对构成本发明用于3D图学渲染加速的FPGA芯片的PCIe接口模块1、3D装填模块2、空间二分模块3、起始渲染模块4、3D渲染模块5和显示模块6进行详细说明。
[0081] 参照图3,PCIe接口模块由两个子模块构成,即PCIe核模块与PCIe应用模块。PCIe核模块用于执行数据交换的物理层、数据链接层与处理层的协议逻辑。PCIe应用模块用于控制3D装填模块、空间二分模块、3D渲染模块以及显示模块与外部(图1)或外部PCIe总线插槽上(图2)的PC、图元SDRAM、KD SDRAM以及帧缓存SDRAM之间的数据交换。
[0082] 参照图4,3D装填模块包含3个模块,即PCIe读取模块、3D分类模块和图元SDRAM控制模块。PCIe读取模块用于从PCIe接口模块1中获取3D数据并传输给3D分类模块。3D分类模块用于将该3D数据分成二类数据,一类为3D图元数据,输出至外部图元SDRAM,另一类为3D光学数据(即摄像头、材质、光源数据),输出至起始渲染模块4。图元SDRAM控制模块用于将该3D图元数据输出并缓存至外部图元SDRAM。
[0083] 参照图5,空间二分模块包含6个模块,即KD节堆栈FILO模块、构建KD模块、二分模块、成本计算模块、二分位置FIFO模块和图元FIFO模块。成本计算模块与二分模块从外部图元SDRAM读入各自所需的3D图元数据同时分别缓冲于图元FIFO模块与二分位置FIFO模块。二分模块用自二分位置FIFO获取的顶点产生3D情景图元基于轴向包盒(Axis-Aligned Bounding Box,简称AABB)的空间二分平面(Binary Space Partition Plane),继而利用成本计算模块从图元FIFO获取的图元顶点坐标来计算KD树(KD Tree)每一级AABB的二分成本,最终以成本最低的二分平面来完成该级的KD节二分。整个3D情景所有图元的根KD节(Root KD Node)被空间二分模块反复二分到个别的KD叶节(KD Leaf Node),所有3D情景的图元数据被转换成一个KD树型数据结构,进而直接(A架构)或经由PCIe接口模块(B架构)输出到外部的KD SDRAM。
[0084] 空间二分模块从外部的图元SDRAM读进3D情景图元数据,根据KD空间二分算法(KD Binary Space Partition Algorithm)进行反复空间二分,同时将所有被二分的KD树内部节(KD Tree Inner Node)信息记录并输入外部的KD SDRAM,直到每一个空间二分路径到达KD树叶节(KD Tree Leaf Node)。
[0085] 参照图6,起始渲染模块包括起始ALU和起始状态机,起始ALU用于对3D装填模块输入的3D光学数据进行分析和处理,产生3D渲染模块所需的射线原点及画面顶点数据,并输出给3D渲染模块,同时处理3D渲染模块结束每帧3D画面渲染时产生的终结信号。起始状态机用于产生3D渲染模块渲染每帧3D画面所需的启动信号。
[0086] 参照图7,3D渲染模块包含12个模块,即主路由模块,4个缓存模块(穿越缓存模块、列举缓存模块、穿刺缓存模块、着色缓存模块),4个渲染子模块(渲染穿越模块、渲染列举模块、渲染穿刺模块、渲染着色模块)以及3个间隔它们的FIFO模块(穿越FIFO模块、列举FIFO模块、穿刺FIFO模块)。
[0087] 3D渲染模块中的主路由模块、4个缓存模块(穿越缓存模块、列举缓存模块、穿刺缓存模块、着色缓存模块)、4个渲染子模块(渲染穿越模块、渲染列举模块、渲染穿刺模块、渲染着色模块)以及3个FIFO(穿越FIFO模块、列举FIFO模块、穿刺FIFO模块)的数据来源是:
[0088] 1)KD SDRAM
[0089] 存储3D图元经空间二分法处理后的KD树结构数据。
[0090] 2)图元SDRAM
[0091] 存储3D情景的图元组成信息。
[0092] 3)3D光学数据
[0093] 起始渲染模块对3D装填模块输入的3D光学数据(摄像头、情景物体材质以及光源的信息)进行分析和处理,产生的3D渲染模块所需的射线原点及画面顶点数据。
[0094] 来自外部KD SDRAM的KD节数据输入穿越缓存模块。来自外部图元SDRAM的图元数据输入主路由模块。来自起始渲染模块的光学数据输入渲染穿越模块。3D渲染的管线操作计算顺序:渲染穿越模块—>穿越FIFO模块—>渲染列举模块—>列举FIFO模块—>渲染穿刺模块—>穿刺FIFO模块—>渲染着色模块。这个管线操作将沿光线跟踪的方向从点到最近穿刺点(nearest intersect point),按直射—>反射—>折射的顺序周而复始直到完成。
[0095] 参照图8,3D渲染模块中的主路由模块包括主循环MUX模块和主缓存读取模块,主循环MUX模块从渲染列举模块、渲染穿刺模块以及渲染着色模块三个模块中选择一个模块,主缓存读取模块从外部的图元SDRAM输入被选择模块所需的图元数据,主循环MUX模块继而将输入图元数据输出给该被选择模块。
[0096] 参照图9,3D渲染模块中的穿越缓存模块包括穿越CAM模块、穿越TAG模块和穿越缓存RAM模块,其中的穿越CAM模块与穿越TAG模块接受并分析渲染穿越模块对渲染穿越管道计算所需KD节数据的请求,继而从穿越缓存RAM模块(如果请求的KD节在本地,即Cache Hit)或从外部KD SDRAM(如果请求的KD节不在本地,即Cache Miss)输入所需的KD节数据。
[0097] 参照图10,3D渲染模块中的渲染穿越模块由穿越路由模块、与64根(*可重构)射线1∶1对应的穿越管道模块以及穿越浮点ALU构成。来自穿越缓存模块的KD节数据经由穿越路由模块输入穿越路由模块选择的穿越管道模块,对射线与输入的KD节调用穿越浮点ALU模块进行渲染穿越计算,将结果的KD叶节ID输出给穿越FIFO以备输出给渲染列举模块。
[0098] 参照图11,渲染穿越模块中的穿越路由模块包括循环选控模块和穿越缓存读取模块,其中循环选控模块以轮流循环(Round Robin)的方式在64根(*可重构)射线的穿越管道中选择一个管道与穿越缓存模块连接,穿越缓存读取模块从穿越缓存模块输入所需的KD节数据并交予穿越管道。
[0099] 参照图12,渲染穿越模块中的穿越管道模块包括穿越状态模块、射线产生模块、穿越控制模块和穿越数据路径模块,用于执行一根射线与一个KD节的穿越(Traverse)计算,包括射线与KD节包盒(KD Node Bounding Box)以及二分面(Splitting Plane)的穿刺(Intersect)计算。计算穿越整个KD树所有KD节直到KD叶节(KD Leaf Node)。计算过程由穿越控制模块中的有限状态机(Finite State Machine)控制穿越数据路径模块中的运算逻辑来完成。参照图12,所有64个穿越管道中的穿越数据路径模块共用同一个穿越浮点ALU模块。
[0100] 参照图13,穿越管道模块中的穿越数据路径模块包括穿越堆叠模块和穿越算法模块,其核心模块是穿越算法模块,即射线与KD节包盒(KD Node Bounding Box)的空间二分平面(BSP Split Plane)的穿刺(Intersect)计算。当射线同时穿越二分平面两侧的KD节时,一方面继续穿越下一级的KD节,另一方面将暂时搁置的KD节登记于穿越堆栈FILO模块。
[0101] 参照图14,渲染穿越模块中的穿越浮点ALU模块包括穿越浮点ALU控制模块和浮点ALU数据路径模块,用于接受穿越数据路径模块发出的ALU模式请求,由穿越浮点ALU控制模块发出适当的控制信号,让浮点ALU数据路径模块形成所需的穿越ALU计算公式来完成穿越浮点ALU计算。
[0102] 参照图15,3D渲染模块中的穿越FIFO模块包含64个(*可重构)用于个别射线穿越计算的穿越FIFO子模块。穿越FIFO模块的输入来自3D渲染模块的渲染穿越模块,由穿越路由模块控制导入个别射线穿越计算的穿越FIFO子模块。
[0103] 参照图16,3D渲染模块中的列举缓存模块包括列举TAG模块和列举缓存RAM模块,其中的列举TAG模块接受并分析渲染列举模块对渲染列举管道计算所需图元ID数据的请求,继而从本模块中的列举缓存RAM模块(如果请求的图元ID在本地,即Cache Hit)或从外部图元SDRAM(如果请求的图元ID不在本地,即Cache Miss)输入所需的图元ID数据。
[0104] 参照图17,3D渲染模块中的渲染列举模块由列举路由模块与64根(*可重构)射线1∶1对应的列举管道模块构成。来自列举缓存模块的图元数据(即KD叶节图元ID)经由列举路由模块输入列举路由模块选择的列举管道模块,进行渲染列举计算(即以链表Linked List的方式求得所有KD叶节中的图元ID),将结果的KD叶节图元ID输出给列举FIFO以备输入渲染穿刺模块。
[0105] 参照图18,渲染列举模块中的列举路由模块包括循环选控模块和列举缓存读取模块,其中的循环选控模块以轮流循环(Round Robin)的方式在64根(*可重构)射线的列举管道中选择一个管道与列举缓存连接,由列举缓存读取模块从列举缓存模块输入所需的KD叶节中的图元数据并交予列举管道。
[0106] 参照图19,渲染列举模块中的列举管道模块包括列举控制模块和列举数据路径模块,用于执行渲染列举计算。求得所有KD叶节中的图元ID。计算过程由列举控制模块中的有限状态机(Finite State Machine)控制列举数据路径模块中的运算逻辑来完成。
[0107] 参照图20,列举管道模块中的列举数据路径模块的核心模块足列举算法模块,即从图元SDRAM中的图元数据求得所有KD叶节中的图元ID。
[0108] 参照图21,3D渲染模块中的列举FIFO模块包含64个(*可重构)用于个别射线列举计算的列举FIFO子模块。列举FIFO模块的输入来自3D渲染模块的渲染列举模块,由列举路由模块控制导入个别射线列举计算的列举FIFO子模块。
[0109] 参照图22,3D渲染模块中的穿刺缓存模块包括穿刺TAG模块和穿刺缓存RAM模块,其中的穿刺TAG模块接受并分析渲染穿刺模块对渲染穿刺管道计算所需图元顶点数据的请求,继而从本模块中的穿刺缓存RAM模块(如果请求的图元顶点数据在本地,即Cache Hit)或从外部图元SDRAM(如果请求的图元顶点数据不在本地,即Cache Miss)输入所需的图元顶点数据。
[0110] 参照图23,3D渲染模块中的渲染穿刺模块由穿刺路由模块、64根(*可重构)射线1∶1对应的穿刺管道模块以及穿刺浮点ALU模块构成。来自穿刺缓存模块的顶点数据经由穿刺路由模块输入穿刺路由模块选择的穿刺管道模块,进行渲染穿刺计算(即计算射线与图元的穿刺是中Hit或不中Miss),将结果的图元ID与穿刺点坐标输出给穿刺FIFO以备输入渲染着色模块。
[0111] 参照图24,渲染穿刺模块中的穿刺路由模块包括循环选控模块和穿刺缓存读取模块,其中的循环选控模块以轮流循环(Round Robin)的方式在64根(*可重构)射线的穿刺管道中选择一个管道与穿刺缓存连接,穿刺缓存读取模块从穿刺缓存模块输入所需的KD叶节中的图元数据并交予穿刺管道。
[0112] 参照图25,渲染穿刺模块中的穿刺管道模块包括穿刺控制模块和穿刺数据路径模块,用于执行渲染穿刺计算,计算射线与所有KD叶节中的图元是否穿刺成功以及穿刺位置。计算过程由穿刺控制模块中的有限状态机(Finite State Machine)控制穿刺数据路径模块中的运算逻辑来完成。
[0113] 参照图26,穿刺管道模块在的穿刺数据路径模块的核心模块是穿刺算法模块,即从图元SDRAM中的图元顶点数据计算射线与图元的穿刺与否及穿刺点位置。
[0114] 参照图27,渲染穿刺模块中的穿刺浮点ALU模块包括穿刺浮点ALU控制模块和浮点ALU数据路径模块,用于接受穿刺数据路径模块发出的ALU模式请求,由穿刺浮点ALU控制模块发出适当的控制信号,让浮点ALU数据路径模块形成所需的穿刺ALU计算公式来完成穿刺浮点ALU计算。
[0115] 参照图28,3D渲染模块中的穿刺FIFO模块包含64个(*可重构)用于个别射线穿刺计算的穿刺FIFO子模块。穿刺FIFO模块的输入来自3D渲染模块的渲染穿刺模块,由穿刺路由模块控制导入个别射线穿刺计算的穿刺FIFO子模块。
[0116] 参照图29,3D渲染模块中的着色缓存模块包括着色TAG模块和着色缓存RAM模块,其中的着色TAG模块接受并分析渲染着色模块对渲染着色管道计算所需图元光学数据(即颜色与材质)的请求,继而从本模块中的着色缓存RAM模块(如果请求的图元光学数据在本地,即Cache Hit)或从外部图元SDRAM(如果请求的图元光学数据不在本地,即Cache Miss)输入所需的图元光学数据。
[0117] 参照图30,3D渲染模块中的渲染着色模块由着色路由模块、64根(*可重构)射线1∶1对应的着色管道模块以及着色浮点ALU模块构成。来自着色缓存模块的图元光学数据经由着色路由模块输入着色路由模块选择的着色管道模块,进行渲染着色计算(即计算穿刺图元的颜色),将结果的图元颜色输出给显示模块。
[0118] 参照图31,渲染着色模块中的着色路由模块包括循环选控模块和着色缓存读取模块,其中的循环选控模块以轮流循环(Round Robin)的方式在64根(*可重构)射线的着色管道中选择一个管道与着色缓存连接,由着色缓存读取模块从着色缓存模块输入所需的图元光学数据并交予着色管道。
[0119] 参照图32,渲染着色模块中的着色管道模块包括着色控制模块和着色数据路径模块,用于执行渲染着色计算,计算过程由着色控制模块中的有限状态机(Finite State Machine)控制着色数据路径模块中的运算逻辑来完成。
[0120] 参照图33,着色管道模块中的着色数据路径模块包括着色算法模块和着色堆叠模块,其中的核心模块是着色算法模块,利用图元SDRAM经主路由模块、着色缓存模块以及着色路由模块输入的图元光学数据计算每一个被跟踪射线穿刺击中的图元的光学效应,即计算光源直射、反射与折射的光学颜色。计算将反复使用射线跟踪,计算从每一直射光源击中的图元开始反复跟踪每一击中点上发生的反射与折射对击中图元所造成的光学颜色效应。
[0121] 参照图34,渲染着色模块中的着色浮点ALU模块包括着色浮点ALU控制模块和浮点ALU数据路径模块,用于接受着色数据路径模块发出的ALU模式请求,由着色浮点ALU控制模块发出适当的控制信号,让浮点ALU数据路径模块形成所需的着色ALU计算公式来完成着色浮点ALU计算。
[0122] 参照图35,着色浮点ALU模块中的浮点ALU数据路径模块是3D渲染模块的3个调用ALU的子模块(即渲染穿越模块、渲染穿刺模块、渲染着色模块)的每一个管道模块共享的ALU计算模块。每一个渲染子模块的每一个管道模块提供在个别ALU计算周期所需的ALU模式(ALU Mode),由个别的浮点ALU控制模块(即穿越浮点ALU控制模块、穿刺浮点ALU控制模块、着色浮点ALU控制模块)对该ALU模式进行解码而发出对浮点ALU数据路径模块的控制信号。浮点ALU数据路径模块包括3个浮点单元模块和浮点除法模块,3个浮点单元模块即浮点单元0模块、浮点单元1模块、浮点单元2模块,个别由输入的OP码(OP Code)控制,可执行两个32位IEEE 754浮点数的加法(+)或减法(-)或乘法(X)。浮点除法模块只能执行两个32位IEEE 754浮点数的除法(÷)。
[0123] 参照图36,浮点ALU数据路径模块中的浮点除法模块由3个浮点单元组成,执行两个32位IEEE 754浮点数的除法。它的电路结构与浮点ALU数据路径模块中的3个浮点单元的组合相同。它的逻辑结构由静态可重构的编程模式决定。
[0124] 同步输入的外部图元SDRAM中缓存的3D图元数据、KD SDRAM中缓存的空间二分KD树型数据以及起始渲染模块的光学数据经由主路由模块、穿越缓存模块与起始渲染模块进入3D渲染模块的核心管线(Core Pipeline):渲染穿越模块—>穿越FIFO模块—>渲染列举模块—>列举FIFO模块—>渲染穿刺模块—>穿刺FIFO模块—>渲染着色模块。3D渲染模块的计算从起始渲染模块获取摄像头原点与画面象素位置开始,由渲染穿越模块的穿越路由模块以轮流循环(Round Robin)方式选择一个穿越管道模块对从KD SDRAM输入进穿越缓存模块的3D情景所有KD节进行自上而下反复的穿越计算直到击中一个KD叶节,并将KD叶节ID缓冲于穿越FIFO。渲染列举模块经列举路由模块以轮流循环方式选择一个列举管道模块,根据从穿越FIFO模块读出的KD叶节ID经主路由模块从外部图元SDRAM输入所有该KD叶节的图元顶点ID进列举缓存模块,继而将图元顶点ID缓冲于列举FIFO模块。渲染穿刺模块经穿刺路由模块以轮流循环方式选择一个穿刺管道模块,根据从列举FIFO模块读出的图元顶点ID经主路由模块从外部图元SDRAM输入KD叶节所有图元顶点进穿刺缓存模块,继而进行穿刺计算,将最近距离的穿刺图元ID缓冲于穿刺FIFO模块。渲染着色模块经着色路由模块以轮流循环方式选择一个着色管道模块,根据从穿刺FIFO模块读出的穿刺图元ID,经主路由模块从外部图元SDRAM输入穿刺图元的法线方向与颜色进着色缓存模块,继而进行反复式着色计算,沿直接光、反射光、折射光在3D情景中的射线跟踪路径完成一个射线击中的画面象素的着色。起始渲染模块将检测一个画块(Tile)的渲染完成而启动3D渲染模块对下一个画块的渲染。如此,周而复始直到整个画面的渲染完成。
[0125] 参照图37,显示模块包含4个模块,即显示状态机模块、VGA控制模块、帧缓冲控制模块和显示PCIe控制模块。显示状态机模块控制VGA控制模块、显示PCIe控制模块与帧缓冲控制模块的数据输入与行为时序:VGA控制模块将颜色数据与VGA接口的同步信号送给外部的VGA RAMDAC芯片与VGA接口,帧缓冲控制模块将3D渲染结果数据送给外部的帧缓存SDRAM(架构A),显示PCIe控制模块将3D渲染结果数据送给PCIe接口模块以缓存于外部的帧缓存SDRAM(架构B)同时提供给外部PCIe总线插槽上的主计算机进一步的处理(例如智能识别或互联网通信应用)。
[0126] 显示模块从3D渲染模块输入象素颜色数据,直接经帧缓存控制模块输出入外部帧缓存SDRAM(架构A),或经PCIe输出模块由PCIe接口模块输出外部PCIe总线插槽上的帧缓存SDRAM卡(架构B)。
[0127] 从上述技术方案可以看出,本发明提供的3D FPGA芯片有以下的特征来超越ASIC芯片、CPU芯片、GPU芯片以及现今流行的FPGA芯片在3D图学渲染加速应用上的性价比:
[0128] 1)、多道高速PCIe串型数据输入与输出(Multiple-Lane High-Speed PCIe Serial Data Input and Output)
[0129] 2)、多射线平行数据管线处理(Multiple-Ray Parallel Data Pipelines Processing)
[0130] 3)、充分利用片上数据存储单元,即RAM(Random Access Memory)、移位寄存器(Shift Register)、寄存器板块(Register File),以先进先出(First-In First-Out,简称FIFO)、先进后出(First-In Last-Out,简称FILO)与缓存(Cache)方式来最大优化管线与管线之间的数据交换。
[0131] 4)、集成式可重构高速浮点运算(加、减、乘、除的任意组合)单元。它可以静态可重构的编程模式来改变浮点运算的组合,这样的重构方式在编程过程完成,也可以动态信号模式来改变浮点运算的组合,这样的重构方式在电路实时运作的过程完成。两种重构方式的灵活配合充分利用进步超深亚微米工艺技术带来的高速门级运算速度。
[0132] 5)、多射线平行数据管线(Multiple-Ray Parallel Data Pipelining)逻辑以高速共享浮点运算单元的方式完成3D渲染中的所有任务,以达最高的《速度/芯片面积》性价比。
[0133] 这些特征都将充分利用现今遵循Moore定律不断进步的超深亚微米CMOS工艺(Ultra-Deep Submicron CMOS Technology)来完成3D图学渲染加速的任务。
[0134] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈