bl_div.v 8.17 KB
////////////////////////////////////////////////////////////////////////
//
// Project Reality
//
// module:	bl_div
// description:	Divider for blend unit.
//
// designer:	Phil Gossett
// date:	8/11/94
//
////////////////////////////////////////////////////////////////////////

module bl_div (n, d, q);

input [10:0] n;	// 0.11
input [3:0] d;	// 1.3

wire [3:0] d_l;
wire [2:0] p0s;
wire [1:0] p0c;
wire [2:0] p1s;
wire [2:0] p1c;
wire [2:0] z2s;
wire [2:0] w2s;
wire [2:0] p2s;
wire [3:0] z2c;
wire [3:0] w2c;
wire [2:0] z3s;
wire [2:0] w3s;
wire [2:0] p3s;
wire [3:0] z3c;
wire [3:0] w3c;
wire [2:0] z4s;
wire [2:0] w4s;
wire [2:0] p4s;
wire [3:0] z4c;
wire [3:0] w4c;
wire [2:0] z5s;
wire [2:0] w5s;
wire [2:0] p5s;
wire [3:0] z5c;
wire [3:0] w5c;
wire [2:0] z6s;
wire [2:0] w6s;
wire [2:0] p6s;
wire [3:0] z6c;
wire [3:0] w6c;
wire [2:0] z7s;
wire [2:0] w7s;
wire [2:0] p7s;
wire [3:0] z7c;
wire [3:0] w7c;
wire [3:0] z8c;
wire [3:0] w8c;

output [7:0] q;	// 0.8

in01d4  din0  (.i(d[0]), .zn(d_l[0]));
in01d4  din1  (.i(d[1]), .zn(d_l[1]));
in01d4  din2  (.i(d[2]), .zn(d_l[2]));
in01d4  din3  (.i(d[3]), .zn(d_l[3]));

xo02d1h d0s0  (               .a1(d[0]), .a2(  n[8]), .z(p0s[0]));
or02d1  d0c0  (             .a1(d_l[0]), .a2(  n[8]),              .z(p0c[0]));
ad01d1h d0s1  (.ci(p0c[0]),  .a(d_l[1]),  .b(  n[9]), .s(p0s[1]), .co(p0c[1]));
ad01d1h d0s2  (.ci(p0c[1]),  .a(d_l[2]),  .b( n[10]), .s(p0s[2]));

xo02d1h d1s0  (               .a1(d[0]), .a2(  n[7]), .z(p1s[0]));
an02d1h d1c0  (               .a1(d[0]), .a2(  n[7]),              .z(p1c[0]));
ad01d1h d1s1  (.ci(p1c[0]),    .a(d[1]),  .b(p0s[0]), .s(p1s[1]), .co(p1c[1]));
ad01d1h d1s2  (.ci(p1c[1]),    .a(d[2]),  .b(p0s[1]), .s(p1s[2]), .co(p1c[2]));
ad01d1h d1s3  (.ci(p1c[2]),    .a(d[3]),  .b(p0s[2]),             .co(  q[7]));

xo02d1h d2s0  (               .a1(d[0]), .a2(  n[6]), .z(p2s[0]));
assign z2s[0] = p2s[0];
assign w2s[0] = p2s[0];
an02d1h d2c00 (               .a1(d[0]), .a2(  n[6]),              .z(z2c[0]));
ad01d1h d2s10 (.ci(z2c[0]),    .a(d[1]),  .b(p1s[0]), .s(z2s[1]), .co(z2c[1]));
ad01d1h d2s20 (.ci(z2c[1]),    .a(d[2]),  .b(p1s[1]), .s(z2s[2]), .co(z2c[2]));
ad01d1h d2s30 (.ci(z2c[2]),    .a(d[3]),  .b(p1s[2]),             .co(z2c[3]));
or02d1  d2c01 (             .a1(d_l[0]), .a2(  n[6]),              .z(w2c[0]));
ad01d1h d2s11 (.ci(w2c[0]),  .a(d_l[1]),  .b(p1s[0]), .s(w2s[1]), .co(w2c[1]));
ad01d1h d2s21 (.ci(w2c[1]),  .a(d_l[2]),  .b(p1s[1]), .s(w2s[2]), .co(w2c[2]));
ad01d1h d2s31 (.ci(w2c[2]),  .a(d_l[3]),  .b(p1s[2]),             .co(w2c[3]));
mx21d1h d2m1  ( .s(  q[7]), .i0(z2s[1]), .i1(w2s[1]), .z(p2s[1]));
mx21d1h d2m2  ( .s(  q[7]), .i0(z2s[2]), .i1(w2s[2]), .z(p2s[2]));
mx21d1h d2m3  ( .s(  q[7]), .i0(z2c[3]), .i1(w2c[3]),              .z(  q[6]));

