ABSTRACT

The following flip-flop macros are described in this chapter: “latch1” (D latch with active high enable), “latch0” (D latch with active low enable), “dff_r” (rising edge–triggered D flip-flop), “dff_r_SR” (rising edge–triggered D flip-flop with active high preset [S] and clear [R] inputs), “dff_f” (falling edge–triggered D flip-flop), “dff_f_SR” (falling edge–triggered D flip-flop with active high preset [S] and clear [R] inputs), “tff_r” (rising edge–triggered T flip-flop), “tff_r_SR” (rising edge–triggered T flip-flop with active high preset [S] and clear [R] inputs), “tff_f” (falling edge–triggered T flip-flop), “tff_f_SR” (falling edge–triggered T flip-flop with active high preset [S] and clear [R] inputs), “jkff_r” (rising edge–triggered JK flip-flop), “jkff_r_SR” (rising edge–triggered JK flip-flop with active high preset [S] and clear [R] inputs), “jkff_f” (falling edge–triggered JK flip-flop), and “jkff_f_SR” (falling edge–triggered JK flip-flop with active high preset [S] and clear [R] inputs). Flip-flop macros are defined to operate on Boolean (1-bit) variables. 21 examples are provided to show the applications of these flip-flop macros, including the implementation of asynchronous and synchronous counters, and shift registers constructed by using the flip-flop macros.