Проектирование последовательных КИХ-фильтров в системе визуально-имитационного моделирования Matlab/Simulink с использованием Altera DSP Builder

№ 11’2015
PDF версия
В статье рассматривается объектно-ориентированное проектирование цифровых устройств обработки сигналов с использованием пакета расширения Altera DSP Builder ver. 12.1 системы визуально-имитационного моделирования Matlab/Simulink (версия 8.0.0.783 (R2012b)) на примере последовательного КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС Cyclone фирмы Altera. Пакет Altera DSP Builder ver. 12.1 работает в связке с САПР Quartus II ver.12.1 (сборка 177) по аналогии с пакетом System Generator IDS и САПР ПЛИС ISE фирмы Xilinx.

Программные пакеты расширения Altera DSP Builder и Xilinx System Generator IDS системы визуально-имитационного моделирования Matlab/Simulink обеспечивают высокоуровневое оптимизированное VHDL-представление проектов c автоматическим компилированием в ПЛИС Altera и Xilinx c последующим созданием испытательных стендов.

Рассмотрим разработку КИХ-фильтра на четыре отвода с использованием одного блока умножения и накопления (1 MAC-блок) в Altera DSP Builder:

y = C0x0+C1x1+C2x2+C3x3.

Предположим, что коэффициенты фильтра известны: C0 = –2, C1 = –1, C2 = 7 и C3 = 6. Такие фильтры еще называют MAC-фильтры (рис. 1). За основу проектируемого КИХ-фильтра возьмем имитационную модель с именем FIR_MAC32.mdl КИХ-фильтра на 32 отвода из справочной системы САПР Quartus II по адресу: quartus\dsp_builder\DesignExamples\Demos\Filters\Mac32 и адаптируем ее под свои задачи.

Структурная схема КИХ-фильтра на основе MAC-блока

Рис. 1. Структурная схема КИХ-фильтра на основе MAC-блока

Рассмотрим кратко основные структуры КИХ-фильтров с использованием MAC-блоков в Xilinx System Generator. В работах [3, 4] с помощью параметризованных функциональных блоков n‑tap MAC FIR filter и n‑tap Dual Port Memory MAC FIR filter показано проектирование односкоростных последовательных КИХ-фильтров на четыре отвода.

Функциональный блок n‑tap MAC FIR filter реализуется на базе адресуемого сдвигового регистра на ячейках конфигурационной памяти ПЛИС, выполняющего роль линии задержки и блочной памяти в режиме ПЗУ для хранения коэффициентов фильтра. Такая опция доступна только для ПЛИС фирмы Xilinx.

Функциональный блок n‑tap Dual Port Memory MAC FIR Filter реализуется на базе блочной памяти в режиме ОЗУ. Двухпортовая память логически разбивается на два банка памяти, первый работает в режиме циклического буфера для считывания и записи входных отсчетов сигнала, подлежащего фильтрации, а второй в режиме ПЗУ для хранения коэффициентов фильтра. Вектор инициализации блочной памяти [0 0 0 0 –2, –1, 7, 6]. Емкость ОЗУ восемь 4‑разрядных слов. Порт A настроен на режим «чтение, затем запись». Порт B — «чтение». Первый банк памяти можно рассматривать как однопортовое ОЗУ (одна адресная шина используется как для считывания так и для записи данных в ОЗУ).

Основные используемые блоки для построения структур КИХ-фильтров: адресуемый сдвиговый регистр для организации линии задержки на базе LUT; управляющий автомат; ПЗУ или ОЗУ на основе блочной памяти; умножитель и аккумулятор; интерполяция и децимация. В работах [3, 4] показано, что для правильного функционирования КИХ-фильтров необходимо производить учет латентности блоков.

КИХ-фильтры на основе функциональных блоков n‑tap и n‑tap Dual Port Memory MAC FIR из-за того, что используют различные типы памяти, отличаются друг от друга управляющими автоматами (рис. 2, 3). Функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n‑tap MAC FIR filter, показано на рис. 4. На рис. 5 представлено функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n‑tap Dual Port Memory MAC FIR Filter. Профильтрованные данные на выходе фильтров обновляются через четыре такта синхроимпульса.

