Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с помощью генератора параметризированных модулей CORE Generator. Часть 10
Назначение и основные характеристики параметризированного модуля Floating-Point Operator версии v3.0
В предыдущих частях настоящей публикации были рассмотрены параметризированные модули, позволяющие формировать описания элементов, выполняющих основные арифметические операции над входными данными, которые представлены в формате с фиксированной запятой. Исключением является ядро Divider Generator версии v1.0, которое может использоваться также для генерации элементов, осуществляющих операцию деления, в которой операнды и вычисляемый результат представлены в формате с плавающей запятой. Кроме этого ядра в составе генератора параметризированных модулей CORE Generator есть универсальное ядро Floating-Point Operator, предназначенное для автоматизированной подготовки описаний элементов, выполняющих различные арифметические операции с плавающей запятой. Данный параметризированный модуль представлен несколькими версиями, которые входят в группу ядер Math Functions, предназначенных для реализации математических функций. Наиболее широкими функциональными возможностями обладает версия v3.0 ядра Floating-Point Operator. Эта версия параметризированного модуля позволяет также формировать описания элементов, осуществляющих преобразование входных данных из одного формата представления в другой.
Все статьи цикла:
- Часть 1
- Часть 2
- Часть 3
- Часть 4
- Часть 5
- Часть 6
- Часть 7
- Часть 8
- Часть 9
- Часть 10
- Часть 11
- Часть 12
- Часть 13
- Часть 14
- Часть 15
- Часть 16
- Часть 17
- Часть 18
- Часть 19
Описания устройств, сгенерированных с помощью параметризированного модуля Floating-Point Operator версии v3.0, могут использоваться в составе проектов, выполняемых на основе кристаллов актуальных семейств: Spartan-3; Spartan-3E; Spartan-3A; Virtex-II; Virtex-II PRO; Virtex-4 и Virtex-5. Для создания описаний элементов, осуществляющих арифметические операции с плавающей запятой, которые должны быть реализованы на базе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, QPRO Virtex Rad-Hard; QPRO Virtex Hi-Rel, Virtex-E и QPRO Virtex-E Military, следует воспользоваться предыдущей версией рассматриваемого ядра.
К особенностям версии v3.0 параметризированного модуля Floating-Point Operator относятся такие как:
- возможность формирования элементов, реализующих следующие арифметические операции с плавающей запятой:
- сложение;
- вычитание;
- умножение;
- деление;
- извлечение квадратного корня;
- сравнения;
- наличие опции генерации элементов, выполняющих следующие операции преобразования формата представления входных данных:
- из формата с плавающей запятой в формат с фиксированной запятой;
- из формата с фиксированной запятой в формат с плавающей запятой;
- из одного формата с плавающей запятой в другой формат с плавающей запятой;
- поддержка разрядности слова данных (входных шин данных) в создаваемых элементах в диапазоне от 4 до 64 двоичных разрядов;
- использование (по выбору разработчика) сигналов подтверждения (квитирования) в формируемых элементах при выполнении операций с плавающей запятой;
- возможность генерации описаний элементов, реализуемых на базе различных ресурсов ПЛИС (таблиц преобразования LUT, аппаратных блоков умножения Multiplier Blocks или секций DSP48/DSP48E);
- оптимальное использование ресурсов аппаратных блоков DSP48 и DSP48E при реализации формируемых элементов на базе ПЛИС семейств Virtex-4 и Virtex-5 соответственно;
- поддержка двух критериев оптимизации формируемых сумматоров и вычитающих устройств с плавающей запятой, предназначенных для реализации на базе ПЛИС семейства Virtex-5;
- возможность выборочного использования в создаваемых элементах входа синхронного сброса и входа сигнала разрешения синхронизации;
- поддержка применения в генерируемых элементах дополнительных выходных сигналов, информирующих о возникновении исключительных ситуаций при выполнении операций с плавающей запятой;
- возможность выбора значений задержки формирования результата выполняемых операций, создающая предпосылки для достижения требуемой производительности генерируемого элемента;
- реализация формируемых элементов в виде синхронных устройств, тактируемых одним сигналом синхронизации;
- возможность предварительной оценки объема ресурсов ПЛИС, необходимых для реализации создаваемого элемента, и его максимального быстродействия при выбранных значениях параметров;
- поддержка различных форматов представления входных данных и результата выполнения операции, в том числе вариантов, определяемых стандартом IEEE Std 754.
В описаниях элементов, генерируемых с помощью параметризированного модуля Floating-Point Operator версии v3.0, используется следующая система условных обозначений входных и выходных портов:
- a[K:0] — входная шина данных с разрядностью K+1, совокупность сигналов которой определяет значение первого операнда при выполнении операции с плавающей запятой;
- b[K:0] — входная шина данных с разрядностью K+1, совокупность сигналов которой определяет значение второго операнда при выполнении операции с плавающей запятой;
- operation[5:0] — входная 6-разрядная шина, значения сигналов которой определяет код выполняемой операции в программируемых элементах (сумматорах/вычитающих устройствах и компараторах);
- operation_nd — вход сигнала New Data, подтверждающего достоверность входных сигналов, определяющих значения операндов и кода выполняемой операции;
- operation_rfd — выход сигнала Ready for Data (RFD), информирующего о готовности обработки новых входных данных;
- clk — вход тактового сигнала;
- sclr — вход сигнала синхронного сброса;
- ce — вход сигнала разрешения синхронизации;
- result [M:0] — выходная шина данных с разрядностью M+1, совокупность сигналов которой определяет значение результата выполнения выбранной операции;
- underflow — выход сигнала исчезновения значащих разрядов при осуществлении операции с плавающей запятой;
- overflow — выход сигнала переполнения при осуществлении операции с плавающей запятой;
- invalid_op — выход сигнала, информирующего о выполнении недопустимой (недействительной) операции;
- rdy — выход сигнала, сообщающего о готовности достоверного результата выполняемой операции;
- divide_by_zero — выход сигнала, информирующего о выполнении операции деления на ноль.
Состав совокупности идентификаторов входных и выходных портов, применяемых в описании интерфейса конкретного элемента, определяется выбранным типом операции, которую должен выполнять этот элемент.
Представление операндов и результата выполняемой операции в элементах, сформированных на основе параметризированного модуля Floating-Point Operator версии v3.0
Значения входных данных и результата выполняемой операции в элементах, создаваемых на основе параметризированного модуля Floating-Point Operator для реализации арифметических операций с плавающей запятой, определяются совокупностью сигналов на соответствующих шинах с разрядностью W. При этом структура слова данных на входах и выходе результата в таких элементах включает в себя три поля: поле мантиссы, поле показателя степени (порядка) и поле знака. На рис. 81 представлено расположение этих полей в структуре слова данных.
В элементах, формируемых с помощью параметризированного модуля Floating-Point Operator, используется нормализованная форма представления данных, при которой старший значащий разряд мантиссы (значащий разряд, расположенный до запятой) отличен от нуля. Таким образом, значение разряда мантиссы, расположенного до запятой, представляет собой константу, равную единице. Поэтому в состав поля мантиссы входит последовательность двоичных разрядов слова данных, совокупность которых определяет значение дробной части мантиссы ƒ (значащие разряды, расположенные после запятой) в соответствии с выражением (8).
где bi — i-ый двоичный разряд слова данных; Wƒ — количество двоичных разрядов слова данных, используемых для представления мантиссы.
Поле показателя степени включает в себя совокупность двоичных разрядов слова данных, которые определяют значение порядка в экспоненциальной форме представления, а также разряд мантиссы, расположенный до запятой. Десятичное значение данного поля вычисляется по формуле:
где ei — i-ый двоичный разряд поля показателя степени; We — количество двоичных разрядов слова данных, включаемых в состав поля показателя степени, определяемое в соответствии с выражением:
Таким образом, для вычисления значения показателя степени E в экспоненциальной форме представления следует воспользоваться формулой:
Поле знака образует один двоичный разряд слова данных bW–1. Значение данного разряда S определяет знак представляемого числа. Нулевое значение этого разряда соответствует положительным числам, а единичное — отрицательным данным. С учетом приведенных выражений (8–11) значения данных, представленных в формате с плавающей запятой, определяются следующим образом:
Параметризированный модуль Floating-Point Operator версии v3.0 позволяет формировать описания элементов, в которых могут использоваться форматы представления данных с плавающей запятой как с произвольными, так и со стандартными значениями длины полей мантиссы и показателя степени. В том числе поддерживаются стандартные форматы значений с одинарной и двойной точностью, широко применяемые в микропроцессорных системах. В стандартном формате значений с одинарной точностью (Single Format) длина слова данных составляет 32 двоичных разряда, из которых 24 разряда используются для представления значения мантиссы и 7 разрядов — для представления показателя степени (порядка). В слове данных, соответствующем стандартному формату значений с двойной точностью (Double Format), общая длина составляет 64 двоичных разряда, из которых 53 бита отводится для представления мантиссы и 10 битов — для представления показателя степени (порядка).
Элементы, создаваемые с помощью рассматриваемого ядра, поддерживают несколько вариантов специальных значений данных. Краткое описание этих значений и форматы их представления в двоичном коде приведены в таблице 1.
В элементах, генерируемых на основе параметризированного модуля Floating-Point Operator версии v3.0 для реализации функции преобразования входных данных из одного формата в другой, значения операндов или результата трансляции могут представляться в форме двоичных чисел с фиксированной запятой с разрядностью W. В этом случае в структуре слова данных на входе или выходе результата таких элементов также выделяются три поля: поле дробной части, поле целой части и поле знака. На рис. 82 показано распределение полей в структуре слова данных, представленных в формате с фиксированной запятой.
Если для поля дробной части значения с фиксированной запятой ƒrac отводится ƒ двоичных разрядов слова данных, то длина поля целой части значения int составляет (W–Wƒ–1) разрядов. При этом значение слова данных с фиксированной запятой можно записать в следующем виде.
Для вычисления десятичного значения такого слова данных целесообразно воспользоваться следующим выражением:
Подготовка описаний элементов, предназначенных для выполнения арифметических операций с плавающей запятой, на основе параметризированного модуля Floating-Point Operator версии v3.0 с помощью средств CORE Generator
Процесс подготовки описаний элементов, предназначенных для выполнения арифметических операций над данными, представленными в формате с плавающей запятой, целесообразно выполнять с помощью «мастера» настройки параметров ядра Floating-Point Operator версии v3.0, который включает в себя четыре диалоговые панели. Стартовая диалоговая панель этого «мастера», вид которой показан на рис. 83, используется для определения названия создаваемого элемента и выбора типа арифметической операции, которую должен выполнять формируемый элемент.
Выбор требуемого типа операции осуществляется с помощью группы кнопок с зависимой фиксацией, которые расположены во встроенной панели Operation Selection. Чтобы сформировать описание элемента, выполняющего операции сложения и/или вычитания значений, представленных в формате с плавающей запятой, нужно зафиксировать в нажатом состоянии кнопку Add/Subtract. При этом становится доступным поле выбора, находящееся справа от указанной кнопки, которое позволяет уточнить тип выполняемой операции в создаваемом элементе. Для генерации описания сумматора с плавающей запятой в выпадающем списке этого поля выбора следует указать вариант Add. При подготовке описания вычитающего устройства с плавающей запятой нужно в этом выпадающем списке выбрать вариант Subtract. Если генерируемый элемент должен выполнять операции сложения и вычитания, то в выпадающем списке следует выделить строку Both. В этом случае в состав интерфейса формируемого элемента автоматически включается 16-разрядная входная шина operation, комбинация значений сигналов которой определяет код выполняемой операции (сложения или вычитания). Возможные значения кодов операций, осуществляемых комбинированными элементами (сумматорами/вычитающими устройствами), которые создаются на основе параметризированного модуля Floating-Point Operator версии v3.0, приведены в таблице 2.
Для создания описания умножителя значений, представленных в формате с плавающей запятой, необходимо переключить в нажатое состояние кнопку Multiply. Чтобы сгенерировать описание элемента, выполняющего операцию деления с плавающей запятой, следует установить в нажатое положение кнопку Divide. Формирование описания элемента, предназначенного для извлечения значения квадратного корня, осуществляется при нажатой кнопке Square-root.
Если необходимо подготовить описание элемента, выполняющего одну из возможных операций сравнения значений, представленных на входных шинах A и B в формате с плавающей запятой, то нужно зафиксировать в нажатом состоянии кнопку Compare. При этом автоматически переключается в доступное состояние поле выбора, расположенное справа от указанной кнопки, которое дает возможность конкретизировать тип операции сравнения, выполняемой создаваемым элементом. Параметризированный модуль Floating-Point Operator версии v3.0 позволяет формировать описания компараторов как с фиксированным, так и программируемым типом операции сравнения. Для генерации описания программируемого компаратора значений с плавающей запятой следует в выпадающем списке поля выбора в качестве типа операции сравнения указать вариант Programmable. В этом случае в состав интерфейса формируемого элемента будет автоматически добавлена 6-разрядная входная шина operation, комбинация значений сигналов которой определяет код текущей выполняемой операции сравнения. Возможные варианты кодов операций, осуществляемых программируемыми компараторами, создаваемыми на основе параметризированного модуля Floating-Point Operator версии v3.0, представлены в таблице 3.
В компараторах с фиксированным типом операции сравнения требуемый вариант выполняемой операции устанавливается разработчиком в процессе определения параметров создаваемого элемента. Чтобы сформировать описание элемента, осуществляющего проверку выполнения соотношения операндов A < B, следует в поле выбора типа операции сравнения указать вариант Less Than. Для генерации описания компаратора, определяющего тождественность операндов A = B, нужно в выпадающем списке выбрать строку Equal. Если необходимо подготовить описание элемента, предназначенного для контроля выполнения соотношения операндов A <= B, то в поле выбора типа операции сравнения необходимо зафиксировать вариант Less Than or Equal. При создании элемента, проверяющего выполнение соотношения операндов A > B, в выпадающем списке возможных вариантов операции сравнения нужно выделить строку Greater Than. Для формирования компаратора, определяющего отсутствие эквивалентности операндов A # B, следует в поле выбора типа операции сравнения указать вариант Not Equal. Чтобы сгенерировать описание элемента, контролирующего выполнение соотношения операндов A >= B, необходимо в выпадающем списке выбрать строку Greater Than or Equal.
Во всех перечисленных вариантах компаратора информация о результатах выбранной операции сравнения входных данных отображается в виде высокого или низкого логического уровня сигнала на выходе, соответствующем нулевому разряду выходной шины result(0). Кроме того, параметризированный модуль Floating-Point Operator версии v3.0 предоставляет пользователю возможность генерации описаний компараторов, формирующих на выходе код состояния, значение которого соответствует определенному соотношению входных данных. Для создания описания такого элемента нужно в поле выбора типа операции сравнения указать вариант Condition Code.
Последние три кнопки с зависимой фиксацией Fixed-to-f loat, Float-to-fixed и Float-to-f loat, расположенные во встроенной панели Operation Selection (рис. 83), используются при создании элементов, предназначенных для преобразования формата представления входных данных. Их назначение будет рассмотрено позже, в соответствующем разделе.
После завершения выбора типа операции, которую должен выполнять формируемый элемент, следует перейти ко второй диалоговой панели «мастера» настройки параметров ядра Floating-Point Operator версии v3.0. Эта диалоговая панель, вид которой изображен на рис. 84, предназначена для определения точности представления входных данных в формируемом элементе.
«Мастер» настройки параметров ядра Floating-Point Operator версии v3.0 предоставляет пользователю возможность выбора одного из двух стандартных вариантов точности представления входных данных или указания произвольных значений разрядностей полей слова данных. Для определения точности представления данных на входных шинах создаваемого элемента следует воспользоваться тремя кнопками с зависимой фиксацией, которые находятся во встроенной панели Precision of A/B Inputs (рис. 84). Чтобы в формируемом элементе структура слова данных соответствовала стандартному формату представления значений с одинарной точностью (Single Format), нужно зафиксировать в нажатом состоянии кнопку Single. Если для представления входных данных необходимо использовать стандартный формат значений с двойной точностью (Double Format), то в нажатое положение следует переключить кнопку Double. Выбор произвольной длины слова данных и его полей осуществляется при нажатой кнопке Custom. В этом случае становятся доступными поля редактирования Exponent Width и Fraction Width, которые расположены в этой же встроенной панели (рис. 84). Количество двоичных разрядов, входящих в состав поля показателя степени (порядка), указывается с помощью клавиатуры в поле редактирования Exponent Width. Требуемое значение длины поля мантиссы задается в поле редактирования Fraction Width. При выборе значений этих параметров следует учитывать, что число двоичных разрядов в составе поля показателя степени и поля мантиссы должно удовлетворять следующему соотношению:
где ceil[N] — наименьшее целое число, превосходящее значение N.
Допустимые диапазоны значений этих параметров отображаются справа от соответствующего поля редактирования. При указании значения одного из этих параметров производится автоматическая коррекция границ допустимого диапазона значений для второго параметра в соответствии с выражением (15). После определения длины полей показателя степени и мантиссы (значений параметров Exponent Width и Fraction Width) в строке Total Width автоматически отображается значение общей длины слова данных.
Выбрав точность представления входных данных в создаваемом элементе, нужно перейти к следующей диалоговой панели «мастера» настройки параметров ядра Floating-Point Operator версии v3.0, которая позволяет задать критерий возможной оптимизации, а также определить требуемую величину задержки формирования результата. Вид этой диалоговой панели приведен на рис. 85.
При формировании описаний сумматоров и вычитающих устройств, предназначенных для реализации на базе ПЛИС семейства Virtex-5, разработчик может выбрать один из двух критериев оптимизации архитектуры создаваемого элемента. Для этой цели следует воспользоваться одной из двух кнопок с зависимой фиксацией, расположенных во встроенной панели Architecture Optimizations (рис. 85). Если в нажатом состоянии зафиксирована кнопка Low latency, то критерием оптимизации будет являться минимизация задержки формирования результата выполнения выбранной операции. Сокращение длительности задержки формирования выходных сигналов достигается за счет увеличения объема используемых ресурсов кристалла. Чтобы установить в качестве критерия оптимизации достижение максимального быстродействия разрабатываемого элемента, в нажатое состояние необходимо переключить кнопку High speed.
Группа кнопок с зависимой фиксацией, которая представлена во встроенной панели Family Optimizations, позволяет выбрать вид аппаратных ресурсов кристалла, используемых для реализации генерируемого элемента с учетом архитектурных особенностей выбранного семейства ПЛИС. Каждая кнопка из этой группы предоставляет возможность выбора соответствующего варианта применения аппаратных 18-разрядных блоков умножения Multiplier Blocks или секций DSP48/DSP48E. Количество возможных вариантов использования специализированных аппаратных ресурсов для реализации создаваемого элемента зависит от выбранной операции и применяемого семейства ПЛИС. Информация о виде аппаратных ресурсов кристалла и количестве специализированных аппаратных блоков, необходимых для реализации генерируемого элемента, отображается справа от соответствующей кнопки.
Чтобы сформировать описание элемента, выполняющего одну из операций, поддерживаемых параметризированным модулем Floating-Point Operator версии v3.0, для последующей реализации на основе стандартных логических ресурсов кристалла, нужно зафиксировать в нажатом состоянии кнопку No Usage. Если создаваемый элемент предназначен для применения в составе проектов, выполняемых на базе ПЛИС семейств Virtex-4 или Virtex-5, то для его реализации может быть указан вариант совместного использования стандартных логических ресурсов кристалла и специализированных аппаратных блоков DSP48/DSP48E. Выбор данного варианта осуществляется переключением в нажатое положение кнопки Medium Usage. Подготовка описаний элементов, формируемых только на базе аппаратных 18-разрядных блоков умножения Multiplier Blocks или секций DSP48/DSP48E (в зависимости от выбранного семейства ПЛИС), осуществляется при нажатой кнопке Full Usage. Чтобы сгенерировать описание элемента, для реализации которого максимально задействуются секции DSP48 или DSP48E ПЛИС семейств Virtex-4 или Virtex-5 соответственно, нужно перевести в нажатое положение кнопку Max Usage.
Для определения временных параметров элементов, создаваемых на основе параметризированного модуля Floating-Point Operator версии v3.0, следует воспользоваться индикатором состояния и полями редактирования, которые расположены во встроенной панели Latency and Rate Configuration (рис. 85). Разработчик может явно указать длительность задержки формирования результата, выраженную в количестве периодов тактового сигнала, а также минимальное значение периода изменения данных на входах формируемого элемента в пределах допустимых диапазонов. Границы допустимых диапазонов значений этих параметров зависят от выбранного типа операции с плавающей запятой, а также от указанной точности представления данных (количества разрядов полей слова данных). Увеличение длительности задержки формирования результата позволяет добиться повышения производительности создаваемого элемента. Чтобы использовать максимально допустимое значение данного параметра, следует установить в состояние «Включено» индикатор Use Maximum Latency. Если этот индикатор находится в выключенном состоянии, то разработчику доступны поля редактирования Latency и Cycles Per Operation. Требуемые значения указанных параметров вводятся в соответствующие поля редактирования с помощью клавиатуры с учетом информации о границах допустимых диапазонов, которая отображается в строках Range.
На рис. 86 приведены временные диаграммы, поясняющие функционирование элементов, выполняющих операции с плавающей запятой, формируемых на основе параметризированного модуля Floating-Point Operator версии v3.0. Представленные временные диаграммы сигналов соответствуют элементу, осуществляющему операцию извлечения квадратного корня из значения с плавающей запятой, в котором задержка формирования результата составляет четыре периода тактового сигнала.
Заключительная диалоговая панель «мастера» настройки параметров ядра Floating-Point Operator версии v3.0, вид которой показан на рис. 87, предназначена для выбора входов сигналов управления, входов и выходов сигналов подтверждения, а также выходовспециальных сигналов, которые должны быть включены в состав интерфейса генерируемого элемента.
Включение входов сигналов управления в состав интерфейса создаваемого элемента осуществляется с помощью индикаторов состояния, которые представлены во встроенной панели Control Signals. Чтобы задействовать в формируемом элементе вход сигнала синхронного сброса, нужно перевести в состояние «Включено» индикатор SCLR. Если в генерируемом элементе необходим вход сигнала разрешения синхронизации Clock Enable, то следует установить во включенное состояние индикатор CE.
Для выбора входов и выходов сигналов подтверждения, включаемых в состав интерфейса разрабатываемого элемента, нужно воспользоваться тремя индикаторами состояния, расположенными во встроенной панели Handshaking Signals (рис. 87). При включенном состоянии индикатора OPERATION_ND в создаваемом элементе будет задействован вход сигнала New Data, высокий логический уровень которого подтверждает достоверность новых значений данных, представленных на входных шинах. Для использования в формируемом элементе выхода сигнала Ready for Data, информирующего о готовности приема и обработки новых входных данных, следует установить индикатор OPERATION_RFD в состояние «Включено». Чтобы добавить в состав интерфейса генерируемого устройства выход сигнала Ready, который подтверждает готовность (достоверность) выходных данных (результата выполнения операции с плавающей запятой), нужно установить во включенное состояние индикатор RDY.
Параметризированный модуль Floating-Point Operator версии v3.0 предоставляет разработчикам возможность выборочного использования в создаваемых элементах дополнительных выходов специальных сигналов, информирующих о возникновении различных исключительных ситуаций при выполнении операций с плавающей запятой. Вариантами таких ситуаций являются следующие события: переполнение разрядной сетки, исчезновение значащих разрядов, деление на ноль и выполнение недействительной операции. К группе недействительных операций относятся следующие действия:
- умножение нулевого значения на значение, соответствующее бесконечности с любым знаком (табл. 1);
- деление нулевого значения на нулевое значение;
- деление значения, соответствующего бесконечности, на аналогичное значение;
- сложение и вычитание значений, соответствующих бесконечности с противоположными знаками;
- извлечение квадратного корня из отрицательного значения;
- любая операция с участием значения, которое не является числом в выбранном формате представления Not a Number (NaN) (табл. 1).
Состояния выходных сигналов при выполнении недействительных операций элементами, создаваемыми на основе параметризированного модуля Floating-Point Operator версии v3.0, представлены в таблице 4.
Выбор необходимых выходов сигналов, уведомляющих о возникновении исключительных ситуаций при выполнении операций с плавающей запятой, осуществляется с помощью индикаторов состояния, которые находятся во встроенной панели Exception Signals (рис. 87). Чтобы задействовать выход сигнала, информирующего об исчезновении значащих разрядов, нужно установить в состояние «Включено» индикатор UNDERFLOW. Для использования в составе формируемого элемента выхода сигнала переполнения следует переключить в активное состояние индикатор OVERFLOW. Если в генерируемом элементе должен присутствовать выход сигнала, сообщающего о выполнении недействительной операции, то необходимо перевести во включенное состояние индикатор INVALID_OPERATION. В элементах, предназначенных для выполнения операций деления значений, представленных в формате с плавающей запятой, можно задействовать выход сигнала, оповещающего о делении на ноль. Для этого нужно установить в состояние «Включено» индикатор DIVIDE_BY_ZERO.
Следует обратить внимание на то, что в составе каждой диалоговой панели «мастера» настройки параметров ядра Floating-Point Operator версии v3.0 присутствует дополнительная встроенная панель Resource Estimates. Эта встроенная панель предназначена для отображения оценочной информации о количестве различных ресурсов кристалла, используемых для реализации формируемого элемента, и максимальном быстродействии данного элемента при указанных значениях параметров. Встроенная панель Resource Estimates располагается в той же области диалоговых панелей «мастера» настройки параметров рассматриваемого ядра, что и изображение условного графического образа генерируемого элемента (рис. 83, 87). Для получения предварительной оценки количества триггеров и таблиц преобразования LUT, необходимых для реализации создаваемого элемента и его быстродействия при различных значениях задержки формирования результата, достаточно поместить курсор на закладку с названием этой встроенной панели и щелкнуть левой кнопкой мыши. Содержимое встроенной панели Resource Estimates автоматически изменяется при вводе новых значений параметров ядра Floating-Point Operator. Вид диалоговой панели «мастера» настройки с открытой встроенной информационной панелью Resource Estimates показан на рис. 84, 85.
Пример описания сумматора с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0
В качестве примера описания сумматора, осуществляющего сложение значений, представленных в формате с плавающей запятой, которое сформировано с помощью параметризированного модуля Floating-Point Operator версии v3.0, в настоящем разделе приведен текст VHDL-описания элемента add_f loating_point. Данный элемент предназначен для вычисления суммы значений входных данных, соответствующих стандартному формату с одинарной точностью (Single Format). В сумматоре add_floating_point предусмотрены входы синхронного сброса и разрешения синхронизации. Выполнение операции сложения может осуществляться с использованием всей совокупности сигналов подтверждения, поддерживаемой параметризированным модулем Floating-Point Operator версии v3.0. Для отображения информации о возникновении исключительных ситуаций в этом сумматоре задействованы выходы сигналов переполнения, исчезновения значащих разрядов и недействительной операции:
При использовании сумматора add_floating_point в качестве одного из компонентов разрабатываемого устройства необходимо поместить в раздел декларации VHDL-описания этого устройства следующую совокупность выражений:
Для создания экземпляров компонента add_f loating_point в составе описания архитектуры проектируемого устройства нужно включить операторы, шаблон которых имеет следующий вид:
Пример описания элемента, выполняющего операцию вычитания с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0
Примером устройства, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0 для реализации операции вычитания значений, представленных в формате с плавающей запятой, является описание элемента subtract_f loating_point:
В элементе subtract_f loating_point значения входных данных и результата вычислений соответствуют стандартному формату чисел с двойной точностью (Double Format). В составе сгенерированного элемента используются те же дополнительные входы и выходы, что и в сумматоре add_floating_point, рассмотренном в предыдущем разделе.
Выражение декларации компонента subtract_f loating_point в составе описания разрабатываемого устройства выглядит следующим образом:
Описание конкретных экземпляров компонента subtract_f loating_point осуществляется с помощью оператора, шаблон которого приведен далее:
Пример описания комбинированного элемента, предназначенного для выполнения операций сложения и вычитания с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0
Результат применения параметризированного модуля Floating-Point Operator версии v3.0 для создания комбинированных устройств, выполняющих операции сложения и вычитания с плавающей запятой, демонстрирует пример VHDL-описания элемента add_sub_floating_point, текст которого приведен в настоящем разделе. Значения входных операндов и результата вычислений в сформированном элементе представлены в виде 58-разрядного слова, в котором длина поля мантиссы составляет 48 двоичных разрядов:
Для декларации компонента add_sub_floating_point в составе описания проектируемого устройства необходимо поместить в соответствующий раздел архитектуры следующую конструкцию:
Конкретные экземпляры компонента add_sub_floating_point в VHDL-описании разрабатываемого устройства создаются с помощью оператора, шаблон которого выглядит следующим образом:
Пример описания умножителя с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0
В качестве примера описания умножителя с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0, далее приведен текст VHDL-описания элемента multiply_floating_point. Данный элемент предназначен для вычисления произведения значений входных данных, представленных в стандартном формате с двойной точностью (Double Format):
В составе сгенерированного умножителя задействованы входы и выходы всех поддерживаемых сигналов подтверждения, а также выходы сигналов, информирующих о возникновении исключительных ситуаций. Кроме того, в элементе multiply_floating_point присутствуют входы синхронного сброса и разрешения сигнала синхронизации. Декларация сформированного умножителя в VHDL-описании разрабатываемого устройства выполняется с помощью следующей совокупности выражений:
Каждый экземпляр умножителя multiply_floating_point описывается с помощью оператора, шаблон которого представлен далее:
Пример описания элемента, предназначенного для выполнения операции деления с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0
Примером устройства, сгенерированного с помощью параметризированного модуля Floating-Point Operator версии v3.0 для выполнения операции деления значений входных данных, представленных в формате с плавающей запятой, является описание элемента divide_floating_point:
В сформированном элементе используется стандартный формат представления значений входных данных и результата выполнения операции с одинарной точностью (Single Format). В состав интерфейса элемента divide_floating_point кроме входов и выходов, присутствующих в умножителе multiply_floating_point, добавлен выход сигнала, уведомляющего о выполнении операции деления на ноль. Чтобы использовать данный элемент в качестве компонента в составе VHDL-описания проектируемого устройства, нужно включить в раздел деклараций архитектурного тела следующие выражения:
Описание конкретных экземпляров компонента divide_floating_point выполняется с помощью оператора, шаблон которого имеет следующий вид:
Пример описания элемента, предназначенного для выполнения операции извлечения квадратного корня с плавающей запятой, сформированного на основе параметризированного модуля Floating-Point Operator версии v3.0
Применение параметризированного модуля Floating-Point Operator версии v3.0 для формирования устройств, реализующих операцию извлечения квадратного корня из значений входных данных, представленных в формате с плавающей запятой, иллюстрирует пример VHDL-описания элемента square_root_floating_point, текст которого приведен в настоящем разделе. Значения входных данных и результата выполнения операции в этом элементе интерпретируются в виде 24-разрядных слов данных, в которых длина поля мантиссы составляет 18 двоичных разрядов:
Если элемент square_root_floating_point применяется в качестве компонента в VHDL-описании разрабатываемого устройства, то для его декларации нужно использовать следующую конструкцию:
Конкретные экземпляры компонента square_root_floating_point, используемые в составе архитектуры проектируемого устройства, описываются с помощью оператора, шаблон которого имеет следующий вид:
Продолжение следует.