Какой будет схема для счетчика с колеблющимися 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) Хотя эта связь, по-видимому, задаетне вращающиеся сдвиговые регистры, было бы просто создать вращающийся регистр, просто передав выход самого правого бита обратно в самый левый.

Другие вопросы по тегам