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] - Blame information for rev 10

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 10 leshabiruk
 
2
 
3
module Ibniz_adapter ( clk, rst,
4
                                                                iX_video, iY_video,
5
//                                                              T_in, X_in, Y_in, 
6
//                                                              V_out,
7
                                                                oR_video, oG_video, oB_video,
8
                                                                tumblers, endFrame, dbg_val     );
9
 
10
parameter RES_X_H= 1240;
11
parameter RES_Y_H= 1024;
12
parameter XY_STEP_H= 7;
13
parameter RES_X_L= 640;
14
parameter RES_Y_L= 480;
15
parameter XY_STEP_L= 8;
16
 
17
parameter ENABLE_HEAVIES= 1;
18
parameter SCENE_COMPILED= -1;//by default all compiled, change if short on LE's
19
 
20
input clk;
21
input rst;
22
 
23
input signed [11:0] iX_video;
24
input signed [11:0] iY_video;
25
output reg [7:0] oR_video;
26
output reg [7:0] oG_video;
27
output reg [7:0] oB_video;
28
input   [9:0]                    tumblers;
29
input endFrame;
30
output wire [63:0] dbg_val;
31
 
32
wire signed [31:0] T_in;
33
wire signed [31:0] X_in;
34
wire signed [31:0] Y_in;
35
 
36
wire [31:0] V_out2;
37
 
38
wire high_res= 1;
39
 
40
reg [15:0] count;
41
 
42
assign T_in[15:0]=0;
43
assign T_in[31:16]=count;
44
 
45
wire signed [11:0] x;
46
wire signed [11:0] y;
47
assign x= (iX_video- (high_res ? RES_X_H/2 :RES_X_L/2 ));
48
assign y= (iY_video- (high_res ? RES_Y_H/2 :RES_Y_L/2 ));
49
 
50
assign X_in= x<<<(high_res ? XY_STEP_H :XY_STEP_L );
51
assign Y_in= y<<<(high_res ? XY_STEP_H :XY_STEP_L );
52
 
53
wire [31:0] V_out [0:7];
54
 
55
 
56
assign V_out2 = SCENE_COMPILED>=0 ? V_out[SCENE_COMPILED] :
57
                                        tumblers[0] ?
58
                                        (tumblers[1] ?
59
                                                (tumblers[2] ? V_out[7] : V_out[3]) :
60
                                                (tumblers[2] ? V_out[5] : V_out[1]) ) :
61
                                        ((tumblers[1]&&ENABLE_HEAVIES==1) ?
62
                                                ( tumblers[2] ? V_out[6] : V_out[2]) :
63
                                                (tumblers[2] ? V_out[4] : V_out[0]) );
64
Ibniz_generator1 ig0( clk, rst, tumblers[2:0]==0 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[0] );
65
Ibniz_generator4 ig1( clk, rst, tumblers[2:0]==1 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[1] );
66
Ibniz_generator2 ig2( clk, rst, tumblers[2:0]==2 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[2] );
67
Ibniz_generator3 ig3( clk, rst, tumblers[2:0]==3 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[3] );
68
Ibniz_generator6 ig4( clk, rst, tumblers[2:0]==4 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[4] );
69
Ibniz_generator5 ig5( clk, rst, tumblers[2:0]==5 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[5] );
70
Ibniz_generator7 ig6( clk, rst, tumblers[2:0]==6 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[6] );
71
Ibniz_generator0 ig7( clk, rst, tumblers[2:0]==7 || SCENE_COMPILED>=0, T_in, X_in, Y_in, V_out[7] );
72
 
73
wire signed [15:0] bright= V_out2[15:8];
74
wire signed [7:0] hue2= V_out2[23:16];
75
wire signed [7:0] hue1= V_out2[31:24];
76
wire signed [15:0] C= bright;// -16;
77
wire signed [15:0] D= (hue1^8'h80) -128;
78
wire signed [15:0] E= (hue2^8'h80) -128;
79
wire signed [11:0] B_video= (( 298*C + 409*E + 128) >>> 8);
80
wire signed [11:0] G_video= (( 298*C - 100*D - 208*E + 128) >>> 8);
81
wire signed [11:0] R_video= (( 298*C + 516*D + 128) >>> 8);
82
 
83
always@(posedge clk or posedge rst)
84
begin
85
        if ( rst )
86
        begin
87
                count= 0;
88
        end
89
        else
90
        begin
91
                if ( endFrame )
92
                        count<= count +1;
93
                //      Y'UV ->RGB
94
                oR_video= R_video<0 ? 0 : ( R_video>255 ? 255 : R_video);
95
                oG_video= G_video<0 ? 0 : ( G_video>255 ? 255 : G_video);
96
                oB_video= B_video<0 ? 0 : ( B_video>255 ? 255 : B_video);
97
        end
98
end
99
endmodule
100
 

powered by: WebSVN 2.1.0

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