![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation
Спрашивается: как же наилучшим образом выбрать кодирование состояний в данной задаче? В общем случае единственный способ найти лучшее кодирование состоит в том, чтобы перепробовать все варианты кодирования. Это, конечно, слишком большая работа даже для студента. Вместо этого большинство разработчиков цифровой техники полагаются на свой опыт и руководствуются несколькими практическими принципами при выборе разумного способа кодирования: Код начального состояния выбирается таким образом, чтобы автомат можно было легко установить в это состояние при запуске (в типичных схемах это 00...00 или 11...11). Минимизируется число переменных состояния, которые изменяются на каждом переходе. Максимизируется число переменных состояния, которые не изменяются в пределах фуппы связанных друг с другом состояний (то есть в пределах такой Фуппы состояний, для которой большинство переходов не выводит за пределы этой фуппы). Используется симметрия в условиях задачи и соответствующая ей симметрия в таблице состояний. Другими словами, предполагается, что одно состояние или фуппа состояний означают почти то же самое, что и другое состояние или фуппа. После назначения кода состояния первому из сопоставляемых по принципу симметрии состояний, подобное же назначение следует произвести и в отношении второго состояния, изменив лишь один бит. Если существуют неиспользуемые состояния (то есть если s < 2 , и = riog2*l), то выбираются лучшие из имеющихся комбинаций переменных состояния для достижения упомянутых выше целей. Из этого следует, что, как правило, не останавливаются на выборе в качестве кодов состояний s первых и-разрядных целых чисел. Множество переменных состояния разбивают на отдельные биты или поля таким образом, чтобы каждый бит или поле имели определенное значение в смысле воздействия входных сигналов или поведения автомата со стороны выхода. Табл. 7.7. Возможные способы кодирования состояний в случае автомата, описываемого табл. 7 6 Кодирование Рассматриваются варианты с использованием большего числа переменных состояния, нежели минимальное, с тем чтобы оказалось возможным кодирование с разбиением. Некоторые из этих идей нашли свое отражение в кодировании с разбиением , приведенном в табл. 7.7. Как и ранее, начальному состоянию присвоена комбинация ООО, которую легко установить асинхронно (путем подачи сигнала RESET на входы CLR триггеров) или синхронно (путем пропускания сигнала RESET через вентили И на входы всех D-триггеров). Наш случай замечателен тем, что имеется только четыре состояния помимо состояния INIT, которое является совершенно особым состоянием: будучи однажды запущенным, автомат более никогда не попадает в это состояние. Поэтому можно выделить переменную состояния Q1 для указания, является данное состояние автомата состоянием INIT или нет, а переменные состояния Q2 и Q3 использовать для различения четырех других состояний, не являющихся состоянием INIT. Присвоение двоичных комбинаций этим четырем состояниям выглядит в столбце табл. 7.7, озаглавленном С разбиением , как осуществленное в порядке двоичного счета, но это простое совпадение. На самом деле разряды состояний Q2 и Q3 несут индивидуальную смысловую нагрузку, относящуюся к входам автомата и к его выходу. Бит Q3 указывает последнее значение сигнала на входе А, а по биту Q2 можно судить о том, выполняются ли в текущем состоянии условия, когда выходной сигнал должен равняться 1. Закрепляя за отдельными разрядами кода состояния такие значения, можно надеяться, что логика переходов и логика выхода окажутся проще, чем в том случае, когда комбинации Q2, Q3 будут случайно распределены между состояниями, не являющимися состоянием INIT. В следующих разделах мы продолжим разработку нашего конечного автомата на основе именно такого кодирования. Другим полезным правилом назначения двоичных комбинаций, которое применимо к любым конечным автоматам, является прямое кодирование {one-hot assignment), также представленное в табл. 7.7. Число переменных состояния при таком способе представления больше минимального: предусматривается выделение по одному биту на каждое состояние. Помимо простоты, достоинством прямого кодирования является то, что оно приводит к самым коротким уравнениям возбуждения, так как в каждый триггер единица записывается только при переходе в одно состояние. Недостаток прямого кодирования, особенно для автоматов с большим числом состояний, очевиден: оно требует применения (много) большего числа триггеров, чем это минимально необходимо. Однако прямое кодирование является идеальным для таких автоматов с состояниями, выход которых должен указывать их текущее состояние в виде слов кода 1 из sy>. В этом случае выходы триггеров, хранящих состояние в прямом коде, могут служить непосредственными выходами автомата и применения какой бы то ни было дополнительной комбинационной логики на выходе не требуется. В последнем столбце табл. 7.7 приведено почти прямое кодирование , в котором для начального состояния использована двоичная комбинация, не являющаяся одной из комбинаций прямого кодирования. В этом есть большой смысл по двум причинам: во-первых, легко в самом начале сбросить все элементы памяти в О, а во-вторых, однажды запущенный, автомат никогда вновь не войдет в начальное состояние. Реализация конечного автомата с таким кодированием состояний рассматривается в задачах 7.37 и 7.40. Выше мы пообещали рассмотреть расстановку неиспользуемых состояний, когда число возможных состояний автомата при наличии п триггеров, равное 2 , больше требуемого числа состояний автоматал. Имеют смысл два подхода, в зависимости от предъявляемых требований: Минимальный риск. Предполагается, что конечный автомат каким-то образом может попадать в неиспользуемые ( запрещенные ) состояния, например, из-за неисправностей аппаратуры, неожиданных входных воздействий или ошибок проектирования. Поэтому все неиспользуемые комбинации переменных состояния включаются в таблицу состояний и явным образом ука-зьшаются переходы из них, так чтобы при любом входном воздействии автомат из неиспользуемого состояния попадал в начальное состояние , состояние незанятости или в какое-то другое безопасное состояние . Иногда, по самой идеологии проектирования, это осуществляется автоматически, если начальное состояние закодировано комбинацией 00 ... 00. Минимальная стоимость Предполагается, что автомат никогда не попадает в неиспользуемое состояние. Поэтому в таблице переходов и в таблице возбуждения неиспользуемые состояния можно пометить как безразличные . В большинстве случаев это упрощает логику возбуждения. Правда, поведение автомата, если он все же попадает в неиспользуемое состояние, может оказаться при этом весьма причудливым. Мы увидим, к чему приводят оба подхода, по мере разработки конечного автомата, выбранного нами в качестве примера. 7.4.4. Синтез с использованием D-триггеров После того как состояниям автомата с различными именами присвоены коды состояний, остающаяся часть разработки становится в значительной степени рутинным процессом. В разделе 7.11.2 и в самом деле будут рассмотрены профаммные средства, которые могут вьшолнить эту рутинную работу за вас. Однако в этом разделе мы пройдем по всем этапам вручную, для того чтобы впоследствии иметь возможность оценить эффективность действия профаммных средств. Заменяя имена состояний в таблице состояний (возможно минимизированной) кодами состояний, мы получаем таблицу переходов. В таблице переходов для каждой комбинации кода состояния и входного воздействия указан код следующего состояния. Табл. 7.8 представляет собой таблицу переходов и значений выходного сигнала, которая получается для рассматриваемого конечного автомата с табл. 7.6 в качестве таблицы состояний в результате кодирования с разбиением , указанного в табл. 7.7. Следующий шаг заключается в составлении таблицы возбуждения; в этой таблице для каждой комбинации кода состояния и входного воздействия указываются значения сигналов, которые необходимо подать на входы триггеров, чтобы заставить автомат перейти в желаемое следующее состояние с соответствующим кодом. Сфуктура и содержание этой таблицы зависят от типа используемых триггеров (D-, JK-, Т-фиггеры и т.д.). Обычно конкретный тип триггеров имеется ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |