OpenCores
URL https://opencores.org/ocsvn/pipelined_fixed_point_elementary_functions/pipelined_fixed_point_elementary_functions/trunk

Subversion Repositories pipelined_fixed_point_elementary_functions

[/] [pipelined_fixed_point_elementary_functions/] [trunk/] [ibniz/] [ibniz.v] - Rev 10

Compare with Previous | Blame | View Log

 
 
module Ibniz_adapter ( clk, rst, 
								iX_video, iY_video,
//								T_in, X_in, Y_in, 
//								V_out,
								oR_video, oG_video, oB_video,
								tumblers, endFrame, dbg_val	);
 
parameter RES_X_H= 1240;
parameter RES_Y_H= 1024;
parameter XY_STEP_H= 7;
parameter RES_X_L= 640;
parameter RES_Y_L= 480;
parameter XY_STEP_L= 8;
 
parameter ENABLE_HEAVIES= 1;
parameter SCENE_COMPILED= -1;//by default all compiled, change if short on LE's
 
input clk;
input rst;
 
input signed [11:0] iX_video;
input signed [11:0] iY_video;
output reg [7:0] oR_video;
output reg [7:0] oG_video;
output reg [7:0] oB_video;
input	[9:0]			tumblers;
input endFrame;
output wire [63:0] dbg_val;
 
wire signed [31:0] T_in;
wire signed [31:0] X_in;
wire signed [31:0] Y_in;
 
wire [31:0] V_out2;
 
wire high_res= 1;
 
reg [15:0] count;
 
assign T_in[15:0]=0;
assign T_in[31:16]=count;
 
wire signed [11:0] x;
wire signed [11:0] y;
assign x= (iX_video- (high_res ? RES_X_H/2 :RES_X_L/2 ));
assign y= (iY_video- (high_res ? RES_Y_H/2 :RES_Y_L/2 ));
 
assign X_in= x<<<(high_res ? XY_STEP_H :XY_STEP_L );
assign Y_in= y<<<(high_res ? XY_STEP_H :XY_STEP_L );
 
wire [31:0] V_out [0:7];
 
 
assign V_out2 = SCENE_COMPILED>=0 ? V_out[SCENE_COMPILED] : 
					tumblers[0] ? 
					(tumblers[1] ? 
						(tumblers[2] ? V_out[7] : V_out[3]) : 
						(tumblers[2] ? V_out[5] : V_out[1]) ) :
					((tumblers[1]&&ENABLE_HEAVIES==1) ? 
						( tumblers[2] ? V_out[6] : V_out[2]) : 
						(tumblers[2] ? V_out[4] : V_out[0]) );
Ibniz_generator1 ig0( clk, rst, tumblers[2:0]==0 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[0] );
Ibniz_generator4 ig1( clk, rst, tumblers[2:0]==1 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[1] );
Ibniz_generator2 ig2( clk, rst, tumblers[2:0]==2 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[2] );
Ibniz_generator3 ig3( clk, rst, tumblers[2:0]==3 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[3] );
Ibniz_generator6 ig4( clk, rst, tumblers[2:0]==4 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[4] );
Ibniz_generator5 ig5( clk, rst, tumblers[2:0]==5 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[5] );
Ibniz_generator7 ig6( clk, rst, tumblers[2:0]==6 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[6] );
Ibniz_generator0 ig7( clk, rst, tumblers[2:0]==7 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[7] );
 
wire signed [15:0] bright= V_out2[15:8];
wire signed [7:0] hue2= V_out2[23:16];
wire signed [7:0] hue1= V_out2[31:24];
wire signed [15:0] C= bright;// -16;
wire signed [15:0] D= (hue1^8'h80) -128;
wire signed [15:0] E= (hue2^8'h80) -128;
wire signed [11:0] B_video= (( 298*C + 409*E + 128) >>> 8);
wire signed [11:0] G_video= (( 298*C - 100*D - 208*E + 128) >>> 8);
wire signed [11:0] R_video= (( 298*C + 516*D + 128) >>> 8);
 
always@(posedge clk or posedge rst)
begin
	if ( rst )
	begin
		count= 0;
	end
	else
	begin
		if ( endFrame )
			count<= count +1;
		//	Y'UV ->RGB
		oR_video= R_video<0 ? 0 : ( R_video>255 ? 255 : R_video);
		oG_video= G_video<0 ? 0 : ( G_video>255 ? 255 : G_video);
		oB_video= B_video<0 ? 0 : ( B_video>255 ? 255 : B_video);
	end
end
endmodule
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.