(1) What does the boolean expression (NOT ((((NOT X) AND Y) OR (X AND Y)) AND (((NOT X) AND (NOT Y)) OR (X AND (NOT Y)))) i.e. ((x'.y + x.y).(x'.y' + x.y'))' simplify into? Give the truth table for this function. (2) Draw a logic circuit with AND, OR and NOT gates to implement the following truth table. In addition to using the inputs i, s0 and s1, you may also feed hardwired 1's and 0's to any of the gates' inputs, if that is what is required to implement this truth table. i s0 s1 || o0 o1 o2 o3 ----------------------- 0 0 0 || 0 0 0 0 0 0 1 || 0 0 0 0 0 1 0 || 0 0 0 0 0 1 1 || 0 0 0 0 1 0 0 || 1 0 0 0 1 0 1 || 0 0 1 0 1 1 0 || 0 1 0 0 1 1 1 || 0 0 0 1 Give a Boolean expression for each of the outputs o0, o1, o2 and o3 in terms of the inputs i, s0 and s1. Extra Credt: Can you describe in a few words what this circuit does? (Hint: How do the outputs o0, o1 and o2 relate to the inputs i, s0 and s1?) (3) A gate is called "universal" if you can implement any boolean function with only gates of that kind. In this problem, you will show that the NAND gate is universal. Recall that since we already know that together, AND, OR, and NOT gates are universal, all we need to do is show how to make these three gates out of NAND gates. The NAND gate has the following truth table: X Y || NAND(X,Y) -------------------- 0 0 || 1 0 1 || 1 1 0 || 1 1 1 || 0 You can draw a NAND gate as just a box with "NAND" written inside. (a) Make a NOT gate out of a NAND gate. Recall that you can "hard wire" an input to a NAND gate to always be 0 or always be 1. (b) Make an AND gate out of NAND gates. You might want to use what you did in part (a) here. (c) Make an OR gate out of NAND gates. Again, part (a) will be helpful. You've just shown how to make a circuit for *any* truth table out of just NAND gates! (4) A "transistor" is just a gate with the following truth table: X Y || T(X,Y) ------------------ 0 0 || 0 0 1 || 1 1 0 || 0 1 1 || 0 Note that the transistor is a little different from the gates we've seen so far, because it is "asymmetric." It treats its two inputs differently, unlike AND, OR, and NAND gates. In what follows, it is worthwhile to have some intuition into transistors. The output of the transistor is just equal to Y, unless it is "blocked" by X: that is, if X is 1, then the output is always zero. Otherwise, the output is just Y. Show that transistors can be used to implement any boolean function, ie, a transistor is "universal". Hints: i) You may need more than 1 transistor. ii) You are allowed to use inputs that are always fixed at either 0 or 1