-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcofi.sv
55 lines (46 loc) · 1.3 KB
/
cofi.sv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Composite-like horizontal blending by Kitrinx
module cofi (
input clk,
input pix_ce,
input enable,
input hblank,
input vblank,
input hs,
input vs,
input [5:0] red,
input [5:0] green,
input [5:0] blue,
output reg hblank_out,
output reg vblank_out,
output reg hs_out,
output reg vs_out,
output reg [5:0] red_out,
output reg [5:0] green_out,
output reg [5:0] blue_out
);
function bit [5:0] color_blend (
input [5:0] color_prev,
input [5:0] color_curr,
input blank_last
);
begin
color_blend = blank_last ? color_curr : (color_prev >> 1) + (color_curr >> 1);
end
endfunction
reg [5:0] red_last;
reg [5:0] green_last;
reg [5:0] blue_last;
wire ce = enable ? pix_ce : 1'b1;
always @(posedge clk) if (ce) begin
hblank_out <= hblank;
vblank_out <= vblank;
vs_out <= vs;
hs_out <= hs;
red_last <= red;
blue_last <= blue;
green_last <= green;
red_out <= enable ? color_blend(red_last, red, hblank_out) : red;
blue_out <= enable ? color_blend(blue_last, blue, hblank_out) : blue;
green_out <= enable ? color_blend(green_last, green, hblank_out) : green;
end
endmodule