verilog 简单分频程序
- 偶数分频
最简单二分频,在输入时钟上升沿翻转即可。
N分频(N为偶数),计数器计数到N/2-1翻转。如进行4分频,count=4/2-1=1时翻转,6分频计数器计到2
翻转。程序如下,经过实测验证,正确。
时序如图:可以看出,从36到42是一个周期,6分频(42-36=6)
- 奇数分频
如三分频,对计数器进行模三翻转,即计数到1和2进行翻转,可以得到占空比为1/3或2/3的3分频时钟,程序如下:
时序结果如图所示:三分频,占空比1/3(说明上电默认clkout初值为0)
如若修改clkout初值为1,则占空比为2/3,程序如下:
时序如图:
同理:若要5分频,在计数到3和4翻转,可以得到占空比为1/5或4/5的5分频时钟。
在计数到2和4翻转,可以得到占空比为2/5或3/5的5分频时钟。
程序如下:
时序如下:
若要得到占空比为50%的奇数分频时钟,如占空比为50%的奇数分频时钟,可以这样做,同上,在时钟上升沿触发计数,得到占空比为2/5的5分频时钟,然后按同样的方法在时钟下降沿触发计数,得到占空比为2/5的时钟,然后两个占空比为2/5的时钟相或,即可得到占空比为50%的时钟。
如图所示:从30到50将clk_div4进行5分频得到占空比为50%的时钟,clk1和clk2分别在clk_div4进行上升沿和下降沿计数。
综上,要得到占空比为50的N分频时钟(N为奇数),可以在时钟上升沿计数,在计数到(N-1)/2和(N-1)进行翻转,得到占空比非50%的时钟,再在时钟下降沿计数,同样在计数到(N-1)/2和(N-1)进行翻转,也得到一个时钟,将两个时钟相或,得到占空比为50%的分频时钟。