У меня есть базовое понимание пользовательского счетчика. Я знаю метод для реализации (8,4,2,1,2,4) счетчика, то есть с использованием FSM, но я не могу понять, как схема будет реализована?Какова будет схема для счетчика с осциллирующим 1s (1000, 0100, 0010, 0001, 0010, 0100)?
ответ
Это в лучшем случае незначительно, чтобы сделать с программированием, но может быть лучше на one of the other sites, где вы, несомненно, получите лучший ответ, чем этот.
Однако, с точки зрения реального ответа (независимо от его недостатков), это трудно сделать, потому что каждое государство не полностью диктует следующее состояние. Под этим я имею в виду, что нет способа сказать, следует ли следовать за шаблоном 0010
: 0100
(слева) или 0001
(идет вправо).
Однако есть это способ сделать это с шестиразрядным rotating shift register(а) следующим образом:
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
и 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 ...
(а) Хотя эта ссылка кажется указать невращающаяся сдвиг регистров, это должно быть простым делом для создания вращающегося, просто путем подачи выхода самого правого бита обратно в крайнее левое.