Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с помощью генератора параметризированных модулей CORE Generator. Часть 7

№ 9’2007
PDF версия
Формирование описаний элементов, выполняющих операции умножения с накоплением, на основе параметризированного модуля Multiply Accumulator с помощью средств CORE Generator

Формирование описаний элементов, выполняющих операции умножения с накоплением, на основе параметризированного модуля Multiply Accumulator с помощью средств CORE Generator

Все статьи цикла:

Генерация описаний элементов, выполняющих операции умножения с накоплением, для последующей реализации в составе устройств, проектируемых на основе ПЛИС FPGA фирмы Xilinx, осуществляется с помощью параметризированного модуля Multiply Accumulator. В общем случае алгоритм функционирования этих элементов поясняет выражение (1).

Умножители-накопители широко применяются в составе цифровых устройств различного назначения. Наиболее часто данные элементы используются в процессе проектирования устройств цифровой обработки сигналов и, в первую очередь, при разработке цифровых фильтров. Поэтому параметризированный модуль Multiply Accumulator представлен одновременно в составе группы ядер Math Functions, предназначенных для реализации математических функций, и группы ядер Digital Signal Processing, используемых в устройствах цифровой обработки сигналов. В рассматриваемой версии генератора параметризированных модулей CORE Generator актуальным вариантом данного ядра является модификация Multiply Accumulator v4.0, которая позволяет формировать описания умножителей-накопителей, предназначенные для реализации на базе кристаллов следующих семейств: Spartan-II; Spartan-IIE; Spartan-3; Spartan-3E; Virtex; QPRO Virtex Rad-Hard; QPRO Virtex Hi-Rel; Virtex-E; QPRO Virtex-E Military; Virtex-II; Virtex-II PRO и Virtex-4. Особенностями этой версии рассматриваемого параметризированного модуля являются:

  • возможность выбора разрядности используемых операндов (входных шин данных) в создаваемых элементах в диапазоне от 2 до 32 двоичных разрядов (за исключением элементов, предназначенных для реализации на основе ПЛИС семейства Virtex-4, для которых верхней границей диапазона является 18 двоичных разрядов);
  • поддержка различной формы представления входных данных и полученного результата (в форме значения со знаком или без знака);
  • возможность выбора одного из трех методов округления (усечения) результата выполнения операций умножения с накоплением;
  • автоматический подбор производительности формируемых элементов, соответствующей системному уровню;
  • возможность генерации описаний умножителей-накопителей, реализуемых на базе различных ресурсов ПЛИС (таблиц преобразования LUT, аппаратных блоков умножения Multiplier Blocks или секций XtremeDSP);
  • поддержка использования сигналов подтверждения (квитирования) при осуществлении операций умножения с накоплением;
  • применение дополнительных регистров в составе формируемых элементов для организации конвейерного метода выполнения операций (по выбору пользователя);
  • возможность создания описаний умножителей-накопителей с входными и выходными регистрами;
  • возможность выборочного использования в создаваемых умножителях-накопителях входов сигнала синхронного сброса и сигнала разрешения синхронизации.

Обобщенная структура умножителей-накопителей, создаваемых на основе параметризированного модуля Multiply Accumulator, показана на рис. 68.

Обобщенная структура элементов, выполняющих операции умножения с накоплением и формируемых на основе параметризированного модуля Multiply Accumulator
Рис. 68. Обобщенная структура элементов, выполняющих операции умножения с накоплением и формируемых на основе параметризированного модуля Multiply Accumulator

Основными компонентами представленной структуры являются умножитель, аккумулятор и блок управления. Кроме того, в составе архитектуры умножителей-накопителей могут применяться выходные регистры, присутствие которых определяется по выбору разработчика. Эти регистры изображены на рис. 68 пунктирными линиями. Умножитель параллельного типа, используемый в формируемых элементах, осуществляет вычисление произведения значений данных, представленных одновременно на входных шинах. Результат выполнения операции поступает непосредственно на вход аккумулятора. Блок управления обеспечивает согласование работы всех компонентов умножителя-накопителя, а также поддержку входных и выходных сигналов подтверждения.

