几种常用时钟分频实现方法

2023-11-07

在我们学习中,常常需要对时钟进行分频处理,本文将介绍几种常用分频方法。

一、2的整数次幂分频

这种分频很简单,只需要设置一个计数器,对计数器进行计数,计数器的第i位则对应的2的i-1次幂分频。此方法适用于占空比为1/2,如果占空比不为1/2,则可用下面讲述的偶分频方法实现。

例如:现在对时钟进行2,4,8,16分频

module div_24816(
	input clk,rst,
	output clk_2,clk_4,clk_8,clk_16);
reg [3:0] count;
always@(posedge clk or posedge rst)
begin
	if(rst) 
		count <= 4'd0;
	else if(&count)  //判断计数器的四位是否全为1
		count <= 4'd0;
	else
		count <= count + 1'b1;
end 
assign clk_2 = count[0]; //2分频
assign clk_4 = count[1]; //4分频
assign clk_8 = count[2]; //8分频
assign clk_16 = count[3]; //16分频
endmodule 

仿真结果如下:

 二、偶分频

首先设置一个计数器,计数器的位数根据分频系数来定,然后根据计数器的值来确定分频的占空比即可。

例如:现在对时钟进行6分频,要求占空比1/2

module div(
    input reset,clk,
    output div6);
reg div6;
reg [2:0] counter;

always @(posedge   clk or posedge reset)
begin 
	if(reset)
		counter<=0;
	else
	begin
	if(counter==5)
		counter<=0;
	else
		counter<=counter+1;
	end
end 

always @(posedge clk or posedge reset)
begin
	if(reset)
		div6<=0;
	else if(counter<3) //设置占空比1/2
		div6<=1;
	else
		div6<=0;
end

endmodule 

仿真结果如下:

例如 :现在对时钟进行6分频,要求占空比1/3

module div(
input reset,clk,
output div6);
reg div6;
reg [2:0] counter;

