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

Subversion Repositories pipelined_fixed_point_elementary_functions

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 9 to Rev 10
    Reverse comparison

Rev 9 → Rev 10

/pipelined_fixed_point_elementary_functions/trunk/ibniz/ibniz.v
0,0 → 1,100
 
 
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
 

powered by: WebSVN 2.1.0

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