📄 rasterizer_11_07_2008_18_46.v
字号:
//// det <= det;
//// end
////
//// //eventually do culling test here
//// //for now do every triangle
//// //need to set up to start incrementing here
//// else
//// begin
//// // CAN ACTUALLY DO THIS AS COMBINATORIAL LOGIC TO SAVE A CYCLE
////
////
//// //xmax
//// if (vertex1_x > vertex2_x & vertex1_x > vertex3_x)
//// begin
//// xMax <= vertex1_x;
////
//// end
////
//// else if (vertex2_x > vertex1_x & vertex2_x > vertex3_x)
//// begin
//// xMax <= vertex2_x;
////
//// end
//// else
//// begin
//// xMax <= vertex3_x;
////
//// end
////
//// //xmin
//// if (vertex1_x < vertex2_x & vertex1_x < vertex3_x)
//// begin
//// xMin <= vertex1_x;
//// fragment_x <= vertex1_x;
//// end
////
//// else if (vertex2_x < vertex1_x & vertex2_x < vertex3_x)
//// begin
//// xMin <= vertex2_x;
//// fragment_x <= vertex2_x;
////
//// end
////
//// else
//// begin
//// xMin <= vertex3_x;
//// fragment_x <= vertex3_x;
//// end
////
//// //ymax
//// if (vertex1_y > vertex2_y & vertex1_y > vertex3_y)
//// begin
//// yMax <= vertex1_y;
////
//// end
////
//// else if (vertex2_y > vertex1_y & vertex2_y > vertex3_y)
//// begin
//// yMax <= vertex2_y;
////
//// end
////
//// else
//// begin
//// yMax <= vertex3_y;
////
//// end
////
//// //ymin
//// if (vertex1_y < vertex2_y & vertex1_y < vertex3_y)
//// begin
//// yMin <= vertex1_y;
//// fragment_y <= vertex1_y;
//// end
////
//// else if (vertex2_y < vertex1_y & vertex2_y < vertex3_y)
//// begin
//// yMin <= vertex2_y;
//// fragment_y <= vertex2_y;
//// end
////
//// else
//// begin
//// yMin <= vertex3_y;
//// fragment_y <= vertex3_y;
//// end
////
//// /////CULL TRIANGLES
////
//// //if (det < 0)
//// // stallOUT <= 1'b0;
//// //else
//// // stallOUT <= 1'b1;
////
//// fragment_c <= 16'b0000000000111111;
////
//// setup_counter <= 2'b00;
////
//// stallOUT <= 1'b1;
//// end
////end
////
////endmodule
////
////
////////// NEED TO PASS A WRITE ENABLE OUT FOR THE SRAM
//////
//////
//////module Rasterizer (
////// clock,
////// reset,
//////
////// vertex1_x,
////// vertex1_y,
//////// vertex1_c,
//////
////// vertex2_x,
////// vertex2_y,
//////// vertex3_c,
//////
////// vertex3_x,
////// vertex3_y,
//////// vertex3_c,
//////
////// fragment_x,
////// fragment_y,
////// fragment_c,
//////
////// stallOUT,
////// stallIN,
////// out
////// );
//////
//////output [17:0] out;
//////wire [17:0] out;
//////
//////input clock;
//////input reset;
//////
//////input [9:0] vertex1_x;
//////input [9:0] vertex1_y;
////////input [15:0] vertex1_c;
//////
//////input [9:0] vertex2_x;
//////input [9:0] vertex2_y;
////////input [15:0] vertex2_c;
//////
//////input [9:0] vertex3_x;
//////input [9:0] vertex3_y;
////////input [15:0] vertex3_c;
//////
//////output [9:0] fragment_x;
//////output [9:0] fragment_y;
//////output [15:0] fragment_c;
//////
//////reg [9:0] fragment_x;
//////reg [9:0] fragment_y;
//////reg [15:0] fragment_c;
//////
//////input stallIN;
//////wire stallIN;
//////
//////output stallOUT;
//////reg stallOUT;
//////
//////reg [9:0] xMin, xMax;
//////reg [9:0] yMin, yMax;
//////
//////reg [1:0] setup_counter;
//////
//////wire signed [10:0] r_minus_r3_x, r_minus_r3_y;
//////
//////assign r_minus_r3_x = fragment_x - vertex3_x;
//////assign r_minus_r3_y = fragment_y - vertex3_y;
//////
//////wire signed [10:0] x1_x3, x2_x3, y1_y3, y2_y3;
//////
//////assign x1_x3 = vertex1_x - vertex3_x;
//////assign x2_x3 = vertex2_x - vertex3_x;
//////
//////assign y1_y3 = vertex1_y - vertex3_y;
//////assign y2_y3 = vertex2_y - vertex3_y;
//////
////////wire signed[17:0] det1, det2;
////////reg signed[17:0] det;
//////
////////assign det1 = x1_x3 * y2_y3;
////////assign det2 = x2_x3 * y1_y3;
//////
//////wire signed [17:0] lambda1, lambda2;
//////reg signed[17:0] lambda3;
//////
//////wire signed [10:0] a,b,d,e;
//////reg signed [10:0] c,f;
//////
//////wire [17:0] clamb, flamb;
//////
//////assign a = y2_y3 * r_minus_r3_x;
//////assign b = x2_x3 * r_minus_r3_y;
//////
//////assign d = y1_y3 * r_minus_r3_x;
//////assign e = x1_x3 * r_minus_r3_y;
//////
//////
//////wire [17:0] lamb1, sub1, sub2, sub3;
//////
//////assign lamb1 = 18'b101110111101001000;
//////
////////int2fp (lamb1, 10'b1101001000, 8'b1110111);
//////int2fp (clamb, c, 0);
//////int2fp (flamb, f, 0);
//////
//////int2fp (sub2, 1, 0);
//////
//////fpmult f1 (lambda1, clamb, lamb1);
//////fpmult f2 (lambda2, flamb, lamb1);
//////
//////fpadd a1(sub1, sub2, {~lambda1[17],lambda1[16:0]});
////////fpadd a2(sub3, lambda3, {~lambda2[17],lambda2[16:0]});
//////
//////assign out = flamb;
//////
//////always @(posedge clock)
//////begin
////// if (reset)
////// begin
////// stallOUT <= 1'b0;
//////
////// fragment_x <= 10'd0;
////// fragment_y <= 10'd0;
////// fragment_c <= 16'b0;
//////
////// xMin <= 10'b0;
////// xMax <= 10'b0;
//////
////// yMin <= 10'b0;
////// yMax <= 10'b0;
//////
////// setup_counter <= 2'b00;
////// end
//////
////// else if (stallOUT & !stallIN)
////// begin
////// if (fragment_y < yMax)
////// begin
////// if (fragment_x < xMax)
////// begin
////// stallOUT <= 1'b1;
//////
////// fragment_x <= fragment_x + 10'd1;
////// fragment_y <= fragment_y;
//////
////// xMin <= xMin;
////// xMax <= xMax;
//////
////// yMin <= yMin;
////// yMax <= yMax;
//////
////// if (lambda1[17] == 0 & lambda2[17] == 0 & lambda3[17] == 0)
////// fragment_c <= 16'b0000000000111111;
////// else
////// fragment_c <= 16'b0;
////// end
//////
////// else
////// begin
////// fragment_y <= fragment_y + 1'b1;
////// fragment_x <= xMin;
////// fragment_c <= fragment_c;
//////
////// stallOUT <= 1'b1;
//////
////// xMin <= xMin;
////// xMax <= xMax;
//////
////// yMin <= yMin;
////// yMax <= yMax;
//////
////// end
////// end
//////
////// else
////// begin
////// stallOUT <= 1'b0;
//////
////// fragment_x <= fragment_x;
////// fragment_y <= fragment_y;
////// fragment_c <= 16'b0;
//////
////// xMin <= xMin;
////// xMax <= xMax;
//////
////// yMin <= yMin;
////// yMax <= yMax;
////// end
////// end
//////
////// else if (stallOUT & stallIN)
////// begin
////// stallOUT <= stallOUT;
////// fragment_x <= fragment_x;
////// fragment_y <= fragment_y;
////// fragment_c <= fragment_c;
////// ////// xMin <= xMin;
////// xMax <= xMax;
//////
////// yMin <= yMin;
////// yMax <= yMax;
////// end
//////
////// //eventually do culling test here
////// //for now do every triangle
////// //need to set up to start incrementing here
////// else
////// begin
////// if (setup_counter == 2'b00)
////// begin
////// //xmax
////// if (vertex1_x > vertex2_x & vertex1_x > vertex3_x)
////// xMax <= vertex1_x;
//////
////// else if (vertex2_x > vertex1_x & vertex2_x > vertex3_x)
////// xMax <= vertex2_x;
//////
////// else
////// xMax <= vertex3_x;
//////
////// //xmin
////// if (vertex1_x < vertex2_x & vertex1_x < vertex3_x)
////// begin
////// xMin <= vertex1_x;
////// fragment_x <= vertex1_x;
////// end
//////
////// else if (vertex2_x < vertex1_x & vertex2_x < vertex3_x)
////// begin
////// xMin <= vertex2_x;
////// fragment_x <= vertex2_x;
////// end
//////
////// else
////// begin
////// xMin <= vertex3_x;
////// fragment_x <= vertex3_x;
////// end
//////
////// //ymax
////// if (vertex1_y > vertex2_y & vertex1_y > vertex3_y)
////// yMax <= vertex1_y;
//////
////// else if (vertex2_y > vertex1_y & vertex2_y > vertex3_y)
////// yMax <= vertex2_y;
//////
////// else
////// yMax <= vertex3_y;
//////
////// //ymin
////// if (vertex1_y < vertex2_y & vertex1_y < vertex3_y)
////// begin
////// yMin <= vertex1_y;
////// fragment_y <= vertex1_y;
////// end
//////
////// else if (vertex2_y < vertex1_y & vertex2_y < vertex3_y)
////// begin
////// yMin <= vertex2_y;
////// fragment_y <= vertex2_y;
////// end
//////
////// else
////// begin
////// yMin <= vertex3_y;
////// fragment_y <= vertex3_y;
////// end
//////
////// //if (det < 0)
////// // stallOUT <= 1'b0;
////// //else
////// // stallOUT <= 1'b1;
//////
////// fragment_c <= 16'b0000000000111111;
//////
////// setup_counter <= 2'b01;
////// end
////// else if (setup_counter == 2'b01)
////// begin
////// //det <= det1 - det2;
////// c <= a - b;
////// f <= e - d;
//////
////// setup_counter <= 2'b10;
////// end
//////
////// else if (setup_counter == 2'b10)
////// begin
////// lambda3 <= sub1;
////// setup_counter <= 2'b11;
////// end
//////
////// else
////// begin
////// //lambda3 <= sub3;
////// stallOUT <= 1'b1;
////// setup_counter <= 2'b00;
////// end
////// end
//////end
//////
//////endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -