在之前的一篇博客中,我们讨论了如何实现偶数分频和奇数分频,但是并没有考虑占空比是否为50%,本文的目标是实现任意整数分频,且占空比为50%。 具体的方法如下:
偶数分频时设计一个计数器,从0计到N-1,然后又回到0,信号在计数器等于N/2-1(=(N-1)/2)和N-1的时候翻转。该信号即为占空比为50%的分频时钟。
奇数分频时设计两个计数器cnt_p和cnt_n,分别在时钟的上升沿和下降沿改变,并且计数范围为0-N-1,同时设计两个信号clk_p和clk_n,clk_p在时钟上升沿改变,clk_n在下降沿改变,当计数器cnt_p的值为(N-1)/2和N-1时,clk_p信号翻转,clk_n同理。另外一个参数为CLK_PHASE,即复位时clk_p和clk_n信号的电平,在本文中,当CLK_PHASE为1时,clk_p和clk_n复位时为高电平,否则复位时为低电平。为了生成占空比为50%的时钟输出,我们有: 当CLK_PHASE为1时,clkdiv_out=clk_p&clk_n; 当CLK_PHASE为0时,clkdiv_out=clk_p|clk_n;
代码实现module div #(
parameter DIV_NUM = 11,
parameter CLK_PHASE =1
)(
input logic clk,
input logic rst_n,
output logic clkdiv
);
logic clk_p;
logic clk_n;
logic [31:0] cnt_p;
logic [31:0] cnt_n;
//cnt_p
always_ff@(posedge clk,negedge rst_n)
if(~rst_n)
cnt_p
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【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脚手架写一个简单的页面?