-- FILE: x_or.adb -- DATE: 7/98 -- AUTHOR: Sy Wong -- AIM: Implementation of exclusive or function with NOR, NAND, INVERT; package body X_OR is procedure update (d: in out device) is unit1: NOR.device; unit2, unit5: INVERT.device; unit3, unit4: NAND.device; begin -- d.data_out:= (d.input1 or d.input2) and not (d.input1 and d.input2); unit1.input1:= d.input1; unit1.input2:= d.input2; NOR.update (unit1); unit2.data_in:= unit1.data_out; INVERT.update (unit2); -- invert NOR function to OR unit3.input1:= d.input1; unit3.input2:= d.input2; NAND.update (unit3); -- not (d.input1 and d.input2) unit4.input1 := unit2.data_out; unit4.input2 := unit3.data_out; NAND.update (unit4); unit5.data_in:= unit4.data_out; INVERT.update (unit5); -- make NAND into AND d.data_out:= unit5.data_out; end update; end X_OR;