80 likes | 103 Views
Learn how to use state Q2, Q1, Q0 as inputs to create arbitrary waveforms using a combinational circuit. Gain insights from example exercises to enhance your understanding.
E N D
Arbitrary Waveforms Lecture L8.5 Section 8.2
State Q2 Q1 Q0 Q2.D Q1.D Q0.D D Q Q0.D Q0 CLK !Q s0 0 0 0 0 0 1 s1 0 0 1 0 1 0 s2 0 1 0 0 1 1 s3 0 1 1 1 0 0 s4 1 0 0 1 0 1 s5 1 0 1 1 1 0 s6 1 1 0 1 1 1 s7 1 1 1 0 0 0 D Q Q1.D Q1 CLK !Q D Q Q2.D Q2 CLK !Q Recall Divide-by-8 Counter Use Q2, Q1, Q0 as inputs to a combinational circuit to produce an arbitrary waveform.
Q1 Q0 1 1 00 01 11 10 Q2 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 Example (See Exercise 7.10) State Q2 Q1 Q0 Q2.D Q1.D Q0.D y s0 0 0 0 0 0 1 1 s1 0 0 1 0 1 0 1 s2 0 1 0 0 1 1 0 s3 0 1 1 1 0 0 0 s4 1 0 0 1 0 1 0 s5 1 0 1 1 1 0 1 s6 1 1 0 1 1 1 0 s7 1 1 1 0 0 0 1 y = !Q2 & !Q1 # Q2 & Q0
waveform.abl MODULE waveform TITLE 'Divide by 8 Counter, waveform' DECLARATIONS hex7seg interface([D3..D0] -> [a,b,c,d,e,f,g]); d7R FUNCTIONAL_BLOCK hex7seg; " INPUT PINS " CLK PIN 12; " 1 Hz clock (jumper) clear PIN 11; " switch 1 " OUTPUT PINS " Q2..Q0 PIN 41,43,44 ISTYPE 'reg'; " LED 14..16 Q = [Q2..Q0]; " 3-bit output vector Y PIN 35 ISTYPE 'com'; " LED 9 [a,b,c,d,e,f,g] PIN 15,18,23,21,19,14,17 ISTYPE 'com'; " Rightmost (units) 7-segment LED display
waveform.abl (cont.) EQUATIONS Q.AR = clear; Q.C = CLK; Q2.D = !Q2 & Q1 & Q0 # Q2 & !Q1 # Q2 & !Q0; Q1.D = !Q1 & Q0 # Q1 & !Q0; Q0.D = !Q0; [a,b,c,d,e,f,g] = d7R.[a,b,c,d,e,f,g]; d7R.[D2..D0] = Q; d7R.D3 = 0; Y = !Q2 & !Q1 # Q2 & Q0;
waveform.abl (cont.) test_vectors(CLK -> [Q,Y]) .C. -> [1,1]; .C. -> [2,0]; .C. -> [3,0]; .C. -> [4,0]; .C. -> [5,1]; .C. -> [6,0]; .C. -> [7,1]; .C. -> [0,1]; .C. -> [1,1]; .C. -> [2,0]; .C. -> [3,0]; .C. -> [4,0]; END