⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rasterizer_11_07_2008_18_46.v

📁 Implementation of GPU (Graphics Processing Unit) that rendered triangle based models. Our goal was t
💻 V
📖 第 1 页 / 共 2 页
字号:
////		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 + -