Наличие совокупности входов и выходов сигналов подтверждения в формируемом умножителе-накопителе значительно облегчает согласование работы этого элемента с функционированием других блоков проектируемого устройства. В параметризированном модуле Multiply Accumulator предусмотрена поддержка следующих трех сигналов подтверждения: First Data (FD), New Data (ND) и Ready (RDY). Активный уровень входного сигнала First Data (уровень логической единицы) инициирует начало нового цикла работы умножителя-накопителя (нового цикла накопления произведений значений входных данных). При этом по фронту тактового сигнала (при наличии высокого логического уровня сигнала на входе ND) в регистр аккумулятора записывается результат операции перемножения значений данных, представленных на входных шинах A и B. Активный уровень сигнала New Data информирует о присутствии новых значений данных на входных шинах элемента, выполняющего операции умножения с накоплением. Высокий логический уровень сигнала на выходе Ready указывает на готовность (достоверность) выходных данных (полученного результата вычислений). На рис. 69 приведены временные диаграммы, которые наглядно поясняют функционирование умножителей-накопителей, формируемых на основе параметризированного модуля Multiply Accumulator.

Временные диаграммы, поясняющие функционирование умножителей-накопителей, формируемых на основе параметризированного модуля Multiply Accumulator
Рис. 69. Временные диаграммы, поясняющие функционирование умножителей-накопителей, формируемых на основе параметризированного модуля Multiply Accumulator

Рассматриваемое ядро позволяет для каждого входного порта формируемого элемента индивидуально выбрать формат представления значений данных (со знаком или без знака). При этом следует учитывать, что если данные на одной из входных шин умножителя-накопителя воспринимаются как значения со знаком, то выходные данные (результат выполнения операций умножения с накоплением) также будут интерпретироваться как значения со знаком. Таким образом, чтобы данные на выходе создаваемого элемента соответствовали типу значений без знака, следует для каждой входной шины выбрать тот же формат представления данных (без знака).

В описаниях умножителей-накопителей, создаваемых с помощью параметризированного модуля Multiply Accumulator, используется следующая система условных обозначений входных и выходных портов:

  • A[M:0] — входная шина данных A с разрядностью M+1;
  • B[M:0] — входная шина данных B с разрядностью M+1;
  • CLK — вход тактового сигнала;
  • CE — вход сигнала разрешения синхронизации;
  • RST — вход сигнала синхронного сброса;
  • FD — вход сигнала First Data, инициирующего начало нового цикла накопления произведений значений входных данных;
  • ND — вход сигнала New Data (ND), сообщающего о присутствии новых значений входных данных;
  • Q[N:0] — выходная шина данных с разрядностью N+1;
  • RDY — выход сигнала Ready, информирующего о готовности (достоверности) выходных данных генерируемого элемента.

Наиболее наглядным способом указания значений параметров генерируемого элемента, предназначенного для выполнения операций умножения с накоплением, является применение «мастера» настройки ядра Multiply Accumulator, в составе которого используются три диалоговые панели. Стартовая диалоговая панель данного «мастера» предназначена для определения количества операций умножения с накоплением, выполняемых формируемым элементом за один цикл работы, значения частоты тактового сигнала, разрядности и формы представления данных входных портов. Вид страницы Parameters данной диалоговой панели приведен на рис. 70.

Страница Parameters стартовой диалоговой панели «мастера» настройки параметров ядра умножителя-накопителя Multiply Accumulator
Рис. 70. Страница Parameters стартовой диалоговой панели «мастера» настройки параметров ядра умножителя-накопителя Multiply Accumulator

Число операций умножения-накопления, которые должны выполняться генерируемым элементом за один цикл работы, иными словами, значение параметра count в выражении (1), указывается в поле редактирования Number MAC Cycles, расположенном во встроенной панели System Parameters. Значение частоты тактового сигнала задается в поле редактирования Clock Rate, которое находится в этой же встроенной панели. Указываемые значения параметров Number MAC Cycles и Clock Rate не должны выходить за границы предельно допустимых диапазонов, информация о которых отображается справа от соответствующего поля редактирования (рис. 70).

