I lately came across the need to use a dual edge counter, by this I mean a counter which is counting both on the rising and on the falling edge of the clock.
The limitation is that one has to use only normal single edge sensitive flops, the kind you find in each library.
There are several ways to do this, some easier than others. I would like to show you a specific design which is based on the dual edge flop I described in a previous post.
The figure below depicts the counter:
The counter is made of 2 n-bit arrays of flops. The one operates on the rising edge, the other on the falling edge.