Представление значений сигналов в главном окне системы Matlab в дискретные моменты времени

Проектирование последовательных КИХ-фильтров в системе Xilinx System Generator с применением библиотеки Reference BlockSet/DSP

PDF версия
В статье предлагается рассмотреть проектирование двух последовательных КИХ-фильтров на четыре отвода для реализации в базисе ПЛИС в системе Xilinx System Generator с использованием блока умножения и накопления (MAC-блока), линии задержки сигнала на основе адресуемого сдвигового регистра и двухпортовой блочной памяти, сконфигурированной для работы в различных режимах.

Проектирование КИХ-фильтра с использованием адресуемого сдвигового регистра и блочной памяти в режиме ПЗУ

В библиотеке 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‑битной точностью. Число разрядов дробной части — ноль.

Оценка ресурсов проекта в Simulink

Рис. 1.
г) Оценка ресурсов проекта в Simulink;
д) оценка ресурсов проекта в САПР ISE по коду языка VHDL, извлеченному в автоматическом режиме с помощью маркера System Generator

На рис. 1в показано задание частоты тактирования фильтра в САПР ISE (100 нс) и периода симуляции в Simulink (1/4 с). На рис. 1г, д показана оценка ресурсов проекта в Simulink и САПР ISE. Для реализации КИХ-фильтра в базисе ПЛИС xa6slx4-3tqg144 требуется один ЦОС-блок DSP‑48A. Максимальная частота проекта по коду языка VHDL, извлеченному в автоматическом режиме, оценивается величиной 233 МГц. На рис. 2 представлено имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода.

Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода

Рис. 2. Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода

Для более детального изучения структуры блока n‑tap MAC FIR filter разработаем модель КИХ-фильтра на его основе для случая 4‑tap MAC FIR filter.

Рассмотрим управление латентностью линии задержки на базе адресуемого сдвигового регистра. Структурная схема адресуемого сдвигового регистра показана на рис. 3. Разработаем имитационную модель управления адресуемым сдвиговым регистром с помощью 2‑разрядного суммирующего счетчика (рис. 4). Результаты имитационного моделирования показывают, что латентность блока ASR составляет четыре такта синхрочастоты (рис. 5). Латентность блока может быть задана вручную или вычислена исходя из максимальной разрядности адресного порта. Подключение задержки на один такт на вход ASR-блока приводит к увеличению латентности на восемь тактов синхрочастоты (рис. 6 и 7). А подключение задержки на один такт на его вход и задержки на два такта на выход ASR-блока составит для такой конструкции десять тактов синхрочастоты (рис. 8 и 9).

Структурная схема адресуемого сдвигового регистра на примитиве SRL16E

Рис. 3. Структурная схема адресуемого сдвигового регистра на примитиве SRL16E

Управление адресуемым сдвиговым регистром (функциональный блок ASR) с помощью счетчика

Рис. 4. Управление адресуемым сдвиговым регистром (функциональный блок ASR) с помощью счетчика

Латентность ASR-блока составляет четыре такта синхрочастоты

Рис. 5. Латентность ASR-блока составляет четыре такта синхрочастоты

Исследование латентности ASR-блока при подключении задержки на один такт на его вход

Рис. 6. Исследование латентности ASR-блока при подключении задержки на один такт на его вход

Латентность ASR-блока при подключении задержки на его вход составляет восемь тактов синхрочастоты

Рис. 7. Латентность ASR-блока при подключении задержки на его вход составляет восемь тактов синхрочастоты

Исследование латентности ASR-блока при подключении задержки на один такт на его вход и задержки на два такта на выход

Рис. 8. Исследование латентности ASR-блока при подключении задержки на один такт на его вход и задержки на два такта на выход

Суммарная латентность ASR-блока при подключении задержки на один такт на его вход и задержки на два такта на выход составит десять тактов синхрочастоты

Рис. 9. Суммарная латентность ASR-блока при подключении задержки на один такт на его вход и задержки на два такта на выход составит десять тактов синхрочастоты

Рассмотрим структуру блоков, входящих в состав функционального блока n‑tap MAC FIR filter. Структурная схема управляющего автомата (функциональный блок Address Control) показана на рис. 10, а на рис. 11 представлена структурная схема функционального блока Memory. Выход суммирующего 2‑разрядного счетчика подключен к адресным шинам блоков ASR и ROM (ПЗУ). Емкость ПЗУ составляет четыре строки по четыре бита, инициализируется вектором значений [–2, –1, 7, 6].

Структурная схема управляющего автомата (функциональный блок Address Control)

Рис. 10. Структурная схема управляющего автомата (функциональный блок Address Control)

Структурная схема функционального блока Memory, настройки ASR-блока и ROM-блока

Рис. 11. Структурная схема функционального блока Memory, настройки ASR-блока и ROM-блока

Латентность сигналов A и B составит 10 и 2 такта синхрочастоты, что обеспечивает правильность формирования результата умножения. Сигнал res_mac в структурной схеме функционального блока Memory имеет латентность пять тактов синхрочастоты. Обеспечивает правильность загрузки новых значений произведений сигналов A и B (сигнал aXb) в аккумулятор MAC-блока и последующих накоплений значений суммы произведений (рис. 12). Умножитель, входящий в состав Mult-блока, имеет латентность три такта синхрочастоты и реализуется на базе аппаратных умножителей ПЛИС, встроенных в DSP-блоки. Произведение сигналов A и B представляется с 8‑битной, а сумма произведений с 9‑битной точностью.

