/* * 74503 SAR emulator, on an ATF750C */ Name 74503-F750C; Partno 74503; Revision 01; Date 5/23/2015; Designer Daniel Steck; Company University of Oregon; Location None; Assembly None; Device v750c; /*** inputs ***/ pin 1 = CP; /* clock pulse (trig on rising edge) */ pin 2 = !S; /* start low */ pin 3 = Din; /* data */ pin 4 = !E; /* enable low */ /*** outputs ***/ pin 14 = !CC; /* conversion complete low */ pin [15..22] = [Q0..Q7]; /* 8-bit output */ pin 23 = !Q7copy; /* inverted copy of Q7 */ /*** internal nodes ***/ node P7; node [C0..C2]; /*** intermediate counter variables ***/ C0.D = S # !(!C2 & !C1 & !C0) & !C0 # !E; C1.D = S # !(C1 & !C0) & C1 # C2 & !C1 & !C0 # !E; C2.D = S # !(C2 & !C1 & !C0) & C2 # !E; /*** register inputs ***/ CC.D = !(S # !(!C2 & !C1 & !C0) & !CC); P7.D = !S & (C2 & C1 & C0 & Din # !(C2 & C1 & C0) & P7) & E; Q6.D = S # ( C2 & C1 & !C0 & Din # !( C2 & C1 & !C0) & Q6) & !( C2 & C1 & C0); Q5.D = S # ( C2 & !C1 & C0 & Din # !( C2 & !C1 & C0) & Q5) & !( C2 & C1 & !C0); Q4.D = S # ( C2 & !C1 & !C0 & Din # !( C2 & !C1 & !C0) & Q4) & !( C2 & !C1 & C0); Q3.D = S # (!C2 & C1 & C0 & Din # !(!C2 & C1 & C0) & Q3) & !( C2 & !C1 & !C0); Q2.D = S # (!C2 & C1 & !C0 & Din # !(!C2 & C1 & !C0) & Q2) & !(!C2 & C1 & C0); Q1.D = S # (!C2 & !C1 & C0 & Din # !(!C2 & !C1 & C0) & Q1) & !(!C2 & C1 & !C0); Q0.D = S # (!C2 & !C1 & !C0 & !CC & Din # !(!C2 & !C1 & !C0 & !CC) & Q0) & !(!C2 & !C1 & C0); /*** combinatorial outputs ***/ Q7 = !E # P7; Q7copy = Q7; /*** handle flip-flop variables set/preset inputs ***/ CC.ar = 'b'0; C2.ar = 'b'0; C1.ar = 'b'0; C0.ar = 'b'0; P7.ar = 'b'0; Q6.ar = 'b'0; Q5.ar = 'b'0; Q4.ar = 'b'0; Q3.ar = 'b'0; Q2.ar = 'b'0; Q1.ar = 'b'0; Q0.ar = 'b'0; CC.sp = 'b'0; C2.sp = 'b'0; C1.sp = 'b'0; C0.sp = 'b'0; P7.sp = 'b'0; Q6.sp = 'b'0; Q5.sp = 'b'0; Q4.sp = 'b'0; Q3.sp = 'b'0; Q2.sp = 'b'0; Q1.sp = 'b'0; Q0.sp = 'b'0; /*** flip-flop-clock multiplexer (use input clock pin) ***/ CC.ckmux = CP; C2.ckmux = CP; C1.ckmux = CP; C0.ckmux = CP; P7.ckmux = CP; Q6.ckmux = CP; Q5.ckmux = CP; Q4.ckmux = CP; Q3.ckmux = CP; Q2.ckmux = CP; Q1.ckmux = CP; Q0.ckmux = CP;