verilog实现5分频
5分频可以通过计数器来实现,值得注意的是5是奇数,如果通过简单的计数来实现分频占空比不是50%。下面按照两种方法来讲解,第一种占空比为60%(即分频后高电平占3个时钟周期,低电平占2两个时钟周期);第二种,占空比为50%。
一、占空比为60%的5分频
上代码
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/08/10 21:48:57
// Design Name:
// Module Name: div_5clk
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module div_5clk(
input clk,
input rst,output reg clk_out);reg [3:0] cnt;always@(posedge clk or negedge rst)beginif(!rst)begincnt<=1'b0;endelse if(cnt==3'b100)begincnt<='b0;endelsecnt<=cnt+1'b1;
end always@(posedge clk or negedge rst)beginif(!rst)beginclk_out<='b0;endelse if(cnt==1'b1)beginclk_out<=~clk_out;endelse if(cnt==3'b100)beginclk_out<=~clk_out;end
endendmodule
测试代码
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/08/10 21:58:29
// Design Name:
// Module Name: tb_div_5clk
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module tb_div_5clk();
reg clk;
reg rst;
wire clk_out;div_5clk div_5clk_u(
. clk(clk),
. rst(rst),.clk_out(clk_out));initial beginrst<=0;clk<=0;#10 rst<=1'b1;forever #10 clk<=~clk;endendmodule
仿真结果
clk为原来的时钟,经过分频后输出时钟是clk_out。
二、占空比为50%的5分频
相比之下,实现占空比为50%的5分频难度稍微有些高,但其实也不是很难。定义两个寄存器clk_p和clk_n,当cnt计数到2时clk_p实现翻转,clk_n在时钟的下降沿再将clk_p的值给clk_n,然后通过或运算assign clk_out = clk_p | clk_n;
最终得到我们所需要的clk_out。话不多说直接上代码:
代码
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/08/10 22:48:01
// Design Name:
// Module Name: div_5clk_50pes
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module div_5clk_50pes(
input clk,
input rst,output clk_out);reg [3:0] cnt;
reg clk_p;
reg clk_n;always@(posedge clk or negedge rst)beginif(!rst)begincnt<=1'b0;endelse if(cnt==3'b100)begincnt<='b0;endelsecnt<=cnt+1'b1;
end always@(posedge clk or negedge rst)beginif(!rst)beginclk_p<='b0;endelse if(cnt<=1'b1)beginclk_p<=1'b1;endelse beginclk_p<=1'b0;end
endalways@(negedge clk )begin//注意这里是低电平有效,而不是打一拍(延迟一个时钟周期),所以只延迟半个时钟周期clk_n<=clk_p;
endassign clk_out = clk_p | clk_n;endmodule
测试代码
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/08/10 21:58:29
// Design Name:
// Module Name: tb_div_5clk
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module tb_div_5clk();
reg clk;
reg rst;
wire clk_out;div_5clk_50pes div_5clk_50pes_u(
. clk(clk),
. rst(rst),.clk_out(clk_out));initial beginrst<=0;clk<=0;#10 rst<=1'b1;forever #10 clk<=~clk;endendmodule
仿真图
可以看到clk_out满足了我们的需求,通过这个小实验可以清楚的了解如何实现奇数分频电路,代码逻辑也相对简单,仔细分析就能理解其中的含义,好了今天就写到这里。
--晓凡 2022年8月10日于南宁书
verilog实现5分频相关推荐
- (79)FPGA面试题-Verilog实现五分频
1.1 FPGA面试题-Verilog实现五分频 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现五分频: 5)结束语. 1.1.2 本 ...
- Verilog实现2分频实例
1.1 Verilog实现2分频实例 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog实现2分频实例: 5)结束语. 1.1.2 本节引言 "不积 ...
- Verilog实现3分频实例
1.1 Verilog实现3分频实例 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog实现3分频实例: 5)结束语. 1.1.2 本节引言 "不积 ...
- 题目:用Verilog实现三分频电路,要求输出50%占空比。
题目:用Verilog实现三分频电路,要求输出50%占空比. module Div_three(input clk,input rst_n,output div_three ); reg [1:0] ...
- 一、verilog编写三分频电路
1.目标:使用verilog编写三分频电路,要求占空比大小为50%. 2.方法:分别使用上升沿和下降沿计数cnt_p以及cnt_n,并且计数从0到N-1(N为分频的次数,此时为3):分别对clk_p以 ...
- 【数字IC手撕代码】Verilog半整数分频|题目|原理|设计|仿真
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...
- Verilog——时钟3分频
Verilog--时钟3分频 功能实现 3分频模块实现 仿真 功能实现 简单实现一个对输入时钟的3分频.相信2分频可能是一个FPGA的初学者最先实现的模块了,但是心里一直有个疑问,3分频如何实现?最近 ...
- verilog的时钟分频与时钟使能
时钟使能电路是同步设计的基本电路.在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理.在ASIC中可以通过STA约束让分频始终和源时钟同相,但FPGA由 ...
- Verilog实现25分频电路代码
可以使用一个计数器实现 25 分频电路.可以设置计数器的计数范围为 0 到 24,每次计数器增加 1.在计数器的值为 24 时,将其设置为 0 并触发输出信号.这样就能实现 25 分频.以下是一个简单 ...
- verilog将100mhz分频为1hz_50m 分频器设计——50MHZ(含verilog程序)
50m 分频器设计--50MHZ(含verilog程序) 分频器设计 一.实验目的 1.熟悉分频器的原理: 2.掌握采用Verilog HDL语言设计分频器的方法: 3.进一步学习利用VerilogH ...
最新文章
- ImportError:cannot import name ‘display‘ File “XX“, line 5, in <module> from IPython import display
- 基于.net3.5以上XML操作.
- Linux 性能监测:Memory
- VC/MFC列表CListCtrl类的LVCOLUMN和LVITEM详解
- cmake构建工具 初步01
- centos7的systemd命令对比
- 网络协议从入门到底层原理(2)路由、网络常见概念(因特网, ISP, 接口, 上网方式)、公网私网、NAT
- oracle 没有debug权限,开启Oracle的debug级别日志
- javascript 轮播图(缓存效果)详细篇
- 新媒体活动策划方案要点
- 教你一招,如何使用抓包工具轻松获取微信文章数据!
- 我的ROS2开发环境
- java读取树形excel,然后入库
- reactHooks中使用events全局通信
- android tips 8 | mystra,Mystra是什么意思
- 【UE4】物理引擎(蓝图)
- 【java基础面试题】
- 复制百度文库文字收费内容
- linux判断搜索结果,shell编程之条件判断和find查询
- vue+php使用七牛云存储解决富文本图片冗余问题
热门文章
- [数据可视化] 图表设计原则
- easyExcel设置水印
- 发送ajax请求接收json数据,ajax接收到的json数据是空的
- 我的世界java1.13下_Minecraft我的世界Java版1.13-pre3更新内容
- Windows内核安全与驱动编程学习笔记----1.WDK安装
- 我的世界服务器的启动器在哪个文件夹,原神启动器在哪 启动器位置文件介绍...
- web前端期末大作业:基于HTML+CSS+JavaScript奥迪企业bootstrap响应式网站
- API安全(二):API安全设计原则
- BKEX Global研究院最新市场信息解读
- 2019年全国大学生数学建模E题