概述
目录
https://www.cnblogs.com/lyc-seu/p/13062697.html#1-%E7%8E%AF%E5%BD%A2%E8%AE%A1%E6%95%B0%E5%99%A8
-
- 1.环形计数器
- 2.扭环形计数器
- 3.线性反馈移位寄存器
- 4.行波计数器
1. 环形计数器
module ring_counter4bit
#(parameter N=4)
(
input clk,
input rst_n,
output reg[N-1:0]ring_cnt
);
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
ring_cnt<=4'b0001;
else
ring_cnt<={ring_cnt[0],ring_cnt[N-1:1]};
end
endmodule
https://wenku.baidu.com/view/73ec140bba1aa8114431d945.html
N个寄存器构成的环形计数器,状态数:N
2. 扭环形计数器
https://wenku.baidu.com/view/73ec140bba1aa8114431d945.html
约翰逊(Johnson)计数器又称扭环计数器,是一种用n位触发器来表示2n个状态的计数器。它与环形计数器不同,后者用n位触发器仅可表示n个状态。2~n进制计数器(n为触发器的个数)有2~n个状态。若以四位二进制计数器为例,它可表示16个状态。但由于8421码每组代码之间可能有二位或二位以上的二进制代码发生改变,这在计数器中特别是异步计数器中就有可能产生错误的译码信号,从而造成永久性的错误。而约翰逊计数器的状态表中,相邻两组代码只可能有一位二进制代码不同,故在计数过程中不会产生错误的译码信号。鉴于上述优点,约翰逊计数器在同步计数器中应用比较广泛。
module Johnson_counter4bit
#(parameter N=4)
(
input clk,
input rst_n,
output reg[N-1:0]Johnson_cnt
);
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
Johnson_cnt<=0;
else
Johnson_cnt<={~Johnson_cnt[0],Johnson_cnt[N-1:1]};
end
endmodule
N个寄存器构成的扭环形计数器,状态数:2N
就是将环形计数器最后一级反向后接到第一级。 对于自启动的设计,如下:
分析:
修改反馈逻辑的值,可使进入正常工作的循环。通过分析可知,s,s,r,r总共有四种状态可以修改反馈进入正常的计数反馈循环。通过卡诺图分析,s,s包围的2*2黄色框和原先4*2橙色框面积最大,反馈函数最简单,电路实现便捷。
另外一种反馈函数:
3. 线性反馈移位寄存器
N级的线性反馈移位寄存器最多有 2^N-1 个状态。
线性反馈移位寄存器的基本结构见
https://blog.csdn.net/qq_44113393/article/details/89852994
https://www.cnblogs.com/weijianlong/p/11947741.html
假设开始的时候(D2,D1,D0 ) = (0,0,1),那么每过一个时钟周期会进行跳变一次,可以看到具体的跳变如图所示:
对于反馈多项式具有什么数学性质实际上我一直比较好奇,应该不只是表示一个等效电路这么简单,直到看到这篇文章:
http://blog.sina.com.cn/s/blog_62d9edac01015lsd.html
得到的余数就是R(x)。
可以发现,当一开始输入一个1,之后每个周期代表的输入序列M(x)除以反馈多项式得到的R(x)代表的寄存器值就是001,010,100,011,101,111,101,也就是上面表中的状态。
通过这一特性,线性移位寄存器在CRC电路中有广泛应用。
4. 行波计数器
2的幂次分频
每一级的输出都是输入时钟的二分频,N级串联实现输入时钟的2N2N次分频
最后
以上就是安静鸡为你收集整理的数字集成电路 -- 各种计数器简介(环形计数器,扭环形计数器,线性反馈移位寄存器,行波计数器)的全部内容,希望文章能够帮你解决数字集成电路 -- 各种计数器简介(环形计数器,扭环形计数器,线性反馈移位寄存器,行波计数器)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复