Структурная схема управляющего автомата КИХ-фильтра

Рис. 2.
а) Структурная схема управляющего автомата КИХ-фильтра;
б) его подключение к адресуемому сдвиговому регистру (ASR) и блочной памяти в режиме ПЗУ (функциональный блок n tap MAC FIR filter)

Структурная схема управляющего автомата КИХ-фильтра

Рис. 3.
а) Структурная схема управляющего автомата КИХ-фильтра;
б) его подключение к блочной памяти в режиме ОЗУ (функциональный блок n tap Dual Port Memory MAC FIR filter)

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

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

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

Рис. 5. Функциональное моделирование КИХ-фильтра на четыре отвода, созданного на основе функционального блока n tap Dual Port Memory MAC FIR filter

Как и в работах [3, 4], рассмотрим случай, когда на вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д. На рис. 6 представлена имитационная модель последовательного КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС Altera серии Cyclone III, выполненного на основе одного MAC-блока. Модель работает с целыми десятичными числами, как со знаком, так и без, которые с помощью настроек функ-циональных блоков преобразуются в двоичный формат для последующего функционального моделирования.

Имитационная модель последовательного КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС Altera серии Cyclone на основе одного MAC-блока

Рис. 6. Имитационная модель последовательного КИХ-фильтра на четыре отвода для реализации в базисе ПЛИС Altera серии Cyclone на основе одного MAC-блока

Имитационная модель состоит из следующих функциональных блоков: счетчик (управляющий автомат); линия задержки на базе двухпортовой памяти (ОЗУ) и вспомогательного мультиплексора; LUT (блок памяти в режиме ПЗУ) для хранения коэффициентов фильтра; MAC-блок и регистр для хранения результата; компилятор сигналов; генератор испытательных стендов; формирование синхросигнала.

Функциональный блок BaseClock позволяет в автоматическом режиме формировать синхросигнал и асинхронный сигнал сброса (активный низкий) при последующем переходе от имитационной модели к функциональной в САПР ПЛИС Altera Quartus II ver. 12.1. Для функционального моделирования задается синхросигнал с периодом 20 нс и временной шаг симуляции в Matlab/Simulink 0,25 с. Шаг симуляции выбирают, исходя из тех соображений, что профильтрованные данные на выходе фильтра должны обновляться через четыре такта синхроимпульса (рис. 7).

Настройки функционального блока BaseClock. Задается период синхросигнала 20 нс для функционального моделирования в САПР Quartus II ver. 12.1 и временной шаг симуляции в Matlab/Simulink 0,25 с

Рис. 7. Настройки функционального блока BaseClock. Задается период синхросигнала 20 нс для функционального моделирования в САПР Quartus II ver. 12.1 и временной шаг симуляции в Matlab/Simulink 0,25 с

Функциональный блок Increment Decrement исполняет роль 2‑разрядного суммирующего счетчика, увеличивая свое содержимое на единицу (рис. 8), и управляющего автомата. Счетчик управляет работой линии задержки на четыре отвода через функциональный блок «дешифратор» (рис. 9). «Дешифратор» фактически представляет собой компаратор, который сравнивает входной сигнал с заданной декодируемой величиной. Дешифратор вырабатывает активный сигнал (десятичная единица) через каждые три последующих временных шага моделирования (на четвертый шаг), который подключен ко входу ShiftEn линии задержки. Сигнал ShiftEn является адресным входом мультиплексора 2 в 1. При ShiftEn = 1 происходит запись десятичных чисел, поступающих на вход фильтра в ОЗУ линии задержки, а при ShiftEn = 0 происходит перезапись содержимого ОЗУ. Тем самым эмулируется работа линии задержки на базе сдвигового регистра, и можно говорить, что ОЗУ работает в режиме циклического буфера. Счетчик также адресуется к данным, хранящимся в функциональном блоке LUT. LUT, который играет роль блока памяти (ПЗУ), можно рассматривать как таблицу для хранения коэффициентов фильтра.

