Lab 4: Flip-flop Flavors
Background
In the lectures, we have discussed the different types of flip-flops, as shown in the figure.
Connecting with other classes, flip-flops are more generally considered bistable multivibrators! They have two stable states and can switch between them based on input signals. The only two conditions to become a fully functioning flip-flop useful to implement any synchronous circuit is to be triggerable relative to a clock signal, and to be able to switch states between 1 and 0 (flip-flopping).
The characteristic tables of each flavor is as follows:
D | Q(t+1) |
---|---|
0 | 0 |
1 | 1 |
J | K | Q(t+1) |
---|---|---|
0 | 0 | Q(t) |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | Q'(t) |
T | Q(t+1) |
---|---|
0 | Q(t) |
1 | Q'(t) |
S | R | Q(t+1) |
---|---|---|
0 | 0 | Q(t) |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | Undefined/Invalid |
Instructions
Due to the fact that flip-flops only need to be able to switch between 1 and 0 to be able to implement any logic, it is possible to create any flip-flop flavor from any other flip-flop flavor. For this assignment, you are asked to implement D flip-flops using the three other flavors of flip-flops.
- Download the Lab 4 template in UVLe.
- Inside the dffButJK block, implement a D flip-flop with a JK flip-flop.
- Inside the dffButT block, implement a D flip-flop with a T flip-flop.
- Inside the dffButSR block, implement a D flip-flop with a SR flip-flop.
Notes
- Again, do not move any input or output pins in the template.