/* * * This is a 39V18 example using Buried SLMCs for functions * which have no need for an output pin. * */ DEVICE 39V18; TITLE 4 BIT CASCADABLE ADDER; NAME TRANSLATED FROM EXAMPLE IN LATTICE GAL HANDBOOK PAGE 5-59; SIGNATURE 4BIT_ADD; /* A INPUTS */ PIN 2 = A0; PIN 3 = A1; PIN 4 = A2; PIN 5 = A3; /* B INPUTS */ PIN 6 = B0; PIN 7 = B1; PIN 8 = B2; PIN 9 = B3; /* CARRY IN AND OUT */ PIN 10 = CIN; PIN 23 = COUT; /* INTERMEDIATE CARRIES */ NODE 25 = C3; NODE 26 = C2; NODE 27 = C1; /* SUM OUTPUTS */ PIN 22 = S3; PIN 21 = S2; PIN 20 = S1; PIN 19 = S0; PIN 11 = RESET; /* EQUATIONS */ C1 = A0 & B0 | ( A0 | B0 ) & CIN; /* INTERMEDIATE CARRY */ C2 = A1 & B1 | ( A1 | B1 ) & C1; /* INTERMEDIATE CARRY */ C3 = A2 & B2 | ( A2 | B2 ) & C2; /* INTERMEDIATE CARRY */ COUT = A3 & B3 | ( A3 | B3 ) & C3; /* CARRY OUTPUT */ /* * * These equations are inverted to compensate for the inversion * of the 39V18's output buffers. * */ !S0.D = ( A0 & !B0 & !CIN | !A0 & B0 & !CIN | !A0 & !B0 & CIN | A0 & B0 & CIN ) & !RESET; /* LSB OF 4 BIT SUM */ !S1.D = ( A1 & !B1 & !C1 | !A1 & B1 & !C1 | !A1 & !B1 & C1 | A1 & B1 & C1 ) & !RESET; !S2.D = ( A2 & !B2 & !C2 | !A2 & B2 & !C2 | !A2 & !B2 & C2 | A2 & B2 & C2 ) & !RESET; !S3.D = ( A3 & !B3 & !C3 | !A3 & B3 & !C3 | !A3 & !B3 & C3 | A3 & B3 & C3 ) & !RESET; /* MSB OF 4 BIT SUM */