Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 130
Текст из файла (страница 130)
Это делается в надежде, что, помещая наиболее частые ходы во вложенном операторе МНЕМ раньше, мы минимизируем число термов. увы, нашему проекту все еще требуется масса термов-произведений, как следует из табл. 6.14. )Ч)ежду прочим, мы до сих пор не объяснили, почему выбран тот способ кодирования выходных сигналов, который указан в программе для мОче11, мОче 2 2 и т.д. Довольно очевидно, что изменение способа кодирования не позволит сократить число термов-произведений настолько, чтобы схема могла быть размещена в ИС 22Ч!0. Однако, как сейчас будет показано, все же существует метод борьбы с кошмарным числом термов-произведений. " СопЬ1пе 011 = К11 С12 " К12 С13 = К13 с21 а21 С22 = К22 С23 К23 СЗ1 К31 С32 К32 СЗЗ КЗЗ 41вЯопп1в.
Рху ог Еху > а поте ехзвев 1п са11 ху й !Х11 й !Т11; й !Х22 й !У22; й !ХЗЗ й !ТЗЗ; й !Х13 й !У13; й !Х22 й 'У22„ й !Х31 й !У31; потев Тог еасв св11. № С11 № 011; № С12; № С13 № Е13; № С21; № С22 № 022 № Е22! № С23; № С31 № Е31; № СЗ2; № СЗЗ № 033; 564 Глава 6. Примеры проектирования комбинационных схем Табл.
6.14. Исполь- зование термов- произведений в ПЛУ ТЧЧОИЧЯОЧЧ Р-Тетив Рвл-ьп Рап-сок Туре Кввв 61/142 107/129 77/88 133/87 1 Ркв НОЧЕЗ 1 Рзп ЕОЧЕ2 1 Рзп МОЧЕ1 1 Рзв МОЧЕО 18 18 17 18 Р-Тегв Тоса1: 332 Тока1 Р1пв: 22 Р-Твгв/Оисрпс: 83 Ееве Ачегвйе Ясно, что необходимо разбить блок ТИЮ!ЫВОЧЧ на две или большее число частей. Как и в любой задаче проектирования, при этом возможны несколько различных стратегий. Первая стратегия, которую я попробовал, состояла в использовании двух различных ПЛУ, из которых одно предназначалось для поиска ходов по всем строкам и по одной из диагоналей, а другое — для нахождения ходов по всем столбцам и остающейся диагонали.
Это помогло, но не настолько, чтобы каждая половина помещалась в ИС 22Ч10. Вторая стратегия состояла в попытке разделить задачу на части другим путем, когда первое ПЛУ находит все ходы в клетки 1! „12, 13, 21 и 22, а второе ПЛУ— все ходы в остающиеся клетки. Это сработало! Программа для первого ПЛУ, названного ТЧЧО!ИНАР, получается из табл. 6.13 простым переведением в комментарий четырех строк оператора инег1, относяшихся к клеткам 23, 31, 32 и 33, Аналогично из программы для ТЧЧОЕЧ!ЧОЧЧ можно получить программу для второго ПЛУ, но подождите минуту. При изготовлении реальных цифровых систем всегда желательно минимизировать число различных типов применяемых блоков: это сокращает стоимость изделия и уменьшает его сложность.
Точно так же в отношении программируемых блоков желательно минимизировать число различных используемых программ, Даже если блоки реализуются на одних и тех же ПЛУ, для каждой новой программы необходимо составлять новый набор тестовых векторов, а это стоит денег. Кроме того, изделие может оказаться настолько удачным, что можно будет сэкономить, заменив ПЛУ жестко запрограммированными ИС для каждой программы, а это снова подталкивает нас к минимизации числа различных программ.
Игра в крестики и нолики останется той же самой игрой, если мы повернем игровое поле на 90' или на 180'. Но если повернуть поле на 180', то ПЛУ ТЧЧО!ИНАР сможет находить ходы в клетки 33, 32, 31, 23 и 22. Выбранный способ представления текущего состояния поля отдельной парой чисел для каждой клетки позволяет «повернуть поле» просто путем соответствуюшей перестановки этих пар чисел. Другими словами, достаточно поменять местами содержимое следующих клеток: 33 ~-» 11, 32 с-э 12, 31<-» 13 и 23<-> 21, При смене содержимого клеток программа ТЧЧО!АНАР будет по-прежнему выдавать коды ходов в клетки в верхней половине поля. Чтобы не было ошибок, необходимо преобразовать эти результаты в коды, соответствующие клеткам в нижней половине поля. Хорошо бы такое преобразование потребовало 6.2.
примеры проектирования схем с использованием языка АВИ. 565 ПЕСИНАР Х11-ХЗЭ МОЧЕ(3 О! У11.ЧЗЗ ГА101ННАР Х11 ХЗЗ ИСК1 241НА!3 О! 9 У11.УЗЗ Х11.ХЗЗ У МОЧЕ!3 О! ЧУ1НВ!3 О! У1ЬУЗЗ Р1СХ2 «2 МОЧПЗ а! Р1СХ!3 О! Т1901ННАР Х11-ХЗЗ МОЧЕ!3 О! У11 УЗЗ ВЕХА!3 О! ОЗ МОЧЕ!3 О! тноннАР МОЧЕ!Э О! т во«аз о! 4 Х22 угг 9 Х11 ХЗЗ МОЧЕ!3 О! У11.УЗЗ 9 122 Рис. 6.13. Окончательное разбиение схемы для игры в крестики и нолики на блоки, реализуемые в ПЛУ Блоком Р!СК1 реализуется совсем простая функция.
Как следует из табл. б.15, она состоит просто в том, что делается победный или блокирующий ход в случае, когда они имеются. Так как у ПЛУ 22Ч10 есть два дополнительных вхо- минимума логики. Это как раз то место, где пригодится выбранный нами способ кодирования ходов. Если вы внимательно посмотрите на коды МОЧЕ в начале табл. 6.13, то вы увидите, что ход в клетку, занимающую данное положение в результате поворота поля на 180', представлен кодом, который получается из кода для хода в клетку, занимающую то же самое положение дц поворота поля, путем побитного дополнения и изменения порядка следования битов.
Другими словами, нужное преобразование кода можно реализовать четырьмя инверторами и переключением соединений. Это можно делать «бесплатноз> в ПЛУ, которое анализирует сигналы на выходах блоков ТУУО! ИНАТ, Вы, вероятно, никогда не думали, что игра в крестики и нолики может быть настолько запутанной. Но мы уже на полпути к решению задачи. Давайте продолжим наше проектирование с учетом разбиения на блоки, показанного рис.
б.!3. Каждое ПЛУ ТУУО!ЙЙОЧУ, появившееся при первоначальном разбиении на блоки, заменено теперь парой ПЛУ ТУУО!ИНАР. Нижним ПЛУ в каждой паре предшествуют блоки, помеченные буквой Р, в каждом из которых переставляется содержимое клеток так, чтобы тем самым повернуть поле на !80', как об этом говорилось выше. Кроме того, за каждым из этих ПЛУ следует блок, помеченный буквой Т, в котором компенсируется поворот поля путем преобразования выходного кода; в действительности, эти блоки будут поглощены следующим за ними ПЛУ Р1СК1. 566 Глава 6. Примеры проектирования комбинационных схем да, воспользуемся нми для ввода состояния центральной клетки.
Тогда можно будет выполнить первую часть 3-го шага игровою алгоритма, выбирая цент- ральную клетку, если нет ни победного, ни блокирующего хода. ПЛУ Р1СК1 нуж- но не более 9 термов-произведений на выход. Табл. 6.16. Программа на языке АВЕ[. для выбора хода по сигналам на четы- рех входах вози1е р1сг1 т«ч1е 'Р1са Оге Носе Ггаз Раис Роза«ме' ШСК« Се«се 'РЕЕЧШ', " торсов тгоа тсотнцр рц«в Итнкэ.,нтИАО ртз т.ам "И«оп1па вогез 1п се11в 11,12,13,21,22 И1ЧВ3..71иВО р1з В..В; "щпп1пк посев то св11з 11,12,13,21,ж от гогасез кс«с Вьккз..Вского р«п В..м, 13; "31осмпк почав «п ае11з 11.12,13,21,22 вьккз..вькво р«п ы..м, гт; "В[осыпи васев «и свттз 1',интз,шшг аг гасзсес кгм ' тсриге тгос Вг10 122, 722 71п 22..23; "севом се11; р1сг 11 по агнес почва ' наче оп«риса со Р1ск2 Рто РОЧЕЗ..НОЧЕВ р1п 17..20 1вгуре 'сап'; " Зете и:и - [итикз. жпцот; тпив [чтикз..ши301; [Вькзз..к[икот; Вткк [Вткоз..ктк301; ХОЧЕ [НО7Е3 ..
ИО7Е01; " иоп-го«асад саче 1прис впк оп«риг восо«1пк НОЧЕ11 [1,0,0,01; НОЧЕ12 [О, 1,0,01; ХОЧЕ!3 [0,0,« .01 1 нтчег« - [0,0,0,11,' нотугг - ц,т,о,от; хочегз - [0,1,1,11; НОЧЕЗ! [1.0. 1. 11; НОЧЕ32 " [1, 1*0, 11; Н07ЕЗЗ [1, 1,1,01; иоик - [о,о,о,от; ечпас1апз иоик тнуи ночк щм; итиз . иоик тики Хоки - ~[Чтиво..мтикзт« Вькк ! Иоие тнтя хоче В1.кА' Вькк ! коке тиьь Х07е ! [Вькко ..В[.кВ311 !122 А !722 тики Хоче ноуегг« - коик; М«ЕИ 71ИА НВЕ ИНЕИ ЕЬЗЕ ИИЕВ ЕЬЗК ИНЕИ Е' ЗЕ ИНЕИ КЬКЕ ХОЧЕ " Нар го«агез са««пя " Нар гаса«во сос1ск Р1св аепгег се11 М м 'а вирту еы р1с11 Последним блоком в схеме на рис, 6.13 является ПЛУ Р[СК2.
Это ПЛУ должно обеспечить «использование опыта» на 3-м шаге игрового алгоритма, если Р[СК1 не находит хода. С блоком Р1СК2 возникает небольшая проблема, состоящая в том, что у ИС 22У!0 нет достаточного числа выводов для 4-разрядного входа со стороны блока Р1СК1, собственного 4-разрядного выхода и 18-разрядного входа, по которому в блок Р[СК2 могла бы поступать информация о состоянии игровою поля; у этой ИС только 22 вывода «входтвыход».
Иа самом деле нам нет необходимости подключать Х22 и722, так как они анализируются уже в блоке Р[СК1, но даже с учетом этого нам все еще не хватает двух выводов. Поэтому назначение «дополнительной логики» на рис. 6,13 заключается в преобразовании части информации, чтобы сэкономить два вывода. Метод, который мы применим здесь, состоит в том, чтобы объединить сигналы, соответствующие средним клеткам 6.2. Примеры проектирования схем с использованием языка АВЕь 687 12, 21, 23 и 32 по краям игрового поля, и вырабатывать четыре сигнала Е12, Е21, Е23 и Е32, принимающих единичное значение только в том случае, когда соответствующие клетки пусты. Это можно сделать с помощью четырех 2-вхо- довых схем ИЛИ-НЕ, оставляя незанятыми два входа или выхода у ИС 22У10 табл.