《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 3D透视校正纹理映射矩阵电路设计及实现

3D透视校正纹理映射矩阵电路设计及实现

2008-07-21
作者:周珍艮1,2,郭 立1

    摘 要: 3D" title="3D">3D图形硬件加速中,纹理映射属于像素处理阶段,透视校正中的纹理地址计算的特点是计算量大,且有实时性要求。本文设计了一个流水线脉动阵列" title="脉动阵列">脉动阵列结构来提高数据吞吐量。阵列的处理器单元(PE)为基于IEEE 754单精度" title="单精度">单精度的32位浮点乘累加器" title="累加器">累加器,同时计算纹理坐标的除法电路也为单精度。
    关键词: 脉动阵列  处理单元  纹理映射  FPGA

 

    3D图形处理芯片的性能比任何一种计算芯片的发展都要快,几乎所有的PC系统都包括了3D图形硬件加速技术,以实现游戏、CAD或可视化等应用。随着移动电子产品市场的发展,诸如PDA、手机等产品已开始具有3D游戏等功能,使3D图形的硬件加速应用领域更为广泛。
    计算机图形计算量都很大,人们寻求各种加速算法来提高运算速度。传统的方法是用更快的处理器,并行算法或专用硬件。随着数字技术的发展,尤其是可编程逻辑门阵列(FPGAs)的发展,提供了一种新的加速方法。最近的FGGAs在密度和性能上都有突破性的发展,加上可重复编程的特点,使得它在高性能、柔性应用平台上非常有吸引力[1][2][7]
    在图形加速运算中,纹理贴图属于光栅化处理流水线进程,这一进程的主要特点是要处理大量的像素,数据吞吐量大。对实时处理系统来说,转换速度是一个关键参数,为获得转换速度,流水线结构的选择显得很重要。
    脉动阵列在大吞吐量加速运算中是个很好的方案,对特定的重复计算工作,以数据并行结构方式,混合空间时间计算,流水线处理,局部通讯来获得最大可能性能。有规则的脉动阵列结构可以缩短设计时间,对特定目的能得到最优化结果,相对于普通的结构,可以获得较好的开销与性能比。
    本文设计了一个用于3D纹理映射中的透视校正纹理地址计算的高性能、全并行浮点数运算脉动阵列电路,包含32位单精度浮点乘累加器和除法器,并给出最终的实验结果和性能分析。
1 透视校正纹理映射
1.1 纹理映射技术
    纹理映射是给计算机产生的3D图形表面贴上各种纹理图像,以提高图形的真实感。
    在各种纹理映射方法中,一个主要的运算就是找出屏幕空间像素(x,y,z)在纹理空间所对应的纹理元素所在存储空间的地址(Row,Col),然后将所选中的纹理元素颜色进行滤波,并用这个值替换屏幕空间的像素颜色值,从而完成纹理映射。这个过程通常称为两步纹理映射方法。也就是说,先将屏幕空间的像素坐标转换到参数空间(U,V),再由参数空间转换到纹理图像空间。图1就是一个给墙壁贴砖纹理的过程。

                
1.2 纹理映射单元的矩阵运算
    本文只考虑由屏幕空间到纹理空间的转换,它是一个全浮点运算,参数空间到纹理空间的转换则是两个定点乘运算。
    最典型的纹理映射是透视映射,映射函数一般用式(1)表示[1]
   


    式(1)中:(x,y)为二维屏幕像素坐标;(U,V)为二维纹理参数空间的坐标,一般也称为纹理地址;A~I为转换系数,对于透视映射,I值为1。
    这种运算通常是用像素矩阵与转换矩阵相乘来计算纹理元素地址的。矩阵形式表示为式(2),式(3)为坐标转换。
   

    式(2)中:(x,y,z)和(u,v,w)分别为屏幕像素地址和纹理空间地址的齐次坐标,透视映射时,z值为1。矩阵M为3×3转换矩阵,矩阵元素mij分别对应参数A~I。各纹理地址的计算事实上是一个(A×B+C)的乘累加计算。
    纹理地址的计算是一个连续增量扫描屏幕空间像素的过程。设像素坐标为(xi,yi,zi),对应的纹理坐标则为(ui,vi,wi)。
2 矩阵运算的阵列结构
    对于光栅化处理流水线进程,为获得大的数据吞吐量和满足实时处理要求的转换速度,基于流水线结构的矩阵电路是一种极好的选择。