Разрядность входных портов (входных шин данных) A и B формируемого умножителя-накопителя определяется с помощью полей редактирования A Width и B Width соответственно. Эти поля редактирования расположены во встроенной панели Input Ports (рис. 70). Выбор формы представления значений для каждой входной шины данных осуществляется с помощью группы кнопок с зависимой фиксацией A Type и B Type соответственно. Чтобы данные, поступающие на какую-либо входную шину, интерпретировались как значения со знаком, следует зафиксировать в нажатом состоянии кнопку Signed в соответствующей группе (A Type или B Type). Если входные данные должны восприниматься как операнды без знака, то в нажатое состояние нужно переключить кнопку Unsigned. По умолчанию предлагается форма представления входных данных в виде значений со знаком.

Вторая диалоговая панель «мастера» настройки ядра умножителя-накопителя Multiply Accumulator, вид которой показан на рис. 71, позволяет определить параметры выходного порта и выбрать требуемые входы сигналов управления в формируемом элементе.

Вид второй диалоговой панели «мастера» настройки ядра умножителя-накопителя Multiply Accumulator, предназначенной для определения параметров выходного порта и выбора сигналов управления (страница Parameters)
Рис. 71. Вид второй диалоговой панели «мастера» настройки ядра умножителя-накопителя Multiply Accumulator, предназначенной для определения параметров выходного порта и выбора сигналов управления (страница Parameters)

Значение разрядности выходного порта (выходной шины данных) создаваемого умножителя-накопителя указывается в поле редактирования Result Width, расположенном во встроенной панели Output Port. Справа от данного поля, в строке Valid Range, отображается информация о диапазоне допустимых значений разрядности выходной шины данных. Верхняя граница этого диапазона соответствует количеству разрядов выходного порта, которое необходимо для точного представления результата выполнения операций умножения и накопления заданной последовательности поступающих данных. Это значение автоматически вычисляется на основании количества разрядов входных шин данных и числа операций умножения и сложения, выполняемых за один цикл работы формируемого элемента, которые были указаны в соответствующих полях редактирования стартовой диалоговой панели.

Если разработчик выбирает меньшую разрядность выходного порта по сравнению с верхней границей допустимого диапазона значений этого параметра, то результат выполнения операций в формируемом умножителе-накопителе будет представлен в округленном или усеченном виде. При этом пользователь может выбрать один из трех возможных методов округления (усечения), используя группу кнопок с зависимой фиксацией Rounding Operation. Когда в нажатом состоянии зафиксирована кнопка Truncation, выполняется усечение полученного результата до указанного количества двоичных разрядов, при котором младшие неиспользуемые биты значения отбрасываются, а оставшиеся разряды поступают на выход формируемого элемента в неизменном виде. При нажатой кнопке Convergent округление результата вычислений до заданного количества двоичных разрядов производится в соответствии со следующими правилами. Если десятичное значение округляемой дробной части (неиспользуемых младших разрядов) полученного результата меньше 0,5, то осуществляется операция усечения, рассмотренная выше. При равенстве десятичного значения округляемой дробной части 0,5 точный результат вычислений округляется до ближайшего четного значения. Когда десятичное значение округляемой дробной части больше 0,5, целая часть результата (представленная оставшимися двоичными разрядами) увеличивается на единицу. Такой метод округления довольно часто применяется в устройствах цифровой обработки сигналов. При переключении в нажатое состояние кнопки Round Away From Zero в формируемом элементе будет использоваться стандартный способ округления дробного числа до ближайшего целого значения. Основное отличие данного способа от метода Convergent проявляется при округлении результатов вычислений, десятичное значение дробной части которых равно 0,5. В этом случае при использовании способа округления Round Away From Zero значение целой части результата, представленной оставшимися двоичными разрядами, увеличивается на единицу.

Чтобы добавить выходной регистр в состав структуры формируемого элемента, предназначенного для выполнения операций умножения с накоплением, нужно перевести в состояние «Включено» индикатор Output Register, который также находится во встроенной панели Output Port.

