СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №9/2016
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 74 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2016 1 MSB SEEKER EXP = 31 LUT ZERO FORMER FRAC SHIFTER SIGN(A) MAN(A) EXP(A) А 16 16 16 1 4 4 6 6 6 6 + + XOR INV 15 14 --- 0 MSB SEEKER FRAC OUT DSP48E1 * FRACTION SHIFTER 16 4 16 16 FRAC MSB FRAC IN LUT INIT 2 (16–MSB) 6 6 + – 6 32 +1 17 1 16 16 А LUT INIT EXP(A) SCALE MAN(A) IMPL(A) SIGN(A) DSP48E1 XOR 2 (EXP(A) –SCALE) вать конфигурационную логику кри- сталла ПЛИС и встроенные узлы умно- жения DSP48E1. На рисунке 2 изображе- на структурная схема преобразования данных в формат FP23. Максимальная разрядность множи- телей блоков DSP48E1 – 25 и 18 соот- ветственно, где старший бит – зна- ковый. Для перемножения чисел без учёта знака в модуле DSP48E1 эффек- тивная разрядность входных данных понижается на один бит. Блочную память RAMB18E1 преобразователь не использует. Соответственно, чтобы найти знак числа, необходимо взять старший (знаковый) бит входных данных. Алгоритм поиска мантиссы MAN(A) на базе примитивов кристалла ПЛИС следующий: ● взять модуль входного числа (опера- ция «исключающее ИЛИ»); ● произвести поиск старшего значаще- го бита (MSB SEEKER); ● по старшему значащему биту сфор- мировать величину сдвига мантиссы; ● перемножить модуль числа и значе- ние сдвига, получив нормализован- ную мантиссу (FRAC SHIFTER). Для поиска экспоненты EXP(A) необ- ходимо: ● взять модуль входного числа (опера- ция «исключающее ИЛИ»); ● произвести поиск старшего значаще- го бита (MSB SEEKER); ● вычесть из числа 32 инвертирован- ный индекс значащего бита; ● прибавить 1 к полученному резуль- тату с учётом логики поиска ненуле- вого входного значения (LUT ZERO FORMER). Поскольку мантисса получается путём умножения модуля действи- тельного числа на некоторую «маску», от которой зависит сдвиг входного чис- ла без знака, то для её поиска необхо- дим блок DSP48E1. Процедура поиска и формирования мантиссы происходит в узле FRAC SHIFTER и проиллюстриро- вана на рисунке 3. Как видно, мантисса формируется в два этапа. На первой стадии с помощью логических ресурсов LUT из входного числа создаётся множитель LUT INIT = = 2 16 – MSB . На второй стадии входные данные умножаются на величину сдви- га в узле DSP48E1. На выходе умножи- теля образуется нормализованная мантисса FRAC(A). Согласно описа- нию, для умножения чисел без знака максимальная разрядность одного из множителей блока DSP48E1 равна 17, следовательно, мантисса и формиру- емый сдвиг не могут иметь большую разрядность. Это ограничение ещё раз обуславливает тот факт, что мантисса чисел в формате FP23 имеет разряд- ность 17. Старший бит мантиссы для ненулевых чисел равен 1, зарезервиро- ван и применяется в операции поис- ка результирующей мантиссы, но не отображается в выходном представле- нии числа для нормализованного вида. Этот бит можно вывести и использо- вать в общем представлении слова, тог- да разрядность выходного слова рав- на 24 битам. Для уменьшения объёма занимаемых ресурсов кристалла блок DSP48E1 мож- но исключить. Тогда узел поиска ман- тиссы преобразуется в быстрый сдви- говый регистр (Barrel Shifter), но при этом несколько уменьшается произ- водительность вычислительного узла. Для некоторых кристаллов ПЛИС количество DSP48E1 невелико, и лиш- ние траты ресурсов критичны, поэто- му при частом использовании блоков FP23 есть возможность выбрать тот или иной вариант. Кроме того, для варианта с использованием быстрого сдвига сум- марная задержка на полное выполне- ние операции преобразования умень- шается на один такт, что крайне важно для задач, где требуется минимальная задержка на выполнение операций и преобразований данных. Рис. 2. Блок-схема преобразования числа формата FIX16 в формат FP23 Рис. 3. Формирование нормализованной мантиссы Рис. 4. Блок-схема преобразования числа формата FP23 в FIX16
RkJQdWJsaXNoZXIy MTQ4NjUy