МИЭТ:ИЭМС. Консультационный центр.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » МИЭТ:ИЭМС. Консультационный центр. » Логическое проектирование » Последовательностные устройства - автоматы


Последовательностные устройства - автоматы

Сообщений 1 страница 12 из 12

1

Генератор последовательности ASCII кодов
для примера взята фраза "Приветствую." в кодировке CP-866.

Таблица состояний генератора последовательности ASCII кодов, фраза "Приветствую.", кодировка CP-866

Генератор последовательности ASCII кодов

На выходах устройства должны поочередно появляться ASCII коды символов заданной по заданию фразы.

Вариантов решения как минимум два:

Первый
Сделать 8-разрядный счетчик с ненормальным порядком счета, триггеры которого хранят непосредственно очередной ASCII код.
В случае повторяющихся символов необходимо добавить еще триггеры, в которых хранить номер повторяющегося символа. Число доп. триггеров определяется символом с максимальным числом повторов
(в примере: "в" - 2шт, "т" - 2шт. Т.е. требуется один доп. триггер).

(см. пример) Управляющие функции этих девяти триггеров будут иметь, в общем случае, 9 аргументов. В конкретных вариантах устройств число аргументов управляющих функций может оказаться существенно меньше.
_________
Второй
Сделать счетчик с модулем, равным числу символов фразы (в примере: 12 символов, т.е. требуется 4-разрядный счетчик с модулем m=12).
Выходы этого счетчика направить на комбинационный блок - декодер 4в8, который преобразует "номер" символа фразы в соответствующий ASCII код.

(см. пример) Здесь управляющие функции триггеров счетчика будут иметь уже только 4 аргумента. Но зато добавятся еще восемь функций декодера, каждая тоже 4 аргументов.
_________

В конце проектирования логики требуется добавить асинхронный вход возврата устройства в начальное состояние, т.е. в первый символ фразы. Для этого надо добавить входы асинхронного сброса (установки) в триггеры.

"Степеней свободы" тут есть несколько. Например: символы фразы можно нумеровать в произвольном порядке; счетчики в обоих вариантах решения неполные, т.е. ряд строк полных таблиц истинности управляющих функций можно заполнять произвольными значениями; существует несколько методов проектирования счетчиков.

Это только два из вариантов решения. Но никто не запрещает придумать свой. Главное чтобы работало.

P.S.: таблица кодировок CP-1251 и CP-866 - скачать

0

2

Генератор вторичных синхросигналов
для примера взяты времена импульсов ТР={1,2,3} и времена задержек между импульсами TD={4,3,2}.

Таблица состояний генератора вторичных синхросигналов, ТР={1,2,3}, TD={4,3,2}

Генератор вторичных синхросигналов

Входной тактовый сигнал устройство должно преобразовывать в три выходных "вторичных" синхросигнала с определенными длительностями импульсов и интервалов между ними.

В этом устройстве есть важное дополнительное требование - на выходных сигналах устройства ни в коем случае недопустимы помехоподобные импульсы, вызванные "гонками" сигналов.

0

3

Счетчик с переменным модулем и направлением счета
для примера взяты направления и модули счета М={+15;-13;+9;-6}.

Таблица состояний счетчика с переменным модулем и направлением счета М={+15;-13;+9;-6}

Счетчик с переменным модулем и направлением счета

Тут из названия совершенно ясно, что требуется получить. Могу только добавить ниже пару деталей.

Важное дополнение к заданию - счетчик должен быть двоично кодированным, т.е. в каждом режиме диапазон чисел должен быть непрерывным и начинаться (заканчиваться) с нуля.

Управление режимом счета ведется "извне" с помощью двух дополнительных внешних асинхронных управляющих сигналов. Это часто может приводить к появлению "нештатных" состояний устройства. В работе должно быть проанализировано, как устройство будет выходить из таких ситуаций. Если в штатный режим счетчик возвращается самостоятельно, то через какое максимальное число тактов? Возможно ли "зависание" в одном состоянии или в "паразитном цикле"?