Выбор необходимых входов управляющих сигналов в генерируемом умножителенакопителе осуществляется с помощью индикаторов состояния, которые представлены во встроенной панели Control Pin Options (рис. 71). Чтобы задействовать вход синхронного сброса, нужно установить в состояние «Включено» индикатор Reset. При наличии активного уровня сигнала (высокого логического уровня) на этом входе содержимое аккумулятора обнуляется по фронту тактового сигнала. Для использования в составе формируемого умножителя-накопителя входа разрешения сигнала синхронизации следует перевести во включенное состояние индикатор Clock Enable.

Третья, заключительная, диалоговая панель «мастера» настройки параметров ядра умножителя-накопителя Multiply Accumulator используется для выбора параметров конвейерной организации обработки данных и определения типа аппаратных ресурсов ПЛИС, применяемых для реализации формируемого элемента. Вид страницы Parameters данной диалоговой панели показан на рис. 72.

Страница Parameters заключительной диалоговой панели «мастера» настройки ядра умножителя-накопителя Multiply Accumulator, предназначенная для выбора параметров конвейерной организации обработки данных и определения типа аппаратных ресурсов ПЛИС, используемых для реализации формируемого элемента
Рис. 72. Страница Parameters заключительной диалоговой панели «мастера» настройки ядра умножителя-накопителя Multiply Accumulator, предназначенная для выбора параметров конвейерной организации обработки данных и определения типа аппаратных ресурсов ПЛИС, используемых для реализации формируемого элемента

Параметры конвейерной организации обработки данных в разрабатываемом умножителе-накопителе разработчик может определять автоматически или задавать «вручную». Выбор одного из этих способов осуществляется с помощью индикатора состояния Automatic Pipelining, который представлен во встроенной панели Pipeline Control (рис. 72). Если этот индикатор установлен в состояние «включено», то на основании значения тактовой частоты, указанного пользователем в стартовой диалоговой панели, производится автоматическое вычисление оптимального количества ступеней (дополнительных регистров) конвейерной организации обработки данных. При переводе индикатора Automatic Pipelining в выключенное состояние пользователю предоставляется возможность выбора дополнительных регистров, необходимых для организации конвейерной обработки данных в формируемом элементе. Для этой цели предназначены индикаторы состояния Multiplier Input Register, Multiplier Output Register и Multiplier Pipelined Register, которые также находятся во встроенной панели Pipeline Control. Эти индикаторы становятся доступными только после установки индикатора Automatic Pipelining в состояние «Выключено».

Для использования в составе структуры разрабатываемого умножителя-накопителя входных регистров нужно перевести во включенное состояние индикатор Multiplier Input Register. Если необходимо задействовать дополнительный регистр на выходе умножителя, применяемого в составе формируемого элемента, то следует установить индикатор Multiplier Output Register в состояние «Включено». Чтобы в умножителе, входящем в структуру генерируемого элемента, присутствовали дополнительные регистры, используемые для организации конвейерной обработки данных, индикатор Multiplier Pipelined Register должен находиться во включенном состоянии.

Определение типа аппаратных ресурсов ПЛИС, на основе которых будет выполняться реализация формируемого описания умножителя-накопителя, осуществляется с помощью двух кнопок с зависимой фиксацией, расположенных во встроенной панели Multiplier Implementation. Чтобы сгенерировать описание элемента, реализуемого на основе таблиц преобразования LUT, следует зафиксировать в нажатом состоянии кнопку LUT Based. Для реализации формируемого описания умножителя-накопителя на базе встроенных аппаратных 18-разрядных блоков умножения Multiplier Blocks или секций XtremeDSP нужно переключить в нажатое положение кнопку Embedded. Если кристаллы семейства, выбранного для реализации генерируемого элемента, не содержат указанных встроенных аппаратных блоков, то в нажатое состояние автоматически устанавливается кнопка LUT Based. В этом случае пользователь не может изменить предлагаемый вариант реализации разрабатываемого элемента, предназначенного для выполнения операций умножения с накоплением.

Пример описания элемента, предназначенного для выполнения операций умножения с накоплением, сформированного с помощью параметризированного модуля Multiply Accumulator

