当前位置: 首页 > news >正文

010---基于Verilog HDL的分频器设计

文章目录

  • 摘要
  • 一、时序图
  • 二、程序设计
    • 2.1 rtl
    • 2.2 tb
  • 三、仿真分析
  • 四、实用性


摘要

文章为学习记录。绘制时序图,编码。通过修改分频值参数,实现一定范围分频值内的任意分频器设计。


一、时序图

在这里插入图片描述

二、程序设计

2.1 rtl

module divider
#(
  parameter    DIV_VALUE = 5
  )
(
input wire sys_clk , //系统时钟 50MHz
input wire sys_rst_n , //全局复位

output reg clk_flag //指示系统时钟分频后的脉冲标志信号

);

 reg [10:0] cnt; //计数
 
 //cnt:
 always@(posedge sys_clk or negedge sys_rst_n)
 begin
     if(sys_rst_n == 1'b0)
         cnt <= 'b0;
     else if(cnt == DIV_VALUE -1)
         cnt <= 3'b0;
     else
         cnt <= cnt + 1'b1;
 end
 
 //clk_flag:脉冲信号指示
 always@(posedge sys_clk or negedge sys_rst_n)
 begin
     if(sys_rst_n == 1'b0)
         clk_flag <= 1'b0;
     else if(cnt == DIV_VALUE -2)
         clk_flag <= 1'b1;
     else
         clk_flag <= 1'b0;
 end

endmodule

2.2 tb

module tb_divider();

reg sys_clk ; //系统时钟 50MHz
reg sys_rst_n ; //全局复位

wire clk_flag ;

//初始化系统时钟、全局复位
 initial begin
 sys_clk = 1'b1;
 sys_rst_n <= 1'b0;
 #20
 sys_rst_n <= 1'b1;
 end
 
 //sys_clk:模拟系统时钟,每 10ns 电平翻转一次,周期为 20ns,频率为 50MHz
 always #10 sys_clk = ~sys_clk;


divider
#(
.    DIV_VALUE(5)
  )
divider_inst1
(
. sys_clk (sys_clk), //系统时钟 50MHz
. sys_rst_n(sys_rst_n) , //全局复位

. clk_flag(clk_flag) //指示系统时钟分频后的脉冲标志信号

);

endmodule

三、仿真分析

5分频:
系统时钟周期20ns,clk_flag周期100ns。
在这里插入图片描述
10分频:
系统时钟周期20ns,clk_flag周期200ns。
在这里插入图片描述

四、实用性

确保系统时钟继续作为工作时钟:
系统时钟是由外部晶振直接通过管脚连接到了 FPGA 的专用时钟管脚上,会连接到全局时钟网络,能够使时钟信号到达每个寄存器的时间都尽可能相同,以保证更低的时钟偏斜(Skew)和抖动(Jitter)。

always@(posedge sys_clk or negedge sys_rst_n)
begin
 if(sys_rst_n == 1'b0)
 A <= 4'b0;
 else if(clk_flag == 1'b1)
 A <= A + 1'b1;
 end

相关文章:

  • 二阶RC+PWM实现DDS
  • 风控模型算法面试题集结
  • Python可视化——地理空间型图表(自用)
  • 2025年Q1起重机指挥证理论考试题库
  • Vue Hooks 深度解析:从原理到实践
  • Tomcat 新手入门指南
  • Java线程池的分析和使用
  • K8s 1.27.1 实战系列(三)安装网络插件
  • hive sql limit offset不起作用
  • 深入解析 Flink 批量插入 MariaDB 不生效问题
  • Linux - 网络基础(网络层,数据链路层)
  • [Python入门学习记录(小甲鱼)]第4章 分支与循环
  • 详细讲解ecovadis奖牌分类
  • 美股表格数据:如何获取和分析历史高频分钟回测数据
  • IDEA与Maven使用-学习记录(持续补充...)
  • EasyBCD,多系统名称或启动顺序的修改,用来配置与调整启动配置数据(BCD)
  • 算法进阶——双指针
  • HarmonyOS Next 属性动画和转场动画
  • 若依前后端分离版使用Electron打包前端Vue为Exe文件
  • GStreamer —— 2.7、Windows下Qt加载GStreamer库后运行 - “教程7:多线程和 Pad 可用性“(附:完整源码)
  • 怎么制作网站教程图片/如何做网站设计
  • 沈阳制作公司网站/搜索最全的搜索引擎
  • 哪个网站可以做视频播放器/长沙弧度seo
  • 可以做进销存的网站系统/百度推广后台登录入口官网
  • 阿里巴巴全球速卖通/关键词优化怎么操作
  • 如何做网站充值接口/刷粉网站推广马上刷