-3

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

4

1 回答 1

0

这充其量与编程略有关系,但在其他网站之一上可能会更好,您无疑会得到比这个更好的答案。

但是,就实际答案而言(无论其缺点如何),这很难做到,因为每个状态并不完全决定下一个状态。我的意思是,没有办法判断该模式0010应该跟随0100(向左)还是0001(向右)。

但是,有一种方法可以使用六位旋转移位寄存器 (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 ...

而且,如果你想在结尾处有一些延迟,你只需使用一个组合略有不同的八位移位寄存器。r3这样它在and上的逗留时间是原来的两倍r0

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)尽管该链接似乎指定了非循环移位寄存器,但创建一个循环移位寄存器应该是一件简单的事情,只需将最右边位的输出反馈回最左边位即可。

于 2017-01-03T04:14:32.230 回答