在FPGA开发中,我们往往需要对时钟进行分频,得到满足我们需求的时钟频率。尽管这些分频的工作完全可以由PLL等ip核完成,但通过verilog语言同样也可以实现。在本博客中,我们仅讨论整数倍分频。
偶数倍分频偶数倍分频的实现较为简单,一般是设置一个计数器,从0开始计数,达到N-1后又重新归零,分频的时钟信号在(N/2-1)时翻转。
奇数倍分频 三分频分别设置两个模3计数器cnt1,cnt2,以及两个中间信号clk1,clk2,clk1信号在clk信号的上升沿且cnt1=0或2的时候翻转,而clk2信号在clk信号的下降沿且cnt2=0或2的时候翻转,最后clk1和clk2信号相或,得到最终的结果clk_div3,即实现了三分频的效果。 以下是实现的Verilog代码:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/02/07 12:32:58
// Design Name:
// Module Name: odd_clkdiv
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module odd_clkdiv(
input wire rst,
input wire clk,
output wire clk_div3
);
reg [3:0] cnt1;
reg [3:0] cnt2;
reg clk1;
reg clk2;
assign clk_div3=clk1 | clk2;
//cnt1
always@(posedge clk,posedge rst)
if(rst)
cnt1
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?