首页 > 代码库 > 约翰逊(Johnson)计数器

约翰逊(Johnson)计数器

约翰逊(Johnson)计数器又称扭环计数器,是一种用n位触发器来表示2n个状态的计数器。它与环形计数器不同,后者用n位触发器仅可表示n个状态。2~n进制计数器(n为触发器的个数)2~n个状态。若以四位二进制计数器为例,它可表示16个状态。但由于8421码每组代码之间可能有二位或二位以上的二进制代码发生改变,这在计数器中特别是异步计数器中就有可能产生错误的译码信号,从而造成永久性的错误。而约翰逊计数器的状态表中,相邻两组代码只可能有一位二进制代码不同,故在计数过程中不会产生错误的译码信号。鉴于上述优点,约翰逊计数器在同步计数器中应用比较广泛。

??

来自 <http://zhidao.baidu.com/link?url=_NMF_BQ7scA5qFy9t2V_3HpMVJeUDpRgnYJlfMtiucDRpykyUA5BlHfW4Lv7jj-Yrh7oB5oTKZ3OhTrt7IWxqq>

??

??

??

??

??

??

??

??

??

??

约翰逊(Johnson)计数器又称扭环计数器,是一种用n位触发器来表示2n个状态的计数器。它与环形计数器不同,后者用n位触发器仅可表示n个状态。n位二进制计数器(n为触发器的个数)2^n个状态。若以四位二进制计数器为例,它可表示16个状态。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

module?johnson

#(

????parameter N=4

)

(

????input?clk,

????input?rst_n,

????output?reg?[N-1:0] q

);

??

always?@ (posedge?clk,negedge?rst_n)

if(!rst_n)

????q <= {N{1‘b0}};

else?if(!q[0])

????q <= {1‘b1,q[N-1:1]};

else

????q <= {1‘b0,q[N-1:1]};

??

endmodule

用原理图搭

??

路漫漫其修远兮,吾将上下而求索

??

来自 <http://www.cnblogs.com/qiweiwang/archive/2011/09/12/2174106.html>

??

扭环形计数器编辑

本词条缺少概述信息栏名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

扭环形计数器电路图示例(1张)

扭环形计数器图

为了提高环形计数器电路状态利用率,改变反馈函数为 D0=D2‘ ,则得到如上所示逻辑电路图,称为扭环形计数器。  扭环形计数器的有效状态是:000100110111011001000(环形计数器是100010001100,如此循环,工作时,首先用 STA 置电路为全 0,然后加 CP

② 波形图

③状态图

下面是扭环形计数器状态图。有效状态 6 个,电路进入有效循环;无效状态 2 个,电路进入无效循环。这个电路不能自启动。

④ 优缺点n?个触发器组成的扭环形计数器 2n 个有效状态,有效状态利用率比环形计数器增加一倍。3 位扭环形计数器可构成 6 节拍发生器 T0 ~ T5,但需加译码电路。由于电路在每次状态转换时,只有一位触发器改变状态,电路译码时不会产生竞争冒险现象,而且,译码电路简单。

??

来自 <http://baike.baidu.com/view/4837609.htm?fr=aladdin>

约翰逊(Johnson)计数器