Counter circuits are very useful for a series of aplications. They can be implemented using the subtractor circuit or with flip-flops. Since the focus here is to increment or decrement a count by 1, it’s much more efficient to use the implementation with flip-flops.

Asynchronous Counters

The simplest way to implement counters is using T flip-flops. The problem with this implementation is that there is a propagation delay in the circuit.

We can also implement a down-counter using the same elements, but we have to connect the flip-flops in a different way.

Synchronous Counters

In order to solve the propagation delay of the asynchronous counters, we can connect all flip-flops to the same clock. Here we control if the flip-flop will change its state based on the state of the previous flip-flops.

We can implement the ability to enable and clear the counters with the simple adition of the enable and the clear control signals to the flip-flops.

Counters with Parallel Load

This type of counters allow us to start the count with an arbitary external value. Here we implement a synchronous counter with D flip-flops and multiplexers. We also have to add the control input Load. When the circuit counts. When the circuit loads a new value from the inputs to the flip-flops.

Reset Synchronization

This type of implementation allow us to reset the count to when the count gets to an specific value. Here we use a synchronous counter with parallel load, its parallel load feature is used to reset the counter when the count reaches, in this case, .

BCD Counter

This type of counter is very interesting because it allows us to code the binary count to decimal representation.