Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 204
Текст из файла (страница 204)
Добавлены два усовершенствования, обеспечивающие возможность тестирования и повышающие надежность автомата: введен вход йЕЯЕТ, позволяющий переводить автомат в известное начальное состояние, и предусмотрены два неиспользуемых состояния с указанными в явном виде переходами в начальное состояние, Кодирование состояний в автомате, описываемом данной программой, такое же, как и в исходной версии в разделе 7.7.1. Следуя этому кодированию, компилятор языка АВЕЬ выдает минимизированные равенства с числом термов-произведений, указанным в табл.
9.6. у выходного сигнала ОО восемь термов-произведений, и это — предел того, что можно реализовать в ИС ПАЬ16Ч8. Можно попытаться иначе кодировать состояния и написать программу так, чтобы сохранять значения отдельных термов (см. задачу 94). Более продуктивной может оказаться попытка записывать состояние в форме выходного кода. Можно воспользоваться однобитовым представпением состояний и выходов (е1 ..
Ьй) в отношении каждой из лампочек и еше одним битом (еее) для того, чтобы различать состояния Бок и ее ее, когда все лампочки погашены. Это позволяет опустить в табл. 9 5 равенства для! 1 .. 1 4 и еРя. Новое кодирование представлено в табл. 9.7. При такой записи состояний лля ЕЕ нужны два герма-произведения, а для 932 Глава 9. Примеры проектирования лоследовательностных схем поли1е Няаве тхе1е 'Сиев№1ия-саве яоаие иаоьтие' ССАНЕ оет1ое 'Р)ЯЧВВ'; 1приие апи оиориив 010СК, ВЕЗЕТ, 01.,04 1.1..1.4, ЕВВ Ц2.,00 р1п 1, 2, 3..8; рьа 12..13, 19 1еиуре 'сов'; р1и 16..18 Аетуре 'тея'; " Зеив 0 = [01..04); й = [11..1.4); " Зоаиее ЦЯТАТК = [02,01,00); 31 - [ а.
О, О); 32 [ О, О, 1); 33=[0,1,1); 34=[0,1,0); БОК [1,0, 0); ЯЕВВ = [1, О, 1); ЕХТВА1 [ 1, 1, О); ЕХТВА2 = [ 1, 1, 11; веете етаягаа ЦБТАТЕ виаге 31: 1Р ВЕЗЕТ ТНЕМ БОК ЕХБЕ 1Р 02 № 03 № С4 ТНЕМ ЯЕВД Е13Е 1Р 01 ТНЕМ БОК Е1ЛЕ 32; етаие Я2: 1Р ВЕЗЕТ ТНЕИ БОК БЕБЕ 1Р 01 № 03 № 04 ТНЕИ ЯЕВВ Е)ЯЕ 1Р 02 ТНЕК ЗОК ЕСЛЕ 33; виаие ЯЗ: 1Р ВЕЗЕТ ТНЕИ БОК БЕБЕ 1Р 01 № 02 № С4 ТНЕМ ЯЕВВ Е1ЯЕ 1Р СЗ ТНЕИ ЗОК Е1.БЕ 34; веете Я4: 1Р ВЕЗЕТ ТНЕМ БОК БЕБЕ 1Р 01 № 02 В СЗ ТНЕИ ЗЕВЕ ЕЫЕ 1Р 04 ТНЕИ ЗОК ЕЬЗЕ 31; еиаие ЯОК: 1Р ВЕЗЕТ ТНЕМ ЗОК ЕЬЗЕ 1Р С1 № С2 № 03 № 04 ТЖИ ЯОК ЕЕБЕ 31; воете БЕВВ: 1Р ВЕЗЕТ ТНЕИ ЯОК К[БЕ 1Р 01 № 02 № 03 № 04 ТНЕИ ЯЕВВ ЕйЗЕ 31; атосе ЕХТВА1: СОТО БОК; еиаие ЕХТВА2: ОСТО ЯОК; еоиатзоив ЦЯТАТЕ.СЕК СЫСК; 11 (ЦЗТАТЕ = Я1); 12 = [ЦБТАТЕ 32); 13 [ЦЗТАТЕ - 33)1 04 = ОЦБТАТЕ 34); ЕВВ [ЦЯТАТЕ ЗЕВЕ); 1,2 .. 1 4 -лишь по одному терму-произведению нв квжлый выходной сигнал.
К сожв пению, лля сигнала на выходе ей В необходимы 16 термов-произведений. Табл. 9.5. Программа на языке АВЕ~, описывающая автоматдля игры на угады ванне Табл. 9.6. Использование термов-произведений при реализации в Пду ко- нечного автомата для игры на угадывание Р-Тетив Рап-1и Рап-сии Туре Нане 23/32 Веаь Р-Тетя Тоеа1: 16 Тосе! Р1пв: 14 АиетаЕе Р-Тетя/Си!рис: 2 Табл.
9.7. Определения на языке АВЕЬ применительно к автомату для игры на угадывание в случае записи состояний в форме выходного кода испи!е 88аяесс Т111е 'Сиеев1п8-Саве Ясасе Иасп1пе' "ССАИЕОС нет!се 'Р1678В'; Сариев епа оивривв СЬССК, ВЕЯЕТ, С1..С4 !.!..14, ЕВВ рзп 1, 2, 3..6; рзп 12..16, 18 звсуре 'ге6'; " Я!атее ЦЯТАТЕ = [Ь1,Ь2,ЬЗ,Ь4,ЕВВ1; 31 = [ 1, О, О, О, 01; Я2 =[0,1,0,0,03; 33 = [ О, О, 1. О, 03; 34=[0,0,0,1,03; ЯОВ [ О, О, О, О, О!; ЯЕРВ = [О, О, 0„0.
11; применяя указанный конкретный способ записи состояний в форме выходного кода, мы не в полной мере используем достоинства такого подхода. Запись состояний в форме выходного кода является, по супзеству, «прямым коднрованиемгь иодля декодирования каждого состояния нужны все пять битов представления состояния согласно определению состояний в табл. 9.7. Возможен другой вариант кодирования с использованием «безразлнчныхл значений, как показано в табл.9.8. 1/3 1/3 1/3 1/3 !/3 6/2 1/7 11/8 3 3 3 3 3 7 7 8 9.1.
Примеры проектирования на языке АВЕЬ 933 1 РАп 11 ! Рая Ь2 1 Рьп !.3 1 Рзп Ь4 1 Рзв ЕВВ 1 Рап 02.ВЕС 1 Рап 01.ВЕС 1 Рзв СО.ВЕС 934 Глава 9. Примерь> проектирования последовательностиых схем Табл. 9.8. Запись состояний автомата для игры на угадывание в форме выходного кода с использованием ~безразличных„ значений Х = .Х.; Оятлте = Я1 Я2 БЯ Я4 ЯОК БЕНК 1е 1, 1.2, 1.3, ел, енк1; Е1,Х,Х,Х, Х1; 1Х,1,Х,Х,Х1; 1Х,Х, 1,Х, Х]; 1 Х, Х, Х, 1. Х1; ,'0,0, о,о, 01; 1Х,Х,Х,Х,11; КАК ДЕИСТВУЕТ МЕХАНИЗМ БЕЗРАЗЛИЧНЫХ ЗНАЧЕНИИ? Чтобы разобраться в том, какую роль играют безразличные значения при кодировании состояний, необходимо понять, как компилятор языка АВЕЕ созда- ' ет равенства на основании диаграмм состояний.
Применительно к данному состоянию 3 каждый оператор перехода (1 Е- Т Н Е>1-Е ЬЯ Е ил и 00ТС>) п ополняет множества включений соответствующих переменных состояния согласно условию перехода. Условие перехода — это выражение, которое должно быть верно, чтобы переход состоялся, включая пребывание в состоянии З. Например, все условия, указанные для состояния я 1 в табл. 9.5, неявно участвуют в логической операции И со значением выражения "> >ЯТАТЕ==Я> Поскольку состояние Я1 определено с использованием безразличных значений, эта проверка равенства породит только один литерал Ь1, а не терм-пРоизведение, что в дальнейшем приведет к еше ббльшим упрощениям. Для каждого следующего состояния, упоминаемого в операторе перехода, происходит пополнение множеств включений только тех переменных состояния, которые равны 1 в этом состоянии.
Когда, например, в операторе перехода в табл. 9.8 код состояния Я 1 встречается в качестве следующего состояния пополняется только множество включений для е1. Этим объясняется, почемУ действительный код состояния Я 1 в качестве следующего состояния считается имеющим вид; 100000. В новом варианте мы предполагаем, что состояния никогда не бывают такими, чтобы в комбинации битов, которой представлено состояние, были другие единицы, кроме указанных первоначально в табл. 9,7. Если, например, мы видим что бит состояния Е1 равен 1, то автомат должен находиться в состоянии Я1 независимо от значений каких-либо других битов в коде состояния.
Поэтому все другие биты, кроме е1, в определении состояния Я1 можно положить безразличными, как это сделано в табл. 9.8. В языке АВЕЕ каждый бит, помеченный символом Х, принимается равным 0 при кодировании следующего состояния, нс считается «безразличным» при декодировании текущего состояния. Следователь. но, необходимо обратить особое внимание на то, чтобы декодируемые состоя. ния были действительно взаимно исключающими; другими словами, нужно, что. бы никакое правильное следующее состояние не соответствовало двум нл> большему числу состояний, определенных по-разному.
В противном случае ском пилированное устройство не будет вести себя ожидаемым образом. 9.1. Примеры проектирования нв языке АВЕ1. 939 При записи состояний в форме выходного кода согласно табл. 9.8 приведенные равенства содержат три терм а-пронзведения для 1 1, по одному терму-произведению на каждый из выходных сигналов 1 2 .. 1 4 и всего лищь семь термов-произведений лля сигнала ЕКК. Таким образом, это было стбящее изменение. Необходимо помнить, однако, что новый автомат отличается от устройства, описываемого табл, 9.7. Посмотрим, что произойдет, если автомат попадет в одно нз состояний, которые не определены. В исходном устройстве с полностью заданным описанием состояний в форме выходного кода, не указаны следующие состояния лля 2~- 6 = 26 состояний из числа не определенных, поэтому конечный автомат из любого такого состояния всегда будет переходить в состояние с именем 00000 (КОк).
В новом автомате «не определенные» состояния, в действительности, не являются таковыми; например, состояние с именем 11111 фактически согласуется с пятью состояниями: я1— З 4 и МККК. Поэтому следующим будет состояние, имя которого является результатом выполнения логической операции ИЛИ над именами следующих состояний, соответствующих согласующимся состояниям.
(Чтобы понять, почему это происходит, см. вынесенное за пределы основного текста рассуждение о механизме действия безразличных значений.) Еще раз: нужно быть осторожным. ЧЕГО СЛЕДУЕТ ОЖИДАТЬ ПРИ СБРОСЕТ Из текста программы в табл. 9.5 следует, что появление сигнала на входе КЕЗЕТ заставит автомат перейти в состояние БОК. Однако в случае, когда у вас имеются не определенные кодовые имена состояний или имена состояний заданы частично, нельзя принимать на веру, что подача сигнала ККЗКТ будет приводить к тому же самому.