NEW! На рисунке опечатка. В цикле "М=-13" при переходе на "второй круг" написано неверное значение двоичного сигнала - везде напротив 12 в значениях Q должно стоять его двоичное значение 1100.

0

4

Двухрежимный распределитель импульсов
для примера взят шестиразрядный распределитель с одиночным и парным режимами.

Таблица состояний двухрежимного распределителя импульсов 6х1, 3х2

Двухрежимный распределитель импульсов

Это устройство похоже на генератор вторичных синхросигналов. Но выходные импульсы должны иметь длительность половины периода входного тактового сигнала и следовать друг за другом с интервалом также в половину периода CLK (по одному или попарно).

Важное дополнительное требование - на выходных сигналах устройства ни в коем случае недопустимы помехоподобные импульсы, вызванные "гонками" сигналов.

0

5

Счетчик с циклически изменяющимся модулем
для примера взяты времена цветов светофора 9-3-7-2 (красный-желтый1-зеленый-желтый2).

Таблица состояний счетчика с циклически изменяющимся модулем, 9-3-7-2

Счетчик с циклически изменяющимся модулем

Светофор - наиболее полно отражает работу требуемого устройства. Оно имеет четыре режима в каждом из которых находится определенное время и переключается по этим режимам по замкнутому циклу.

Дополнительное требование - в режиме зеленого цвета (в примере - 7) счет должен быть обратным до 0 или 1, т.е. 6->0 или 7->1.

Это устройство тоже можно построить как минимум двумя способами:

- На базе счетчика с четырьмя модулями счета, режимом которого управляет дополнительный полный двухразрядный счетчик. Т.е. реализуется цикл "цветов" светофора, а в каждом цвете - один цикл с заданным модулем счета.

- На базе вычитающего двоично-кодированного счетчика с модулем, равным сумме всех цветовых интервалов (в примере - 21). Обратный счет до нуля в зеленом режиме достигается переносом последнего интервала (2) в начало цикла. Определение, в каком режиме находится светофор, можно сделать по принадлежности текущего числа тому или иному интервалу (20...19 - желтый2; 18...10 - красный; 9...7 - желтый1; 6...0 - зеленый).

0

6

обещанный п.3, объединенный с п.4.

СИНТЕЗ ДВУХРЕЖИМНОГО СЧЕТЧИКА МЕТОДОМ ИСКЛЮЧЕНИЯ ЛИШНИХ СОСТОЯНИЙ

Здесь, для примера, привел таблицу переходов счетчика с двумя режимами. В первом режиме устройство работает как простой двоично кодированный суммирующий счетчик с модулем счета 13. Во втором режиме устройство перебирает числа в порядке первых девяти кодов Грея.

Таблица переходов автомата + Таблицы истинности управляющих функций триггеров

КУРСОВЫЕ РАБОТЫ 2012. Пояснения к вариантам заданий.

В левой половине таблицы для каждого текущего числа Qn и режима М показано куда должны переключиться триггеры на следущем шаге счета Qn+1.
Справа для каждого триггера показаны необходимые значения управляющих сигналов, чтобы произошел требуемый переход от Qn к Qn+1
Для примера я тут сделал в каждом разряде устройства свой тип триггера - DC, TV, RS или JK. Ну и для удобства подсветил их разными цветами.
Таблицы заполнил в соответствии со "словарями" триггеров, которые показаны постом выше.

Если из таблицы убрать столбцы Qn+1, то получится таблица истинности для всех управляющих функций триггеров устройства.
Очевидно, что в общем случае, каждая такая функция является функцией всех разрядов счетчика и режима (в примере Q+М = 5 шт.).

В таблице много "иксов" и часто есть неохваченные строки, где значения функции тоже можно выбрать произвольно. В примере таких "лишних состояний" n(Q)*n(M) - (n(mod1)+n(mod2)) = 24*2 - (13+9) = 32 - 22 = 10шт.
Поэтому появляется довольно широкое поле для фантазии с целью упрощения функций.
Если бездумно заполнить "иксы", например, нулями, то могут получиться довольно сложные функции и потом будете мучиться с топологией. Если над картами Карно/Вейча посидеть подумать, то можно упростить функции и схему в целом.
В ряде случаев функции можно составить без карт Карно, настолько они бывают простыми.

