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

Subversion Repositories alpha_blender

[/] [alpha_blender/] [trunk/] [alpha_blender/] [blender.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 hamidrm
----------------------------------------------------------------------------------
2
-- Engineer: Hamidreza Mehrabian
3
-- Module Name:    Alpha Blender 
4
----------------------------------------------------------------------------------
5
library IEEE;
6
use ieee.std_logic_1164.all;
7
 
8
entity blender is
9
        PORT(
10
                color1 : in STD_LOGIC_VECTOR(15 downto 0);
11
                color2 : in STD_LOGIC_VECTOR(15 downto 0);
12
                alpha : in STD_LOGIC_VECTOR(6 downto 0);
13
                color_out : out STD_LOGIC_VECTOR(15 downto 0)
14
                );
15
end blender;
16
 
17
architecture Behavioral of blender is
18
 
19
--Color 1 (5:6:5)
20
signal r_color1 : std_logic_vector(4 downto 0);
21
signal g_color1 : std_logic_vector(5 downto 0);
22
signal b_color1 : std_logic_vector(4 downto 0);
23
 
24
--Color 2 (5:6:5)
25
signal r_color2 : std_logic_vector(4 downto 0);
26
signal g_color2 : std_logic_vector(5 downto 0);
27
signal b_color2 : std_logic_vector(4 downto 0);
28
 
29
--Temp
30
signal r_temp1, r_temp2, b_temp1, b_temp2 : std_logic_vector(11 downto 0);
31
signal g_temp1, g_temp2 : std_logic_vector(12 downto 0);
32
 
33
signal r_color_res1, r_color_res2 : std_logic_vector(4 downto 0);
34
signal g_color_res1, g_color_res2 : std_logic_vector(5 downto 0);
35
signal b_color_res1, b_color_res2 : std_logic_vector(4 downto 0);
36
 
37
signal c1 : std_logic_vector(3 downto 0);
38
signal c2 : std_logic_vector(4 downto 0);
39
signal c3 : std_logic_vector(3 downto 0);
40
 
41
signal r_res : std_logic_vector(4 downto 0);
42
signal g_res : std_logic_vector(5 downto 0);
43
signal b_res : std_logic_vector(4 downto 0);
44
 
45
signal com_alpha : std_logic_vector(6 downto 0);
46
 
47
component mul5x7 is
48
    Port ( a : in  STD_LOGIC_VECTOR (6 downto 0);
49
           b : in  STD_LOGIC_VECTOR (4 downto 0);
50
           c : out  STD_LOGIC_VECTOR (11 downto 0));
51
end component;
52
 
53
component mul6x7 is
54
    Port ( a : in  STD_LOGIC_VECTOR (6 downto 0);
55
           b : in  STD_LOGIC_VECTOR (5 downto 0);
56
           c : out  STD_LOGIC_VECTOR (12 downto 0));
57
end component;
58
 
59
component full_adder
60
    Port ( a : in  STD_LOGIC;
61
           b : in  STD_LOGIC;
62
           cin : in  STD_LOGIC;
63
           cout : out  STD_LOGIC;
64
           sum : out  STD_LOGIC);
65
end component;
66
 
67
begin
68
 
69
com_alpha <= not alpha(6 downto 0);
70
 
71
r_color1 <= color1(4 downto 0);
72
g_color1 <= color1(10 downto 5);
73
b_color1 <= color1(15 downto 11);
74
 
75
r_color2 <= color2(4 downto 0);
76
g_color2 <= color2(10 downto 5);
77
b_color2 <= color2(15 downto 11);
78
 
79
rf_mul_alpha:
80
        mul5x7 port map (alpha, r_color1, r_temp1);
81
 
82
rb_mul_alpha:
83
        mul5x7 port map (com_alpha, r_color2, r_temp2);
84
 
85
gf_mul_alpha:
86
        mul6x7 port map (alpha, g_color1, g_temp1);
87
 
88
gb_mul_alpha:
89
        mul6x7 port map (com_alpha, g_color2, g_temp2);
90
 
91
bf_mul_alpha:
92
        mul5x7 port map (alpha, b_color1, b_temp1);
93
 
94
bb_mul_alpha:
95
        mul5x7 port map (com_alpha, b_color2, b_temp2);
96
 
97
r_color_res1 <= r_temp1(11 downto 7);
98
r_color_res2 <= r_temp2(11 downto 7);
99
 
100
g_color_res1 <= g_temp1(12 downto 7);
101
g_color_res2 <= g_temp2(12 downto 7);
102
 
103
b_color_res1 <= b_temp1(11 downto 7);
104
b_color_res2 <= b_temp2(11 downto 7);
105
 
106
far11:  full_adder port map (r_color_res1(0), r_color_res2(0), '0'  , c1(0), r_res(0));
107
far12:  full_adder port map (r_color_res1(1), r_color_res2(1), c1(0), c1(1), r_res(1));
108
far13:  full_adder port map (r_color_res1(2), r_color_res2(2), c1(1), c1(2), r_res(2));
109
far14:  full_adder port map (r_color_res1(3), r_color_res2(3), c1(2), c1(3), r_res(3));
110
r_res(4) <= (r_color_res1(4) xor r_color_res2(4)) xor c1(3);
111
 
112
far21:  full_adder port map (g_color_res1(0), g_color_res2(0), '0'  , c2(0), g_res(0));
113
far22:  full_adder port map (g_color_res1(1), g_color_res2(1), c2(0), c2(1), g_res(1));
114
far23:  full_adder port map (g_color_res1(2), g_color_res2(2), c2(1), c2(2), g_res(2));
115
far24:  full_adder port map (g_color_res1(3), g_color_res2(3), c2(2), c2(3), g_res(3));
116
far25:  full_adder port map (g_color_res1(4), g_color_res2(4), c2(3), c2(4), g_res(4));
117
g_res(5) <= (g_color_res1(5) xor g_color_res2(5)) xor c2(4);
118
 
119
far31:  full_adder port map (b_color_res1(0), b_color_res2(0), '0'  , c3(0), b_res(0));
120
far32:  full_adder port map (b_color_res1(1), b_color_res2(1), c3(0), c3(1), b_res(1));
121
far33:  full_adder port map (b_color_res1(2), b_color_res2(2), c3(1), c3(2), b_res(2));
122
far34:  full_adder port map (b_color_res1(3), b_color_res2(3), c3(2), c3(3), b_res(3));
123
b_res(4) <= (b_color_res1(4) xor b_color_res2(4)) xor c3(3);
124
 
125
color_out(4 downto 0) <= r_res;
126
color_out(10 downto 5) <= g_res;
127
color_out(15 downto 11) <= b_res;
128
 
129
end Behavioral;
130
 

powered by: WebSVN 2.1.0

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