cc_key.v
5.64 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
////////////////////////////////////////////////////////////////////////
//
// Project Reality
//
// module: cc_key
// description: Color key for color combine unit.
//
// designer: Phil Gossett
// date: 9/15/94
//
////////////////////////////////////////////////////////////////////////
module cc_key ( r, g, b, a);
input [16:0] r;
input [16:0] g;
input [16:0] b;
output [7:0] a;
wire or_r;
wire or_g;
wire or_b;
wire [7:0] p_clmp_r;
wire [7:0] p_clmp_g;
wire [7:0] p_clmp_b;
wire r16_l;
wire g16_l;
wire b16_l;
wire [7:0] clmp_r;
wire [7:0] clmp_g;
wire [7:0] clmp_b;
wire rltg;
wire gltb;
wire bltr;
or08d2 orr8 ( .a1(r[ 8]), .a2(r[ 9]), .a3(r[10]), .a4(r[11]),
.a5(r[12]), .a6(r[13]), .a7(r[14]), .a8(r[15]), .z(or_r));
or08d2 org8 ( .a1(g[ 8]), .a2(g[ 9]), .a3(g[10]), .a4(g[11]),
.a5(g[12]), .a6(g[13]), .a7(g[14]), .a8(g[15]), .z(or_g));
or08d2 orb8 ( .a1(b[ 8]), .a2(b[ 9]), .a3(b[10]), .a4(b[11]),
.a5(b[12]), .a6(b[13]), .a7(b[14]), .a8(b[15]), .z(or_b));
or02d1 orr0 ( .a1( or_r), .a2( r[0]), .z(p_clmp_r[0]));
or02d1 orr1 ( .a1( or_r), .a2( r[1]), .z(p_clmp_r[1]));
or02d1 orr2 ( .a1( or_r), .a2( r[2]), .z(p_clmp_r[2]));
or02d1 orr3 ( .a1( or_r), .a2( r[3]), .z(p_clmp_r[3]));
or02d1 orr4 ( .a1( or_r), .a2( r[4]), .z(p_clmp_r[4]));
or02d1 orr5 ( .a1( or_r), .a2( r[5]), .z(p_clmp_r[5]));
or02d1 orr6 ( .a1( or_r), .a2( r[6]), .z(p_clmp_r[6]));
or02d1 orr7 ( .a1( or_r), .a2( r[7]), .z(p_clmp_r[7]));
or02d1 org0 ( .a1( or_g), .a2( g[0]), .z(p_clmp_g[0]));
or02d1 org1 ( .a1( or_g), .a2( g[1]), .z(p_clmp_g[1]));
or02d1 org2 ( .a1( or_g), .a2( g[2]), .z(p_clmp_g[2]));
or02d1 org3 ( .a1( or_g), .a2( g[3]), .z(p_clmp_g[3]));
or02d1 org4 ( .a1( or_g), .a2( g[4]), .z(p_clmp_g[4]));
or02d1 org5 ( .a1( or_g), .a2( g[5]), .z(p_clmp_g[5]));
or02d1 org6 ( .a1( or_g), .a2( g[6]), .z(p_clmp_g[6]));
or02d1 org7 ( .a1( or_g), .a2( g[7]), .z(p_clmp_g[7]));
or02d1 orb0 ( .a1( or_b), .a2( b[0]), .z(p_clmp_b[0]));
or02d1 orb1 ( .a1( or_b), .a2( b[1]), .z(p_clmp_b[1]));
or02d1 orb2 ( .a1( or_b), .a2( b[2]), .z(p_clmp_b[2]));
or02d1 orb3 ( .a1( or_b), .a2( b[3]), .z(p_clmp_b[3]));
or02d1 orb4 ( .a1( or_b), .a2( b[4]), .z(p_clmp_b[4]));
or02d1 orb5 ( .a1( or_b), .a2( b[5]), .z(p_clmp_b[5]));
or02d1 orb6 ( .a1( or_b), .a2( b[6]), .z(p_clmp_b[6]));
or02d1 orb7 ( .a1( or_b), .a2( b[7]), .z(p_clmp_b[7]));
in01d4 ivr ( .i(r[16]), .zn(r16_l));
in01d4 ivg ( .i(g[16]), .zn(g16_l));
in01d4 ivb ( .i(b[16]), .zn(b16_l));
an02d1h anr0 ( .a1(r16_l), .a2(p_clmp_r[0]), .z( clmp_r[0]));
an02d1h anr1 ( .a1(r16_l), .a2(p_clmp_r[1]), .z( clmp_r[1]));
an02d1h anr2 ( .a1(r16_l), .a2(p_clmp_r[2]), .z( clmp_r[2]));
an02d1h anr3 ( .a1(r16_l), .a2(p_clmp_r[3]), .z( clmp_r[3]));
an02d1h anr4 ( .a1(r16_l), .a2(p_clmp_r[4]), .z( clmp_r[4]));
an02d1h anr5 ( .a1(r16_l), .a2(p_clmp_r[5]), .z( clmp_r[5]));
an02d1h anr6 ( .a1(r16_l), .a2(p_clmp_r[6]), .z( clmp_r[6]));
an02d1h anr7 ( .a1(r16_l), .a2(p_clmp_r[7]), .z( clmp_r[7]));
an02d1h ang0 ( .a1(g16_l), .a2(p_clmp_g[0]), .z( clmp_g[0]));
an02d1h ang1 ( .a1(g16_l), .a2(p_clmp_g[1]), .z( clmp_g[1]));
an02d1h ang2 ( .a1(g16_l), .a2(p_clmp_g[2]), .z( clmp_g[2]));
an02d1h ang3 ( .a1(g16_l), .a2(p_clmp_g[3]), .z( clmp_g[3]));
an02d1h ang4 ( .a1(g16_l), .a2(p_clmp_g[4]), .z( clmp_g[4]));
an02d1h ang5 ( .a1(g16_l), .a2(p_clmp_g[5]), .z( clmp_g[5]));
an02d1h ang6 ( .a1(g16_l), .a2(p_clmp_g[6]), .z( clmp_g[6]));
an02d1h ang7 ( .a1(g16_l), .a2(p_clmp_g[7]), .z( clmp_g[7]));
an02d1h anb0 ( .a1(b16_l), .a2(p_clmp_b[0]), .z( clmp_b[0]));
an02d1h anb1 ( .a1(b16_l), .a2(p_clmp_b[1]), .z( clmp_b[1]));
an02d1h anb2 ( .a1(b16_l), .a2(p_clmp_b[2]), .z( clmp_b[2]));
an02d1h anb3 ( .a1(b16_l), .a2(p_clmp_b[3]), .z( clmp_b[3]));
an02d1h anb4 ( .a1(b16_l), .a2(p_clmp_b[4]), .z( clmp_b[4]));
an02d1h anb5 ( .a1(b16_l), .a2(p_clmp_b[5]), .z( clmp_b[5]));
an02d1h anb6 ( .a1(b16_l), .a2(p_clmp_b[6]), .z( clmp_b[6]));
an02d1h anb7 ( .a1(b16_l), .a2(p_clmp_b[7]), .z( clmp_b[7]));
cc_key_gt gtr ( .a(clmp_g), .b(clmp_r), .z(rltg));
cc_key_gt gtg ( .a(clmp_b), .b(clmp_g), .z(gltb));
cc_key_gt gtb ( .a(clmp_r), .b(clmp_b), .z(bltr));
mx81d1h mx0 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[0]), .i1(clmp_b[0]), .i2(clmp_g[0]), .i3(clmp_g[0]),
.i4(clmp_r[0]), .i5(clmp_b[0]), .i6(clmp_r[0]), .i7(1'b0),
.z(a[0]));
mx81d1h mx1 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[1]), .i1(clmp_b[1]), .i2(clmp_g[1]), .i3(clmp_g[1]),
.i4(clmp_r[1]), .i5(clmp_b[1]), .i6(clmp_r[1]), .i7(1'b0),
.z(a[1]));
mx81d1h mx2 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[2]), .i1(clmp_b[2]), .i2(clmp_g[2]), .i3(clmp_g[2]),
.i4(clmp_r[2]), .i5(clmp_b[2]), .i6(clmp_r[2]), .i7(1'b0),
.z(a[2]));
mx81d1h mx3 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[3]), .i1(clmp_b[3]), .i2(clmp_g[3]), .i3(clmp_g[3]),
.i4(clmp_r[3]), .i5(clmp_b[3]), .i6(clmp_r[3]), .i7(1'b0),
.z(a[3]));
mx81d1h mx4 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[4]), .i1(clmp_b[4]), .i2(clmp_g[4]), .i3(clmp_g[4]),
.i4(clmp_r[4]), .i5(clmp_b[4]), .i6(clmp_r[4]), .i7(1'b0),
.z(a[4]));
mx81d1h mx5 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[5]), .i1(clmp_b[5]), .i2(clmp_g[5]), .i3(clmp_g[5]),
.i4(clmp_r[5]), .i5(clmp_b[5]), .i6(clmp_r[5]), .i7(1'b0),
.z(a[5]));
mx81d1h mx6 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[6]), .i1(clmp_b[6]), .i2(clmp_g[6]), .i3(clmp_g[6]),
.i4(clmp_r[6]), .i5(clmp_b[6]), .i6(clmp_r[6]), .i7(1'b0),
.z(a[6]));
mx81d1h mx7 ( .s0(bltr), .s1(gltb), .s2(rltg),
.i0(clmp_r[7]), .i1(clmp_b[7]), .i2(clmp_g[7]), .i3(clmp_g[7]),
.i4(clmp_r[7]), .i5(clmp_b[7]), .i6(clmp_r[7]), .i7(1'b0),
.z(a[7]));
endmodule // cc_key