xo02d1h d3s0  (               .a1(d[0]), .a2(  n[5]), .z(p3s[0]));
assign z3s[0] = p3s[0];
assign w3s[0] = p3s[0];
an02d1h d3c00 (               .a1(d[0]), .a2(  n[5]),              .z(z3c[0]));
ad01d1h d3s10 (.ci(z3c[0]),    .a(d[1]),  .b(p2s[0]), .s(z3s[1]), .co(z3c[1]));
ad01d1h d3s20 (.ci(z3c[1]),    .a(d[2]),  .b(p2s[1]), .s(z3s[2]), .co(z3c[2]));
ad01d1h d3s30 (.ci(z3c[2]),    .a(d[3]),  .b(p2s[2]),             .co(z3c[3]));
or02d1  d3c01 (             .a1(d_l[0]), .a2(  n[5]),              .z(w3c[0]));
ad01d1h d3s11 (.ci(w3c[0]),  .a(d_l[1]),  .b(p2s[0]), .s(w3s[1]), .co(w3c[1]));
ad01d1h d3s21 (.ci(w3c[1]),  .a(d_l[2]),  .b(p2s[1]), .s(w3s[2]), .co(w3c[2]));
ad01d1h d3s31 (.ci(w3c[2]),  .a(d_l[3]),  .b(p2s[2]),             .co(w3c[3]));
mx21d1h d3m1  ( .s(  q[6]), .i0(z3s[1]), .i1(w3s[1]), .z(p3s[1]));
mx21d1h d3m2  ( .s(  q[6]), .i0(z3s[2]), .i1(w3s[2]), .z(p3s[2]));
mx21d1h d3m3  ( .s(  q[6]), .i0(z3c[3]), .i1(w3c[3]),              .z(  q[5]));

xo02d1h d4s0  (               .a1(d[0]), .a2(  n[4]), .z(p4s[0]));
assign z4s[0] = p4s[0];
assign w4s[0] = p4s[0];
an02d1h d4c00 (               .a1(d[0]), .a2(  n[4]),              .z(z4c[0]));
ad01d1h d4s10 (.ci(z4c[0]),    .a(d[1]),  .b(p3s[0]), .s(z4s[1]), .co(z4c[1]));
ad01d1h d4s20 (.ci(z4c[1]),    .a(d[2]),  .b(p3s[1]), .s(z4s[2]), .co(z4c[2]));
ad01d1h d4s30 (.ci(z4c[2]),    .a(d[3]),  .b(p3s[2]),             .co(z4c[3]));
or02d1  d4c01 (             .a1(d_l[0]), .a2(  n[4]),              .z(w4c[0]));
ad01d1h d4s11 (.ci(w4c[0]),  .a(d_l[1]),  .b(p3s[0]), .s(w4s[1]), .co(w4c[1]));
ad01d1h d4s21 (.ci(w4c[1]),  .a(d_l[2]),  .b(p3s[1]), .s(w4s[2]), .co(w4c[2]));
ad01d1h d4s31 (.ci(w4c[2]),  .a(d_l[3]),  .b(p3s[2]),             .co(w4c[3]));
mx21d1h d4m1  ( .s(  q[5]), .i0(z4s[1]), .i1(w4s[1]), .z(p4s[1]));
mx21d1h d4m2  ( .s(  q[5]), .i0(z4s[2]), .i1(w4s[2]), .z(p4s[2]));
mx21d1h d4m3  ( .s(  q[5]), .i0(z4c[3]), .i1(w4c[3]),              .z(  q[4]));

xo02d1h d5s0  (               .a1(d[0]), .a2(  n[3]), .z(p5s[0]));
assign z5s[0] = p5s[0];
assign w5s[0] = p5s[0];
an02d1h d5c00 (               .a1(d[0]), .a2(  n[3]),              .z(z5c[0]));
ad01d1h d5s10 (.ci(z5c[0]),    .a(d[1]),  .b(p4s[0]), .s(z5s[1]), .co(z5c[1]));
ad01d1h d5s20 (.ci(z5c[1]),    .a(d[2]),  .b(p4s[1]), .s(z5s[2]), .co(z5c[2]));
ad01d1h d5s30 (.ci(z5c[2]),    .a(d[3]),  .b(p4s[2]),             .co(z5c[3]));
or02d1  d5c01 (             .a1(d_l[0]), .a2(  n[3]),              .z(w5c[0]));
ad01d1h d5s11 (.ci(w5c[0]),  .a(d_l[1]),  .b(p4s[0]), .s(w5s[1]), .co(w5c[1]));
ad01d1h d5s21 (.ci(w5c[1]),  .a(d_l[2]),  .b(p4s[1]), .s(w5s[2]), .co(w5c[2]));
ad01d1h d5s31 (.ci(w5c[2]),  .a(d_l[3]),  .b(p4s[2]),             .co(w5c[3]));
mx21d1h d5m1  ( .s(  q[4]), .i0(z5s[1]), .i1(w5s[1]), .z(p5s[1]));
mx21d1h d5m2  ( .s(  q[4]), .i0(z5s[2]), .i1(w5s[2]), .z(p5s[2]));
mx21d1h d5m3  ( .s(  q[4]), .i0(z5c[3]), .i1(w5c[3]),              .z(  q[3]));