Кстати, бездумный переход от RS(JK) триггера к DC  или от JK к TV может запросто привести к усложнению схемы. Т.к. вы сами отказываетесь от возможности произвольного назначения ряда "иксов".

Дерзайте, кто еще не приступил к выполнению к.р. Или исправляйте ошибки, у кого так ничего и не заработало.

0

7

противоположность п.2 КАК НЕ НаДО ДЕЛАТь УПРаВЛЯеМЫй СБроС

Почему то многие студенты считают, что "управляемый сброс" означает формирование в нужный момент сигнала асинхронного сброса триггеров.
У такого метода есть как минимум три очевидных недостатка:
- обязательным условием появления такого сигнала сброса является появление "лишнего состояния" на выходах триггеров;
- такой сигнал сброса будет "помехоподобным", т.е. очень коротким и даже не достигающим полной амплитуды логического перепада. (пояснение)
- этот сигнал сброса формируется в комбинационом блоке, который отлавливает то самое "лишнее состояние", но в любом комбинационном блоке очень велик риск возникновения коротких импульсов, обусловленных гонками сигналов. Т.е. существует большой риск, что такие импульсы гонок сигналов будут восприняты триггерами, как ресет.

0

8

Еще замечание по поводу синтеза многорежимных устройств.

Как видно из примера двухрежимного счетчика, число аргументов управляющих функций равно числу разрядов счетчика плюс число разрядов управляющего режимом сигнала.
Может получиться, что всего аргументов будет больше 6, а это уже неудобства при работе с картами Карно/Вейча.
Тогда можно разделить задачу на части, т.е. определить управляющие функции Хi для каждого режима отдельно, а потом мультиплексировать их.
Тогда итоговая функция будет примерно такая 

Х=!М1*!М0*Х0 +  !М1*М0*Х1 + М1*!М0*Х2 + М1*М1*Х3     (для четырех режимов)

Также часто можно синтезировать управляющие функции без карт Карно вообще, для этого надо представлять себе алгоритм работы устройства.

Например счетчик в коде Грея.
Известно что каждый бит в коде Грея равен сумме по модулю два этого и более старшего бита соответствующего двоичного числа, т.е. g(i) = b(i) ⊕ b(i+1)
Подставив в формулу вместо b(j) функции обратного преобразования g(i) представятся функциями аргументов g(i), g(i+1) и g(i-1).
Если строить этот счетчик на D триггерах, то получившиеся выражения и будут управляющими функциями D(i).

Сравним масштабы бедствия для 16-разрядного счетчика в коде Грея. С одной стороны карты Карно функций 16-ти аргументов. И простые рекуррентные выражения с другой стороны.

P.S.: Осваивайте аппарат математической логики или возитесь с картами Карно большой разрядности.

P.P.S.: После этого поста можно плавно перейти к методу управляемого сброса при синтезе неполных двоично кодированных счетчиков. To be continued...

0

9

Метод управляемого сброса - хороший, часть 1

Пример с картинками/таблицами будет чуть позже.

А пока на словах.
Допустим поставлена задача сделать счетчик с модулем счета М не равным 2K, для определенности - суммирующий.
Второе допущение - вы где либо нашли готовую схему счетчика на вашем типе триггера, но полный, т.е. с модулем 2K. И определили по этой схеме (выписали из книги) формулы "стандартных" управляющих функций.
Далее договоримся, что:
      "st" - индексы управляющих функций стандартной схемы;
      "clr" - индекс "сбрасывающей добавки" управляющих функций (clear);
      "n+1" - индекс следующего состояния выходов Q триггеров;
      "n" - индекс текущего состояния;
      "d" - индекс десятичной записи числа;
      "b" - индекс двоичной записи числа;
      "CLR" - контрольный сигнал, который равен 1 в случае, если счетчик пора сбросить (CLEAR);
      "!" - символ, обозначающий инверсию;
      "X" - произвольное значение, 0 или 1 (т.е. можно выбрать что больше нравится);
      имя сигнала обычным текстом - одноразрядное число;
      имя сигнала полужирным текстом - многоразрядное число (поразрядная функция).

