verilog奇数分频器的问题讲解(7分频为例)

2023-11-19

先不多哔哔,直接上代码(verilogHDL),代码的后面讲原理
module fenpin3(clk,clk7,rst);
input clk,rst; //设置rst的目的是当rst=1的时候给cnt0和cnt1赋初值
output clk7;
reg [2:0] cnt0,cnt1; //定义两个加法器分别生成两个7分频的信号
reg clk0,clk1; // 由加法器两个7分频的信号
wire clk7; //用于后面clk0和clk1相加得到最后的结果clk7
always@(posedge clk or posedge rst ) //clk取上升沿,区别于下面的always@(negedge clk or posedge rst )
begin
if(rst1)
cnt0<=0;
else if(cnt0
3’d6) //是cnt在0-6无限循环方能得到7分频信号,简言之想得到N分频,就0——(N-1)循环
cnt0<=0;
else
cnt0<=cnt0+1;
end
always@(posedge clk)
begin
if(cnt03’d0||cnt03’d1||cnt03’d6) //这个地方比较重要,文章后面单独讲
clk0<=1;
else
clk0<=0;
end
always@(negedge clk or posedge rst ) //注意clk是取下降沿,为的就是保证下面的clk1与上面的clk0相差一周期
begin
if(rst
1)
cnt1<=0;
else if(cnt13’d6)
cnt1<=0;
else
cnt1<=cnt1+1;
end
always@(negedge clk)
begin
if(cnt1
3’d0||cnt13’d1||cnt13’d6)
clk1<=1;
else
clk1<=0;
end
assign clk7=clk0|clk1; // 两个七分频信号按位或运算
endmodule
强调文本 强调文本

== if(cnt03’d0||cnt03’d1||cnt0==3’d6)
clk0<=1;
else
clk0<=0;==这一句的解读:七分频就是讲原始clk这个时钟信号的七个周期合并到一个周期内,可以理解为7=3+4;
这里的3+4是指3周期+4周期。当cnt分别等于0、1、6的时候clk等于1,这其实就是高电平占了三个周期,剩下四个都是低电平。
好了,说到这里我们不禁会想到这样一个问题,你三个周期高电平,四个周期低电平它不是50%占空比啊,咋办!掌握了怎么搞出一个七分频信号后,我们可以在搞出一个七分频信号,这也就是代码中clk0、clk1;由于这两个信号是相差了一个周期的时间,我们让他们按位或就能得到50%占空比的七分频信号啦!
注意我讲的过程中可能有些表述不是很合理,但是奇数分频器的原理确实是这样的,不必怀疑方法有问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

verilog奇数分频器的问题讲解(7分频为例) 的相关文章