Настройки функционального блока Increment Decrement

Рис. 8. Настройки функционального блока Increment Decrement

Функциональный блок Decoder. Задается 2 разрядная входная шина типа Unsigned Integer и декодируемая величина — десятичная единица

Рис. 9. Функциональный блок Decoder. Задается 2 разрядная входная шина типа Unsigned Integer и декодируемая величина — десятичная единица

Линия задержки на основе двухпортовой памяти и мультиплексора показана на рис. 10. Двухпортовая память позволяет одновременно считывать информацию из ОЗУ и записывать ее по разным адресам. Изменения на шине rd_add(1:0) связаны с чтением содержимого ОЗУ и доступны на выходе, а на шине wr_add(1:0) — с записью информации в ОЗУ. В рассматриваемом примере операции чтения и записи информации в ОЗУ разделены во времени элементом задержки. По умолчанию первоначально память инициализируется вектором [0 0 0 0]. На рис. 11 показаны настройки функционального блока Dual-Port RAM.

Линия задержки на основе двухпортовой памяти (функциональный блок Dual-Port RAM) и мультиплексора (функциональный блок Multiplexer)

Рис. 10. Линия задержки на основе двухпортовой памяти (функциональный блок Dual-Port RAM) и мультиплексора (функциональный блок Multiplexer)

Настройки функционального блока Dual-Port RAM

Рис. 11. Настройки функционального блока Dual-Port RAM:
а) закладка Main (задается четыре 8 разрядных слова, тип памяти Auto);
б) закладка Registers and Enables (выходной порт шины данных ОЗУ — регистерный)

Настройки функционального блока LUT показаны на рис. 12. Выходные шины данных функциональных блоков Dual-Port RAM и LUT должны быть регистерные (рис. 11б и 12б). Это обеспечивает правильность функционирования блока MultiplyAccumulate. Настройки функционального блока MultiplyAccumulate, выполняющего операции умножения с накоплением, показаны на рис. 13. Информационные потоки вычислений в структуре КИХ-фильтра представлены на рис. 14.

Настройки функционального блока LUT, выполняющего функцию ПЗУ для хранения коэффициентов фильтра [-2 -1 7 6]

Рис. 12. Настройки функционального блока LUT, выполняющего функцию ПЗУ для хранения коэффициентов фильтра [-2 -1 7 6]:
а) закладка Main (задаются следующие параметры: 2-разрядная адресная шина, коэффициенты фильтра — целые десятичные числа со знаком, представляются с 4-битной точностью);
б) закладка Implementation (выходная шина данных — регистерная, опция RegisterData)

Настройки функционального блока, выполняющего операции умножения с накоплением (MultiplyAccumulate). Задается разрядность шин A и В (четыре бита, целые числа со знаком) и точность представления результата вычисления (девять бит)

Рис. 13. Настройки функционального блока, выполняющего операции умножения с накоплением (MultiplyAccumulate). Задается разрядность шин A и В (четыре бита, целые числа со знаком) и точность представления результата вычисления (девять бит)

Информационные потоки

Рис. 14. Информационные потоки:
а) сигнал, подлежащий фильтрации после операции задержки;
б), в) –rd_add и wr_add — адреса на шинах, связанных с операциями чтения и записи информации в ОЗУ;
г) shift_en — cигнал разрешения записи новых значений сигнала, подлежащего фильтрации в линию задержки;
д) shift_reg — значения на выходной шине ОЗУ (шина q_a — рис. 10);
е) data_mux — сигнал на выходе мультиплексора или значения на входной шине данных ОЗУ (шина d — рис. 10);
ж) lut — коэффициенты КИХ-фильтра;
з) mac — значения сигнала после операции умножения и накопления;
и) registered — профильтрованные значения (обозначение сигналов согласно рис. 6 и рис. 10)