xo02d1h d6s0  (               .a1(d[0]), .a2(  n[2]), .z(p6s[0]));
assign z6s[0] = p6s[0];
assign w6s[0] = p6s[0];
an02d1h d6c00 (               .a1(d[0]), .a2(  n[2]),              .z(z6c[0]));
ad01d1h d6s10 (.ci(z6c[0]),    .a(d[1]),  .b(p5s[0]), .s(z6s[1]), .co(z6c[1]));
ad01d1h d6s20 (.ci(z6c[1]),    .a(d[2]),  .b(p5s[1]), .s(z6s[2]), .co(z6c[2]));
ad01d1h d6s30 (.ci(z6c[2]),    .a(d[3]),  .b(p5s[2]),             .co(z6c[3]));
or02d1  d6c01 (             .a1(d_l[0]), .a2(  n[2]),              .z(w6c[0]));
ad01d1h d6s11 (.ci(w6c[0]),  .a(d_l[1]),  .b(p5s[0]), .s(w6s[1]), .co(w6c[1]));
ad01d1h d6s21 (.ci(w6c[1]),  .a(d_l[2]),  .b(p5s[1]), .s(w6s[2]), .co(w6c[2]));
ad01d1h d6s31 (.ci(w6c[2]),  .a(d_l[3]),  .b(p5s[2]),             .co(w6c[3]));
mx21d1h d6m1  ( .s(  q[3]), .i0(z6s[1]), .i1(w6s[1]), .z(p6s[1]));
mx21d1h d6m2  ( .s(  q[3]), .i0(z6s[2]), .i1(w6s[2]), .z(p6s[2]));
mx21d1h d6m3  ( .s(  q[3]), .i0(z6c[3]), .i1(w6c[3]),              .z(  q[2]));

xo02d1h d7s0  (               .a1(d[0]), .a2(  n[1]), .z(p7s[0]));
assign z7s[0] = p7s[0];
assign w7s[0] = p7s[0];
an02d1h d7c00 (               .a1(d[0]), .a2(  n[1]),              .z(z7c[0]));
ad01d1h d7s10 (.ci(z7c[0]),    .a(d[1]),  .b(p6s[0]), .s(z7s[1]), .co(z7c[1]));
ad01d1h d7s20 (.ci(z7c[1]),    .a(d[2]),  .b(p6s[1]), .s(z7s[2]), .co(z7c[2]));
ad01d1h d7s30 (.ci(z7c[2]),    .a(d[3]),  .b(p6s[2]),             .co(z7c[3]));
or02d1  d7c01 (             .a1(d_l[0]), .a2(  n[1]),              .z(w7c[0]));
ad01d1h d7s11 (.ci(w7c[0]),  .a(d_l[1]),  .b(p6s[0]), .s(w7s[1]), .co(w7c[1]));
ad01d1h d7s21 (.ci(w7c[1]),  .a(d_l[2]),  .b(p6s[1]), .s(w7s[2]), .co(w7c[2]));
ad01d1h d7s31 (.ci(w7c[2]),  .a(d_l[3]),  .b(p6s[2]),             .co(w7c[3]));
mx21d1h d7m1  ( .s(  q[2]), .i0(z7s[1]), .i1(w7s[1]), .z(p7s[1]));
mx21d1h d7m2  ( .s(  q[2]), .i0(z7s[2]), .i1(w7s[2]), .z(p7s[2]));
mx21d1h d7m3  ( .s(  q[2]), .i0(z7c[3]), .i1(w7c[3]),              .z(  q[1]));

an02d1h d8c00 (               .a1(d[0]), .a2(  n[0]),              .z(z8c[0]));
ad01d1h d8s10 (.ci(z8c[0]),    .a(d[1]),  .b(p7s[0]),             .co(z8c[1]));
ad01d1h d8s20 (.ci(z8c[1]),    .a(d[2]),  .b(p7s[1]),             .co(z8c[2]));
ad01d1h d8s30 (.ci(z8c[2]),    .a(d[3]),  .b(p7s[2]),             .co(z8c[3]));
or02d1  d8c01 (             .a1(d_l[0]), .a2(  n[0]),              .z(w8c[0]));
ad01d1h d8s11 (.ci(w8c[0]),  .a(d_l[1]),  .b(p7s[0]),             .co(w8c[1]));
ad01d1h d8s21 (.ci(w8c[1]),  .a(d_l[2]),  .b(p7s[1]),             .co(w8c[2]));
ad01d1h d8s31 (.ci(w8c[2]),  .a(d_l[3]),  .b(p7s[2]),             .co(w8c[3]));
mx21d1h d8m3  ( .s(  q[1]), .i0(z8c[3]), .i1(w8c[3]),              .z(  q[0]));

endmodule // bl_div