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分频相关推荐

  1. (79)FPGA面试题-Verilog实现五分频

    1.1 FPGA面试题-Verilog实现五分频 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现五分频: 5)结束语. 1.1.2 本 ...

  2. Verilog实现2分频实例

    1.1 Verilog实现2分频实例 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog实现2分频实例: 5)结束语. 1.1.2 本节引言 "不积 ...

  3. Verilog实现3分频实例

    1.1 Verilog实现3分频实例 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog实现3分频实例: 5)结束语. 1.1.2 本节引言 "不积 ...

  4. 题目:用Verilog实现三分频电路,要求输出50%占空比。

    题目:用Verilog实现三分频电路,要求输出50%占空比. module Div_three(input clk,input rst_n,output div_three ); reg [1:0] ...

  5. 一、verilog编写三分频电路

    1.目标:使用verilog编写三分频电路,要求占空比大小为50%. 2.方法:分别使用上升沿和下降沿计数cnt_p以及cnt_n,并且计数从0到N-1(N为分频的次数,此时为3):分别对clk_p以 ...

  6. 【数字IC手撕代码】Verilog半整数分频|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  7. Verilog——时钟3分频

    Verilog--时钟3分频 功能实现 3分频模块实现 仿真 功能实现 简单实现一个对输入时钟的3分频.相信2分频可能是一个FPGA的初学者最先实现的模块了,但是心里一直有个疑问,3分频如何实现?最近 ...

  8. verilog的时钟分频与时钟使能

    时钟使能电路是同步设计的基本电路.在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理.在ASIC中可以通过STA约束让分频始终和源时钟同相,但FPGA由 ...

  9. Verilog实现25分频电路代码

    可以使用一个计数器实现 25 分频电路.可以设置计数器的计数范围为 0 到 24,每次计数器增加 1.在计数器的值为 24 时,将其设置为 0 并触发输出信号.这样就能实现 25 分频.以下是一个简单 ...

  10. verilog将100mhz分频为1hz_50m 分频器设计——50MHZ(含verilog程序)

    50m 分频器设计--50MHZ(含verilog程序) 分频器设计 一.实验目的 1.熟悉分频器的原理: 2.掌握采用Verilog HDL语言设计分频器的方法: 3.进一步学习利用VerilogH ...

最新文章

  1. ImportError:cannot import name ‘display‘ File “XX“, line 5, in <module> from IPython import display
  2. 基于.net3.5以上XML操作.
  3. Linux 性能监测:Memory
  4. VC/MFC列表CListCtrl类的LVCOLUMN和LVITEM详解
  5. cmake构建工具 初步01
  6. centos7的systemd命令对比
  7. 网络协议从入门到底层原理(2)路由、网络常见概念(因特网, ISP, 接口, 上网方式)、公网私网、NAT
  8. oracle 没有debug权限,开启Oracle的debug级别日志
  9. javascript 轮播图(缓存效果)详细篇
  10. 新媒体活动策划方案要点
  11. 教你一招,如何使用抓包工具轻松获取微信文章数据!
  12. 我的ROS2开发环境
  13. java读取树形excel,然后入库
  14. reactHooks中使用events全局通信
  15. android tips 8 | mystra,Mystra是什么意思
  16. 【UE4】物理引擎(蓝图)
  17. 【java基础面试题】
  18. 复制百度文库文字收费内容
  19. linux判断搜索结果,shell编程之条件判断和find查询
  20. vue+php使用七牛云存储解决富文本图片冗余问题

热门文章

  1. [数据可视化] 图表设计原则
  2. easyExcel设置水印
  3. 发送ajax请求接收json数据,ajax接收到的json数据是空的
  4. 我的世界java1.13下_Minecraft我的世界Java版1.13-pre3更新内容
  5. Windows内核安全与驱动编程学习笔记----1.WDK安装
  6. 我的世界服务器的启动器在哪个文件夹,原神启动器在哪 启动器位置文件介绍...
  7. web前端期末大作业:基于HTML+CSS+JavaScript奥迪企业bootstrap响应式网站
  8. API安全(二):API安全设计原则
  9. BKEX Global研究院最新市场信息解读
  10. 2019年全国大学生数学建模E题