УДК.681.323
Анализ проблем создания платформонезависимого HDL-описания модуля быстрого преобразования Фурье
А.Л. Переверзев, А.М. Силантьев
Национальный исследовательский университет «МИЭТ»
Analysis Problems in of Creating a Platform Independent HDL-Description of Fast Fourier Transform Module
A.L. Pereverzev, A.M. Silantyev
National Research University of Electronic Technology, Moscow
Выполнен анализ особенностей известных IP-ядер модуля быстрого преобразования Фурье, а также его основных структурных блоков. Определены проблемы создания полностью платформонезависимого HDL-описания этого модуля для использования на основе ПЛИС, полузаказных или заказных интегральных схем. Предложен подход к разработке универсального HDL-описания на основе платформонезависимого устройства управления и адаптированных к платформе основных структурных блоков.
Ключевые слова: быстрое преобразование Фурье; ПЛИС; базовый матричный кристалл; IP-ядро.
The characteristics of the known IP-cores of the Fast Fourier transform module as well as its basic building blocks have been analyzed. The problems of creating a fully independent platform HDL-description of this module for the FPGA-based, semicustom or custom integrated circuits have been identified. The approach to development of a universal HDL-description based on the platform independent control unit and adopted to the platform main structural blocks has been proposed.
Keywords: fast fourier transform; FPGA; ASIC; IP-core.
Быстрое преобразование Фурье (БПФ) - один из основных алгоритмов цифровой обработки сигналов и на практике может осуществляться как программными, так и аппаратными средствами. Использование аппаратных средств для реализации БПФ обусловлено жесткими требованиями к потоковой обработке данных в режиме реального времени, например в радиолокационных системах [1].
Основной компонентной базой для аппаратной реализации различных алгоритмов цифровой обработки сигналов являются ПЛИС. Обычно блок БПФ представляет собой функционально законченное IP-ядро, разработанное производителем ПЛИС с учетом ее архитектуры. Такой подход к проектированию позволяет сократить время создания системы на основе ПЛИС за счет использования стандартизованных решений. Однако ряд существенных недостатков снижает эффективность применения данного подхода
© А.Л. Переверзев, А.М. Силантьев, 2015
при создании отечественных вычислительных устройств специального назначения, а именно:
- HDL-описание модуля зашифровано и связано с соответствующей средой разработки;
- модификация внутренней структуры модуля невозможна;
- поддерживается ограниченный набор семейств ПЛИС;
- затруднен переход на отечественные полузаказные ИС.
В настоящей работе проанализированы проблемы создания платформонезависимого HDL-описания параметризированного модуля БПФ, обеспечивающего эффективную реализацию на основе как широко распространенных ПЛИС, так и полузаказных или заказных ИС.
Особенности существующих IP-ядер модуля БПФ. Более 80% рынка ПЛИС занимают фирмы Altera и Xilinx. Поэтому наиболее часто используются IP-ядра БПФ именно этих производителей [2, 3]. Анализ функциональных возможностей таких IP-ядер позволил сформулировать требования, предъявляемые к параметризируемым вычислителям БПФ:
- вычисление прямого и обратного преобразования;
- выбор основания элементарного преобразования;
- пакетное или потоковое вычисление;
- размер преобразования от 8 до 65536 точек;
- разрядность данных и коэффициентов от 8 до 34 бит;
- поддержка трех типов арифметики (с фиксированной точкой с масштабированием и без, с плавающей точкой);
- натуральная или бит-реверсивная последовательность входных и выходных данных.
Основные структурные блоки модуля БПФ. Анализ структур известных IP-ядер позволил выделить следующие основные структурные блоки модуля БПФ: блок элементарного преобразования; память данных; память поворачивающих коэффициентов; блок управления вычислением.
Структура блока элементарного преобразования зависит как от основания, так и от способа организации вычислений. Как правило, основание преобразования равно двум либо четырем, что обусловлено сложностью аппаратной реализации элементарного преобразования с более высоким основанием.
Память данных используется для хранения исходного массива отсчетов, промежуточных результатов вычислений, а также результата преобразования. Объем памяти зависит от количества точек в преобразовании, способа организации вычислений и требований к быстродействию модуля.
Память поворачивающих коэффициентов предназначена для хранения заранее вычисленных значений коэффициентов и может быть реализована на основе ПЗУ.
Блок управления вычислением предназначен для формирования управляющих и синхронизирующих сигналов для всех структурных блоков модуля БПФ, а также адресов для обращений к памятям данных и поворачивающих коэффициентов. Особенностью данного блока является необходимость организации нелинейного доступа к данным в соответствии с алгоритмом БПФ.
Особенности синтеза структурных блоков HDL-описания модуля БПФ с использованием целочисленной арифметики. Рассмотрим особенности синтеза структурных блоков HDL-описания модуля БПФ на различных платформах с точки зрения быстродействия и аппаратных затрат.
Для удобства анализа результатов синтеза разделим блок элементарного преобразования на две части: вычисление вспомогательного выражения
fx (0) = x(0) + x(1), IX (1) = x(0) - x(1)
(1)
и умножение на поворачивающие коэффициенты Wg3 [4].
Листинг 1 содержит фрагмент HDL-описания устройства, реализующего вспомогательное выражение (1) с целочисленной арифметикой без масштабирования:
always @ (posedge clk) begin if (reset) begin
X_re0 <= 0; X_im0 <= 0; X_re1 <= 0; X_im1 <= 0; end else begin
X re0 <= x re0 + x rel; X im0 <= x im0 + x iml; X rel <= x re0 - x rel; X iml <= x im0 - x iml;
end end
Результаты синтеза на RTL-уровне для ПЛИС Stratix-V и Kintex-7 представлены на рис. 1. Отметим, что на технологическом уровне данные схемы реализуются на основе логических блоков ПЛИС. Из рис.1 можно сделать вывод, что при простой схеме выражения и схожих результатах синтеза перенос описания с одного семейства ПЛИС на другое может вызывать падение общей производительности модуля и резкое увеличение аппаратных затрат, например, из-за отличий в синтезе синхронного сброса. Поэтому синтез вспомогательного выражения (1) нельзя считать платформонезависимым.
Рис.1. Результат синтеза вспомогательного выражения (1) для ПЛИС Stratix-V (а) и Kintex-7 (б)
Умножение на поворачивающие коэффициенты W^ можно представить двумя способами [5], приведенными в выражении
xWk = ac - bd + i(ad + cb) = a(c + d) - d(a + b) + i(a(c + d) + c(b - a)), (2)
где x = a + ib; W^ = c + id .
Для первого способа вычисления понадобится четыре умножения, для второго -три из-за того, что слагаемое a(c + d) используется в вычислении реальной и мнимой частей. В зависимости от требований к комплексному умножителю и структуры ПЛИС можно использовать либо первый, либо второй способ представления комплексного умножения.
Для достижения максимального быстродействия и минимальных аппаратных затрат умножители на поворачивающие коэффициенты реализуются на DSP-блоках ПЛИС.
Рассмотрим реализацию комплексных умножителей на примере последних семейств ПЛИС фирм Xilinx и Altera.
В последнем семействе ПЛИС Stratix-V DSP-блок имеет структуру, представленную на рис.2 [6]. Отличительная особенность DSP-блока - наличие двух режимов работы: 18-разрядный режим с двойной точностью и 27-разрядный режим с высокой точностью.
Рис.2. DSP-блок ПЛИС Stratix-V, сконфигурированный в режиме работы с двойной (а) и с высокой точностью (б)
В листингах 2-4 приведены фрагменты HDL-описаний комплексного умножителя в зависимости от способа его реализации согласно выражению (2) и используемого режима работы DSP-блока.
Листинг 2 содержит HDL-описание комплексного умножителя 18x18 бит для ПЛИС фирмы Altera:
always @ (posedge clk or posedge arst) begin if (arst) begin
regA <= 0; regB <= 0; regC <= 0; regD <= 0; p_re <= 0; p_im <= 0; end else if (en) begin
regA <= a; regB <= b; regC <= c; regD <= d; p re <= regA*regD + regC*regB; p im <= regA*regC - regB*regD;
end end
Первый вариант реализации (см. листинг 2) умножителя построен на основе формулы с четырьмя операциями умножения и обеспечивает эффективный синтез при любых комбинациях разрядности данных и коэффициентов преобразования, не превышающих 18 бит. Результат синтеза представлен на рис.3,а. Максимальное быстродействие данной схемы в режиме умножения 18x18 бит составляет 350 МГц (Altera Stratix-V speedgrade 4_H4).
Рис.3. Результаты синтеза HDL-описаний комплексного умножителя 18 x 18 бит (а), 18 x 25 бит (б), 27 x 27 бит (в) для ПЛИС фирмы Altera
Листинг 3 содержит HDL-описание комплексного умножителя 18x25 бит для ПЛИС фирмы Altera:
assign al = regA - regB; assign pl = al * regD; assign a2 = regC - regD; assign p2 = a2 * regA; assign a3 = regC + regD; assign p3 = a3 * regB; always @(posedge clock or posedge arst) begin if (arst) begin
regA <= 0; regB <= 0; regC <= 0; regD <= 0; p_r <= 0; p_i <= 0; end else if (en) begin
regA <= a; regB <= b; regC <= c; regD <= d; p r <= pl + p2; p i <= pl + p3; end end
Второй вариант реализации умножителя (см. листинг 3) построен на основе формулы с тремя операциями умножения. Результат синтеза представлен на рис.3,б. Видно, что требуется не более трех DSP-блоков. В отличие от первого варианта реализации в данной схеме задействованы предсумматоры. Максимальное быстродействие в режиме умножения 18x25 бит составляет 148 МГц (Altera Stratix-V speedgrade 4_H4).
Листинг 4 содержит HDL-описание комплексного умножителя 27x27 бит для ПЛИС фирмы Altera
always @ (posedge clk or posedge arst) begin if (arst) begin
regA <= 0; regB <= 0; regC <= 0; regD <= 0; p_re <= 0; p_im <= 0; end else if (en) begin
regA <= a; regB <= b; regC <= c; regD <= d; p re <= regA*regD + regC*regB; p im <= regA*regC - regB*regD;
end end
Третий вариант реализации (см. листинг 4) умножителя построен на основе формулы с четырьмя операциями умножения. Результат синтеза представлен на рис.3,в. Видно, что требуется не более четырех DSP-блоков. Максимальное быстродействие в режиме умножения 27x27 бит составляет 301 МГц (Altera Stratix-V speedgrade 4_H4).
Структура DSP-блока DSP48e1 ПЛИС Kintex-7 представлена на рис.4,а [7]. Кроме умножителя DSP-блок содержит аккумулятор и предсумматор, а также несколько регистров для конвейеризации вычислений, за счет чего DSP-блок Kintex-7 имеет более сложную структуру по сравнению с DSP-блоком Stratix-V. Конфигурация регистров существенно влияет на быстродействие и время задержки получения результата.
В листинге 5 представлено HDL-описание комплексного умножителя на основе выражения с четырьмя операциями умножения на DSP-блоке DSP48e1, что обеспечивает максимальное быстродействие при синтезе под ПЛИС фирмы Xilinx за счет использования предсумматора и конвейеризации вычислений:
always @ (posedge clk) begin
regA <= a; regB <= b; regC <= c; regD <= d;
regCsec <= regC; regBsec <= regB; regDsec <= regD;
multA <= regA * regD; multC <= regA * regC;
multB <= regBsec * regCsec;
multD <= regBsec * regDsec;
multAsec <= multA; multCsec <= multC;
end
always @ (posedge clk) begin if (en) begin
p re <= 0; p im <= 0; end else begin
p re <= multCsec - multD; p im <= multAsec + multB;
end end
Рис.4. Упрощенная структура Б8Р-блока ПЛИС КШех-7 Б8Р48е1 (а) и результаты синтеза HDL-описаний комплексного умножителя с четырьмя (б) и тремя умножениями (в)
Результат синтеза показан на рис.4,б. Видно, что при разрядности данных и коэффициентов преобразования, не превышающей 25 и 18 бит соответственно, требуется не более четырех DSP-блоков. Максимальное быстродействие в режиме работы с четырьмя умножениями составляет 548 МГц (Xilinx Kintex-7 speedgrade 1).
В листинге 6 представлено HDL-описание комплексного умножителя на основе выражения с тремя операциями умножения на DSP-блоке DSP48e1:
always @ (posedge clk) begin
regA <= a; regB <= b; regC <= c; regD <= d; regAsec <= regA; pre add0 <= regC + regD; regCsec <= regC; pre addl <= regA + regB; regDsec <= regD; pre add2 <= regB - regA; multA <= regDsec *pre add1; multB <= regAsec * pre add0; multC <= regCsec * pre add2;
end
always @ (posedge clk) begin if (en) begin
p_re <= 0; p_im <= 0; end else begin
p re <= multA - multB; p im <= multB + multC;
end end
Данный вариант ориентирован на сокращение аппаратных затрат в ущерб быстродействию. Результат синтеза показан на рис.4,в. Видно, что при разрядности данных и коэффициентов преобразования, не превышающей 18 бит, требуется не более трех DSP-блоков. Максимальное быстродействие в режиме умножения 27x27 бит составляет 312 МГц (Xilinx Kintex-7 speedgrade 1).
Приведенные HDL-описания схем комплексных умножителей, а также анализ результатов синтеза показывают следующее. Попытка использования одного универсального описания не позволяет достичь максимального быстродействия и минимальных аппаратных затрат не только при его синтезе под различные семейства ПЛИС разных производителей, но и в рамках одного семейства. Например, перенос конвейеризированного описания (см. листинги 5 и 6) с ПЛИС фирмы Xilinx на ПЛИС фирмы Altera приведет к тому, что в DSP-блоках будут реализованы только умножители, а предсум-маторы и аккумуляторы будут располагаться в логических ячейках или в отдельных DSP-блоках, т.е. возрастут аппаратные затраты. Таким образом, для достижения эффективного использования площади программируемого кристалла целесообразно адаптировать HDL-описание комплексного умножителя под конкретные семейства ПЛИС.
Описание памяти данных и памяти для поворачивающих коэффициентов представляет собой описание соответственно ОЗУ и ПЗУ с использованием блочной памяти ПЛИС. HDL-описание двухпортового ОЗУ приведено в листинге 7:
always @ (posedge clk) begin
if (we) ram[write_addr] <= data; q <= ram[read_addr];
end
Для ПЛИС фирмы Altera данный код синтезируется в блочную память с регистром данных на выходе, тогда как для ПЛИС фирмы Xilinx код будет синтезирован в блочную память без выходного регистра из-за особенностей структуры блочной памяти ПЛИС фирмы Xilinx, представленной на рис.5. Из рисунка видно, что на выходе массива элементов памяти стоит защелка и регистр. Использование выходного регистра регулируется конфигурированием соответствующего мультиплексора. В приведенном коде двухпортового ОЗУ выходной регистр синтезируется в защелку и мультиплексор конфигурируется для вывода данных напрямую с защелки, минуя регистр. Отсутствие выходного регистра уменьшает максимальное быстродействие блочной памяти в полтора раза.
Рис.5. Схема блочной памяти ПЛИС фирмы Xilinx
Максимальное быстродействие для ПЛИС Kintex-7 (speedgrade 1) составляет 400 МГц из 458 МГц максимально возможных для блочного ОЗУ, для ПЛИС Stratix-V (speedgrade 4) максимальное быстродействие составляет 400 МГц и является максимально возможным.
Блок управления представляет собой конечный автомат, формирующий управляющие и синхронизирующие сигналы, а также адресующий память данных и коэффициентов преобразования. Блок состоит из комбинационных схем, реализующих условия переходов из одного состояния в другое, регистров, хранящих текущее состояние автомата и сигналов управления, пересчетных устройств для формирования задержек и нелинейной адресации памяти. Такая совокупность структурных элементов может быть реализована на основе конфигурируемых логических блоков ПЛИС.
Учитывая изложенное, а также тот факт, что синтез конечных автоматов в ПЛИС хорошо формализован, целесообразно разработать универсальный блок управления, не требующий изменения HDL-описания при использовании модуля БПФ на различных аппаратных платформах.
Заключение. Анализ результатов синтеза основных блоков БПФ под семейства ПЛИС различных производителей показал, что создать полностью платформонезави-симое описание модуля БПФ с минимальными аппаратными затратами и максимальным быстродействием невозможно. Структурные блоки модуля БПФ предложено разделить на универсальное платформонезависимое описание блока управления и платформозависимые блоки элементарного преобразования, памяти данных и поворачивающих коэффициентов.
Дальнейшим развитием данной работы является разработка универсального масштабируемого HDL-описания блока управления, а также нескольких специализирован-
ных HDL-описаний комплексного умножителя, памяти и элементарного преобразования с целью сокращения времени проектирования систем на различной компонентной базе. Данный подход обеспечит поддержку и новых семейств ПЛИС путем создания дополнительных HDL-описаний платформозависимых блоков.
Работа выполнена при финансовой поддержке Минобрнауки РФ (грант Президента РФ для поддержки молодых российских ученых - докторов наук МД-1670.2014.10).
Литература
1. Метельков П.В., Переверзев А.Л., Попов М.Г. Алгоритм вторичной обработки информационного сигнала частотного радиолокационного высотомера // Оборонный комплекс - научно техническому прогрессу России. - 2013. - № 2. - С.16-21.
2. Нуссбаумер Г. Быстрое преобразование Фурье и алгоритмы вычисления сверток. - М.: Радио и связь, 1985. - 248 с.
3. Веб-сайт фирмы «Altera». FFT MegaCore Function User Guide. -
URL: https://www.altera.com/en_US/pdfs/literature/ug/ug_fft.pdf (дата обращения: 20.08.2012).
4. Веб-сайт фирмы «Xilinx». LogiCORE IP Fast Fourier Transform v9.0. -
URL: http://www.xilinx.com/support/documentation/ip_documentation/xfft/v9_0/pg109-xfft.pdf (дата обращения: 15.04.2015).
5. Веб-сайт фирмы «Xilinx». 7 Series DSP48E1 Slice User Guide. -
URL: http://www.xilinx.com/support/documentation/user_guides/ug479_7Series_DSP48E1.pdf. (дата обращения: 15.04.2015).
6. Веб-сайт фирмы «Xilinx». LogiCORE IP Complex Multiplier v6.0. -
URL: http://www.xilinx.com/support/documentation/ip_documentation/cmpy/v6_0/pg104-cmpy.pdf (дата обращения: 15.04.2015).
7. Веб-сайт фирмы «Altera». Variable Precision DSP Blocks in Stratix V Devices. -
URL: https://www.altera.com/en_US/pdfs/literature/hb/stratix-v/stx5_51004.pdf (дата обращения: 15.04.2015).
Статья поступила 1 июля 2015 г.
Переверзев Алексей Леонидович - доктор технических наук, заведующий кафедрой вычислительной техники (ВТ), ведущий научный сотрудник НИИ вычислительных средств и систем управления МИЭТ. Область научных интересов: цифровая обработка сигналов, проектирование специализированных цифровых вычислительных устройств и автоматизированных систем управления.
Силантьев Александр Михайлович - аспирант кафедры ВТ МИЭТ. Область научных интересов: проектирование специализированных цифровых вычислительных устройств и автоматизированных систем управления. E-mail: olmer.aod@gmail.ru
Информация для читателей журнала «Известия высших учебных заведений. Электроника»
С тематическими указателями статей за 1996 - 2015 гг., аннотациями и содержанием последних номеров на русском и английском языках можно ознакомиться на нашем сайте:
http://www. miet.ru