always @(posedge   clk or posedge reset)
begin 
	if(reset)
		counter<=3'd0;
	else
	begin
	if(counter==3'd5)
		counter<=3'd0;
	else
		counter<=counter+1'b1;
	end
end 

always @(posedge clk or posedge reset)
begin
	if(reset)
		div6<=1'b0;
	else if(counter<3'd2) //设置占空比1/3
		div6<=1'b1;
	else
		div6<=1'b0;
end

endmodule 

仿真结果如下:

 三、奇分频

对于占空比不为1/2的奇分频,其步骤与占空比不为1/2的偶分频一样,这里不再重复说明。对于占空比为1/2的奇分频,我们的主要思想就是利用两个占空比不为1/2的信号相或得到。具体请看如下例子:

要求5分频,占空比1/2

module div(clk,clk_out,clk_1,clk_2,reset);
input 	clk;
input 	reset;

output 	clk_out,clk_1,clk_2;

reg 			 clk_1;
reg 			 clk_2;
reg 	[2:0]  cnt;

always@(posedge clk)
begin
	if(reset)
		cnt <= 1'd0;
	else if(cnt == 3'd4)
		cnt <= 3'd0;
	else
		cnt <= cnt + 1'd1;
end

always@(posedge clk) 
begin
	if(reset)
		clk_1 <= 1'd0;
	else if(cnt == 3'd2)
		clk_1 <= 1'd1;
	else if(cnt == 3'd4)
		clk_1 <= 1'd0;
	else
		clk_1 <= clk_1;
end

always@(negedge clk)
begin
	if(reset)
		clk_2 <= 1'd0;
	else if(cnt == 3'd2)
		clk_2 <= 1'd1;
	else if(cnt == 3'd4)
		clk_2 <= 1'd0;
	else
		clk_2 <= clk_2;
end

assign clk_out = (clk_1 | clk_2);

endmodule 

仿真结果如下;

 文章到此就结束了,希望上述的方法能够帮到大家!!!

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

几种常用时钟分频实现方法 的相关文章

  • FPGA设计篇之流水线思想

    FPGA设计篇之流水线思想 一 写在前面 二 正文开始 2 1举个栗子 2 2 1情况一 组合逻辑 2 1 2情况二 流水线设计 2 1 4 小总结 2 2举第二个栗子 写在最后 一 写在前面 流水线 大家好 我是富土康三号流水线的张全蛋
  • STM32【复习串口】

    串口复习加深理解笔记 杂谈 USART FLAG TXE发送缓冲区空标志 说明可以往数据寄存器写入数据了 但并不代码数据发送完成了 USART FLAG TC发送完成标志 这个才是代表USART在缓冲区的数据发送完成了 即从机接收到了数据
  • 【Xilinx Vivado时序分析/约束系列6】FPGA开发时序分析/约束-IO时序输入延时

    目录 源同步FPGA输入时序分析的模型 input delay约束 极限input delay 往期系列博客 源同步FPGA输入时序分析的模型 以下为源同步FPGA输入时序分析的模型的示意图 在之前的文章中介绍过 在此介绍一下各个时钟延时的
  • HDLBits — Verilog Practice(每日一题)

    HDLBits Verilog Practice 每日一题 一 Getting Started 1 Getting Started 一 Getting Started 1 Getting Started 问题描述 Build a circu
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • 实验1-FPGA编程入门

    文章目录 一 认识全加器 二 输入原理图实现1位加法器 一 半加器原理图输入 二 全加器原理图输入 三 Verilog语言实现全加器 四 总结 五 资料参考 一 认识全加器 一 半加器 1 逻辑分析 如下图所示 半加器只有两个输入和两个输出
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • FPGA提示产生latch的报错

    在fpga的设计中有时会遇到 latch 的报错 1 latch是什么 Latch 就是锁存器 是一种在异步电路系统中 对输入信号电平敏感的单元 用来存储信息 锁存器在数据锁存使能时 数据被锁存 输入信号不起作用 这违背了组合逻辑中输出随输
  • 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块

    Chisel模块详解 五 Chisel中使用Verilog模块 上一篇文章讲述了用函数实现轻量级模块的方法 可以大幅度提升编码效率 Chisel中也提供了一些好用的函数 方便我们编写代码 也方便Chisel编译器优化生成的硬件电路 在Chi
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • TestBench编写_激励产生

    TestBench编写 激励产生 TestBench编写 激励产生 基本背景 读取函数介绍 a fopen函数使用 b fread函数使用 c fclose函数使用 实际使用 TestBench编写 激励产生 基本背景 最近遇到项目中需要对
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • 【DDR3 控制器设计】(3)DDR3 的写操作设计

    写在前面 本系列为 DDR3 控制器设计总结 此系列包含 DDR3 控制器相关设计 认识 MIG 初始化 读写操作 FIFO 接口等 通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等 附上汇总博客直达链接 DD
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • 使用七牛云进行文件上传

    目录 一 七牛云入门测试 1 注册七牛云账号 完成后选择对象存储 2 在里面创建空间 一个空间相当于一个文件夹 就是将对象上传到的地方 3 查看个人秘钥 注册完成账号后 会有一个秘钥 上传文件的时候进行授权和认证 4 文件上传测试 二 封装
  • 【ZYNQ学习】PL第一课

    这节课讲什么 这节课的名字本来是想写为LED 但这一课里除了LED也有按键 又想换为GPIO控制 但关于PL的GPIO控制 不应该这么草率和简单 而且这一课有很多和ZYNQ或者PL关联性不强的东西要说 所以我写了删删了写改了好几遍 终于定为
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主

随机推荐

  • Pandas基础(全)

    Pandas基础 全 引言 Pandas是基于Numpy的库 但功能更加强大 Numpy专注于数值型数据的操作 而Pandas对数值型 字符串型等多种格式的表格数据都有很好的支持 关于Numpy的基础知识 请查看 Numpy基础 全 内容介
  • 三相LCL变流器PR控制仿真及验证

    三相变流器 可单位功率因数整流 实现母线电压的泵升 可逆变并网实现能量回馈 它是一个三相AC DC双向电源 基于三相全控型半桥的双向变流器可用于很多领域 1 中大功率变频传动领域 例如电梯 可用于电梯下降过程中的能量回馈 大大节省电能 电梯
  • 网上传说软件测试培训真的那么黑心吗?都是骗局?

    今天一大早社区群因为 软件测试培训班靠不靠谱 的话题炸开了锅 就客观事实而言 当下的软件测试早已不复当年的混乱 再想说0基础进入软测行业 靠着一路摸爬滚打在工作中从无到有学会软测 如果没有贵人扶持 怕是万难 据相关调查数据显示 有79 53
  • windows server 2008 r2 搭建文件服务器

    windows server 2008 r2 搭建文件服务器 目的需求 在测试环境下模拟公司现状需求 利用windows server 搭建文件服务器 工具必备 1 vmware workstation 2 windows server 2
  • 图像处理中的卷积

    卷积是积分变换的方法 其在许多方面有广泛应用 卷积通过两个函数 f 和 g 生成第三个函数 可以看作是两个变量在某范围内相乘后求和的结果 设 f x g x 是两个可积函数 作积分 可以证明上述积分的存在性 随着x取值的不同 这个积分就定义
  • 展示PyEcharts图表到Django框架前端页面教程(逐步教程)

    官网教程参考 https pyecharts org zh cn web django id django e6 a8 a1 e6 9d bf e6 b8 b2 e6 9f 93 这篇博客与官网一样使用Ajax 不使用ajax 直接填充一个
  • Angular(2+)动画API用法详解

    动画相关的 API 都是在 angular animations里面引入的 import 你想要的API from angular animations 复制代码 trigger 由它触发动画效果 称动画触发器 function trigg
  • 微信小程序 scroll-view

    微信小程序 scroll view 用法 微信官方文档地址 https developers weixin qq com miniprogram dev component scroll view html 微信小程序 scroll vie
  • Docker部署 registry

    系列文章目录 Docker部署 registry Docker搭建 svn Docker部署 Harbor Docker 部署SQL Server 2017 Docker 安装 MS SqlServer Docker部署 Oracle12c
  • 使用WebSocket实现服务端向指定的客户端推送消息

    写这篇博客记录一下自己在用websocket的时候遇到的坑 需求是这样的 需要将activeMq来的数据利用websockt推送给客户端显示出来 有多个服务终端 需要将不同的消息推送到对应的服务终端上 1 服务端代码 需要写一个WebSoc
  • Eureka测试环境、开发环境服务宕机不踢掉处理

    SpringCloud eureka 服务宕机踢掉演示DEMO 版本信息 br springboot 1 5 9 br springcloud Dalston RC1 br 贴重点配置 br server br aidl eureka in
  • 使用Go Test测试单个文件和单个方法

    前置条件 1 文件名须以 test go 结尾 2 方法名须以 Test 打头 并且形参为 t testing T 举例 hello test go package main import testing fmt func TestHell
  • 【Android】在android中配置orientation

    参考资料 横竖屏切换 Activity 清单文件中不设置android configChanges属性时 先销毁onPause onStop onDestroy 再重新创建onCreate onStart onResume 方法 也可以 设
  • 程序员学习网站

    包括框架学习 涉及到Google源码的介绍 转载于 http www ha97 com 2908 html 程序员一般都会浏览哪些网站 转载于 http www ha97 com 2908 html 极客导航 转载于 http www go
  • RMQ(区间最值查询问题)

    简介 RMQ Range Minimum Maximum Query 问题是指 对于长度为 n 的数列 A 回答若干询问 RMQ A i j i j n 返回数列A中下标在 i j 里的最小 大 值 也就是说 RMQ问题是指求区间最值的问题
  • 算力云服务器是干啥的,云服务器将成趋势计算力和安全性是考验

    云服务器是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 通常来说 平台的每个集群节点被部署在互联网的骨干数据中心 可以独立提供计算 存储 在线备份 托管 带宽等互联网基础设施服务 关注的是高性能吞吐量计算能力 关注的是在一段时间内的
  • 多网卡的情况下收udp组播数据的坑

    多网卡的情况下收udp组播收不到 有可能是如下原因造成 https www cnblogs com xiaouisme p 12658554 html
  • 【设计】OOA、OOD、OOP

    这三者都是 OO Object Oriented 领域的思想 一般我们我们接到产品经理的需求后 开发阶段分这样几个步骤 可行性预研阶段 此阶段评估需求是否合理 能否实现 OOA阶段 此阶段分析用例 定义领域模型 OOD阶段 此阶段定义类图
  • Chat 插件上线,免注册即可使用~

    OpenAI 新上线的 Chat 可谓是火爆出圈 这个语言对话模型可以回答问题 承认错误 挑战不正确的前提 还能帮你修改代码中的 bug Chat 的应用场景很广泛 它可以用于处理多种类型的对话 包括对话机器人 问答机器人和客服机器人等 它
  • 几种常用时钟分频实现方法

    在我们学习中 常常需要对时钟进行分频处理 本文将介绍几种常用分频方法 一 2的整数次幂分频 这种分频很简单 只需要设置一个计数器 对计数器进行计数 计数器的第i位则对应的2的i 1次幂分频 此方法适用于占空比为1 2 如果占空比不为1 2