Систолические КИХ-фильтры в базисе ПЛИС

PDF версия
Систолический КИХ-фильтр считается оптимальным решением для параллельных архитектур цифровых фильтров. Реализация систолических КИХ-фильтров на 256 отводов в базисе современных ПЛИС позволяет обеспечить производительность до 500 MSPS (500 отсчетов в секунду) по сравнению с КИХ-фильтрами на базе MAC-блоков ЦОС-процессоров среднего класса производительностью 4 MSPS. Например, функция XtremeDSP Digital Signal Processing, входящая в состав системы Xilinx CORE Generator (генератор параметризированных модулей) для ЦОС-блоков DSP48 ПЛИС серии Virtex-4 и унифицированных ЦОС-блоков DSP48E1 самых современных ПЛИС серии Virtex-7 фирмы Xilinх, позволяет аппаратно реализовывать такие фильтры. Мегафункция (ALTMULT_ADD) САПР Quartus II компании Altera, начиная с версий 11, 12 и 13, для работы с ЦОС-блоками серий Cyclone V, Arria V и Stratix V также обеспечивает аппаратную реализацию систолических фильтров.

Рассмотрим уравнение КИХ-фильтра (нерекурсивного цифрового фильтра с конечно-импульсной характеристикой), которое представляется как арифметическая сумма произведений:

где y — отклик цепи; xkk-ая входная переменная; ck — весовой коэффициент k-ой входной переменной, который является постоянным для всех n; K — число отводов фильтра.

В фон-неймановских машинах данные, считанные из памяти, однократно обрабатываются в процессорном элементе (ПЭ), после чего снова возвращаются в память (рис. 1а). Авторы идеи систолической матрицы Кунг и Лейзерсон предложили организовать вычисления так, чтобы данные на своем пути от считывания из памяти до возвращения обратно пропускались через как можно большее число ПЭ (рис. 1б) [1].

Обработка данных в вычислительных системах: а) фон-неймановского типа; б) систолической структуры

Рис. 1. Обработка данных в вычислительных системах:
а) фон-неймановского типа;
б) систолической структуры

Если сравнить положение памяти в вычислительных системах со структурой живого организма, то по аналогии ей можно отвести роль сердца, множеству ПЭ — роль тканей, а поток данных рассматривать как циркулирующую кровь. Отсюда и происходит название «систолическая матрица» (систола — сокращение предсердий и желудочков сердца, при котором кровь нагнетается в артерии). Систолическая структура — это однородная вычислительная среда из процессорных элементов, совмещающая в себе свойства конвейерной и матричной обработки. Систолические структуры эффективны при выполнении матричных вычислений, обработке сигналов, сортировке данных и т. д.

Рассмотрим структуру систолического КИХ-фильтра на четыре отвода (рис. 2). В основе структуры лежит ритмическое прохождение двух потоков данных xin и yin навстречу друг другу. Последовательные элементы каждого потока разделены одним тактовым периодом, так, чтобы любой из них мог встретиться с любым элементом встречного потока. Вычисления выполняются параллельно в процессорных элементах, каждый из которых реализует один шаг в операции вычисления скалярного произведения (рис. 2). Значение yin, поступающее на вход ПЭ, суммируется с произведением входных значений xin и ck. Результат выходит из ПЭ как yout = yin+ckxin. 3начение xin, кроме того, для возможного последующего использования остальной частью массива транслируется через ПЭ без изменений и покидает его в виде xout. Таким образом, на каждый отвод фильтра приходится один ПЭ. На рис. 2 показана структура систолического КИХ-фильтра на четыре отвода [2]. Потоки сигналов yin, представляющего накопленный результат вычисления скалярного произведения и входного xin, распространяются слева направо. На входах xin и выходах суммы каждого ПЭ добавлены регистерные элементы, что позволяет накопленному результату и входному значению оставаться в синхронизации.

Для получения конечного результата используется сеть сумматоров, которая последовательно суммирует скалярные произведения. Фильтр состоит из двух однотипных процессорных элементов ПЭ1 и ПЭ2. На вход yin ПЭ1 необходимо подать сигнал «логического нуля», а на входной линии xin используется один регистр, а не два, как у ПЭ2.

Систолический КИХ-фильтр на четыре отвода, составленный из четырех секций DSP48 ПЛИС Virtex-4 фирмы Xilinx

Рис. 2. Систолический КИХ-фильтр на четыре отвода, составленный из четырех секций DSP48 ПЛИС Virtex-4 фирмы Xilinx

Используя представленные выше соображения, разработаем модель систолического фильтра на четыре отвода y = C0x0+C1x1+C2x2+C3x3 в САПР ПЛИС Quartus II в базисе ПЛИС серии Stratix III. Значения коэффициентов фильтра и входных отсчетов возьмем, как в работах [3, 4]. Предположим, что коэффициенты фильтра целочисленные со знаком, известны и равны C0 = –2, C1 = –1, C2 = 7 и C3 = 6. На вход КИХ-фильтра поступают входные отсчеты –5, 3, 1 и 0. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6 и т. д., то есть согласно формуле (1). В качестве перемножителей используем мегафункцию LPM_MULT. Регистры выполнены на мегафункциях LPM_FF.

Систолический КИХ-фильтр на четыре отвода с процессорными элементами ПЭ1 и ПЭ2 в САПР ПЛИС Quartus II показан на рис. 3. 

Систолический КИХ-фильтр на четыре отвода в САПР ПЛИС Quartus II с процессорными элементами ПЭ1 и ПЭ2

Рис. 3. Систолический КИХ-фильтр на четыре отвода в САПР ПЛИС Quartus II с процессорными элементами ПЭ1 и ПЭ2

На рис. 4 и 5 показаны схемы процессорных элементов ПЭ1 и ПЭ2, а на рис. 6 — временные диаграммы работы систолического КИХ-фильтра на четыре отвода.

Первый процессорный элемент ПЭ1

Рис. 4. Первый процессорный элемент ПЭ1

Второй процессорный элемент ПЭ2

Рис. 5. Второй процессорный элемент ПЭ2

На входах перемножителя сигналов, выполненных на мегафункции ALT_MULT, в процессорном элементе 1PE должно быть по одному 4-разрядному регистру для процесса согласования вычислений. А на одном из входов перемножителя сигналов в процессорном элементе 2PE необходимы два 4-разрядных регистра, первый из которых играет роль линии задержки.

Временные диаграммы работы систолического КИХ-фильтра на четыре отвода с процессорными элементами ПЭ1 и ПЭ2

Рис. 6. Временные диаграммы работы систолического КИХ-фильтра на четыре отвода с процессорными элементами ПЭ1 и ПЭ2

Упростить структуру систолического КИХ-фильтра позволяет использование однотипного процессорного элемента (рис. 7 и 8). Правильность функционирования такого решения подтверждает диаграмма на рис. 9.

Систолический КИХ-фильтр на четыре отвода в САПР ПЛИС Quartus II с однотипными процессорными элементами

Рис. 7. Систолический КИХ-фильтр на четыре отвода в САПР ПЛИС Quartus II с однотипными процессорными элементами

Однотипный процессорный элемент

Рис. 8. Однотипный процессорный элемент

Временные диаграммы работы систолического КИХ-фильтра на четыре отвода с однотипными процессорными элементами

Рис. 9. Временные диаграммы работы систолического КИХ-фильтра на четыре отвода с однотипными процессорными элементами

В работе [3] был представлен код языка VHDL КИХ-фильтра с использованием прямой реализации по формуле 1 (пример). По коду были получены временные диаграммы, показанные на рис. 10. Сравнивая временные диаграммы на рис. 6, 9 и 10, видим, что фильтры работают корректно.

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

package coeffs is

  type coef_arr is array (0 to 3) of signed(3 downto 0);

  constant coefs: coef_arr:= coef_arr'("1110", "1111", "0111", "0110");

  end coeffs;

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use work.coeffs.all;

entity fir_var is

 port (clk, reset, clk_ena: in std_logic;

     date: in signed (3 downto 0);

     q_reg: out signed (9 downto 0));

end fir_var;

architecture beh of fir_var is

begin

process(clk,reset)

