Binary Counters Lecture L8.3 Section 8.2
Counters 3-Bit Up Counter 3-Bit Down Counter Up-Down Counter
CLK DQ !Q CLK DQ !Q CLK DQ !Q Q0Q0.D Q1 Q2 Q1.D Q2.D s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D Divide-by-8 Counter
s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D Divide-by-8 Counter Q2 Q1 Q Q2.D Q2.D = !Q2 & Q1 & Q0 # Q2 & !Q1 # Q2 & !Q0
s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D Divide-by-8 Counter Q2 Q1 Q Q1.D Q1.D = !Q1 & Q0 # Q1 & !Q0
s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D Divide-by-8 Counter Q2 Q1 Q Q0.D Q0.D = ! Q0
div8cnt.abl MODULE div8cnt TITLE 'Divide by 8 Counter' 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 Q = [Q2..Q0]; " 3-bit output vector [a,b,c,d,e,f,g] PIN 15,18,23,21,19,14,17 ISTYPE 'com'; " Rightmost (units) 7-segment LED display
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; div8cnt.abl (cont’d) Clock Async clear
test_vectors(CLK -> Q).C. -> 1;.C. -> 2;.C. -> 3;.C. -> 4;.C. -> 5;.C. -> 6;.C. -> 7;.C. -> 0;.C. -> 1;.C. -> 2;.C. -> 3;.C. -> 4; END div8cnt.abl (cont’d)
div8cnt Simulation
Counters 3-Bit Up Counter 3-Bit Down Counter Up-Down Counter
CLK DQ !Q CLK DQ !Q CLK DQ !Q Q0Q0.D Q1 Q2 Q1.D Q2.D s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D 3-Bit Down Counter
Q2 Q1 Q Q2.D Q2.D = !Q2 & !Q1 & !Q0 # Q2 & Q1 # Q2 & Q0 s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D
3-Bit Down Counter Q2 Q1 Q Q1.D Q1.D = !Q1 & !Q0 # Q1 & Q0 s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D
3-Bit Down Counter Q2 Q1 Q Q0.D Q0.D = ! Q0 s s s s s s s s State Q2 Q1 Q0 Q2.D Q1.D Q0.D
Counters 3-Bit Up Counter 3-Bit Down Counter Up-Down Counter
Up-Down Counter Q0 Q1 Q2 clock UD UD = 0: count up UD = 1: count down
Up-Down Counter UD Q2 Q1 Q0 Q2.D Q1.D Q0.D UD Q2 Q1 Q0 Q2.D Q1.D Q0.D Up-CounterDown-Counter
UD Q2 Q1 Q Up-Down Counter Make Karnaugh maps for Q2.D, Q1.D, and Q0.D