Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 72
Текст из файла (страница 72)
Табл. 4.18. Примеры диапазонов, наборов и отношений воаи1е ЯеЕОрв Ф1Е1е 'Яес Орегас1ов Ехавр1еа' 1прие авп оиерцс р1лв ИЗ..ИО, МЗ..МО, ЯЕ1. р1в; У1..74, 20..23, ЕЦ, СЕ, СТЕ, ЕТН, ОИЬОСКУ рза 1всуре 'сов'; " Оетзазезоав И [ИЗ,И2,И1,ИО]; М = [МЗ,М2.М1,МО]; ТОСТ = [У1..743; ЕООТ = [ЗЗ..ЗО] ~ СОМР = [ЕЦ.СЕ]; СТ = [О, 13; ЬТ [О, О]; еопае1оаа ТООт = и а м; 200т (яеь а и) $ (!Зе1. а м); ЕЦ = (И == М); СЕ = (И >= М); СТЕ (СОМР " СТ); 1,ТН = (СОМР == 1.Т); ОИЬОСКУ - (И == 1З) В (М == -Ы)) Ф ((И + М) =- "Ы101); епа ЯееОра Каждый набор определяется в начале программы путем связывания имени с заключенным в квадратные скобки списком элементов набора (например, М = [МЗ » М2, М1, МО] в табл.4.18). для списка элементов набора может быть использовано сокращенное обозначение (УООТ = [Х1 ..
У4] ), но имена элементов не обязательно должны быть похожими или как-то связанными с именем набора(ССИР = [ЕО СЕ] ). Элементами набора могут быть также константы (СТ = [О, 1] ). В любом случае, кв« мы увидим в дальнейшем, существенны число и порядок элементов в наборе. К наборам применимо большинство операторов языка АВЕЬ. Когда та или иная операция осуществляется с двумя или большим числом наборов, все наборы должны иметь одно и то же число элементов. Операция выполняется по от' дельности с элементами наборов, располагающимися на одинаковых позиция~ независимо от нх имен или номеров. Таким образом, равенство "ТООТ = М Ь и эквивалентно следующим четырем равенствам: 4.6. Язык описания схем АВЕЬ 309 У1 = ИЗ Ь МЗ1 У2 = ))2 ь м21 УЗ = )(1 ь М11 Х4 = )(О а МО) Если операция включает набор н переменные, не являющиеся элементами наборов, то зти последние участвуют в операции с элементами набора в каждой позиции по отдельности.
Таким образом, равенство "20()Т= (ЕЕ? а)1) () (! ЕЕ?, ьМ)" эквивалентно четырем равенствам вида "21 = (ееь ь)ч1) () (! Веь ь му)" для значений)от О до 3. Другой важной особенностью языка АВЕЬ является возможность преобразования «атно шеи ийя в логические выражения. Отнотеь ее (ге)абон) - это пара операндов, соединенных одним из операторов ответ«вял 1ге(айоаа( арета(ам), перечисленныхх в табл.4. 19. Компилятор преобразует отношение в логическое выражение, принимающее значение 1 тогла н только тогда, когда отношение истинно.
Табл. 4.19. Операторы отношения в языке АВЕЬ Символ Отношение равно не равно меньше меньше или равно больше больше или равно Операнды в отношении считаются целыми числами без знака, но любой из ннх может быть целым числом или набором. Если операндом является набор, то он воспринимается как целое двоичное число без знака, причем крайняя левая переменная в наборе представляет собой старший разряд этого числа.
По умолчанию, числа в программах, написанных на языке АВЕЬ, полагаются десятичнымими. Шестнадцатеричные и двоичные числа обозначаются приставками" бр и "")э" соответственно, как это продемонстрировано в последнем равенстве в табл, 4.18. Наборы и отношения позволяют представить массу функциональных зависимостей на языке АВЕЬ в виде совсем небольшого числа строк в программе. Например, равенства в табл. 4.18 порождают минимизированные равенства с 69 термами-произведениями, как это следует из результатов, приведенных в краткой форме в табл. 4.20.
*4.6.6. Безразличные комбинации входных сигналов Некоторые версии компилятора языка АВЕЬ обладают ограниченной способностью оперировать с безразличными комбинациями входных сигналов. Как упоминалось выше, равенствами языка АВЕЬ определяются комбинации входных сигналов, принадлежащие множеству включений логической функции; про остающиеся комбинации предполагается, что они принадлежат множеству выключе- 310 Глава 4. Принципы провкпароввиия коаабиивционных логичвоюах схем Табл. 4.20. Информация о синтезированных равенствах, созданных компиля- тором языка АВЕН для программы, приведенной в табл.
4.18 Р-Тяпая Рел-1п Рвп-опг Туре Маше (агггЯЬпгев) 2 2 2 2 3 3 3 3 8 8 2 2 8 1/2 1/2 1/2 1/2 2/2 2/2 2/2 2/2 18/8 23/18 1/2 1/2 16/19 1 Р1п 1 Рьп 1 Р1п 1 Рьп 1 Рзп 1 Рзв 1 Р1п 1 Р1п 1 Р1п 1 Р1п 1 Рьа 1 Рзп 1 Рзп Т1 У2 УЗ У4 ЕО Е1 Е2 ЕЗ Щ ОЕ СТК Я.ТН УМЯ,ЯЯСКУ Яевг Р-Тегш Тога1: 83 Тога1 Рзпв: 22 Тога1 Напев: О Азегаке Р-Тегш/Оигрпг: 4 бЯ/82 ний. Если вместо этого некоторые комбинации входных сигналов можно отнести к 11-множеству, то программа может оказаться способной учесть эти безразличные комбинации входных сигналов и достичь лучших результатов минимизации.
В языке АВЕЬ определены два механизма отнесения комбинаций входных сигналов к аЯ-множеству. Чтобы воспользоваться любым из них, вы должны вклю- чить в вашу программу директиву компилятору 6ОСЗНТ или поместить «с1с» в следующий за ключевым словом Авгуре список свойств выходных сигналов, относительно которых вы хотите, чтобы их значения не принимались во внима- ние при некоторых комбинациях входных сигналов. Один из этих механизмов реализуется опврагпорам нвмактирусмого при/ сваивания не принимаемых во внимание значений 2= (аоп мсагв ипс!осйвй авв1дпгпепг орвгагог). Данный оператор используется в равенствах вместо опе- раюра =, чтобы указать, что комбинацию входных сигналов, при которой выраже- ние в правой части истинно, следует отнести к г1-множеству, а не к множеству включений.
Хотя этот оператор задокументирован в компиляторе языка АВЕ1-. которым я пользуюсь, к сожалению, похоже на то, что он не работает, и поэтому я не стану более распространяться на эту тему. Второй механизм — это таблица истинности. Если безразличные комбинации входных сигналов разрешены, то к О-множеству относится любая комбинация которая явным образом не включена в таблицу истинности. Таким образом, уст- ройство для обнаружения простых двоична-десятичных чисел можно задать про граммой на языке АВЕ1„представленной в табл. 4.21.
Подразумевается, что ком бинации входных сигналов 10-15 являются безразличными, так как их нет в таблице истинности и в программе присутствует директива 6 ОСЗЕТ, аоаа1е ОоаЕС»ге С1Е1в 'Полз Саге Ехаар1вв' ЕОСБЕТ 1врат ааа Оатрат Р1||з ИЗ..ИО, 1, В Р, т рга; рза гвсуре 'соа'; ицн (из..ио); Х-".Х,; гхасы еаь1е ((А,в)->ч) (0,0)->0; [0,1)->Х; (1,0)->Х; (1,1)->1| еаа Оопсоеге Можно также явно задавать безразличные комбинации, как это показано во второй таблице истинности.
Согласно указанию в самом начале этого параграфа компилятор языка АВЕ(. распознает л. как специальную однобнтовую константу со значением «все равно». В табл. 4.2) идентификатор Х приравнен этой константе только для того, чтобы упростить запись безразличных комбинаций в таблице истинности. Минимизированные равенства, полученные для программы в табл.
42), приведены в табл. 422. Обратите внимание, что два равенства для Р не совпалают; компилятор выбрал различные значения выходного сигнала для безразличных комбинаций входных сигналов. Ег(вае1опя: (!И2 а И1 В !ИЗ й ИО); т (В); Еетегве-Ро)агату Ес(аасаопв| !Р = (И2 Ф |ИО я из Ф !Е1 а !ВО); |Т (!В); стать еаЫе (вцн->Р) 0">О; 1->1; 2->1; 3->1; 4">О; Б->1; 8->0; 7->1; 8->0; 9->О; 4.6. Яв|мк описания схем АВЕ(.
311 Табл. 4.21. Программа на языке ДВЕ(., в которой разрешены безразличные комбинации входных сигна- лов Табл. 4.22. Минимизированные равен- ства для программы в табл 4.21 312 Глава 4. Принципы проектирования комбинационных логических схем 4.6.7. Проверочные векторы Программа на языке АВЕЬ может содержать необязательные проверочные векторы, как это было продемонстрировано в табл. 4.11. В общем случае формат проверочных векторов очень похож на таблицу истинности, как это видно из табл. 4.23.
Ключевое слово сев с ~ носовое вводит таблицу истинности. В!ириг-!!з! и оигриг-!и! перечисляются имена входных н выходных сигналов. Каждый из этих списков содержит либо имя единичного сигнала, либо набор. За этим введением в блок проверочных векторов следует последовательность равенств, каждым из которых с помощью оператора -> задается значение входного сигнала и ожидаемое значение выходного сигнала.
Табл. 4.23. Структура проверочееве иесьогв Иври!-!и! "> о«!риг-!ио ных векторов в языке АВЕ1. !прил»я!ие -> ошрлг-г«!ие; !«ригоа!ве -> еигр»1-яа!ие; Проверочные векторы используются в языке АВЕ1., главным образом, в двух ситуациях и со следующими целями: 1. После того как компилятор языка АВЕЬ транслирует программу в «конфигурацию соединений» для заданной ИС, он осуществляет моделирование работы результирующего запрограммированного устройства, подавая входные сигналы проверочных векторов на входы программной модели устройства и сравнивая сигналы на ее выходах с соответствующими значениями выходных сигналов в проверочных векторах. Разработчик может задать ряд проверочных векторов, чтобы убедиться в том, что устройство функционирует ожидаемым образом при некоторых или при всех возможных комбинациях входных сигналов. 2.
После того как ПЛУ запрограммировано физически, программирующее устройство подает входные сигналы из проверочных векторов на входы микросхемы и сравнивает сигналы на ее выходах с соответствующими выходными сигналами проверочных векторов. Это делается для того, чтобы проверить правильность программирования и функционирования микросхемы. К сожалению, как мы сейчас объясним, проверочные векторы языка АВЕЬ редко оказываются очень уж эффективными при выполнении любой из этих задач. Проверочные векторы из табл.