Download presentation
Presentation is loading. Please wait.
1
Lecture 11 Registers and Counters
Registers can be formed by a group of D flip-flops with a common clock. Chap 12
2
Data Transfer btw Registers
Bus is a group of wires. Load: write control Chap 12
3
Register with Tri-State Output
Physically connected, electrically disconnected. Chap 12
4
Tri-State Bus Physically connected, electrically disconnected. LdH
Chap 12
5
Accumulator Accumulator is a register. One operand is in the accumulator. Ad signal is used to load the adder outputs into the Acc FF on the rising clock edge. Chap 12
6
An Accumulator Cell How to load the first operand?
Ld is used to select y which is loaded into the accumulator flip-flop. Chap 12
7
Shift Registers Right shift
When enabled, shift occurs on the rising edge. The output loaded into each FF is the value before the rising clock edge because of the propagation delay. Chap 12
8
Shift Register Timing The output loaded into each FF is the value before the rising clock edge If initial value = 0101, and serial input = 1101, then > > 2 1 4 6 7 3 5 Chap 12
9
Parallel-in Parallel-out Right Shift Register
All 4 bits can be loaded or read out at the same time. Chap 12
10
Parallel-in Parallel-out Right Shift Register
Next state table Next state equation Q3+ = sh’L’Q3 + sh’L.D3 + sh.SI Chap 12
11
Shift Register with Feedback
Initial state = 000 After the rising clock edge, the state is 100 If the register is in 010, the next state is 101. Not in the main loop. This is a counter. Chap 12
12
Synchronous Counter Synchronous counter
FFs are synchronized by a common input pulse. Example: Construct a binary counter using three T FF to count pulses. 000, 001, 010, 011, 100, 101, 110, 111, 000 ….. Chap 12
13
Synchronous Binary Counter
000, 001, 010, 011, 100, 101, 110, 111, 000 ….. TC, TB, TA A changes whenever a rising clock edge occurs. B changes when A = 1. C changes when B = 1 and A = 1 and a rising clock edge occurs. Chap 12
14
Synchronous Binary Counter
Using a state table to design the counter. Whenever A and A+ differs, FF A must change state, thus TA = 1 If B and B+ differs, TB = 1, etc. If CBA = 011, C+B+A+ = 100, then TCTBTA = 111. (TC = f (A,B,C), etc) That is, if T FF changes state (Q+ ≠Q), T must be 1. Chap 12
15
Synchronous Binary Counter (cont.)
TC, TB, TA (flip flop inputs) as function of A,B,C Because we have A, B, C as they are, TA, TB, TC are the results of (A,B,C) in order to get what we want in A+, B+, C+). Therefore TA, TB, TC are functions of A, B, C. Consider TA, TB, TC as multiple output From K-map :TC= BA, TB = A, TA = 1 Chap 12
16
000 to 111 counter Use D FFs DA = A+ = A’ DB = B+ = B xor A
DC = C+ = C xor BA B changes state when A=1 C changes state when AB = 1 Chap 12
17
Binary Counter with D FFs
DA = A+ = A’ = 1 xor A DB = B+ = B xor A DC = C+ = C xor BA C changes state when AB = 1 Chap 12
18
Up-Down Counter State transition Use D FFs
U and D can not both equal 1 at the same time. For D=1, B changes state when A = 0 For U=1, B changes state when A = 1 Chap 12
19
Up-Down Counter Construct a truth table A+ = function (C, B, A, U, D)
Then simplify this function for A+ Or observe the table: When U = 1 or D = 1, A+ = A’. When U = 0, D = 0, A remains unchanged. Thus A+ = A’U + A’D + AU’D’ Or A+ = A’(U +D) + A(U+D)’ U = 1 or D = 1, A+ = A’. U = 0 and D = 0, A+ = A. Chap 12
20
Up-Down Counter DA = A+ = A xor (U + D) DB = B+ = B xor (UA + DA’)
DC = C+ = C xor (UBA + DB’A’) Homework: find B+ and C+. When D or U =1, change State. Chap 12
21
Loadable Counter When Load (Ld=1), data is loaded into the counter on the rising clock edge. When Ct = 1, the counter is incremented on the rising clock edge. Ld’Ct changes state. Chap 12
22
Loadable Counter When Ld=1, Dins are selected and clocked in since the output of each AND gate is 0. When Ct =1, Ld=0, it becomes equivalent to the UP counter. DA = A+ =(Ld’.A + Ld.DAin) xor Ld’.Ct DB = B+ =(Ld’.B + Ld.DBin) xor Ld’.CtA DC = C+ =(Ld’.C + Ld.DCin) xor Ld’.CtAB Chap 12 Ld’.Ct
23
Counters with Non-Binary Sequence
State graph The next state of 000 is 100. 001 has no next state from the graph. Chap 12
24
Counters with Non-Binary Sequence (cont.)
Alternatively, we use Next-state maps (Q+) to find TC, TB, TA. In C+ map (000), when C = 0, C+ =1, so TC = 1. T = 1 whenever Q+ ≠ Q. Chap 12
25
Counters with Non-Binary Sequence (cont.)
Using clocked T FF. Next-state maps T = 1 whenever Q+ ≠ Q, which means T = Q+ ⊕ Q. T = Q+ T = (Q+)’ Chap 12
26
Counters with Non-Binary Sequence (cont.)
The resultant circuit and timing diagram. Chap 12
27
Counters with Non-Binary Sequence (cont.)
Summary of procedure Form a state table of Q and Q+ Plot Q+ map with respect to Q. Plot T map w.r.t Q. TQ map is formed from the Q+ map by complementing the Q = 1 entries and leaving Q = 0 entries unchanged. Find input equation of each T using the TQ map. Chap 12
28
Counter Using S-R FF S-R Table Problem ( the same counter)
Get SA from Table 12-5 (c) Chap 12
29
Counter Using S-R FF Get K-map ( of SA, RA, etc) from state table.
Problem ( the same counter Fig 12-21) Chap 12
30
Counter Using Clocked J-K FF
Procedure is similar to S-R FF. Chap 12
31
Counter Using Clocked J-K FF (cont.)
Find J-K input equations Chap 12
32
n-bit register module regn (D, Clock, Resetn, Q); parameter n = 16;
input [n-1:0] D; input Clock, Resetn; output reg [n-1:0] Q; Resetn, posedge Clock) if (!Resetn) Q <= 0; else Q <= D; endmodule Naming: Resetn 16 bits here Asynchronous clear
33
Shift Register module shift4 (R, L, Din, Clock, Q); input [3:0] R;
DFF 2 Q2 DFF 3 D Q3 DFF 0 Q1 Din Q0 module shift4 (R, L, Din, Clock, Q); input [3:0] R; input L, Din, Clock; output reg [3:0] Q; Clock) if (L) Q <= R; else begin Q[0] <= Q[1]; Q[1] <= Q[2]; Q[2] <= Q[3]; Q[3] <= Din; end endmodule L: load register with input. Non-blocking statements, so that value before clock edge is shifted into the destination bit, at the end of the always block.
34
Up Counter with enable module upcount (Resetn, Clock, E, Q);
input Resetn, Clock, E; output reg [3:0] Q; Resetn, posedge Clock) if (!Resetn) Q <= 0; else if (E) Q <= Q + 1; endmodule If not reset, at rising edge and enabled, increment the counter by 1
35
Up/down Counter with enable
module UDcount (R, Clock, L, E, up_down, Q); parameter n = 8; input [n-1:0] R; input Clock, L, E, up_down; output reg [n-1:0] Q; Clock) if (L) Q <= R; else if (E) Q <= Q + (up_down ? 1 : -1); endmodule Q <= Q+1 Q <= Q-1
36
FF with an enable module rege (D, Clock, Resetn, E, Q);
input D, Clock, Resetn, E; output reg Q; Clock, negedge Resetn) if (Resetn == 0) Q <= 0; else if (E) Q <= D; endmodule
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.