奇数分频器的实现

2023-10-30

奇数分频


1、奇数分频介绍

  奇数分频(2N+1),以三分频(N=1)为例,三分频即分频后的时钟半周期(周期)是原时钟半周期(周期)的3倍宽度。
在这里插入图片描述
  偶数分频我们只需要借助原时钟的上升沿或者下降沿进行计数分频,但是要实现奇数分频我们就要同时利用原时钟的上升沿和下降沿。可以通过原时钟的上升沿和下降沿计数产生clk1和clk2,再通过clk1和clk2的关系实现奇数分频。这种关系可以是或、与、异或,详细如下所述。

2、通过时钟 相或 实现奇数分频

  原时钟clk通过上升沿和下降沿计数产生时钟clk1和clk2,clk1和clk2 相或 产生clk三分频的clk_div3时钟。

clk1:原时钟clk的上升沿产生。
clk2:原时钟clk的下降沿产生。

clk1和clk2特征:
3分频:高电平:低电平 = 1:2。
2N+1分频:高电平:低电平 = N:N+1。
在这里插入图片描述

在这里插入图片描述
代码:

//时钟 相或
module top
(
	input		clk_150m,
	input		rst_n,
	
	output		clk_div3

);

reg	[3:0]	cnt_1;//上升沿计数
reg	[3:0]	cnt_2;//下降沿计数
reg			clk_1;
reg			clk_2;

assign		clk_div3 = clk_1 | clk_2;

always@(posedge clk_150m or negedge rst_n)
begin
	if(!rst_n)
	begin
		cnt_1 		<= 4'd0;
		clk_1		<= 1'b0;
	end
	else
	begin
		cnt_1		<= (cnt_1 == 4'd2)?4'd0:cnt_1+4'd1;
		clk_1		<= (cnt_1 == 4'd1)?1'b1:1'b0;
	end
end

always@(negedge clk_150m or negedge rst_n)
begin
	if(!rst_n)
	begin
		cnt_2 		<= 4'd0;
		clk_2		<= 1'b0;
	end
	else
	begin
		cnt_2		<= (cnt_2 == 4'd2)?4'd0:cnt_2+4'd1;
		clk_2		<= (cnt_2 == 4'd1)?1'b1:1'b0;
	end
end

endmodule

仿真波形:
在这里插入图片描述

3、通过时钟 相与 实现奇数分频

  原时钟clk通过上升沿和下降沿计数产生时钟clk1和clk2,clk1和clk2 相与 产生clk三分频的clk_div3时钟。

clk1:原时钟clk的上升沿产生。
clk2:原时钟clk的下降沿产生。

clk1和clk2特征:
3分频:高电平:低电平 = 1:2。
2N+1分频:高电平:低电平 = N+1:N。
在这里插入图片描述

在这里插入图片描述

代码:

//时钟 相与
module top
(
	input		clk_150m,
	input		rst_n,
	
	output		clk_div3

);

reg	[3:0]	cnt_1;//上升沿计数
reg	[3:0]	cnt_2;//下降沿计数
reg			clk_1;
reg			clk_2;

assign		clk_div3 = clk_1 & clk_2;

always@(posedge clk_150m or negedge rst_n)
begin
	if(!rst_n)
	begin
		cnt_1 		<= 4'd0;
		clk_1		<= 1'b0;
	end
	else
	begin
		cnt_1		<= (cnt_1 == 4'd2)?4'd0:cnt_1+4'd1;
		clk_1		<= (cnt_1 <= 4'd1)?1'b1:1'b0;
	end
end

always@(negedge clk_150m or negedge rst_n)
begin
	if(!rst_n)
	begin
		cnt_2 		<= 4'd0;
		clk_2		<= 1'b0;
	end
	else
	begin
		cnt_2		<= (cnt_2 == 4'd2)?4'd0:cnt_2+4'd1;
		clk_2		<= (cnt_2 <= 4'd1)?1'b1:1'b0;
	end
end

endmodule

仿真波形:
在这里插入图片描述

4、通过时钟 相异或 实现奇数分频

  原时钟clk通过上升沿和下降沿计数产生时钟clk1和clk2,clk1和clk2 相异或 产生clk三分频的clk_div3时钟。

clk1:原时钟clk的上升沿产生。
clk2:原时钟clk的下降沿产生。

clk1和clk2特征:
3分频:clk1以原时钟clk的3个周期为单位翻转,clk2在clk1时钟的中间点发生翻转。
2N+1分频:clk1以原时钟clk的2N+1个周期为单位翻转,clk2在clk1时钟的中间点发生翻转。
在这里插入图片描述

在这里插入图片描述
代码:

//时钟 相异或
module top
(
	input		clk_150m,
	input		rst_n,
	
	output		clk_div3

);

reg	[3:0]	cnt_1;//上升沿计数
reg			clk_1;
reg			clk_2;

assign		clk_div3 = clk_1 ^ clk_2;

always@(posedge clk_150m or negedge rst_n)
begin
	if(!rst_n)
	begin
		cnt_1 		<= 4'd0;
		clk_1		<= 1'b0;
	end
	else
	begin
		cnt_1		<= (cnt_1 == 4'd2)?4'd0:cnt_1+4'd1;
		clk_1		<= (cnt_1 == 4'd2)?~clk_1:clk_1;
	end
end

always@(negedge clk_150m or negedge rst_n)
begin
	if(!rst_n)
	begin
		clk_2		<= 1'b0;
	end
	else
	begin
		clk_2		<= (cnt_1 == 4'd1)?~clk_2:clk_2;
	end
end

endmodule

仿真波形:
在这里插入图片描述

5、测试代码

测试代码:

module test;

reg		clk_150m;
reg		rst_n;
	

wire	clk_div3;

top u1
(
	.clk_150m(clk_150m),
	.rst_n(rst_n),
	.clk_div3(clk_div3)
	

);


initial
begin
	clk_150m = 0;
	rst_n	 = 0;
	
	#20;
	
	rst_n	 = 1;
end

always # 3.3333	clk_150m = ~clk_150m;

endmodule

★★★如有错误,欢迎指导!!!

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

奇数分频器的实现 的相关文章

  • 还没毕业,我就进了HR的黑名单!

    今天小红书上的一则热搜 原文求助如下 马赛克的地方是之前的实习单位 这封邮件是发到我的工作邮箱 工作邮箱写在了简历里 因为最近一直在投简历 所以给我发邮箱的人应该是hr 不是什么恶作剧 现在正在疯狂找工作 所以看到这个邮件太害怕了 实在是不

随机推荐

  • idea无法创建servlet

    问题引入 new里面没有servlet项目 自己创建后也无法继承HttpServlet类 整篇代码爆红参考如下博客 IntelliJ IDEA关于 cannot resolve symbol servlet 的解决 进阶中的非主流坛子的博客
  • 2020美赛C题翻译

    翻译 问题C 数据的财富 在其创建的在线市场中 亚马逊为客户提供了对购买进行评分和评价的机会 个人评级 称为 星级 使购买者可以使用1 低评级 低满意度 到5 高评级 高满意度 的等级来表示他们对产品的满意度 此外 客户可以提交基于文本的消
  • JAVA基础之理解JNI原理及应用

    java 以其跨平台的特性深受人们喜爱 而又正由于它的跨平台的目的 使得它和本地机器的各种内部联系变得很少 约束了它的功能 解决JAVA对本地操作的一种方法就是JNI JAVA通过JNI调用本地方法 而本地方法是以库文件的形式存放的 在WI
  • Java 变量

    局部变量 局部变量声明在方法 构造方法或者语句块中 局部变量在方法 构造方法 或者语句块被执行的时候创建 当它们执行完成后 变量将会被销毁 访问修饰符不能用于局部变量 局部变量只在声明它的方法 构造方法或者语句块中可见 局部变量是在栈上分配
  • uml类图浅录

    uml类图 UML中类图的绘制 单个类图的绘制 类图中的成员访问属性 UML类图中类与类的几种关系 关联 代码示例解释 UML类图表示 多重性说明 依赖 代码示例解释 uml类图表示 继承 示例代码解释 UML类图表示 实现 示例代码解释
  • 加密与解密:一个简单的C语言示例

    写在前面 做大一年级的导生 碰巧一个同学问了一个C语言程序设计的题目 说是怎么都弄不对 我看了看 正好也是三年前我碰到的题目 仿佛还噙着旧日时光的泪痕 特此将题目与我的解法奉上 以祭奠那段逝去的时光 1 问题是什么 1 使用要求的方法加密
  • 苹果系统自带的计算机怎么恢复出厂设置方法,苹果电脑Mac怎么恢复出厂系统?Mac恢复出厂系统操作方法...

    Mac和Windows在恢复出厂设置这方面有着异曲同工的操作 其实mac和macbook 系列重装系统或者叫恢复出厂设置 都是一样的步骤 一样的概念 下面来看下具体重装系统 恢复出厂设置 步骤和注意事项 Mac恢复出厂系统操作方法 一 重启
  • android状态栏透明!6年菜鸟开发面试字节跳动安卓研发岗,年薪50W

    本专栏专注分享大型Bat面试知识 后续会持续更新 喜欢的话麻烦点击一个关注 面试官 组件化如何实现 组件化与插件化的差别在哪里 该怎么选型 心理分析 面试官从架构层次 了解求职者是否用过 模块化 组件化 和插件化 在过去经验有没有运用过这些
  • 参加CUDA线上训练营·(二)cuda的c++编译

    目前c 流行的编译器有cmake clang qmake xmake等 本文主要介绍如何在cmake和xmake中编译cuda xmake 简介 xmake是国人开发的一款编译器 官方链接如下 xmake官网 该编译器安装方便 上手快 支持
  • Since & Due to & Because of & Because 的用法和区别

    Since Due to Because of Because 的用法和区别 其实以上4者都有表示因为的意思 但却有用法上的差别 Because Because 因为 表示直接的原因或理由 着重点在从句 从句是句子的主要部分用于回答why
  • springboot集成ES实现磁盘文件全文检索

    有个朋友咨询如何实现对海量磁盘资料进行目录 文件名及文件正文进行搜索 要求实现简单高效 维护方便 成本低廉 我想了想利用ES来实现文档的索引及搜索是适当的选择 于是就着手写了一些代码来实现 下面就将设计思路及实现方法作以介绍 整体架构 考虑
  • 消融实验(Ablation experiment)是什么?

    最近读论文遇到消融实验 Ablation experiment 这个概念 在论文 Deep Snake for Real Time Instance Segmentatione 中5 2 Ablation studies 消融实验类似于 控
  • 韦东山板子编译内核问题解决

    执行 make 100ask imx6ul qemu defconfig时出现错误 Can t find default configuration arch arm configs 100ask imx6ul qemu 解决方法 先检查环
  • 解决Maven的pom.xml找不到依赖jar包版本的报错(dependencyManagement的作用)

    问题来源 今天直接使用了他人的pom xml文件发现有部分依赖jar包出现找不到的情况 查了很多网上的解决办法都不能解决 pom xml中显示报错的是依赖包的版本找不到 像这样 问题分析 我打开本地库发现其中有相应的依赖包 但是没有需要的版
  • 集合框架知识总汇之(Set集合)

    目录 编辑 1 1特点 1 2遍历方式 3 3关于set集合的去重 3 3 1当我们直接调用contans 没有重写hashcold equals 编辑 3 3 2当我们直接调用contans 重写hashcold equals 3 4关于
  • 推荐一款好用的Idea热部署插件

    目录 目录 1 什么是热部署 1 1 热启动与热部署的区别 2 为什么需要热部署 3 热部署产品 3 1 JRebel 3 2 IDEA HotSwap 3 3 HotSwapAgent 3 4 Spring Boot DevTools 3
  • Vue中使用高德地图,简单明了

    一 使用步骤 1 在vue中引入高德地图的加载器 npm i amap amap jsapi loader save 在自己的组件中去引用
  • vue3 基于Ant DesignVue Select Table封装下拉选择表格组件(2023-08-25 TAntdSelectTable组件组件新增上下键盘高亮选择回车选中功能)

    2023 08 25 TAntdSelectTable组件组件新增上下键盘高亮选择回车选中功能 一 最终效果 二 代码示例
  • 【第四章 使用(servletAPI、ModelAndView,Model、Map、ModelMap)向request域对象共享数据,向session,application域中共享数据】

    第四章 使用 servletAPI ModelAndView Model Map ModelMap 向request域对象共享数据 向session application域中共享数据 1 域对象共享数据 1 使用servletAPI向re
  • 奇数分频器的实现

    奇数分频 文章目录 1 奇数分频介绍 2 通过时钟 相或 实现奇数分频 3 通过时钟 相与 实现奇数分频 4 通过时钟 相异或 实现奇数分频 5 测试代码 1 奇数分频介绍 奇数分频 2N 1 以三分频 N 1 为例 三分频即分频后的时钟半