type shift_arr is array (3 downto 0)

     of signed (3 downto 0);

     variable shift: shift_arr;

     variable tmp: signed (3 downto 0);

     variable pro: signed (7 downto 0);

     variable acc: signed (9 downto 0);

  begin

if reset='0' then

for i in 0 to 3 loop

shift(i):= (others => '0');

end loop;

q_reg<= (others => '0');

elsif(clk'event and clk = '1') then

if clk_ena='1' then    

     shift(0):=date;

     pro := shift(0) * coefs(0);

     acc := conv_signed(pro, 10);

       for i in 2 downto 0 loop

     pro := shift(i+1) * coefs(i+1);

       acc := acc + conv_signed(pro, 10);

       shift(i+1):= shift(i);

     end loop;

end if;

end if;

       q_reg<=acc;

end process;

end beh;

Пример. Код языка VHDL КИХ-фильтра на четыре отвода

Временные диаграммы работы КИХ-фильтра на четыре отвода по коду языка VHDL

Рис. 10. Временные диаграммы работы КИХ-фильтра на четыре отвода по коду языка VHDL

В качестве примера рассмотрим, как обстоит дело с индустриальными ПЛИС последнего поколения фирмы Altera серии Cyclone V и Stratix V [5–8]. В этих сериях появились ЦОС-блоки с переменной точностью, одна из особенностей которых — это реализация систолических КИХ-фильтров. Каждый ЦОС-блок серии Stratix V позволяет реализовать два перемножителя двух 18-разрядных сигналов или один перемножитель двух 32-разрядных сигналов, причем встроенные в выходные цепи ЦОС-блоков многоразрядные сумматоры позволяют организовать первый и второй уровень в дереве многоразрядных сумматоров при проектировании параллельных КИХ-фильтров.

На рис. 11 показана прямая форма КИХ-фильтра с несимметричными коэффициентами на 16 отводов (коэффициенты представлены с 18-битной точностью) с использованием ЦОС-блоков ПЛИС серии Stratix V. В ЦОС-блоках используются два уровня суммирования по отношению к внешнему дереву многоразрядных сумматоров: каскадирующая шина, и, как вариант, линия задержки может быть сконфигурирована из внутренних входных регистров.

Прямая форма КИХ-фильтра с несимметричными коэффициентами на 16 отводов с использованием ЦОС-блоков ПЛИС серии Stratix V. Коэффициенты представлены с 18-битной точностью. б) Режимы ЦОС-блока для прямой реализации КИХ-фильтра с симметричными и несимметричными коэффициентами

Рис. 11.
а) Прямая форма КИХ-фильтра с несимметричными коэффициентами на 16 отводов с использованием ЦОС-блоков ПЛИС серии Stratix V. Коэффициенты представлены с 18-битной точностью.
б) Режимы ЦОС-блока для прямой реализации КИХ-фильтра с симметричными и несимметричными коэффициентами

На рис. 12 показана прямая форма КИХ-фильтра на восемь отводов с несимметричными коэффициентами с использованием ЦОС-блоков серии Stratix V. Для реализации фильтров с большим числом отводов необходимы внешние линия задержки и дерево многоразрядных сумматоров по отношению к ЦОС-блокам, при этом в самом ЦОС-блоке осуществляется первый уровень суммирования значений с отводов фильтра, предварительно умноженных на его коэффициенты.

Прямая реализация КИХ-фильтра с несимметричными коэффициентами на восемь отводов, с использованием восьми ЦОС-блоков ПЛИС серии Stratix V. Коэффициенты представлены с 27-битной точностью (высокоточный режим), В ЦОС-блоках используется один уровень суммирования по отношению к внешнему дереву многоразрядных сумматоров

Рис. 12. Прямая реализация КИХ-фильтра с несимметричными коэффициентами на восемь отводов, с использованием восьми ЦОС-блоков ПЛИС серии Stratix V. Коэффициенты представлены с 27-битной точностью (высокоточный режим), В ЦОС-блоках используется один уровень суммирования по отношению к внешнему дереву многоразрядных сумматоров

Применение ЦОС-блоков при проектировании КИХ-фильтра прямой формы позволяет вдвое сократить число многоразрядных сумматоров, но оставшаяся часть дерева сумматоров реализуется на внутренних ресурсах ПЛИС, что отрицательно сказывается на общем числе задействованных ресурсов. Как следствие, снижается быстродействие фильтра за счет увеличения задержек в трассировочных каналах самой ПЛИС.

