题目描述
请设计一个可以实现任意小数分频的时钟分频器,比如说8.7分频的时钟信号
注意rst为低电平复位
提示:
其实本质上是一个简单的数学问题,即如何使用最小公倍数得到时钟周期的分别频比。
设小数为nn,此处以8.7倍分频的时钟周期为例。
首先,由于不能在硬件上进行小数的运算(比如2.1个时钟这种是不现实的,也不存在3.3个寄存器),小数分频不能做到分频后每个时钟周期都是源时钟的nn倍,也无法实现占空比为1/2,因此,考虑小数分频,其实现方式应当为53个clkout时钟周期是10个clkin时钟周期的8.7倍。
题目解析:
8.7倍分频,即周期变为原来的8.7倍,周期计数不存在0.几个周期,所以需要将87个clk,转换为输出的10个周期,这就实现了8.7倍分频。类似的,小数倍都可以用这种方法。
进一步的,为了使得周期更加接近,且尽量靠近50%的占空比,在这一题里用了拆分输出周期长度的方法,分别以离8.7最近的两个整数8和9,以8个clk和9个clk为周期进行拆分。