Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 134
Текст из файла (страница 134)
Элементы старого массива размещаются в новом массиве на соответствующих позициях в том же порядке слева направо. Табл. 6.23. Поведенческая ЧНРЬ-программа для преобразования чисел с фиксированной точкой в числа с плавающей точкой 898 Глава б. Примеры проектирования комбинационных схем 1репс 1в егсЬзеесепге 1репсе ехсЬ о1 Ьейьп ргосевв(В) Ьейзп 11 В(10) ~ '1' еЬеп И е1взй В(9) = '1' ЕЬеп И е1в11 В(8) '1' ЕЬеп И е1в11 В(7) '1' ЕЬеп И е)в11 В(8) '1' ЕЬеп И е1в11 В(6) '1' ЕЬеп И е1в11 В(4) = '1' еЬеп И е1ве И епп 11; епц ртосевв; епб гревсе агсЬ; < В(10 бовпео 7) Е <= В( 9 бовпео 6); Е с В( 8 аовпео Б); Е < В( 7 бояпео 4); Е < В( 8 довпео 3); Е < В( 6 йояпео 2); Е <= В( 4 цовпео 1); Е < В( 3 повпво О); Е <~ "111"; с "110"; <= "101"; < "100"1 <-" "011"; <~ "010"; < "001"; <~ "000"; С другой стороны, для увеличения функциональных возможностей нашего устройства может появиться желание воспользоваться реальными компараторами и затратить даже большее число вентилей.
В частности, наш вариант устройства при нахождении битов мантиссы выполняет усечение, а не округление. Более точный результат достигается при округлении, но это приводит к гораздо более сложному устройству. Во-первых, чтобы прибавить 1 к выбранным битам мантиссы при округлении вверх, необходим сумматор. Однако добавление 1, когда мантисса уже равна 1111, выталкивает нас в диапазон, представляемый следующим значениелз показателя экспоненты, так что надо быть готовым к этому случаю. Наконец, никогда нельзя выполнить округление вверх, если до округления мантисса и показатель экспоненты равны 1111 и 111, поскольку в нашем представлении числа с плавающей точкой отсутствует большее значение числа, до которого следует округлять, Программа, приведенная в табл.
6 25, выполняет желаемое округление, функция гопп<( берет биты из 5 определенных разрядов числа с фиксированной точкой и возвращает в качестве результата четыре старших разряда из них с добавленной к ним 1, если младший Разряд Равен 1. Таким образом, если считать, что непосредственно слева от младшего разряда находится двоичная точка, то Хотя программа, текст которой приведен в табл. 6.23, полностью синтезируема, некоторые программные средства синтеза могут оказаться не настолько толковыми, чтобы распознать, что во вложенных сравнениях на каждом уровне нужно проверять только один бит. Вместо этого такие программные средства могут для каждого уровня создать полный 11-разрядный компаратор.
Такая логическая схема была бы намного больше и работала бы медленнее, чем то, что можно было бы сделать. Когда мы сталкиваемся с такой проблемой, всегда можно записать архитектуру немного иначе и в более явном виде, чтобы помочь программе выйти из затруднения, как это сделано в табл. 6.24 Табл. 6.24. Другой вариант ЧН()(.-архитектуры для преобразования чисел с фиксированной точкой в числа с плавающей точкой 6.3. примеры проектирования с использованием языка УН(ЭЬ 699 атсьхсесхате 1реаст атсь ох трепе 1в Хппссзоп толпа (ВЯь1СЕ: БТОЛОСТС 7ЕСТОВ(4 аовасо 0)) геката ЯТО ЬОС10 УЕСТРЕ хв татхаь1е ВЯУ: ОИБ1ОИЕО(3 аояпто О); ЬеБхп хй ВЯЕТСЕ(0) '0' Гьеп гетега ВЯЬХСЕ(4 Бояато 1); е1ев пп11; ВЯО := ОИБХСИЕО(ВБЬ1СЕ(4 аояато 1)) + 1; геката ЯТО ьОСХС ЧЕСТОВ(ВБО); еаа 11; еп1; Ьеяхп ртосевз(В) таг1аьте ВО: ОИЯ1СИЕВ(10 Бояпео О); Ьейаа ВО:= ОИЯ1СИЕО(В); 11 ВО с 16 тьеп М < В( 3 дояпхо О); Е <= е1е11 ВО < 32-1 Хьеп М с толпа(В( 4 аояато О)) ехв11 ВО < 64-2 тьеп М <= гоааа(В( 6 донато 1)) е1вхй ВО с 128-4 тьеп М <= тошА(В( 6 аояпсо 2)) е1а11 ВО < 266-8 Хьеп М <= гошА(В( Т аояпто Э)) е1ах1 ВО < 612-16 сьев М <= тоааа(В( 8 аояато 4)) е1е11 ВО с 1024-32 тьеп М < топка(В( 9 аояато 6)) е1ехХ ВО < 2048-64 сЬеп М с гошА(В(10 аояато 6)) е1ее М < "1111"; епц х1; еаа ртосевв; еаа трепет агсЬ; "000"; Е < "001"; Е < "010"~ Е с ' "011"; Е < "100"; Е <= "101"; Е <= "110"; Е <= "111"; Е <= "111"; Еще раз: результаты синтеза, выполненного по этой поведенческой программе, не обязательно окажутся эффективными.
Помимо многочисленных операторов сравнения, мы должны теперь побеспокоиться относительно большого числа 4-разрядных сумматоров, которые могут возникнуть при синтезе как следствие многократных обращений к функции округления госпс(. Вопрос о том, как следует изменить архитектуру, чтобы по ней синтезировался только один сумматор, оставлен читателю в качестве задачи 6.15. округление происходит в том случае, когда отбрасываемая часть мантиссы равна 1!2 или больше. В каждом пРедложении вложенного опеРатоРа "11" в пРоцессе выполняется сравнение, чтобы при округлении вверх выбранной величины ие происходило «переполнения», которое переводило бы результат в диапазон чисел, представляемых следующим значением показателя экспоненты, В противном случае преобразование и округление происходят в следующем предложении. Последним предложением гарантируется, что не произойдет округления вверх, когда мы находимся на краю диапазона чисел, представимых в формате с плавающей точкой.
Табл. 6.26. Поведенческая ЧН()Ь-архитектура для преобразования числа с фиксированной точкой в число с плавающей точкой с округлением м ванн «ммомиационных охам «ПОЕДАНИЕ ВЕНТИЛЕЙ» Дпя операции округления не требуется 4-разрядный сумматор, необходима только схема увеличения числа на 1, так как одно из слагаемых — всегда 1. Некоторые ЧНРЬ-средства могут выдать в результате синтеза полный сумматор, в то время как другие могут оказаться настолько сообразительными, что синтезируют схему увеличения числа на 1, состоящую из существенно меньшего количества вентилей.
В некоторых случаях это может не быть существенным. Самые развитые программные средства проектирования устройств на основе ИС типа РРПА и специализированных ИС содержат программы поглощения вентилей. Эти программы ищут вентили с постоянными сигналами на входах и либо исключают такие вентили целиком, либо уменьшают число входов у таких вентилей. Например, можно исключить вентиль И, на одном из входов которого постоянно присутствует 1, а вентиль И с постоянно присутствующим О на одном из его входов можно заменить постоянным сигналом, равным О. Программа поглощения вентилей прослеживает влияние постоянных значений входных сигналов настолько далеко в схеме, насколько это возможно.
Следовательно, такая программа может преобразовать 4-разрядный сумматор с постоянной 1 на одном из входов в более экономичную 4-разрядную схему увеличения числа на 1 . 6.3.3. Двойной приоритетный шифратор В этом прилзере мы воспользуемся языком ЧНРЬ для поведенческою описания реализуемого в ПЛУ приоритетного шифратора, который находит сигналы с активным уровнем с самым высоким приоритетом и со вторым по старшинству приоритетом в наборе из восьми входных сигналов запроса с высоким активным уровнем [ВО...
В7 П среди которых сигнал ВО имеет высший приоритет. Сигналы А [2 с[оникс 01 и АУА11О будем использовать для представления запроса с самым высоким приоритетом, причем сигнал АЧАЬ10 пусть приниМаЕт единичное значение только тогда, когда запрос с высшим приоритетом присутствует. Точно так же сигналы В [2 с[оипсо О! и ВЧАЬ1О пусть представляют запрос со вторым по старшинству приоритетом. В табл, й.26 представлена поведенческая ЧНРЬ-программа для приоритетного шифратора.
Вместо вложенных операторов "11", как предыдущем примере, мы применяем здесь цикл "аког". Этот подход позволяет нам обработать запросы как наивысшего, так и второю по старшинству приоритетов в пределах одного и того же цикла, проходя весь путь от сигнала с высшим приоритетом до сигнала с наименьшим приоритетом.
Помимо пакета в с с[ 1оозс 11 64, в программе используется пакет1ЕЕЕ вгс! 1одзс агусп, из которого берется фун- кцияСО[ЧЧ ВТО ВОС1С ЧЕСТОВ. Этафункциявявномвидебылаприведенав табл. 4.39. Обратите внимание, что порты АЧАЬ1О и ВУА11О объявлены в программе как выходные сигналы вида Ь от тек, поскольку они читаются в пределах архи- 6.Я„Примеры проектирования с использованием языка ННОЕ 601 тектуры. Если бы вы поместили объявление сигналов дчдВ10 и ВНКВ10 в определение объекта и указали бы, что они являются выходными сигналами вида опт, то в архитектуре можно было бы использовать тот же самый подход, но при этом вам пришлось бы объявить внутри процесса локальные переменные, соответствуюшие сигналам йч?хВ| О и Вчй? 1 О.
Обратите также внимание на то, что мы включили ДЧДВ?0 и ВЧ?ХВ?О в список чувствительнОСтИ прОцЕССа. Хотя, строго говоря, делать это не обязательно, однако такой шаг предотвратит появление предупреждений, которые в противном случае стал бы выдавать компилятор по поводу использования значений сигналов, которых нет в списке чувствительности. Табл. 6.26. Поведенческая ННОВ-программа для двойного приоритетного шифратора 11Ьгагу 1ЕЕЕ; пее ?ЕЕЕ.ага ?оЕ?с 1164.а??; пае ?ЕЕЕ.аеа ?обхс ат?ЕЬ.а??; епе?хау Чргхог2 хв роге ( К: хп ЯТО„ВОО?С ЧЕСТОК (О Ео 7); А, В: опв ЯТР 100?С ЧЕСТОК (2 донато О); АЧАВ?Р, ВЧА11Р: Ьп??ет ЯТР 1001С ); епе Чргзог2; агсйасесепге Чрг?от2 агсЬ о? Уртхот2 Ае Ьея?п ртосевв(К, АУА?.10, ВУА1?Р) Ьеб?п АУА? ?Р <» '0'; ВУА?.10 <" '0'; А < "000"; В <" "000"~ тот х хп 0 ео 7 ?оор ?х К(х) = '1' апа АЧАВ?Р = '0' епеп А <= СОИЧ ЯТО ВОС?С„ЧЕСТОК(х,З); АЧАЛО <= '1'; е?вИ К(Х) '1' аае ВЧА?.10 = '0' Епеп В <= СОМЧ„ЯТР„1001С ЧЕСТОК(х,З); ВЧА110 <-" '1'; епа 11; епб ?оор; епа ртосевв; впе Чрг?ог2 агсЬ; Возможен также другой подход к созданию двойного приоритетного шифратора с вложенным оператором "х й".
Пример программы, реализующей этот подход, приведен в табл. 6.27. Такой подход приводит к более длинной программе с большим числом возможных сбоев, но, с другой стороны, этот вариант может дать лучший результат синтеза; единственный способ узнать возможности конкРетной программы состоит в том, чтобы синтезировать схему н проанализировать Результаты с точки зрения задержки и числа логических ячеек или вентилей. 602 Глава 6. Примеры проектировании комбинационных схем Табл. 6.27.
Другой вариант УНРЬ-архитектуры для двойного приоритетного шифратора ааскззесаиае Ургзог21 агоь оХ Ургзог2 1в Ьек1п рассеяв(К, А, АЧА:.10, ВЧАЬ10) Ьебьп ХХ К(0) '1' СЬеп А <= "000"; АЧА1.10 <= '1'; е)азх К(1) = '1' сьеп А < "001"; АЧА1.10 < '1'; е1азх к(2) = '1' аьеп А < "010"; АчАЬХР < е1а11 К(3) = '1' пкеп А с "011", АУАЬ10 с '1'; е1а1Х К(4) " '1' сввп А <= "100"; АУА110 < '1'; е1в1Х К(Б) '1' СЬеп А < "101"; АЧА1.10 < '1'; е)азХ К(0) '1* СЬеп А <= "110"; АЧАЬХР < '1'; е1аХХ К(7) '1' скоп А <= "111", АУА|10 <= '1'; е1ве А <"- "000"; АУА1 РР <= '0'; епа 1Х; ХХ К(1) '1' апа А / "001" Сввп В <~ "001"; е1вХХ К(2) ~ '1' апд А / "010" сввп Б <' "010"; езвХХ К(З) '1' ап1 А / "011" сввп В «= "011"; е1вАХ К(4) '1' апд А / "100" гкап В < "100"; е1езХ К(Б) ~ '1' апд А /= "101" СЬеп В < е1е1Х К(60 " '1' апа А /= "110' сввп В < "110"; е1а11 К(7) '1' апа А / "111" скеп В < "111"; е)ве В « "000"; еш1 1Х; епа ргосеаа; епа Ург1ог2з агсЬ; ВЧА11Р < '1'; ВЧА1.10 <= '1'; ВЧА110 « '1'; ВЧА11Р < '1'; ВУА1.10 «= '1'; ВУА110 < '1'; БЧА1.1Р <= '1'; ВЧА1.10 < '0'; 6.3.4.