2.1 阵列结构
    正交脉动阵列能很好地完成正方形矩阵乘操作。一个M×N的矩阵A=[Aij](1ij]( 1ij]为M×P矩阵,用循环式表示为[2]
   

    如果矩阵的维数为n,需要n2个微处理器单元(PE)。对于纹理地址计算,相乘矩阵的维数分别是3×3和3×1,所以矩阵阵列为3×3,共9个PE单元,如图2。处理器单元PEij是单精度浮点乘累加器,完成矩阵元素乘及与前一级输出的累加。图2中(xi,yi,zi)的输入方式,事实上是通过FIFO堆栈,对应周期依序输入(x1,0,0),(x2,y1,0),(x3,y2,z1)……。

               
    3×3阵列完成齐次坐标(u,v,w)计算后,还要再完成笛卡尔坐标转换(U,V)=(u/w,v/w),所以最后还要两个单精度的浮点除法器(Div)。
2.2 PE单元[2]
    PE单元的结构图如图3所示,主要单元是由两个IEEE754 32位单精度浮点乘法器" title="乘法器">乘法器和累加器组成,乘法器完成A×B运算,再由累加完成A×B+C运算。用一个寄存器来控制各PE单元之间数据传输节奏。寄存器的数据是在Enable信号有效时输出,以保证流水线的节奏。Enable信号的产生是通过对时钟信号进行计数得到的。这里乘法器和加法器同样采用流水线结构,乘法器一个周期,累加器两个周期,所以Enable信号在三个周期结束后发出有效信号,PE运算结果输出到下一级PE单元Cin。

                    
    在图2的阵列结构中,PE单元的Ain、Bin和Cin分别与x(或y、z)、m及c对应。图4所示为PE单元的仿真波形。结果显示,每个PE单元输出结果要三个周期。表1为测试输入输出数据,便于比较。

                         

                     
3 结果及分析
    整个电路用VHDL设计,设计仿真平台为Xilinx的ISE 7.1i,使用VitrtexE xcv1000efg900-8器件,综合工具用XST。数据采用IEEE 754的32位单精度浮点数标准。
3.1 性能分析
    表2为电路综合后所耗资源,各单元的频率综合结果见表3,乘累加模块的频率最低,为41.145MHz,共有9个PE单元,则可以达到740.61MFlop/s及82.29MPixels/s数据吞吐量。脉动阵列每一行数据从输入到输出共需12个周期。如果一个屏幕分辨率为1280×720,每秒刷新60帧[6],则所需的运算速度仅为55.296MPixels/s,因此最终的设计在速度上满足实时性的要求。

                    

                      
3.2 仿真结果
    图5为整个电路的仿真结果,输入输出数据以32位浮点格式表示,mij为转换矩阵的元素,x、y、z为像素坐标,U、V为纹理坐标。从表3及图5可以看出,每个PE单元需3个周期,每阵列行为3个PE单元,加上除法器3个周期,这样整个流水线共需12个周期完成。输入的验证矩阵为式(5),输出结果U=0.0471,V=0.0391。

   

            
     本文设计了基于IEEE 754单精度32位浮点数运算的脉动阵列,用于3D图形硬件加速中的纹理透视校正的纹理地址计算,最后给出了FPGA的硬件实现方案。仿真综合的结果表明电路可以在41.145MHz频率下运行,达到740.61MFlop/s及82.29MPixel/s数据吞吐量,流水线输入输出共12个周期。
参考文献
[1] Tomas Akenine-Moller著,普建涛译.实时计算机图形学(第二版)[M].北京:北京大学出版社,2004.
[2] GEORGE M,PAPADOURAKIS,GEORGE N.B.The design of a systolic architecture to implement graphic transformations[J],CompEuro′91.′Advanced Computer Technology,Reliable Systems and Applications′.5th Annual Europe Computer Conference. Proceedings.13-16 1991(5).

[3] John P.Uyemurq著,周润德译.超大规模集成电路与系统导论[M].北京:电子工业出版社,2004.
[4] 吴金,应征.高速浮点乘法器设计[J].电路与系统学报,2005,10(6).
[5] SEIDEL P M,EVEN G,Delay-Optimized Implementation of IEEE Floating-Point Addition[J].IEEE Transactions on Computers,2004,53(2).
[6] Fadi Chehim,Paul Coulton,Reuben Edwards,Evolution of 3D games on mobile phones[J].Proceedings of the international conference on mobile business(ICMB′05),2005(6),11-13.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。