随机推荐

  • java对象赋值给另一个对象_java注解实现对象的属性赋值,从此少写代码,快乐生活...

    各位志同道合的朋友们大家好 我是一个一直在一线互联网踩坑十余年的编码爱好者 现在将我们的各种经验以及架构实战分享出来 如果大家喜欢 就关注我 一起将技术学深学透 我会每一篇分享结束都会预告下一专题 我们平时在做一些业务时 从前台获取的数据用
  • 自定义模块导入错误

    当在python2 7 导入自定义模块 发生Importerror No module named xxx时 可将模块所在路径拷贝到E xxx python2 7 Lib site packages下 再进行导入则可解决问题 经过多方的摸索
  • MobaXterm出现X11-forwarding : ✘ (disabled or not supported by server)及conda: command not found等问题

    x11 forwarding disabled解决办法 3L csdn的博客 CSDN博客 如何安装X11 xorg https www cnblogs com yun qi p 16201843 html如何解决在Ubuntu中使用x11
  • 机器学习之线性回归——OLS,岭回归,Lasso回归

    机器学习之线性回归 线性回归 最小二乘法 OLS 岭回归 Ridge Regression Lasso回归 OLS 岭回归 Lasso回归之间对比 线性回归 什么是线性回归呢 其实线性回归是统计学中的 线性回归 Linear Regress
  • java 中的指针_Java中的指针

    java 中的指针 Java中有指针吗 简短的答案是 不 没有 这对于许多开发人员来说似乎是显而易见的 但是 为什么对其他人却不那么明显呢 http stackoverflow com questions 1750106 how can i
  • STM32实现HID键盘

    上面是我的微信和QQ群 欢迎新朋友的加入 这个帖子不是技术贴 是成品分享贴 电路设计 实物图 软件设计 功能说明 1 固件通过虚拟U盘升级 2 自定义按键功能 全键盘 3 七彩灯颜色设置 4 多媒体按键功能 5 支持按键双击和单击操作 6
  • c语言药房管理系统

    include
  • VisualStudio代码片段管理

    文章目录 前言 1 查看代码片段 2 插入代码片段方式 3 使用扩展创建代码片段 3 1 安装VS2019的扩展 3 2 使用扩展创建代码片段 4 不知为何 VS2022我安装一直有问题 扩展安装成功 但是新建文件没有 Snippet De
  • Unity 运行FixedUpdate()无响应

    问题 最近在学习unity时 根据 史上最全Unity3D教程 哔哩哔哩 bilibili 在Visual Studio中编写如下代码时 Unity的Console面板并没有输出预期的信息 即按每个固定帧速率的帧调用FixedUpdate
  • Matlab导出动态链接库dll

    1 新建 m文件 内容 function c Add a b c a b end 保存为 Add m 2 命令行输入 gt gt mex setup MEX configured to use Microsoft Visual C 2013
  • 各种注释总结

    jsp注释 html注释
  • C语言—指针

    文章目录 1 指针 1 1 指针的定义 1 2 和 1 3 指针与堆内存 1 4 指针运算 1 5 常量指针与指针常量 1 5 1 常量指针 1 5 2 指针常量 1 6 函数指针 2 指针与数组 3 指针与函数 4 指针与链表 4 1 链
  • cmake中的编译选项

    CMake是一个跨平台的构建系统 它可以根据简单的配置文件生成各种平台的构建工具 例如Makefile Visual Studio项目文件等 CMake使用CMakeLists txt文件来描述项目的构建规则和依赖关系 在这个文件中 可以设
  • 浅谈opencv3.2中各个模块的简介

    3 2版本的模块说明 Opencv3 2模块 首先打开opencv modules hpp文件 可以看到对于各个功能模块的定义如下 This file defines the list of modules available in cur
  • 分享几个项目中用到的设计模式

    前言 之前项目中出于扩展性和有雅性的考虑 使用了多种设计模式进行项目框架的设计 主要的一些设计模式是单例模式 工厂模式 策略模式 责任链模式 代理模式这几种 现在依次讲讲这几个的主要是实现方式和在我们项目中的应用场景 核心设计模式分享 单例
  • WPF TextBlock 实现点击事件

    TextBlock 标签里定义MouseLeftButtonDown 事件 xaml cs
  • ICCV 2023

    ICCV 2023 MPI Flow 从单视角构建的多平面图像中学习光流 引言 主要贡献 Motivation 算法细节 Optical Flow Data Generation Independent Object Motions Dep
  • Node之使用dns模块解析域名

    引 在网络编程中 开发者更倾向于使用域名 而不是IP地址来指定网络连接的目标地址 在Node js中 提供dns模块 以实现域名查找及域名解析的处理 在dns模块中 提供了三个主方法及一系列便捷方法 其中三个主方法分别为用于将一个域名解析为
  • MySQL使用查询结果生成临时表

    MySQL中不支持对同一个表使用其查询结果更新or删除本表内数据 也就是update或delete后的where条件为针对相同表的select 解决方案是创建临时表做过度保存中间数据 可以直接使用查询结果来形成临时表 CREATE TABL
  • verilog奇数分频器的问题讲解(7分频为例)

    先不多哔哔 直接上代码 verilogHDL 代码的后面讲原理 module fenpin3 clk clk7 rst input clk rst 设置rst的目的是当rst 1的时候给cnt0和cnt1赋初值 output clk7 re