cc_key.v 5.64 KB
////////////////////////////////////////////////////////////////////////
//
// 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