Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 116
Текст из файла (страница 116)
5,54, включить оператор "6САККТ 1;", то компилятор создаст восемь новых выходных сигналов переноса в двоичных разрядах с 0-го по 7-й. Эти внутренние переносы будут использованы в выражениях для 8 ВМ1-Б ВМ8, то есть по существу будет создан 8-разрядный сумматор со сквозным переносом, имеющий задержку, в худшем случае равную времени восьми проходов сигнала через ПЛУ. Если применен оператор "6САККТ 2;", то компаратор сформирует два бита переноса одновременно, создавая четыре новых выходных сигнала переноса в разрядах 1, 3, 5 и 7. В этом случае максимальное число тернов-произведений, необходимых для получения сигнала на любом из выходов, все еше остается приемлемым, всего лишь 7, и задержка в наихудшем случае равна времени только четырех проходов сигнала через ПЛУ.
При трех битах в группе (6САККт' 3;) максимальное число термов-произведений увеличивается до 28, что становится неосуществимым. Особенно часто встречается в языке АВЕЬ и реализуется в ПЛУ прибавление или вычитание константы, равной 1. Эта операция используется в описании счетчиков, где говорится, что очередное состояние счетчика равно текущему состоянию плюс! для «суммирующего» счетчика и минус 1 для «вычитающего» счетчика. Выражение для 1-го разряда счетчика можно очень просто сформулировать словами: «Инвертировать Ай бит, если счет разрешен и биты всех разрядов с номерами меньше (равны !». Реализация этой операции требует только 1+ 2 термовпроизведений для любого значения 8 а в некоторых ПЛу и ИС типа СРЬР возможно еще большее сокращение их числа, вплоть до одного терма-произведения и одного вентиля ИСКЛЮЧАЮЩЕЕ ИЛИ.
*5.10.9. Описание сумматоров на языке УНОЕ Хотя язык УНОЬ имеет встроенные операторы сложения (+) и вычитания (-), они работают только с целыми и действительными числами и физическими тиггами. В частности, они лв работают с типами В1Т ЧВСТОК и с типом ЯТВ 1ЛС1С уВСтОк стандарта 1ЕЕЕ. Для этих типов в стандартных пакетах определены специальные операторы. 5.10.Сумматоры, вычитающие устройства и АЛУ 517 Как было объяснено в разделе 5 9 б, в пакете 1ЕЕЕ зтй 1одтс атйг Ь определены два новых типа массивов — 316ИЕР и РИЯ16ИЕР— и набор функций сравнения для операндов типа 1ИТЕСЕК, Я 16ИЕР и РИЯ16ИЕР.
В данном пакете определены операции сложения и вычитания для операндов тех же типов, а также для 1-разрядных операндов типа ЯТР Ь061С и ЯТ0 РЬ061С. При большом числе перекрывающихся функций сложения н вычитания не столь очевидно, каким окажется тип результата сложения или вычитания. Если хозя бы один из операндов принадлежит типу 316ИЕ0, то обычно результат будет типа 316ИЕР, в противном случае результат будет типа РИЯ 16ИЕР, Но если результирующее значение присваивается сигналу или переменной типа ЯТР Ь061С ЧЕСТОК, то результат типа 316ИЕР или РИЯ16ИЕР преобразуется к этому типу Разрядность любого результата обычно равна разрядности самого длинного операнда Однако, когда операнд типа РИ 316ИЕР участвует в одной операции с операндом типа 316ИЕР или 1ИТЕ6ЕВ, его разрядность увеличивается на 1 для размещения в нем знакового бита, равного О, и только после этого устанавливается разрядность результата.
В табл. 5 55 приведена УН1) программа сложения 8-разрядных операндов различного типа, иллюстрирующая эти правила. Первый результат Я объявлен как 9-разрядное двоичное число в предположении, что разработчика интересует перенос, который может возникнуть при сложении 8-разрядных операндов д и В типа РИЯ16ИЕР. С помощью оператора конкатенации Й операнды д и В расширяются так, чтобы функция сложения помещала бит переноса в старший разряд результата. Табл. 5.55.
УНРЬ-программа сложения н вычитания 8-разрядных целых чисел различных типов 1АЬтату 1ЕЕЕ; иве 1ЕЕЕ.аей 1оЯАс 1184.а11; аве 1ЕЕЕ.втй 1оЯАс атзев.а11; елтзту чайй йв ротс ( А, В: Ав 003163ЕР (7 йовпто О); С: та 31ОНЕО (7 йочвсо О); 0: зп 310 ЬОС1С ЧЕСТОК (7 йочпео 0); 3: опт 08316880 (8 йонаса 0); Т: опт 31СКЕ0 (8 йочвео 0); О: сит ЯХОЛЕР (7 йочвто О); Ч: оаа ЗТР ЬОО1С ЧЕСТОК (8 йочлсо 0) ); елй чайн; атсььсесеате чайй гтсЬ от чайн Ав ЬеЯАл Я < ('О' а А) + ('О' Ф В); Т< А+С; П < С + 318НЕР(0); Ч < С вЂ” ОМ31ОНЕ0(0); епй чайн атсЬ; 616 Глава 6. Практическая разработка схем комбинационной логики Следующий результат Т также является 9-разрядным, так как функция сложения расширяет операнд А типа Рн я 1 сне Р при его сложении с операндом с типа Я1ЯЫЕР.
В третьей операции сложения 8-разрядный операнд Р типа ЯТР Б061С ЧЕСТОЕ преобразуется в операнд типа Я1СМЕР и складывается с операндом С, так что в результате получается 8-разрядное двоичное число Р типа Я1СНЕР. В последнем операторе величина Р преобразуется в операнд типа Рмя 1снеР, автоматически расширяется паолин разряд и вычитается из с, так что результат ч оказывается 9-разрядным. Так как сложение и вычитание являются довольно дорогими операциями в смысле числа требуемых вентилей, многие ЧНРЬ-средства синтеза будут пытаться многократно использовать блоки сумматора всякий раз, когда зто возможно.
В табл. 5.56, например, приведена ЧНРЬ-программа, включающая два различных сложения. Вместо того, чтобы образовать два сумматора и с помощью мультиплексора выбирать выход одного из них, синтезируюшая программа может создать только один сумматор и с помощью мультиплексоров переключать его входы, в результате чего схема в целом будет иметь меньшие размеры. Табл. 6.66. ЧНОЬ-программа с многократным использованием сумматора 11ьтату 1ЕЕЕ; пве 1ЕЕЕ.вМ 1о81с 1164.а11; пве 1ЕЕЕ.всб 1оязс атзСЬ.а11; епетеу чагЫвЬт зв ротс ( А, В, С, Р: та 81»ИЕР (7 оочпсо 0); ЯЕР: зп ЯТР ЬРСТС; Я: опт 81СМЕР (7 г)очпео О) ); епб чайг)вЬт; атсЬзеесепте чагЫвЬт атсЬ оу чаоовЬт зв Ьеязп Я с А + В чЬеп ЯЕЬ '1' е1ве С + Р; епб чаг)г(вЬт атсЬ; *5.11. Комбинационные умножители *5.11.1.
Структура комбинационных умножителей В параграфе 2. 8 в общих чертах был описан алгоритм перемножения и-разрядных двоичных чисел посредством н сдвигов и сложений. Хотя этот алгоритм реализует способ, которым мы умножаем десятичные ч иола вручную, в нем нет ничего принципиально «последовательного» или «зависяшего от времени». Другими словами, при наличии и-разрядных входных слов Хи У можно составить таблицу истинности, которая представляет 2н-разрядное произведение Р =Х Ув виде комбинационной функции Х н У Комбинационный умножингель 5.11.Комбинационные умиожитепи 519 (сотьгпаггапа! тий!р!!ег) является логической схемой с такой таблицей истинности.
В большинстве случаев реализация комбинационного умножения основана на алгоритме сдвига и сложения, применяемого прн умножении вручную. Рис. 5.97 служит иллюстрацией основной идеи перемножения двух 8-разрядных целых чисел без знака: множимого Х = х„х хзхзхзх х,х„и множителя у = у у у у у у у,уа, такую схему называют умножителем 8х8. Каждая строка, называемая компонента>и произведения(ргаг(исг сотропнт), является сдвинутым множимым, умноженным на 0 или на 1 в зависимости от значения соответствующегоо разряда множителя.
Каждый небольшой прямоугольник представляет собой один бит компонента произведения ух, получаемый в результате 7 >' выполнения логической операции И надбитом множителя у и битом множнмого х. Произведение Р=р,урм ... Р»,р получается путем сложения всех компо- у нентов произведения и содержит 1б битов.
У>77 >з и 7>44 У>4.7 У>47 >>4 УЯ> 777, 7 >>7> >ух> УИ7 У>74 7",4, >,47 747 >Л4 7'477 7574 7577 7747 >57' 74 7 >>иу УМ 4 777 У>и 77,7> .~. У>77 У>77 У747 Уи 7 777' 777! Рп Ри Рп Ре Рн Рп РУ Р> Р> Рь Р> Р. Р Р> Р> Р Рис. 5.97. Компоненты произведения в умножителе 8х8 На рис. 5.98 продемонстрирован один нз способов сложения компонентов произведения. Здесь биты компонента произведения размещены в разрядку, а каждый прямоугольник со знаком "+" является полным сумматором, эквивалентным сумматору, приведенному на рнс.
5.86(с). В каждой строке выходы сигналов переноса полных сумматоров соединены так, чтобы получался 8-разрядный сумматор со сквозным переносом. Таким образом, первый сумматор со сквозным переносом суммирует первые два компонента произведения, образуя первое частичное произведение согласно определению, данному в параграфе 2.8. Последующие сумматоры складывают предыдущее частичное произведение со следующим компонентомпроизведения. Интересно рассмотреть задержку распространения в схеме, приведенной на рис. 5.98. Худшим является такой случай, когда биты на входах младшего сумматора (уех, иу,х ! влияют на значение старшего разряда произведения (рм).
Если ради простоты предположить, что задержки сигналов в полном сумматоре от любого входа до любого выхода одинаковы н равны, скажем, г, то в худшем ра случае сигнал проходит через 20 сумматоров н задержка составляет 20! . Соответствующий результат можно получить и в том случае, когда задержки различны; см. задачу 5.83. 520 Глава 6.
Практическая разработка схем комбинационной логики Рис. 8.98. Промежуточные соединения в комбинационном умножнтеле 8х8 В последовательных умпожителях (зеокепг(а( «пи(г(сйе«з) используется единственный сумматор и регистр накопления частичных произведений. Сначала в регистр частичного произведения заносится первый компонент произведения, а затем — при перемножении двух п-разрядных чисел — выполняется п — 1 шагов: на каждом шаге очередной компонент произведения с помощью сумматора добавляется в регистр частичного произведения.
Для ускорения процедуры умножения в некоторых последовательных умно- жителях используется слолсепие с сохранением переноса (са««у-лаге аг(й~(оп). Идея состоит в разрыве цепочки переносов в сумматоре со сквозным переносом, чтобы уменьшить время, затрачиваемое на каждое сложение. Достигается это путем соединения выхода переноса Рго разряда на 1'-м шаге со входом переноса (1 + 1)-го разряда на следующем, (/+ 1)-м шаге. После того как добавлен последний компонент произведения, необходим еще один шаг, на котором переносы подключаются обычным образом и сумматору предоставляется возможность функционировать по принципу сквозного переноса от младшего разряда к старшему. На рис.