Очевидно, что результирующие управляющие функции можно в общем случае выразить, как
Fi = Fst*!CLR + Ficlr*CLR.

Если CLR=0, то работает стандартная Fst. А если CLR=1, то работает сбрасывающая Ficlr. В этом можно узнать мультиплексор 2 в 1, где CLR подается на адресный вход, а Fst и Ficlr - на информационные.

Сбрасывающая добавка Ficlr зависит от типа триггера, и может быть как константным значением, так и функцией.

Для примера возьмем значение модуля счета 25. В нем требуется обеспечить, чтобы вслед за состоянием Qn=11000b=24d следовало состояние Qn+1=00000b.

В реальной задаче сразу можно отметить, что управляющие функции необязательно модифицировать у всех триггеров.
Общее правило - модифицируем упр. функции только тех триггеров, изменение значения которых противоречит изменению значения в стандартной схеме
Наш пример:
В точке сброса      - Qn=11000b     должно перейти в      Qn+1=00000b.
В полном счетчике - Qn=11000b=24d  перешло бы в  Qn+1=11001b=25d.
Замечаем, что в обоих случаях Q2 и Q1 сохраняют свое значение. Тогда для этих триггеров модифицировать управляющие функции не обязательно!

Далее рассуждения ведутся только для триггеров, у которых необходимо модифицировать управляющие функции.

Для разных типов триггеров:

TV-триггер

(договоримся, что триггер переключается при V=1)
   Стандартные управляющие функции - Vist.

(Думаем ...)

   По словарю известно, что чтобы следующее значение Qn+1=0 на вход V TV-триггера надо подать "сбрасывающую добавку" Vclr = Qn.
   Т.е. будет либо сохранен текущий 0, либо триггер перевернется из 1 в 0.

   Получается общее выражение
Vi = Vist*!CLR+Viclr*CLR = Vist*!CLR+Qin*CLR
 
   В нашем примере в точке сброса Qn=11000b надо сбросить триггеры Q4 и Q3, а триггеру Q1 запретить переключение. Подставим значения в общее выражение и упростим:

V4 = V4st*!CLR+V4clr*CLR = V4st*!CLR+Q4n*CLR = V4st*!CLR+1*CLR = V4st*!CLR+(1+V4st)*CLR = V4st*(!CLR+CLR)+1*CLR = V4st+CLR
V3 = V3st*!CLR+V3clr*CLR = (так же)= V3st+CLR
V0 = V0st*!CLR+V0clr*CLR = V0st*!CLR+Q0n*CLR = V0st*!CLR+0*CLR = V0st*!CLR

DC-триггер

Стандартные управляющие функции - Dist.

(Думаем ...)

   По словарю известно, что чтобы следующее значение Qn+1=0 на вход D DC-триггера надо подать "сбрасывающую добавку" Dclr = 0.
   Иными словами - "записать" 0 в триггер.

   Получается общее выражение
Di = Dist*!CLR+Diclr*CLR = Dist*!CLR+0*CLR = Dist*!CLR

   В нашем примере в точке сброса Qn=11000b надо записать нули в триггеры Q4 и Q3. Триггеру Q1 надо запретить записывание 1, т.е. тоже записать 0.
   Отличий нет, так что все функции будут одинаковыми
Di =  Dist*!CLR

RS-триггер

(договоримся, что активные уровни R и S равны 1, т.е. записываем 0 при RS=10b)
   Стандартные управляющие функции - Rist и  Sist.

