EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——任意分频之战
5 j1 [. B9 t: B8 v2 P0 d9 y# e3 v. r/ I5 Z( y1 L
分频在FPGA的设计中一直都担任着很重要的角色,而说到分频,我相信很多人都已经想到了利用计算器来计算达到想要的时钟频率,但问题是仅仅利用计数器来分频,只可以实现偶数分频,而如果我需要三分频,五分频,七分频等等奇数类分频,那究竟怎么办呢?在这里,让我介绍一个可以实现任意整数分频的方法,这个办法也是同样利用了计数器来计算,当是跟偶数分频不一样的地方是任意整数分频利用了两个计数器来实现。下面我们来看看三分频实现的时序图:
$ G; F* G- x3 o2 ]. R: O 6 X$ f3 A' M" r
由上面的时序图我们可以知道,奇数分频,其实就是通过主时钟信号上沿跟下沿产生一对脉冲信号,然后把两信号相或门就可以得到奇数分频的结果了。 % \" S/ K$ D2 q: d2 G5 s: a/ F
程序代码如下:
3 o/ ^ x$ T- s6 g
; E& M. W7 \" [7 TN代表着需要多少分频,只要把N修改成需要的分频数即可,N>1;
9 k f( C' |" o
) k+ Z; L) |. h5 |# C1 f# {" T. ]
; i Q2 b+ \' z( j0 k. J$ x# k仿真代码如下: 仿真波形图: 由上图可以发现,奇数分频的占空是50%, clk是的周期是20ns,而out_clk的周期20+40=60ns,达到了三分频的目标。 ; j" c# R. P |5 M- t. B
现在把N设置成4,仿真代码如下:
; T6 g% A/ {5 t7 U0 Z7 b4 o仿真波形图: : u( }; o8 u# D+ r5 i& w5 k
由上图可以发现,奇数分频的占空是50%,而偶数分频却不是50%,但偶数分频的目的也是达到了,clk是的周期是20ns,而out_clk的周期20+60=80ns,达到了四分频的目标。 2 N8 G, f* N/ A! g& c, z
|