跳至正文

Verilog功能模块——时钟分频

标签:
clkDivider


一. 模块功能与应用场景

模块功能:对输入时钟进行任意倍数分频。

应用场景:

  • 需要对时钟进行分频,而PLL不能满足要求或者使用起来不方便

  • 需要固定倍数关系的时钟

  • 需要运行时不断变化频率的时钟


二. 模块框图与使用说明

clkDivider

使用说明:

  1. 通过输入信号div控制分频系数,输出div_clk = clk / DIV,可实现时钟在线分频。
  2. 如果仅需要固定倍数的分频, 只需要固定div的值, div_valid一直为1即可。
  3. div应不等于0, 如果div=0, 那么div会被忽略, 输出div_clk = clk。
  4. div_valid高电平有效, 指示div有效。
  5. div_clk_en控制分频时钟输出, div_clk_en=1时正常输出, div_clk_en=0时输出0。
  6. 任意频率的输出时钟占空比固定为50%。

注意:

1.原始div_clk是门控时钟,一般不推荐使用。但Vivado软件综合时会自动给div_clk加BUFG,使其使用全局时钟资源变为全局时钟,故此处不在代码中加入BUFG原语,同时也保证了代码的通用性。

2.未在Quartus中测试过,不知道是否也会自动转为全局时钟,需要注意。


三. 仿真验证

仿真工具:Vivado 2021.2 Simulator。

image-20240926211717986


四. 源码与仿真工程分享

Gitee与Github同步:

Verilog功能模块–时钟分频: Verilog功能模块–时钟分频,任意整数分频 (gitee.com)

zhengzhideakang/Verilog–clkDivider: Verilog功能模块——时钟分频,任意整数分频 (github.com)

因Gitee不擅管理非文本文件,故仿真工程文件通过网盘分享。

verilog-function-module–clkDivider 时钟分频 Vivado 2021.2工程 20240926.7z

欢迎大家关注我的公众号:徐晓康的博客,回复以下代码获取。

2369

建议复制过去不会码错字!


如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。

如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。


徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
目录