DIV_AsyncDividerBy16 : An asynchronous divide-by-16 frequency divider
A frequency divider produces an output clock with a frequency that is equal to a divided value of the input clock frequency. An asynchronous frequency divider can be realized as a ripple-carry adder based counter, such as a chain of toggle flip-flops. Since each toggle flip-flop adds a clock-to-q delay, the final output clock out may not be well synchronized to the input clock with a known timing relationship. This long, uncertain latency between the input and output of the frequency divider may be undesirable in some timing-sensitive, low-noise applications.
This model describes an asynchronous divide-by-16 frequency divider as a chain of four toggle flip-flops. The parameter delay_cq defines the clock-to-q delay of each toggle flip-flop.
Input/Output Terminals
| Name | I/O | Type | Description |
| out | output | xbit | divided output clock |
| in | input | xbit | input clock |
Parameters
| Name | Type | Default | Description |
| delay_cq | real | 40p | clk-to-q delay of each flip-flop |
List of Children Cells
| BLK_ToggleFF : A toggle flip-flop (T-FF) |
List of Testbenches
| tb_check : A testbench for checking the basic operation of a frequency divider with a fixed-frequency clock input |
tb_check : A testbench for checking the basic operation of a frequency divider with a fixed-frequency clock input
The testbench checks the basic functionality of a frequency divider by applying a fixed-frequency clock to its input in. The frequency divider is expected to produce an output clock of which frequency is a divided value of the input frequency.
Simulation Results
Figure. input and output waveforms.