FPGA 多路分频器实现

FPGA 中,时钟分频是经常用到的。本节实现 2 分频、 3 分频、 4 分频和 8 分频的 Verilog 实现,以及仿真调试。
仿真步骤不是必须的,但是仿真可以发现很多我们设计的错误或者隐患问题,进而对设计进行调整。
FPGA 输入全局时钟 100MHZ ,定义合适的分频计数器,得到对应的时钟。通过 chipscope 来抓取 2 分频、 3 分 频、4 分频和 8 分频结果,通过板子上的 LED 灯,来显示 2HZ 的时钟。设计总体框图如下所示
① 定义寄存器 div2_o_r ,检测输入时钟上升沿,每次上升沿寄存器 div2_o_r 反转一次,实现 2 分频。
② 定义寄存器 pos_cnt[1:0] neg[1:0] ,分别检测 div2_o_r 的上升沿和下降沿,检测到上升沿和下降沿时,两
个寄存器分别累加。计数到 2’d2 时,寄存器清零。另定义两个 div3_o_r0 div3_o_r1 ,当两个计数器小于 2’d1
,div3_o_r0 div3_o_r1 均赋值为 1 ,其他情况赋值为 0 。由 div3_o_r0 div3_o_r1 组合逻辑相或即为 div2_o_r
一步进行 3 分频所得的结果。
③ 定义位宽为 2 的寄存器 div_cnt[1:0] ,检测输入时钟上升沿, div_cnt==2’b00 2’b01 4 分频输出寄存器
div4_o_r 反转, div_cnt==2’b00 ,8 分频输出寄存器 div8_o_r 反转。
④ 由于输入时钟 100MHZ ,为得到 2HZ 的时钟,需要定义计数器至少 100000000/1=100000000 。在此定义一
个 26 位位宽的 div2hz_cnt 计数器。检测输入时钟上升沿, div2hz_cnt==26’d24_999999 div2hz_cnt==26’d49_999999
时, 2HZ 输出寄存器 div2hz_o_r 反转。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 10:32:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 10:32:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 10:32:02       82 阅读
  4. Python语言-面向对象

    2024-04-21 10:32:02       91 阅读

热门阅读

  1. MySQL中NULL和空的区别是什么?底层原理是什么?

    2024-04-21 10:32:02       43 阅读
  2. Centos sudo权限错误

    2024-04-21 10:32:02       41 阅读
  3. Android10以上MediaProjection截屏

    2024-04-21 10:32:02       98 阅读
  4. 欢迎 Llama 3:Meta 的新一代开源大语言模型

    2024-04-21 10:32:02       31 阅读
  5. npm环境搭建

    2024-04-21 10:32:02       104 阅读
  6. 数据结构(data structure)(2)链表的运用

    2024-04-21 10:32:02       40 阅读
  7. React-RTK

    React-RTK

    2024-04-21 10:32:02      35 阅读
  8. 基于微信小程序的房屋租赁管理系统

    2024-04-21 10:32:02       30 阅读
  9. 迁移学习入门

    2024-04-21 10:32:02       37 阅读