Блок умножения с накоплением (функциональный блок MAC engine) и настройки умножителя (Mult-блок)

Рис. 12. Блок умножения с накоплением (функциональный блок MAC engine) и настройки умножителя (Mult-блок)

На рис. 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.

Имитационная модель КИХ-фильтра на четыре отвода на основе функционального блока n tap MAC FIR filter

Рис. 13. Имитационная модель КИХ-фильтра на четыре отвода на основе функционального блока n tap MAC FIR filter

Представление значений сигналов в главном окне системы Matlab в дискретные моменты времени

Рис. 14. Представление значений сигналов в главном окне системы Matlab в дискретные моменты времени:
а) cигнал A;
б) коэффициенты фильтра (сигнал B, он же Coef_ram);
в) сигнал res_mac, обеспечивающий правильность загрузки новых значений произведения aXb в аккумулятор MAC-блока и последующих накоплений значений суммы произведений;
г) значение произведения aXb на выходе умножителя;
д) сигнал Sum, накопленный в аккумуляторе;
е) сигнал registered на выходе регистра захвата;
к) сигнал DownSample (сигнал после операции децимации, результат фильтрации)

На рис. 15 показаны сигналы, расположенные согласно позициям, соответствующим рис. 14а, б, в, г, д, е, а на рис. 16 представлен сигнал до и после операции децимации (рис. 14е, к). Зелеными (формирование произведения), красными (формирование суммы произведений) и синими (значения суммы произведений в регистре захвата) стрелками на рис. 14 обозначены информационные потоки при вычислениях. Правильные значения на выходе фильтра: 10, –1, –40, –10, 25, 6 и все последующие нулевые значения показаны на рис. 14к.

Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap MAC FIR filter. Сигналы расположены согласно позициям

Рис. 15. Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap MAC FIR filter. Сигналы расположены согласно позициям а), б), в), г), д) и е), представленным на рис. 14

Результаты функционального моделирования в САПР Xilinx ISE с использованием испытательного стенда, код которого получен в автоматическом режиме, указаны на рис. 17. Сравнивая результаты имитационного моделирования на рис. 16 и функционального, представленного на рис. 17, приходим к выводу, что фильтры работают корректно.

Сигнал до и после операции децимации (рис. 14е, к)

Рис. 16. Сигнал до и после операции децимации (рис. 14е, к)

Функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap MAC FIR filter с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме. Обозначение сигналов согласно рис. 13

Рис. 17. Функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap MAC FIR filter с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме. Обозначение сигналов согласно рис. 13

 

Проектирование КИХ-фильтра на основе блочной памяти в режиме ОЗУ

КИХ-фильтр также может быть реализован на основе функционального блока n‑tap Dual Port Memory MAC FIR Filter, находящегося в библиотеке Reference BlockSet/DSP [4]. Имитационная модель КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС серии Spartan‑6 xa6slx4-3tqg144, адаптированная к нашей задаче, показана на рис. 18.

Имитационная модель КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС серии Spartan 6 xa6slx4-3tqg144 на основе n tap Dual Port Memory MAC FIR Filter

Рис. 18. Имитационная модель КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС серии Spartan 6 xa6slx4-3tqg144 на основе n tap Dual Port Memory MAC FIR Filter

В составе КИХ-фильтра на основе 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 при реализации КИХ-фильтров на четыре отвода различными способами показана в таблице.

Функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap Dual Port Memory MAC FIR Filter с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме

Рис. 19. Функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap Dual Port Memory MAC FIR Filter с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме

Таблица. Оценка ресурсов ПЛИС серии Spartan‑6 xa6slx4-3tqg144 при реализации КИХ-фильтров на четыре отвода различными способами

Ресурсы ПЛИС

Генератор параметри-
зированных ядер
XLogiCORE IP, функция
FIR Compiler v6.3,
систолическая структура

XLogiCORE IP FIR Compiler v5.0,
последовательная распределенная арифметика

XLogiCORE IP FIR Compiler v5.0,
параллельная
распределенная арифметика

Simulink, Xilinx System Generator, n-tap MAC FIR filter,
1 МАС-блок

Simulink, Xilinx System Generator, Dual Port Memory
MAC FIR Filter,
1 МАС-блок

Рабочая частота, МГц

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 на сорок три отвода).

Литература
  1. Тарасов И. Сравнительный анализ архитектуры основных семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 6.
  2. Тарасов И. Анализ характеристик FPGA Xilinx семейств Virtex‑6 и Spartan‑6 // Компоненты и технологии. 2009. № 12.
  3. Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров в САПР ПЛИС Xilinx ISE Design Suite // Компоненты и технологии. 2014. № 11.
  4. Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров на распределенной арифметике в САПР ПЛИС Xilinx ISE Design Suite // Компоненты и технологии. 2015. № 2.
  5. Строгонов А., Цыбин С., Городков П. Разработка КИХ-фильтров в системе Xilinx System Generator САПР ISE Design Suite // Компоненты и технологии. 2015. № 5.

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

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