На рис. 15 показано имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

Рис. 15. Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на четыре отвода. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

Работа с закладкой Simple компилятора сигналов (функциональный блок SignalCompiler). При компиляции используются мегафункции с применением языка AHDL, поэтому проект будет состоять из разнородных файлов с расширениями .tdf, .vhd и др. Поскольку в САПР версии Altera Quartus 12.1 сборки 177 отсутствует встроенный векторный редактор, то воспользуемся версией Altera Quarus II 13.1. На рис. 16 показано функциональное моделирование КИХ-фильтра на четыре отвода в САПР Quartus II 13.1. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д. Сравнивая рис. 15 и 16, можно сделать вывод, что имитационная и функциональная модели фильтров работают корректно.

Функциональное моделирование КИХ-фильтра на четыре отвода в САПР Quartus II 13.1. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

Рис. 16. Функциональное моделирование КИХ-фильтра на четыре отвода в САПР Quartus II 13.1. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

 

Если дополнительно установлена система цифрового моделирования Altera-ModelSim, то необходимо добавить в модель функциональный блок-генератор испытательных стендов (Testbench cenerator). На рис. 17 показано создание тестбенча проекта в автоматическом режиме для последующей симуляции в Altera-ModelSim. На рис. 18 показано функциональное моделирование КИХ-фильтра на четыре отвода в Altera-ModelSim.

Генератор испытательных стендов (функциональный блок Testbench Generator)

Рис. 17. Генератор испытательных стендов (функциональный блок Testbench Generator)

Функциональное моделирование КИХ-фильтра на четыре отвода в Altera-ModelSim. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

Рис. 18. Функциональное моделирование КИХ-фильтра на четыре отвода в Altera-ModelSim. На вход фильтра поступает сигнал –5, 3, 1, 0, 0, 0 и т. д. Правильные значения на выходе фильтра: 10, –1, –40, –10, 26, 6, 0 и т. д.

В таблицах 1 и 2 [3] даны сравнительные оценки ресурсов ПЛИС при реализации КИХ-фильтра на четыре отвода с использованием пакета расширения Altera DSP Builder и System Generator IDS системы визуально-имитационного моделирования Matlab/Simulink.

 

Выводы

Пакет расширения Altera DSP Builder системы визуально-имитационного моделирования Matlab/Simulink является мощным инструментом для создания устройств цифровой обработки сигналов и по своим возможностям не уступает Xilinx System Generator.

Имитационная модель на основе функционального блока n‑tap Dual Port Memory MAC FIR имеет отличие в организации управления работой линии задержки, заключающееся в том, что вначале происходит операция считывания информации, хранящейся в памяти ОЗУ, по всем адресам, а затем — операция записи нового значения сигнала (рис. 5) по конкретному адресу. На основе рассматриваемого примера (FIR_MAC32.mdl) происходит одновременное считывание и запись, разделенные во времени элементом задержки. В первом случае требуется более сложный управляющий автомат (рис. 3), а во втором — необходим простейший управляющий автомат и обратная связь, заключающаяся в подаче данных с выходной шины ОЗУ на вход через мультиплексор, на другой вход которого подается сигнал, подлежащий фильтрации.

Литература
  1. Тарасов И. Проектирование для ПЛИС Xilinx: системные аспекты и уровень регистровых передач // Компоненты и технологии. № 2.
  2. Altera DSP Builder Handbook.Volume 1: Introduc-tion to DSP Builder. Version 13.1. Nov. 2013.
  3. Строгонов А., Цыбин С., Городков П. Проектирование последовательных КИХ-фильтров в системе Xilinx System Generator с применением библиотеки Reference BlockSet/DSP // Компоненты и технологии. 2015. № 6.
  4. Строгонов А., Цыбин С., Городков П. Разработка КИХ-фильтров в системе Xilinx System Generator САПР ISE Design Suite // Компоненты и технологии. 2015. № 5.

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

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