计数器与分频器学习心得

本文详细介绍了数字电路中计数器和分频器的应用。首先讲解了计数器的基本原理,以10进制计数器为例展示代码实现。接着,讨论了不同类型的分频器设计,包括偶数分频、奇数分频以及小数分频。对于奇数分频,区分了无占空比要求和保持50%占空比的实现方式。最后,提到了通过组合分频器实现小数分频的方法,并给出了1000Hz到1Hz分频的示例。整体内容深入浅出,适合数字电路学习者参考。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

分频器往往会使用计数器以及组合逻辑来完成分频,以下是对于计数器的学习和相关分频器如何设计;

一、计数器

计数器主要注意的就是时序逻辑与组合逻辑分开写,这样符合RTL设计代码规范
例:10进制的计数器

module counter_10(
input clk,
input rst_n,
output 	q);

//时序部分
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
q<='d0;
else if(end_counter==1'b1)begin
q<=q+1'b1;
end
end
//组合逻辑
assign end_counter=(q<=9)?1'b1:1'b0; 
endmodule

二、分频器

1.偶数分频

偶数分频,是指的是分频的系数是偶数,如果采用计数器进行分频的话计数为N/2-1时进行时钟翻转
代码如下(示例)4分频:

module F_2(
input clk,
input rst_n,
output reg q, 
output clk4);
wire not_over;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
 q<=0;clk4<=0;
end
else if(not_over)begin
q<=0;
clk4<=~clk4
end
else begin
q<=q+1;
clk4<=clk4;
end
end

assign not_over=q==((4/2)-1)?1:0;



endmodule

在这里插入图片描述

2.奇数分频

奇数分频根据占空比要求分为以下两种,一种是hi没有占空比要求的直接就可以搭配就可以,比如说3分频就=1+2,也可以是2+1;5分频可以是 1+4,4+1,2+3,3+2;如1+4就是在计数为1的时候输出时钟进行翻转,然后计数到5的时候再次翻转,计数到5的时候清零;
代码如下(示例):

module div_5(clk,rst_n,clk_div);
input clk ;
input rst_n;
output reg clk_5;
reg[2:0] q;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
q<=1;
clk_5<=0;
end
else if(q==1)begin
clk_5=~clk_5;
q<=q+1;
end
else if(q==5)
begin
clk_5=~clk_5;
q<='d1;

end
else begin q<=q+1;
clk_5<=clk_5;
end
endmodule

在这里插入图片描述

下一种
主要就是利用上升沿下降沿来得到占空比50%的分频电路;
从0计数,在(N-1)/2,以及N-1处进行翻转
在这里插入图片描述

分别得到上升沿与下降沿的情况,然后进行或得到奇数分频


3.小数分频

小数分频又称为分数分频,比如说33/6分频,很显然要在33个时钟周期下产生6个新的周期,等于5.5,显然是由5个的周期和6分频周期组合而成,需要几个5分频周期,需要几个6分频周期能,假设5分频需要N个,6分频需要M个,所以N+M=6;
5N+6M=33;
所以N=3,M=3;
所以33个时钟周期内可以直接由3个五分频加上3个6分频

4.其他

例使用10进制计数器来实现1000hz分频为1hz的分频
思路使用10分频然后对结果在进行分频,在进行分频;分开来看,每次进行的都是偶数分频,所以,采用计数到10/2-1=4;代码如下:

在这里插入图片描述
在这里插入图片描述

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极光sdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值