Существенно уменьшить число используемых ресурсов позволяет систолический КИХ-фильтр, в ЦОС-блоках которого реализуются операции умножения и сложения с конвейеризацией, то есть отпадает необходимость в дереве многоразрядных сумматоров, однако он может иметь большую латентность по сравнению с прямой реализацией фильтра. Красным цветом на рис. 13 показаны систолические регистры, необходимые для синхронизации двух потоков. Мегафункция ALTMULT_ADD САПР Quartus II, начиная с версии 11.0 для ПЛИС серий Arria V, Cyclone V и Stratix V, позволяет конфигурировать ЦОС-блоки для организации систолических фильтров.

Систолический КИХ-фильтр на восемь отводов с 18-битной точностью представления коэффициентов, с использованием четырех ЦОС-блоков ПЛИС серии Stratix V

Рис. 13. Систолический КИХ-фильтр на восемь отводов с 18-битной точностью представления коэффициентов, с использованием четырех ЦОС-блоков ПЛИС серии Stratix V

На рис. 14 представлена структура ЦОС-блока с переменной точностью ПЛИС серии Cyclone V, на которой выделен процессорный элемент. На рис. 15 показано диалоговое окно мегафункции ALTMULT_ADD ПЛИС серии Cyclone V (закладка Systolic/Preload) и схематически показано включение систолического регистра в последовательную цепь сумматоров.

Систолические регистры, подключаемые опционально с помощью мегафункции ALTMULT_ADD в ЦОС-блоке с переменной точностью ПЛИС серии Cyclone V

Рис. 14. Систолические регистры, подключаемые опционально с помощью мегафункции ALTMULT_ADD в ЦОС-блоке с переменной точностью ПЛИС серии Cyclone V

Включение систолического регистра в последовательную цепь сумматоров в мегафункции ALTMULT_ADD для ПЛИС серии Cyclone V

Рис. 15. Включение систолического регистра в последовательную цепь сумматоров в мегафункции ALTMULT_ADD для ПЛИС серии Cyclone V

Реализация параллельных КИХ-фильтров на четыре отвода в базисе ПЛИС серии Stratix III представлены в таблице. Все рассмотренные варианты фильтров реализованы с применением различных мегафункций. Первый вариант реализован без использования мегафункций ЦОС-блоков, второй вариант задействует лишь по одному умножителю из четырех возможных мегафункции ALTMULT_ACCUM, а третий — четыре умножителя из четырех возможных. Приведенная таблица (вариант 3) показывает максимальное использование ресурсов ЦОС-блоков ПЛИС одной мегафункцией ALTMULT_ADD, за счет использования четырех перемножителей и встроенного дерева сумматоров, реализующие первые и вторые уровни суммирования. Оптимальное использование ЦОС-блоков приводит к снижению общего числа задействованных ресурсов в проекте и повышению быстродействия. Так, снижается до нуля число LUT для реализации комбинационных функций, а количество используемых адаптивных логических модулей уменьшается с 59 (вариант 1) до 8. Во всех случаях частота работы фильтров ограничивается 400 МГц.

Таблица. Реализация параллельных КИХ-фильтров на четыре отвода в базисе ПЛИС серии Stratix III

Ресурсы ПЛИС

Систолический КИХ-фильтр с однотипными процессорными элементами без использования встроенных ЦОС-блоков

Четыре мегафункции умножения с накоплением ALTMULT_ACCUM (внешняя линия задержки и дерево сумматоров) [4, рис. 1]

Одна мегафункция умножения и сложения ALTMULT_ADD (внешняя линия задержки) [4, рис. 2]

Вариант 1

Вариант 2

Вариант 3

Максимальная частота/частота в наихудшем случае, MГц

432/400

429/400

514/400

Число LUT для реализации комбинационных функций

59

18

0

Адаптивные логические модули (ALM)

44

18

8

Число выделенных регистров для реализации последовательностной логики

65

12

12

Встроенные ЦОС-блоки, 18×18 бит

16

4

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

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