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