СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №9/2016

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 75 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2016 16 33 16 23 23 32 6 6 1 6 6 16 16 А В MAN(A) MAN(A) MAN(В) EXP(A) EXP(В) EXP(С) SIGN(A) SIGN(В) SIGN(С) DSP48E1 XOR + – CIN 32 --- 17 31 --- 16 16 16 16 23 23 23 6 6 6 6 1 6 23 22 22 22 А А В EXP(A) EXP(A) SIGN(С) EXP(C) >>1 MAN(C) BARREL SHIFTER BARREL SHIFTER MSB SEEKER EXP(В) EXP(В)& MAN(В) EXP(В)& MAN(В) + – – – MAN(A) MAN(В) +1 SIGN(A) Узлы суммирования для поиска экс- поненты сделаны в виде полных двоич- ных сумматоров, для реализации кото- рых применяются логические компо- нентыMUXCY, XORCY и CARRY CHAIN, входящие в состав базовых ячеек SLICEL и SLICEM. Подробное описание можно найти в любой литературе, посвящён- ной программируемой логике. П РЕОБРАЗОВАНИЕ FP23 В FIX16 Преобразование данных из форма- та FP23 в FIX16 производится в четы- ре простых логических этапа. На рисунке 4 изображена структурная схе- ма преобразования данных из форма- та FP23 в натуральный двоичный код. Алгоритм поиска двоичного знаково- го числа A состоит из нескольких после- довательных действий: ● из экспоненты EXP(A) вычесть значе- ние SCALE (масштабирование выход- ных данных); ● сформировать сдвиговую маску 2 (EXP(A) – SCALE) ; ● к мантиссе прибавить скрытый бит IMPL(A) и умножить результат на величину сдвига; ● учесть знак числа SIGN(A) путём взя- тия операции «исключающее ИЛИ». Как и для узла прямого преобра- зования в формат FP23, в этой схеме для экономии ресурсов ПЛИС блок DSP48E1 можно заменить быстрым сдвиговым регистром, выполненным на ячейках SLICEM. У МНОЖЕНИЕ Умножение чисел в формате FP23 – одна из самых простых и логичных операций. Аппаратно алгоритм умно- жения реализован следующим образом (см. рис. 5): ● умножение мантисс в узле DSP48E1; ● нормализация мантиссы (взятие в качестве мантиссы разрядов из битовой сетки [32…17] или [31…16], в зависимости от значения старше- го значащего бита); ● арифметическое сложение экспонент; ● вычитание из суммы экспонент чис- ла 16; ● если 33-й бит произведения мантисс равен 0, то из экспоненты результата вычитается ещё 1; ● определение знака произведения с помощью операции «исключаю- щее ИЛИ». В схеме не отражена логика умноже- ния на нулевое число, но алгоритмиче- ски она сводится к тому, что если экс- понента любого входного числа рав- на нулю, то результат на выходе также равен нулю. На ПЛИС поиск нуля орга- низован с помощью логических функ- ций AND и OR на базовых блоках LUT в составе SLICEL. Число 16 вычитается из суммы экспо- нент для учёта скрытых битов в мантис- сах входных чисел, которые дают двой- ную прибавку к экспонентам. Сумма- торы и вычитатели в узле умножения чисел с плавающей запятой также реа- лизованы по схеме двоичного полно- го сумматора. С ЛОЖЕНИЕ И ВЫЧИТАНИЕ Сложение и вычитание чисел в фор- мате FP23 – самая сложная и затрат- ная по ресурсам операция. Сложение состоит из следующих фундаменталь- ных стадий (см. рис. 6): ● приведение операндов к одной экс- поненте (выравнивание); ● арифметическое сложение мантисс; ● нормализация результата (подбор такой экспоненты, чтобы 16-й бит мантиссы был равен 1). Аппаратно алгоритм сложения реа- лизован следующим образом: ● операнды «A» и «B» сравниваются по модулю, и если |А| < |B|, числа меняют- ся местами (мультиплексор данных); ● вычисляется разность экспонент операндов, а результат определя- ет, на сколько разрядов нужно сдви- нуть мантиссу числа «B» вправо, что- бы привести числа к одной экспо- ненте; ● по разности экспонент формирует- ся число 2 (16 – (EXP(A) – EXP(B))) , на которое умножается мантисса числа «В»; ● результат умножения складывается с мантиссой нового числа «A»; ● в полученном числе определяется номер старшего значащего бита MSB, формируется число 2 (16 – MSB) ; ● проводится нормализация мантиссы путём умножения суммы мантисс на число 2 (16 – MSB) ; ● формируется экспонента числа EXP(C) = EXP(A) – MSB + 1. Вычитание реализовано аналогич- но сложению. Единственное отличие Рис. 5. Умножение чисел в формате FP23 Рис. 6. Сложение чисел в формате FP23

RkJQdWJsaXNoZXIy MTQ4NjUy