2017-01-03 12 views
-2

У меня есть базовое понимание пользовательского счетчика. Я знаю метод для реализации (8,4,2,1,2,4) счетчика, то есть с использованием FSM, но я не могу понять, как схема будет реализована?Какова будет схема для счетчика с осциллирующим 1s (1000, 0100, 0010, 0001, 0010, 0100)?

ответ

0

Это в лучшем случае незначительно, чтобы сделать с программированием, но может быть лучше на 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 ... 

(а) Хотя эта ссылка кажется указать невращающаяся сдвиг регистров, это должно быть простым делом для создания вращающегося, просто путем подачи выхода самого правого бита обратно в крайнее левое.