具有振荡 1(1000、0100、0010、0001、0010、0100)的计数器的电路是什么?

What will be the circuit for the counter with oscillating 1s (1000, 0100, 0010, 0001, 0010, 0100)?

我对自定义计数器有了基本的了解。 我知道一种实现 (8,4,2,1,2,4) 计数器的方法,即使用 FSM,但我无法弄清楚该电路将如何实现?

这充其量勉强 与编程有关,但在 one of the other sites 上可能会更好,在那里你无疑会得到比这个更好的答案。

然而,就实际答案而言(无论其缺点是什么),这很难做到,因为每个状态并不完全指示以下状态。也就是说,我的意思是没有办法判断模式 0010 之后是 0100(向左)还是 0001(向右)。

但是, 有一种方法可以使用六位 rotating shift register (a) 执行此操作,如下所示:

    b5 b4 b3 b2 b1 b0
+->  1  0  0  0  0  0 --+
|                       |
+-----------------------+

然后,您组合这些位以生成实际的 结果 位:

b5       -> r3
b4 OR b0 -> r2
b3 OR b1 -> r1
b0       -> r0

这样你就会看到重复的模式:

b5 b4 b3 b2 b1 b0 | b5 b4 ...
r3 r2 r1 r0 r1 r2 | r3 r2 ...

而且,如果您希望在末端有一些延迟,您只需使用一个组合略有不同的八位移位寄存器。这样它在 r3r0:

上停留的时间是原来的两倍
b7 OR b0 -> r3
b6 OR b1 -> r2
b5 OR b2 -> r1
b4 OR b3 -> r0

这给出:

b7 b6 b5 b4 b3 b2 b1 b0 | b7 b6 ...
r3 r2 r1 r0 r0 r1 r2 r3 | r3 r2 ...

(a)虽然那个link好像指定了非旋转移位寄存器,但应该是个简单的事情只需将最右边位的输出反馈到最左边的位即可创建一个旋转位。