Проектирование последовательных КИХ-фильтров в системе Xilinx System Generator с применением библиотеки Reference BlockSet/DSP
Проектирование КИХ-фильтра с использованием адресуемого сдвигового регистра и блочной памяти в режиме ПЗУ
В библиотеке Reference BlockSet/DSP системы Xilinx System Generator представлен параметризованный функциональный блок n‑tap MAC FIR filter и пример на его основе, позволяющий спроектировать КИХ-фильтр на 16 отводов с помощью одного MAC-блока. Применение данного блока основано на том, что логический генератор ПЛИС Xilinx, основанный на статической памяти, может быть сконфигурирован как быстрый сдвиговый регистр с организацией 16×1 [1, 2]. На базе такого адресуемого сдвигового регистра, выполненного на примитиве SRL16E, можно построить линию задержки, а на основе блочной или распределенной памяти ПЛИС — сконструировать ПЗУ для хранения коэффициентов фильтра.
Коэффициенты фильтра вычисляются с помощью функции fir1(15,5) системы Matlab методом обратного преобразования Фурье с использованием окон, с частотой среза Wn, находящейся в диапазоне 0 < Wn < 1.0, где 1 соответствует половине частоты дискретизации Fs/2.
Предположим, что нам необходимо осуществить разработку КИХ-фильтра на 4 отвода:
у = С0x0 + C1x1 + C2x2 + C3x3
с заданными коэффициентами С0 = –2, C1 = –1, C2 = 7 и C3 = 6 [3, 4, 5].
Рассмотрим случай, когда на вход фильтра поступает сигнал –5, 3, 1, 0, 0 и 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 25, 6 и 0 и т. д.
Воспользуемся готовым блоком n‑tap MAC FIR filter (рис. 1а). Проект разместим в базис ПЛИС серии Spartan‑6 xa6slx4-3tqg144. Настроим маску с параметрами блока n‑tap MAC FIR filter (рис. 1б). Коэффициенты фильтра и входной сигнал, подлежащий фильтрации, представляются в формате с фиксированной запятой с 4‑битной точностью. Число разрядов дробной части — ноль.
На рис. 1в показано задание частоты тактирования фильтра в САПР ISE (100 нс) и периода симуляции в Simulink (1/4 с). На рис. 1г, д показана оценка ресурсов проекта в Simulink и САПР ISE. Для реализации КИХ-фильтра в базисе ПЛИС xa6slx4-3tqg144 требуется один ЦОС-блок DSP‑48A. Максимальная частота проекта по коду языка VHDL, извлеченному в автоматическом режиме, оценивается величиной 233 МГц. На рис. 2 представлено имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода.
Для более детального изучения структуры блока n‑tap MAC FIR filter разработаем модель КИХ-фильтра на его основе для случая 4‑tap MAC FIR filter.
Рассмотрим управление латентностью линии задержки на базе адресуемого сдвигового регистра. Структурная схема адресуемого сдвигового регистра показана на рис. 3. Разработаем имитационную модель управления адресуемым сдвиговым регистром с помощью 2‑разрядного суммирующего счетчика (рис. 4). Результаты имитационного моделирования показывают, что латентность блока ASR составляет четыре такта синхрочастоты (рис. 5). Латентность блока может быть задана вручную или вычислена исходя из максимальной разрядности адресного порта. Подключение задержки на один такт на вход ASR-блока приводит к увеличению латентности на восемь тактов синхрочастоты (рис. 6 и 7). А подключение задержки на один такт на его вход и задержки на два такта на выход ASR-блока составит для такой конструкции десять тактов синхрочастоты (рис. 8 и 9).
Рассмотрим структуру блоков, входящих в состав функционального блока n‑tap MAC FIR filter. Структурная схема управляющего автомата (функциональный блок Address Control) показана на рис. 10, а на рис. 11 представлена структурная схема функционального блока Memory. Выход суммирующего 2‑разрядного счетчика подключен к адресным шинам блоков ASR и ROM (ПЗУ). Емкость ПЗУ составляет четыре строки по четыре бита, инициализируется вектором значений [–2, –1, 7, 6].
Латентность сигналов A и B составит 10 и 2 такта синхрочастоты, что обеспечивает правильность формирования результата умножения. Сигнал res_mac в структурной схеме функционального блока Memory имеет латентность пять тактов синхрочастоты. Обеспечивает правильность загрузки новых значений произведений сигналов A и B (сигнал aXb) в аккумулятор MAC-блока и последующих накоплений значений суммы произведений (рис. 12). Умножитель, входящий в состав Mult-блока, имеет латентность три такта синхрочастоты и реализуется на базе аппаратных умножителей ПЛИС, встроенных в DSP-блоки. Произведение сигналов A и B представляется с 8‑битной, а сумма произведений с 9‑битной точностью.
На рис. 13 показан КИХ-фильтр на четыре отвода с использованием MAC-блока на основе функционального блока n‑tap MAC FIR filter. Фильтр состоит из функциональных блоков Memory, MAC engine, регистра и блока понижения частоты дискретизации. На рис. 14 показаны значения сигналов на выходах блоков. Сигнал A (Data_RAM) на выходе линии задержки имеет латентность десять тактов синхрочастоты (рис. 14а). Коэффициенты фильтра, извлекаемые из ПЗУ, имеют латентность два такта синхрочастоты (сигнал B, он же Coef_ram) (рис. 14б). Cигнал res_mac имеет латентность — пять (рис. 14в). Сигнал aXb является текущим значением произведения сигналов A и B (рис. 14г), а сигнал Sum представляет сумму значений произведений сигналов A и B, накопленных в аккумуляторе (рис. 14д). Сигналы aXb и Sum формируются в блоке MAC engine.
На рис. 15 показаны сигналы, расположенные согласно позициям, соответствующим рис. 14а, б, в, г, д, е, а на рис. 16 представлен сигнал до и после операции децимации (рис. 14е, к). Зелеными (формирование произведения), красными (формирование суммы произведений) и синими (значения суммы произведений в регистре захвата) стрелками на рис. 14 обозначены информационные потоки при вычислениях. Правильные значения на выходе фильтра: 10, –1, –40, –10, 25, 6 и все последующие нулевые значения показаны на рис. 14к.
Результаты функционального моделирования в САПР Xilinx ISE с использованием испытательного стенда, код которого получен в автоматическом режиме, указаны на рис. 17. Сравнивая результаты имитационного моделирования на рис. 16 и функционального, представленного на рис. 17, приходим к выводу, что фильтры работают корректно.
Проектирование КИХ-фильтра на основе блочной памяти в режиме ОЗУ
КИХ-фильтр также может быть реализован на основе функционального блока n‑tap Dual Port Memory MAC FIR Filter, находящегося в библиотеке Reference BlockSet/DSP [4]. Имитационная модель КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС серии Spartan‑6 xa6slx4-3tqg144, адаптированная к нашей задаче, показана на рис. 18.
В составе КИХ-фильтра на основе n‑tap Dual Port Memory MAC FIR Filter используются следующие функциональные блоки: MAC-блок; блоки интерполяции и децимации; двухпортовая память, разбитая логически на два банка памяти, один из которых работает как циклический буфер для считывания и записи входных отсчетов сигнала, подлежащего фильтрации, а второй — для хранения коэффициентов фильтра (выполняет функцию ПЗУ). Вектор инициализации блочной памяти [0, 0, 0, 0, –2, –1, 7, 6]. Емкость ОЗУ — восемь 4‑разрядных слов. Порт A настроен на режим «чтение», затем «запись». Порт B — «чтение». На рис. 19 показано функциональное моделирование. Максимальная частота проекта по коду языка VHDL, извлеченного в автоматическом режиме, оценивается величиной 279 МГц. Оценка ресурсов ПЛИС серии Spartan‑6 xa6slx4-3tqg144 при реализации КИХ-фильтров на четыре отвода различными способами показана в таблице.
Ресурсы ПЛИС |
Генератор параметри- |
XLogiCORE IP FIR Compiler v5.0, |
XLogiCORE IP FIR Compiler v5.0, |
Simulink, Xilinx System Generator, n-tap MAC FIR filter, |
Simulink, Xilinx System Generator, Dual Port Memory |
Рабочая частота, МГц |
348 |
439 |
438 |
233 |
279 |
Число ЦОС-блоков DSP-48A |
1 |
– |
– |
1 |
1 |
Число триггеров |
48 |
57 |
111 |
52 |
57 |
Число секций с LUT |
33 |
41 |
88 |
39 |
38 |
Выводы
В Xilinx System Generator рассмотрено проектирование последовательных КИХ-фильтров на четыре отвода в формате с фиксированной запятой с применением параметризованных функциональных блоков n‑tap MAC FIR filter и n‑tap Dual Port Memory MAC FIR Filter. Основные используемые блоки для построения структур КИХ-фильтров: адресуемый сдвиговый регистр для организации линии задержки на базе LUT; управляющий автомат; ПЗУ или ОЗУ на основе блочной памяти; умножитель и аккумулятор; интерполяция и децимация. Для правильного функционирования КИХ-фильтров необходимо производить учет латентности блоков.
Реализация КИХ-фильтра на основе блочной памяти ПЛИС n‑tap Dual Port Memory MAC FIR Filter дает повышенное быстродействие 279 против 233 МГц на основе адресуемого сдвигового регистра при незначительном возрастании требуемых логических ресурсов ПЛИС (таблица). Данный эффект объясняется увеличением задержек в трассировочных ресурсах ПЛИС при реализации сдвигового регистра на ячейках конфигурационной памяти [1, 2]. В обоих случаях требуется один ЦОС-блок DSP‑48A.
Как показывает анализ представленной таблицы, последовательные КИХ-фильтры с использованием одного MAC-блока являются самыми медленными по отношению к систолическому КИХ-фильтру, представляющему собой разновидность параллельной структуры (функция FIR Compiler v6.3), и к фильтру на основе распределенной арифметики, позволяющей организовывать «безумножительные» схемы умножения (FIR Compiler v5.0,). Однако в случае роста числа отводов фильтра можно получить существенный выигрыш в экономии ресурсов ПЛИС (в работе [5] показан пример проектирования КИХ-фильтра с использованием блока n‑tap Dual Port Memory MAC FIR Filter на сорок три отвода).
- Тарасов И. Сравнительный анализ архитектуры основных семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 6.
- Тарасов И. Анализ характеристик FPGA Xilinx семейств Virtex‑6 и Spartan‑6 // Компоненты и технологии. 2009. № 12.
- Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров в САПР ПЛИС Xilinx ISE Design Suite // Компоненты и технологии. 2014. № 11.
- Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров на распределенной арифметике в САПР ПЛИС Xilinx ISE Design Suite // Компоненты и технологии. 2015. № 2.
- Строгонов А., Цыбин С., Городков П. Разработка КИХ-фильтров в системе Xilinx System Generator САПР ISE Design Suite // Компоненты и технологии. 2015. № 5.