(Думаем ...)

   По словарю известно, что чтобы следующее значение Qn+1=0 на вход S RS-триггера надо подать "сбрасывающую добавку"  Sclr = 0.
   "Сбрасывающая добавка" по входу R по словарю зависит от текущего значения Qn:  если Qn=0, то R любая, т.е. Rclr = Х;  если Qn = 1, то Rclr = 1.
   
   Получаются общие выражения
Si = Sist*!CLR+Siclr*CLR = Sist*!CLR+0*CLR = Sist*!CLR,

Ri = Rist*!CLR+(!Qin*X+1*Qin)*CLR = (выберем X=1) = Rist*!CLR+(!Qin*1+Qin)*CLR = Rist*!CLR+(!Qin+Qin)*CLR = Rist*!CLR+1*CLR =  Rist+CLR

   В нашем примере в точке сброса Qn=11000b надо установить в ноль триггеры Q4 и Q3. Триггер Q1 тоже надо установить в 0, т.к. при выводе  в Rclr было выбрано Х = 1.
   Отличий нет, так что все функции будут одинаковыми.
Si =  Sist*!CLR,

Ri = Rist+CLR

JK-триггер

(договоримся, что активные уровни J и K равны 1, т.е. переворачиваем триггер при JK=11b)
   Стандартные управляющие функции - Jist и  Kist.

(Думаем ...)

   По словарю известно, что чтобы следующее значение Qn+1=0 на входах  JK-триггера "сбрасывающие добавки"  зависят от Qn.
   Если Qn=0,  то Jclr = 0,  а  K любая, т.е. Kclr = Хk.
   Если Qn=1,  то Kclr = 1,  а  J любая, т.е. Jclr = Хj.

   Если выбрать Хk = 1, а Хj = 0, то в итоге получим управляющие функции такие же, как в RS-триггере. Т.е. Ji аналогична Si, а Ki аналогична Ri.
   Если выбрать Хk = 0, а Хj = 1, то в итоге получим управляющие функции такие же, как в TV-триггере. Т.е. и Ji, и Ki аналогичны Vi.

   В зависимости от выбора Хk и Хj получаются функции:
либо Fi =  Fist*!CLR,

либо Fi =  Fist+CLR

(Думаем ...)(Думаем ...)(Думаем ...)

Хотел расписать для всех типов триггеров алгоритм модификации управляющих функций. В итоге накопилась "критическая масса copy-paste" с простым переименовыванием сигналов и очевиднее стало удобство представления таблицы состояний триггеров в форме "словаря". В результате оформилось ПРАВИЛО получения управляющих функций при синтезе счетчика методом управляемого сброса:

Если "сбрасывающая добавка" Ficlr=1, то итоговая функция Fi =  Fist+CLR.  Если "сбрасывающая добавка" Ficlr=0, то итоговая функция Fi =  Fist*!CLR.

В завершение осталось только сказать, как получить контрольный сигнал сброса CLR.

Для CLR выбрать одну из нескольких функций отличающихся сложностью схемной реализации.

1. Сравнение на равенство текущего значения Qn с крайним значением счетчика M-1. Т.е. CLR = G=(Qn; M-1). Пригодна для счетчиков с единственным модулем счета. Плоха для многорежимных счетчиков.

2. Сравнение на больше-равно текущего значения Qn с крайним значением счетчика M-1. Т.е. CLR = G>=(Qn; M-1). Пригодна для многорежимных счетчиков.

3. Для многорежимных счетчиков получить функцию CLR можно путем мультиплексирования (надеюсь это понятие уже ясно идейно и схемно) частичных функций CLRj каждого отдельного режима счета, где входные сигналы режима подаются на адресные входы мультиплексора.

P.S.: ВСЕ. Пора остновиться на этом.

Отредактировано gummi (2012-11-29 06:20:05)

0

10

Немного о подсчете максимального пути, оценке максимальной рабочей частоты. Отличия от КМИП.

