【发布时间】:2010-07-05 14:50:47
【问题描述】:
我试图写了Verilog / SystemVerilog的可综合三维光栅化。光栅化器现在是不是一个真正的三维光栅化:它只是接收6个32位的float顶点位置(vertA_pos_x,vertA_pos_y,vertB_pos_x,vertB_pos_y,vertC_pos_x,vertC_pos_y)和9个顶点8位整数着色(vertA_color_r,vertA_color_g,vertA_color_b ,vertB_color_r,vertB_color_g,vertB_color_b,vertC_color_r,vertC_color_g,vertC_color_b)。
位置的范围是0.0F〜1.0F,0.0F表示屏幕的顶部/左侧,0.5F它的中间和1.0F底/右侧。 P>
在光栅工作将是,首先,计数需要多少光栅线。鉴于帧缓冲高度是240个像素,顶点A是顶端顶点,B是左下一个,C是右下一个和X是最底部顶点(或者B或C,这必须被计算),的栅格线的数量是由(vertX_pos_y - vertA_pos_y) / 240给出
栅格化处理的这部分是复杂的,足以暴露我的怀疑,所以我会停下来解释我怎么会在这里进行。 P>
现在我想知道的是如何用Verilog实现这种“复杂”的逻辑(它是“复杂的”,因为它是连续的,时间超过一个时钟周期,这是不完全的最愉快之类的话来设计用硬件描述语言)。
我使用Altera的Quartus等我感兴趣的主要是Altera的解决方案。 P>
这是附带的Quartus浮点操作宏功能都需要多于一个时钟周期到结束,所以,要实现像@ 987654322“简单”计算@,我假设一个相当无聊到写和无差错易发生状态机是必要的。我最大的期望是,会有人告诉我,我不需要这个,但如果不是这样,我还是想知道的人一般如何设计这样的事情。 P>
另请注意,我很新的Verilog和硬件设计一般,所以我很抱歉,如果我说了一些愚蠢的。想法?
【问题讨论】:
标签: floating-point verilog intel-fpga