Verilog 约翰逊计数器

2025年3月17日 | 阅读 3 分钟

约翰逊计数器是一种数字电路,其中一系列触发器以反馈方式连接。Verilog 约翰逊计数器是一个计数器,如果位数是 N,则计数 2N 个状态。

该电路是一种特殊类型的移位寄存器,其中最后一个触发器的补码输出被反馈到第一个触发器的输入。这几乎类似于环形计数器,但有一些额外的优点。

约翰逊计数器的主要优点是它只需要标准环形计数器一半的触发器数量,然后它的模数减半。因此,一个 n 级 约翰逊计数器将循环一个数据位,给出 2n 个不同的状态序列,因此可以被视为一个 mod-2n 计数器。

最后一个触发器的反相输出 Q 连接回第一个触发器的输入 D。下面是一个 4 位约翰逊计数器的电路图

Verilog Johnson Counter

这种在反馈到输入 D 之前反相 Q 会导致计数器 计数 方式不同。它不会像普通环形计数器那样通过一组固定的模式进行计数,例如对于一个 4 位计数器,"0001"(1),"0010"(2),"0100"(4),"1000"(8)然后重复。约翰逊计数器向上计数,然后向下计数,因为初始逻辑 "1" 通过它向右传递,替换前面的逻辑 "0"。

一个 4 位约翰逊环形计数器传递四组逻辑 "0",然后传递四组逻辑 "1",从而产生一个 8 位模式。

由于反相输出 Q 连接到输入 D,因此这种 8 位模式不断重复。例如,"1000", "1100", "1110", "1111", "0111", "0011", "0001", "0000"。这在下表中进行了演示

时钟脉冲号FFAFFBFFCFFD
00000
11000
21100
31110
41111
50111
60011
70001

除了计数或围绕连续循环旋转数据之外,环形计数器还可以用于检测或识别一组数据中的各种模式或数值。通过将简单的逻辑门(例如 OR 门)连接到触发器的输出,可以使电路检测一组数字或值。

标准的 2、3 或 4 级 约翰逊环形计数器 也可以通过改变它们的反馈连接来将时钟信号频率分频,并且也可以使用除以 3 或除以 5 的输出。

例如,一个 3 级约翰逊环形计数器可以通过连接到 A、B 和 NOT-B 处的数据输出来用作一个 3 相、120 度相移方波发生器。

标准 5 级约翰逊计数器,例如常用的 CD4017,通常用作同步十进制计数器/分频器电路。

其他组合,例如更小的 2 级电路,也称为 正交 振荡器或发生器,可以用于产生四个单独的输出,每个输出相互之间相差 90 度以产生一个 4 相时序信号。

示例

测试平台

输出如下所示

ncsim> run
T=0 out=xxxx
T=10 out=0001
T=50 out=0000
T=70 out=1000
T=90 out=1100
T=110 out=1110
T=130 out=1111
T=150 out=0111
T=170 out=0011
T=190 out=0001
T=210 out=0000
T=230 out=1000
T=250 out=1100
T=270 out=1110
T=290 out=1111
T=310 out=0111
Simulation complete via $finish(1) at time 330 NS + 0