В общем случае, в устройстве есть триггеры, комбинационный блок управления ими, выходной комбинационный блок. Изредка выходные триггеры, которые отнесем к выходному блоку.
Сразу отметим, что буфер включается только к выходам устройства, т.е. в цепи управления триггерами отсутствует.
Еще надо отметить, что запускающим переключение устройства всегда является тактовый сигнал. Асинхронные сигналы сброса/установки в расчет не принимаем.

Тогда получаем, как минимум, два пути распространения сигналов в схеме:
   первый - задержка от CLK до управляющего входа триггера (CLK -> триггер ->  блок управления);
   второй - задержка от CLK  до выхода устройства, если выходных триггеров нет, то сюда еще надо добавить задержку буфера (с Сн);
   третий - если есть выходной блок триггеров, от CLK  до выхода  плюс буфер.

Быстродействие, т.е. максимальная рабочая частота, конечно, определяется тем путем, в котором наибольшая задержка сигнала.

Ситуация на самом деле обычно проще, чем в курсовом по КМИП. Там на отработку комбинационной схемы давалась треть периода рабочей частоты устройства и всегда учитывался буфер.
В ЦИС на задержку цепей управления дается или целый период (RS/DC), или половина (ms-JK/TV), в любом случае без буфера. На задержку выходных цепей с буфером дается целый период тактового сигнала (и остается тема для обсуждения надо ли вообще принимать этот путь в расчет?).

Далее. Вы можете спросить: "А как же внешние управляющие сигналы?"
Ответ. Да, их пути тоже надо учитывать. Но. Независимо от путей распространения CLK - раз. Помня об искуственных внешних ограничениях на допустимые интервалы времени, когда их можно менять - два. Так что это трудно формализируемый (о какое слово) момент. Реально его учитывают, если пути получаются заметно больше рассмотренных ранее. Или просто оговаривают в "инструкции по эксплуатации" к устройству. Например: "Внешний сигнал управления V нельзя менять при единичном значении сигнала на тактовом входе потому, что..." (Кстати, в этом году, в некоторых работах, при некоторых реализациях триггера, эту оговорку придется применять.)

0

11

В продолжение к вопросу КАК НЕ НаДО ДЕЛАТь УПРаВЛЯеМЫй СБроС
Вот картинка схемотехнического моделирования схемы, где модуль счета ограничен комбинационным блоком в цепи асинхронного сброса.
Сигнал асинхронного сброса триггеров схемы - фиолетовый (U52:out).
Видно, что кроме полезного импульса, на сигнале есь еще пара помех. Но если в реальном устройстве эти помехи будут успевать дорастать до точки переключения, то устройство может сбоить.

Диаграммы моделировнаия

Последовательностные устройства - автоматы

0

12

ДЕТЕКТОР ПЕРЕКЛЮЧЕНИЯ РЕЖИМА

Чтобы не задумаваться о поведении устройства в ситуациях, когда при смене режима устройство оказывается в "лишних" состояниях, достаточно организовать принудительный сброс устройства при любой смене режима.

Обнаружитель смены значения сигнала сделать легко. Для этого нужен D-триггер и элемент исключающее-ИЛИ (XOR). Схемка и моделирование приведены на рисунках.
Идея в том, что Д-триггер не сразу реагирует на изменения сигнала а раз за период. Получается, что изменение значения на выходе триггера запаздывает относительно изменения данных на его входе на величину до одного периода.
А это различие можно обнаружить элементом сравнения XOR.

Последовательностные устройства - автоматы

Последовательностные устройства - автоматы

Выходной сигнал обнаружителя нужно сложить с общим входом сброса (элемент ИЛИ) и подать на входы асинхронного сброса основных триггеров устройства.

В итоге при любой смене режима устройство будет переводиться в начальное состояние, соответствующее новому режиму.

*) D-триггер обнаружителя должен тактироваться противоположным фронтом тактового сигнала относительно активного фронта основных триггеров устройства.
**) Требование к типу триггера в ТЗ к обнаружителю не относится. А требование ТЗ к логическому базису надо выполнять.

0


Вы здесь » МИЭТ:ИЭМС. Консультационный центр. » Логическое проектирование » Последовательностные устройства - автоматы