Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 112
Текст из файла (страница 112)
Работу компаратора можно рассматривать любым образом, пока мы не входим в щэотиворечие. 496 Глава 5. Практическая разработка схем комбинационной логики Рис. 5.85. Формирование сигналов, выражающих арифметическое соотношение, нз выходных сигналов ИС 74х682 РЙЕО РЕО(З РЯТО РВЕ(З РьЕ(з Рьтй) 5.9.5. Описание компараторов на языке АВЕЬ. и их реализация в ПЛУ Используя язык АВЕЬ, очень просто осуществить сравнение двух наборов с целью определения их равенстванли неравенствас помощью операторов "==" илн ")=" в выражении отношения. Единственным ограничением является то, что число элементов в сравниваемых наборах должно быть одинаковым. Таким образом, в ответ на заданное выражение отношения "А! =В", где А и  — наборы, состоящие из и элементов каждый, компилятор сформирует логическое выражение (А1 6 В1) 4(А26 В2) 4...4(Аг16 Вп).
Логическое выражение для отношения "А==В" является точной инверсией приведенного выше. Согласно приведенному логическому выражению для сравнения в каждом бите требуется одна 2-входовая схема ИСКЛЮЧАЮЩЕЕ ИЛИ. Так как 2-входовую функцию ИСКЛЮЧАЮЩЕЕ ИЛИ можно представить в виде суммы двух термов-произведений, полное выражение можно реализовать с помощью ПЛУ в виде относительно небольшой суммы 2л термов-произведений: (А1й! В14!А1йВ1) $ (А2 й! В2$!А2 йВ2) $...
4(Апй)Вп4!Апй Вп) . Хотя в языке АВЕЬ имеются операторы отношения «меньше» и кбольше», результирующие логические выражения не так компактны и не так легко образуются. Рассмотрим, например, выражение отношения "А<В*", где (Аг1 .. А1] и ( Вп .. В1) — наборы, состоящие из п элементов каждый. Чтобы получить соответствующее логическое выражение на языке АВЕЬ, сначала составляются п соотношений вида: Ы= (! АЬ й (В1 $ Ы-1) ) 4 (А1 й В1 й Ы-1) 5.9.компараторы $97 для!= ! ...
и, где, по определению, ВО=О. По существу, это — итерационное определение функции «меньше»ч начиная с младшего разряда. Выражение для Ь1 позволяет говорить на Ам шаге о том, что А меньше В, если А1=0, а В1=1 или А уже было меньше В на предыдущем шаге, а также в том случае, когда А1 и В1 равны 1, но А было меньше В на предыдущем шаге. Значение логического выражения для "А< В" определяется просто равенством для ! г1. Итак, после составления и соотношений, компилятор языка АВЕЬ сворачивает их в одно выражение для Ьп, включающее только элементы наборов А и В, Это осуществляется путем подстановки выражения Ьп- 1 в правую часть равенства для Ьп, затем в полученное выражение подставляется Ьп-2 и так далее, пока в качестве 1.0 не будет подставлен О.
В конце концов это приводит к резул ьтирующему выражению вида минимальной суммы щэоизведений. Свертывание итерационной схемы до реализации в виде двухуровневой суммы произведений обычно приводит к экспоненциальному увеличению числа термов-произведений с ростом и. Если следовать этой модели, то для и-разрядного сравнения "<" потребуется 2" -1 термов произведений.
Таким образом, ие прибегая к двухпроходной логике, в ПЛУ можно реализовать только ком параторы, рассчитанные на небольшое число разрядов. Очевидно, что аналогичные результаты справедливы в отношении операции ">", алогические выражения для ">=" и "<=" еще хуже, поскольку являются инверсией выражений для "<" и ">". Если используется ПЛУ с управляемой полярностью выходных сигналов, где доступна инверсия, то число термов-произведений то же самое; в противном случае минимальное число термов-произведений пос,те инвертирования становится равным 2"+2" ' — 1.
5.9.6. Описание компаратороа на языке УНР~ В языке ЧН1)Ь есть операторы сравнения для всех встроенных типов. Операторы равенства (е<ГиаЛГу, =) и неравенства ((пег!па!(Гу, / =) применимы ко всем типам; для массивов н структурных типов операнды должны иметь одинаковые размеры и структуру, и их сравнение осуществляется покомпонентно. Во многих примерах в этой главе мы использовали оператор равенства для сравнения сигнала или сигнального вектора с постоянной величиной. Когда мы сравниваем два сигнала или две переменные, механизм синтеза формирует выражения, аналогичные выражениям на языке АВЕЬ, приведенным в предыдущем разделе.
Другие операторы сравнения >, <, >= и <= в языке ЧНОЬ применяются только к целочисленным типам, перечислимым типам (таким, как БТР 1061С) и одномерным массивам перечислимых или целочисленных типов. Естественным порядком для целых чисел является их расположение от меньшею к большему, от минус бесконечности до плюс бесконечности, а в переч ислимых типах испол ьзуется тот порядок, в каком элементы массива были определены; от первого до последнего (если вы явно не изменяете порядок перебора с помощью команды, имеющейся в используемых вами средствах синтеза, то упорядочение будет таким, как вы его задали). Сравнение массивов осуществляется итеративно, начиная с крайнего левого элемента в каждом массиве.
Массивы всегда сравниваются слева направо незави- 498 Глава б. Првктичеокаш разработка схем комбинационной логики симо от направления, в котором их индексы пробегают свой диапазон значений ("со" или "<1оно с о"). Порядок массивов определяется по старшинству в самой левой паре неравных элементов. Если размеры массивов разные и все элементы короткого массива совпадают с соответствующими элементами длинного массива, то считается, что короткий массив меньше длинного. В результате массивы равной длины типа ВХТ чЕСТОВ или 8ТР 1 0010 ЧЕБТОК воспринимаются встроенными операторами сравнения так, как будто они представляют собой целые числа без знака Но если длина массивов разная, то операторы сравнения ие дают того результата, который вы получили бы„ дополняя более короткий массив нулями слева и сравнивая массивы арифметически; вскоре об этом будет сказано подробнее. В табл. 5.50 приведена программа на языке УН01., которая позволяет получить все возможные результаты сравнения двух 8-рвзрядных целых чисел без знака.
Так как два входных вектора А и В имеют равные длины, про грам ма дает правильный ответ. Табл. 0.00. Поведенческая )ГНР~-программа сравнения 8-разрядных целых чисел без знака 1«Ьгагу ТЕЕЕ; иве 1ЕЕЕ.вей 1оЕ«с 1164.а11; епс«еу чсошрате «в ротс ( А, В: «и ЯТО Ь0010 ТЕСТОВ (7 йовлсо О); ЕЦ, )1Е, СТ, СЕ, 1.Т, 1,Е: ове ЯТТ)„ЬОСТС ); епй чсошрате; агсЬ»се<Саге чсошраге атсЬ о» чсошрате 1в Ье81п ргосевв (А, В) Ьей»п ЕС <= 'О'; ЫЕ <= 'О'; СТ <" 'О'; СЕ <"- 'О'; ЬТ <= 'О'; 1.Е <= 'О'; 1» А В СЬеп ЕЦ < '1'; евй 1»; «» А у= В »Ьеп ИЕ <= '1'; епй 1»; «» А > В еЬеп СТ <= '1'; евй 1»; «» А >= В сЬев СЕ <= '1'; епй 1»; «» А < В ЕЬеп 1Т <= '1'; епй 1»; 1» А < В СЬеп ьЕ <= '1'; евй «»; епй ртосевв; епй чсошраге агсЬ Для выполнения более гибких сравнений и арифметических действий стандартом 1ЕЕЕ )0763 предусмотрен типовой пакет всй 1о<)«с аг«с)«, в котором введены два новых важных типа и масса функций сравнения и арифметических функций для работы с ними.
Двумя новыми типами являются Б16йЕР и РЫБ16ЫЕР: В.В.Компарвторы 499 Гуре БТСЫЕР гя агхаУ )ЧАТРКАЕ хаосе < >) гуре ОЫБ16ЫЕР гз аггаУ ()ЧАТОКАР хаосе < >) БТР 10616; Отсюда видно, что оба типа определены как массивы элементов типа Б 1Р 16616 неопределенной длины и не отличаются от БТР ЬО61С уЕСТОК. Важно, что в пакете определены также новые функции сравнения, которые вызываются в тех случаях, когда один или оба операнда сравнения являются элементами одного из новых типов. Например, в пакете имеются восемь новых функций «меиьше» со следующими комбинациями параметров: Тцпсх1оп "<" (Р: Хцпссгоп "<" (1: 1цпсхгоп "<" (Р: 1гпсххоп "<" (Р: Тцпсгхоп "<" (Р: 1цпсг1оп "<" (Ъ: гцпсг1оп < Ецпсс1оп "<" ~1: О))Б16ЫЕРЗ К: О)»Б16))ЕР) гегцгп ВООЬЕРЛз Б16)ЧЕР) К: Б16ЫЕР) гехцгп ВОО).ЕАК) ОМБ16)ЧЕРз К: Б16)ЧЕР) хехцхп ВООЕЕА))з Б1СЫЕРг К: О))БТСМЕР) гехцхп ВООЕЕАК; О)ЧБ16)ЧЕР; К: 1ЫТЕСЕК) гегцгп ВООЕЕАКг 1)»ТЕСЕКг К: Р)»Б16)ЧЕР) гегцхп ВООЬЕА)); Б16)»ЕР) К: 1)ЧТЕСЕК) гехцгп ВООЬЕАКг 1МТЕСЕК; К: Б16ИЕР) гехцгп ВООЬЕА)Ч; Таким образом, оператор "<" можно использовать в любой комбинации операндов Б16))ЕР, О))Б16КЕР и 1)ЧТЕСЕК; компилятор выбирает ту функцию, типы параметров у которой соответствуют фактическим операндам, Каждая из функций в пакете определена так, чтобы все делать «правильно», включая соответствующие расширения и преобразования, когда встречаются операнды разных размеров или типов.
Аналогичные функции предусмотрены для пяти других операторов ОТНОШЕНИЯ: =, /=, <5Ч > И >в< Используя пакет 1ЕЕЕ ях<) 1осгс аг1хп, можно писать программы подобно тому, как это сделано в табл. 5 51. В ней А, В, с и Р являются 8-разрядными входными векторами трех различных типов. В сравнениях, включающих А, В и С, компилятор автоматически выбирает правильный вариант функции сравнения; например, для "А<В" он выбирает первую из приведенных выше функций *'<", потому что оба операнда принадлежат типу О)) Б1 СНЕ Р. В сравнениях, включающих Р, используются явные преобразования типов Предполагается, что разработчик хочет, чтобы этот конкретный массив типа БТР РО61с уестОК интерпретировался как элементтипа Р)»Б16))ЕР в одном случае и как Б16)ЧЕР в другом.
Здесь важно понимать, что в пакете ягс) 1одгс аг ' хЬ не делается никаких предположений относительно того, как должны интерпретироваться массивы типа БтР РО61с честОк; указать необходимое преобразование должен пользователь. Вдвухдругихпакетахях<) 1ос1с я1опе<)ияЫ 1оогс цпягопе5,приняты определенные предположения относительно массивов типа БТР 10616 БЛЕСТОК, и эти пакеты полезны в том случае, когда все элементы типа БТР 10616 ЧЕСТОК должны интерпретироваться одинаково.
Каждый пакет содержит три варианта каждой из функций сравнения для того, чтобы при сравнении друг с другом нли с целыми числами элементы типа БТР 10616 ЧЕСТОК интерпретировались как элементы типа Б16КЕР или элементытипа ОЫБ16)ЧЕРсоответственно. 600 Глава 5. Практическая разработка схем комбинационной логики Табл. б.б!. Поведенческая ))НА)1-программа сравнения 8-рырядных целых чисел различных типов 1>птату 1ЕЕЕ; аве 1ЕЕЕ.«сб 1«втс !!Вб а) ц пве 1ЕЕЕ.всб 1«рс «тт<Ь,а11; ест!ту с вра тв ротс ( А, В.
тп СИШСИЩ Р почато О); С: тп МСИЕО 0 бочасо О); о тп Вто ц)сус честое <1 бо по о); А Ьт В, В СЕ С, А ЕС С, С ИЕС, ОВАС, О ИВС! оы ЕтО ШС)С ); епб чсовра, сЬ>сессвте «спера„втсЬ оу чсовра та Ьейтп ртосевв (А, В, С, О) Ьерп А 11 В < '0'; В СЕ С <= '0'; А Щ С < '0'; С ИЕС < '0', О В1С < '0'! О ИЕС < '0'; 11 А с В сЬеп А 11 В <= ' 1'; епб ту; тг В > С спев В СЕ С <= '! ; еы !1; >1 А С СЬ«п А Щ С <= '1'; епб >1; тб С < 0 <Ьеп С„ИЕС < '1'; епб >1, ОЕ51СИЕОВ) > 100 сЬеп О В1с < '!'; епб тб; и В1сищ(О) < О сьев Р иес <= '1', «вб >1; епб ртосевв; епб чсовра атсЬ, Если в ЧНВЕ-программе имеется функция сравнения, то ее реализация в виде двухуровневой суммы произведений потребует столько же термов-произведений, сколько и в языке АВЕЕ.