8分频verilog线_verilog实现简单分频器

偶数分频原理

偶数分频最为简单,很容易用模为N的计数器实现50%占空比的时钟信号,即每次计数满N(计到N-1)时输出时钟信号翻转。

以4分频为例,波形图如下:

奇数分频原理

方法一

使用模为2N+1的计数器,让输出时钟在X-1(X在0到2N-1之间)和2N时各翻转一次,则可得到奇数分频器,但是占空比并不是50%(应为 X/(2N+1))。

得到占空比为50%的奇数分频器的基本思想是:将得到的上升沿触发计数的奇数分频输出信号CLK1,和得到的下降沿触发计数的相同(时钟翻转值相同)奇数分频输出信号CLK2,CLK1和CLK2占空比不是50%而是低电平2周期,高电平1周期。

最后将CLK1和CLK2相或之后输出,就可以得到占空比为50%的奇数分频器。时序图如下,红线就是我们要的50%占空比三分频结果:

方法二

和方法一唯一的区别是,CLK1和CLK2相反,高电平变低电平,低电平变高电平,最终输出的分频时钟是CLK1&CLK2。所以注意区别。波形图如下:

整数数分频原理

总结1和2,设整数位N,当N为偶数时,cnt>1)。这是一个编程的技巧。代码的一些具体技巧我将它放在了代码注释里面,希望大家好好看看。

设计思路

很多人在问我,拿到一个设计的时候如何去找思路。相信这也是很初学者的疑惑。一般推荐按照以下步骤来设计,一步步解决。

1.分解功能模块——分解到每个模块你都是能够想得到办法解决的为止,前期不要练习复杂的模块,推荐练习的有今天的各种分频,以后还可以尝试分数分频,UART,localbus,SPI,IIC这些是我推荐给大家练习的,由易到难。

2.每个分解的最小功能模块画出时序图,就像今天文章里分频的时序图一样,主要是帮你了解到每个时钟周期是怎么工作的,原理上是怎么实现的,时序图一出来,整个思路都清晰了。

3.组合功能模块,保证模块之间的时序是满足要求的,自底向上往上堆,每堆一个模块仿真一下,堆到顶层通过顶层仿真就算初步完成了功能的要求。

设计整数分频

上面说了方法这里我们来试验下

1.分解模块功能,也就是画出总体框图

2.画时序图,每个分频模块的时序图前面已经画过了,奇偶选择没有时序图,就是一个选择开关,奇数分频系数选择奇数分频模块输出,偶数分频系数选择偶数分频输出。

3.拼凑——奇偶分频各写一个alwyas,最后加上奇偶选择,如果不熟悉可以分成两个单独的.v文件写,最后封装到顶层。

完整的代码和仿真文件

密码:ou7x

设计在以上步骤以及完成了,现在我们来看看仿真结果:

7分频

6分频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值