В качестве примера описания элемента, выполняющего операции умножения с накоплением, подготовленного с помощью параметризированного модуля Multiply Accumulator, в настоящем разделе приведен текст VHDL-описания умножителя-накопителя mac_16_24. Данный элемент выполняет операцию суммирования двадцати четырех произведений 16-разрядных значений входных данных. Данные, поступающие на входные шины умножителя-накопителя mac_16_24, интерпретируются в форме значений со знаком. Результат выполнения операций умножения с накоплением округляется до 36 разрядов по методу Convergent. В структуру сгенерированного элемента включены входные и выходной регистры, а также дополнительные регистры умножителя, используемые для организации конвейерной обработки данных. Реализация сформированного описания умножителя-накопителя осуществляется на базе встроенных аппаратных блоков ПЛИС.

Описание архитектуры элемента mac_16_24 соответствует обобщенной структуре умножителей-накопителей, формируемых на основе параметризированного модуля Multiply Accumulator, которая представлена на рис. 68. Текст сгенерированного VHDL-описания умножителя-аккумулятора для наглядности можно условно разбить на девять частей. Эти части рассматриваются далее в том же порядке, в котором они расположены в тексте описания сформированного элемента.

В первой части приведены ссылки на используемые библиотеки и пакеты этих библиотек. В отличие от рассмотренных ранее элементов, созданных с помощью генератора параметризированных модулей CORE Generator, в VHDL-описании элемента mac_16_24 кроме ссылок на стандартные логические библиотеки и унифицированные библиотеки фирмы Xilinx присутствуют ссылки на пакеты библиотеки XilinxCoreLib. Использование пакетов этой библиотеки связано с тем, что в состав сформированного описания включены компоненты, создаваемые на основе других параметризированных модулей. Текст первой части VHDL-описания рассматриваемого умножителя-накопителя имеет следующий вид:

Вторая часть содержит объявление объекта mac_16_24, представляющего разрабатываемый умножитель-накопитель, и описание его внешнего интерфейса. Эта часть выглядит следующим образом:

Третью часть VHDL-описания умножителя-накопителя образуют приведенные далее выражения декларации внутренних сигналов, используемых для соединения компонентов, входящих в состав формируемого элемента:

Четвертая часть включает в себя следующую совокупность операторов, описывающих интерфейс между внутренними сигналами и внешними (входными и выходными) портами сгенерированного умножителя-накопителя:

В состав пятой части входят операторы, используемые для описания сигналов и компонентов, которые относятся к блоку управления разрабатываемого умножителя-накопителя. В этой части описания, текст которой приведен далее, применяются компоненты, созданные на основе параметризированных модулей двоичного счетчика Binary Counter, сдвигового регистра RAM-based Shift Register и параллельного регистра FD-based Parallel Register:

Шестая часть содержит следующую совокупность операторов, которые описывают умножитель, выполненный на базе параметризированного модуля Multiplier Generator версии v7.0, и внутренние сигналы, назначаемые соответствующим интерфейсным портам этого компонента:

Седьмая часть представляет собой описание аккумулятора, сгенерированного на базе параметризированного модуля Accumulator, и локальных сигналов, которые используются для сопряжения входных портов данного компонента с другими блоками умножителя-накопителя. В состав этой части описания элемента mac_16_24 входит следующая совокупность операторов:

Восьмую часть образует приведенная далее последовательность операторов, описывающих поведение сигналов и компоненты, применяемые для осуществления функции округления результатов выполнения операций умножения с накоплением до заданного количества двоичных разрядов. В составе этой части VHDL-описания используются компоненты, сформированные на базе параметризированных модулей сдвигового регистра RAM-based Shift Register и сумматора/вычитающего устройства Adder/Subtracter:

Заключительная, девятая, часть сформированного VHDL-описания умножителя-накопителя содержит последовательность операторов, представляющих выходной регистр и сигналы, соответствующие его входным и выходным портам. В качестве выходного регистра применяется компонент, сгенерированный на основе параметризированного модуля параллельного регистра FD-based Parallel Register. Текст заключительной части описания элемента mac_16_24 выглядит следующим образом:

Для декларации сформированного умножителя-накопителя в составе VHDL-описания разрабатываемого устройства нужно использовать следующую последовательность выражений:

Описание каждого экземпляра умножителя-накопителя типа mac_16_24 в составе проектируемого устройства выполняется с помощью оператора, шаблон которого имеет следующий вид:

Продолжение следует

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *