奇数分频器的实现

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(使用前将#替换为@)

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

  • FPGA笔记8——串口通信(回环实验)

    目录 串口通信原理 串行通信基础知识 处理器与外部设备通信的两种方式 串行通信的通信方式 串行通信的传输方向 常见的串行通信接口 异步串口通信UART基础知识 数据格式 传输速率 接口标准 RS232接口 串口通信实验RS 232 实验任务
  • Quartus II 安装

    本次介绍使用的 Quartus 版本为 10 1 目前 Quartus II 官网已经没有 13 1 以下版本的安装包 大家可以安装 13 1 以上版本的软件 功能都是大同小异 下载地址 FPGA Software Download Cen
  • FPGA面试真题解析(3)

    9 寄存器的Tsu 建立时间 是如何定义的 硬件逻辑实习岗 A 在时钟沿到来之后数据保持稳定的时间 B 在时钟沿带来前后数据都需要保持稳定的时间 C 在整个时钟周期数据保持稳定的时间 D 在时钟沿到来之前数据保持稳定的时间 解析 考察数字电
  • SmartFusion从FPGA到ARM(四)——MSS_TIMER定时器的使用

    文章目录 1 定时器资源简介 2 MSS TIMER库函数简介 3 简单的周期性中断 4 自定义产生波形 5 64位定时器的使用 6 单次中断模式 系列教程 SmartFusion从FPGA到ARM系列教程 1 定时器资源简介 SmartF
  • [FPGA系列] 扩展知识 --- 时钟小结

    一 基本概念 时钟域 由同一个时钟信号控制的区域 时钟抖动 Jitter 相对于理想时钟信号 实际时钟信号存在时而超前 时而之后的偏移 时钟偏斜 Skew 时钟信号到达数字电路各个部分所用时间的差异 时钟漂移 Wander 工程上解释 抖动
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • FPGA实战--等精度频率测量

    首先放置效果图 本次试验中采用的是等精度测频率 等精度测频的原理是产生一个1s的高电平 在高电平中对被测方波进行计数 所测得数字即该波形频率 具体等精度测量原理请参考 http www elecfans com d 591858 html
  • 输入延时(Input Delay)与输出延时(Output Delay)

    一 设置输入延时 Input Delay 1 不同的路径需要使用不同的约束 2 输入延时的定义 由下图可以看出Input Delay是以上游芯片的时钟发送沿为参考 上游的输出数据到达FPGA的外部输入端口之间的延迟 输入延迟 input d
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • JESD204B(RX)协议接口说明。

    解释一下Vivado IP协议中的Shared Logic in Example 与 Shared Logic in Core 首先 什么是Shared Logic 字面意思很好理解 就是共享逻辑 主要包括时钟 复位等逻辑 当选择Share
  • 【数字IC】从零开始的Verilog SPI设计

    从零开始的Verilog SPI协议设计 一 写在前面 1 1 协议标准 1 2 数字IC组件代码 1 3 设计要求 1 4 其他协议解读 1 4 1 UART协议 1 4 2 SPI协议 1 4 3 I2C协议 1 4 4 AXI协议 二
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • Spartan-3E 上的随机数生成

    我需要在 Spartan 3E FPGA 上为我的遗传算法生成伪随机数 并且我想在 verilog 中实现它 您能给我任何关于此的指示吗 当然 Adam 的随机生成器是不可合成的 您必须显式创建一个LFSR 以下示例可能会有所帮助 它是一个
  • 异步FIFO设计之格雷码

    目录 二进制转格雷码 格雷码转二进制 相邻的格雷码只有1bit的差异 因此格雷码常常用于异步fifo设计中 保证afifo的读地址 或写地址 被写时钟 或读时钟 采样时最多只有1bit发生跳变 在不考虑路径延时的情况下 因为源数据 读写地址
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • VHDL 中的 BRAM_INIT

    我正在模拟基于处理器的设计 其中程序存储器内容保存在 BRAM 中 我正在使用 VHDL 推断 BRAM 实现程序存储器 我试图避免使用 CoreGen 因为我想保持设计的可移植性 最终该设计将进入 FPGA 我想看看是否有一种方法可以使用
  • 从 OpenCV 代码到 FPGA 代码的转换是否比 Matlab 代码更容易? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想做一个关于图像处理的项目 我想知道如果我想在FPGA上实现这个项目 我应该在第一阶段选择Matla
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • 可以购买哪些 FPGA(现场可编程门阵列)在家中进行实验? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么是 FPGA 在哪里可以买到 它们要花多少钱 您需要什么样的系统来试验它们 如何对它们进行编程 如果这是正确的术语 您能否使用普通 M

随机推荐

  • 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 为例 三分频即分频后的时钟半