Выпуск #3/2020
А. Строгонов
Применение Altera DSP Builder системы Matlab / S imulink для разработки имитационной модели КИХ‑фильтра на параллельной распределенной арифметике
Применение Altera DSP Builder системы Matlab / S imulink для разработки имитационной модели КИХ‑фильтра на параллельной распределенной арифметике
Просмотры: 1244
DOI: 10.22184/1992-4178.2020.194.3.176.187
Применение Altera DSP Builder системы Matlab / Simulink для разработки имитационной модели КИХ‑фильтра на параллельной распределенной арифметике
А. Строгонов, д. т. н.
Пакет расширения Altera DSP Builder системы визуально-имитационного моделирования Matlab / Simulink позволяет быстро создать имитационную модель сложного цифрового устройства, такого как КИХ‑фильтр, на последовательной и параллельной распределенной арифметике с извлечением VHDL‑кода. Преимущества последовательной и параллельной распределенной арифметики, реализованной в проекте на базе ПЛИС, заключаются в сокращении используемых ресурсов и повышении быстродействия. Рассмотрим пример разработки КИХ‑фильтра на параллельной распределенной арифметике с использованием методологии объектно-ориентированного проектирования ЦОС‑устройств с применением Altera DSP Builder системы Matlab / Simulink, сравним его характеристики с фильтром, реализованным на ЦОС‑блоках с помощью мегафункции FIR II системы Quartus Prime.
Реализация КИХ‑фильтров на параллельной распределенной арифметике позволяет достичь рекордного быстродействия для ПЛИС за счет использования «безумножительных» схем умножения. Причем быстродействие не снижается по мере увеличения числа отводов и коэффициентов фильтра, а также точности представления входных данных. Это актуально для проектов на базе бюджетных серий ПЛИС (особенно отечественных производителей), в которых отсутствуют аппаратные умножители или их количество ограничено, но в них представлено большое количество логических ресурсов или блочной памяти.
Такой подход позволяет также отказаться от применения при разработке КИХ‑фильтров различных мегафункций, использующих аппаратные умножители, встроенные в ЦОС‑блоки ПЛИС (ALTMULT_ADD, ALTMULT_ACCUM), например в САПР Quartus II, или мегаядер FIR Compiler либо FIR II (в Quartus Prime).
В частности, в ПЛИС российского производства серии 5576 нет встроенных умножителей, а ПЛИС серии 5578 содержат от 14 до 66 умножителей с размерностью операндов 18 × 18. На практике требуются КИХ‑фильтры с крутым спадом АЧХ, что приводит к увеличению числа отводов до 110 и более.
ПЛИС Intel серии Cyclone 10GX типа 10CX220 2019 года выпуска содержат 192 ЦОС‑блока с переменной точностью, количество встроенных умножителей с размерностью операндов 18 × 19 – 384 (или 192 для размерности 27 × 27), с аппаратной поддержкой формата с плавающей запятой. ПЛИС СнК Intel серии Stratix типа 10DX 2019 года выпуска содержат уже 11 520 умножителей с размерностью операндов 18 × 19.
Примеры применения распределенной арифметики содержатся во всех руководствах пользователя зарубежных ПЛИС. В частности, инструмент System Generator для разработки и отладки ЦОС‑систем в базисе ПЛИС Xilinx содержит функциональный блок FIR Compiler v5.0 – аналог функции FIR Compiler v5.0 генератора параметризированных ядер XLogiCORE IP [1]. В справочной системе пакета расширения Altera DSP Builder также можно найти примеры КИХ‑фильтров на основе последовательной распределенной арифметики (по адресу: quartus\dsp_builder\DesignExamples\Demos\Filters\DA32).
Однако поскольку в современных ПЛИС содержится огромное число ЦОС‑блоков, в новых версиях САПР, например от компаний Xilinx или Intel (Quartus Prime), и пакетах расширения системы Matlab / Simulink предпочтение отдается систолическим и обратнотранспонированным структурам КИХ‑фильтров с использованием MAC‑блоков.
Чаще других применяется транспонированная схема, позволяющая эффективно распараллелить вычисления. Например, в САПР ПЛИС Xilinx ISE14.4 функция FIR Compiler v6.3, входящая в состав генератора параметризированных ядер XLogiCORE IP, поддерживает такие структуры фильтров. Они получили название «транспонированные структуры, основанные на операциях умножения и накопления» (Transpose Multiply-Accumulate Architecture).
Инструмент System Generator от Xilinx подходит для разработки последовательных КИХ‑фильтров в формате с фиксированной запятой с использованием параметризованных функциональных блоков n-tap MAC FIR Filter и n-tap Dual Port Memory MAC FIR Filter. В функциональных блоках FIR Compiler версии v6.х и старше поддержка распределенной арифметики не предусмотрена.
Покажем, что КИХ‑фильтры на основе параллельной распределенной арифметики демонстрируют наивысшее быстродействие. Для этого рассмотрим пример разработки КИХ‑фильтра на параллельной распределенной арифметике с использованием методологии объектно-ориентированного проектирования цифровых устройств обработки сигналов с применением пакета расширения Altera DSP Builder версии 12.1 системы визуально-имитационного моделирования Matlab / Simulink (версия 8.0.0.783 (R2012b)). Из модели извлечем VHDL‑код и реализуем проект в САПР Quartus II ver.13.0 (сборка 156). Для этого используем ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8, содержащую 56 480 адаптивных логических модулей (АЛМ). Сравним быстродействие фильтра при его реализации в ПЛИС серии Cyclone V на ЦОС‑блоках с помощью мегафункции FIR II САПР Quartus Prime v.15.0.0 (сборка 145).
Уравнение КИХ‑фильтра (нерекурсивного цифрового фильтра с конечно-импульсной характеристикой) представляется как арифметическая сумма произведений [1, 2]:
, (1)
где y – отклик цепи; xk – k-я входная переменная (сигнал, подлежащий фильтрации); Ck – весовой коэффициент k-й входной переменной (постоянный для всех n); K – число отводов фильтра. Для КИХ‑фильтра на четыре отвода уравнение фильтрации будет выглядеть следующим образом: . Предположим, что коэффициенты фильтра – целочисленные со знаком и равны: C1 = –2, C2 = –1, C3 = 7 и C4 = 6.
В случае параллельной распределенной арифметики уравнение для КИХ‑фильтра на четыре отвода (разрядность 4 бита) записывается в виде [1, 2]:
, (2)
где частичные произведения P0, P1, P2 и P3 равны:
(3)
(4)
(5)
(6)
При реализации КИХ‑фильтра на базе параллельной распределенной арифметики на четыре отвода необходимы четыре идентичных массива памяти, параллельно адресуемых всеми битами всех входных переменных, и свертывающее иерархическое дерево многоразрядных сумматоров, осуществляющих суммирование частичных произведений P0, P1, P2 и P3.
В данном случае результат формируется за один такт, тем самым достигается наибольшее быстродействие структуры.
На рис. 1 показана линия задержки КИХ‑фильтра, на рис. 2 – принцип подключения выходов линии задержки КИХ‑фильтра на четыре отвода к 4-входовым LUT. Разрядность входной шины данных N = 4. Входные данные на линии задержки представлены с 4-битной точностью параллельным кодом.
На рис. 3 представлена структура КИХ‑фильтра на четыре отвода, четыре бита на распределенной параллельной арифметике. Фильтр состоит из четырех однотипных 4-входовых LUT, используемых для формирования частичных произведений P0, P1, P2 и P3 и согласно формулам (2) – (6). «Минус» перед P3 на рис. 3 означает перевод P3 в дополнительный код. 4-входовая LUT обеспечивает 16 частичных произведений, представляющих собой комбинации сумм коэффициентов фильтра с 8-битной точностью плюс два бита. Таким образом, размерность 4-входовой LUT составляет 16 × 10. Для суммирования значений с выходов LUT в соответствии с их весом и знаком используются два 12- и один 14-разрядный сумматоры с коррекцией разрядности на входах, чтобы исключить переполнение.
На рис. 4 показаны разрабатываемая имитационная модель КИХ‑фильтра на параллельной распределенной арифметике (обозначена зеленым цветом), построенная по схеме, приведенной на рис. 3, и модель КИХ‑фильтра на последовательной распределенной арифметике (обозначена красным цветом) из [1].
Для краткости модель на основе параллельной арифметики назовем PDA, а на последовательной – SDA. Модели работают на разных скоростях. Для PDA‑модели временной шаг симуляции в Matlab / Simulink установлен равным 1 с, а для SDA‑модели – 0,25 с. Шаг симуляции для SDA‑модели выбирается исходя из того, что отфильтрованные значения на выходе фильтра появляются через четыре такта синхроимпульса. За интервал дискретизации входного сигнала процесс вычисления КИХ‑фильтрами на моделях PDA и SDA должен завершиться. Интервал дискретизации единичного сигнала (дельта-функция) и ЛЧМ‑сигнала (sample time) равен 1 с, поэтому на схеме рис. 4 они также отмечены зеленым цветом.
Для корректной работы имитационной модели КИХ‑фильтра на SDA необходимо использовать ФАПЧ для генерации дочернего синхросигнала. Для этого в модель добавлен блок Clock AlteraBlockset (Clock_Derived). В поле Base Clock Multiplicand Denomerator функционального блока Clock AlteraBlockset подставим значение 4. С помощью функционального блока Tsamp устанавливается частота в четыре раза больше, чем у модели PDA. Имя дочернего синхросигнала: Clock_Derived.
Для проверки работы КИХ‑фильтров на PDA и SDA, построенных с помощью пакета расширения Altera DSP Builder, дополнительно подключен функциональный блок Digital Filter (прямая форма) из библиотеки Simulink.
Входной сигнал умножается на масштабный множитель 7 (в системе Matlab: 2^3–1), отфильтрованный сигнал также делится на это значение. Масштабный множитель подбирался экспериментально, исходя из 4-разрядной точности представления входных отсчетов сигнала с учетом знака числа (в дополнительном коде 4-разрядное двоичное число перекрывает диапазон –8…+7).
Для модели КИХ‑фильтра на PDA коэффициенты не масштабируются, а для КИХ‑фильтра на SDA применяется специальная техника масштабирования, подробно рассмотренная в [3, 4].
Модель состоит из линии задержки на функциональных блоках Delay, служащих регистрами, блоков Bus Splitter, разделяющих 4-разрядные отводы фильтра на битовые значения, генераторов булевых функций (LUT), трех устройств сдвига данных Barrel Shifter влево на один (2 шт.) и на два разряда (что равносильно умножению на 2 и 4 соответственно), а также умножителя для учета знака числа. На рис. 5 показаны результаты имитационного моделирования фильтрации сигнала: ЛЧМ‑сигнал; модель КИХ‑фильтра на PDА; модель Digital Filter из библиотеки Simulink; модель КИХ‑фильтра на SDA. Совпадение результатов фильтрации подтверждает правильность работы имитационных моделей.
В дальнейшем от умножителя на константу –1 необходимо отказаться, так как при синтезе VHDL‑кода будет использоваться умножитель ЦОС‑блока. На рис. 6 показаны изменения в модели, которые необходимо внести, чтобы отказаться от применения умножителя для учета знака частичного произведения путем его замены на сумматор / вычитатель. Такая замена не влияет на логику работы устройства.
Битовые сигналы с выходов разделителей Bus Splitter подключены на основе правила: все младшие разряды всех четырех отводов подключены к 4-входовой LUT (Bit Level Sum of Product), формирующей частичное произведение P0; все старшие разряды всех четырех отводов подключены к 4-входовой LUT, формирующей частичное произведение P1, и так далее, пока не сформируется частичное произведение P3.
Рассмотрим блок BaseClock. Для функционального моделирования в Altera-ModelSim задаются синхросигнал с периодом 20 нс (поле Real-World Clock Period) и временной шаг симуляции в Matlab / Simulink, равный 1 с (поле Simulink Sample Time).
На рис. 7 показано окно настройки содержимого LUT. Коэффициенты представлены с 10-разрядной точностью, а суммы коэффициентов с 12-разрядной. Для такого фильтра требуются четыре идентичные LUT.
Линия задержки проектируемого фильтра построена на регистрах из функциональных блоков Delay. Число уровней конвейеризации блока – один. На рис. 8 представлены настройки функционального блока Bus Splitter (шинный разделитель), разделяющего 4-разрядную шину на биты. Таких блоков в модели четыре.
На рис. 9 показаны настройки 12-разрядного устройства сдвига данных влево на один разряд, что равносильно умножению на два. Направление сдвига определяется портом direction. Дистанция сдвига задается портом distance (d = 1). На рис. 10 представлены настройки 14-разрядного устройства сдвига влево на два разряда, что равносильно умножению на четыре. Суммирование результатов сдвига выполняет дерево сумматоров, показанное на рис. 4.
Из имитационной модели КИХ‑фильтра на PDA (рис. 6) извлечем VHDL‑код с помощью функционального блока SignalCompiler и реализуем проект в САПР Quartus II ver.13.0 (рис. 11).
На рис. 12 представлена оценка задействованных ресурсов на этапе анализа и синтеза в САПР при реализации проекта в базис ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8 (содержит 156 ЦОС‑блоков). Для проекта КИХ‑фильтра на PDA требуются 33 АЛМ, из них адаптивных LUT в режиме 4-входовых LUT – 16, в режиме меньше или равно 3 LUT – 43, выделенных регистров АЛМ – 16, ЦОС- блоков – 0. Архитектурное планирование кристалла ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8 показывает, что в проекте задействуются логические ресурсы (АЛМ) и блочная память типа M10K.
Разработаем проект в САПР Quartus Prime v.15.0 (рис. 13) с использованием мегаядра FIR II (altera_fir_compiler_ii), позволяющего быстро создавать КИХ‑фильтры прямой формы с использованием аппаратных умножителей в ЦОС‑блоках. Коэффициенты фильтра –2, –1, 7 и 6 загрузим из предварительно созданного текстового файла в формате .txt. Реализуем проект в такой же ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8. На рис. 14 показаны настройки мегаядра FIR II САПР Quartus Prime v.15.0 (АЧХ фильтра, закладка «коэффициенты»). На рис. 15 показано архитектурное планирование кристалла ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8. Задействуются АЛМ и два ЦОС‑блока (четыре умножителя).
Оценка ресурсов, задействованных на этапе анализа и синтеза при реализации проекта в базис ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8 с использованием мегаядра FIR II, показывает, что для реализации проекта требуются 22 АЛМ, из них адаптивных LUT для комбинационной логики в режиме меньше или равно трем LUT – 13, выделенных регистров АЛМ для последовательностной логики – 43 и ЦОС‑блоков – 2 (см. рис. 12).
В табл.1 приведена оценка максимальной рабочей частоты и рабочей частоты в наихудшем случае для функциональных моделей КИХ‑фильтра на SDA, PDA и ЦОС‑блоках (мегаядро FIR II) при использовании медленной временной модели в условиях критического напряжения питания ядра ПЛИС 1,1 B и температуры 85 °C (модель slow 1100 mV 85C), полученных с помощью TimeQuest. Анализ представленных в таблице данных показывает, что возможен двукратный выигрыш по быстродействию в случае использования КИХ‑фильтра на PDA.
ЛИТЕРАТУРА
Реализация алгоритмов цифровой обработки сигналов в базисе программируемых логических интегральных схем: Учебное пособие / 4-е изд., испр. и доп. – СПб: Изд-во «Лань», 2019. 352 с.
Строгонов А., Быстрицкий А. КИХ‑фильтр на распределенной арифметике: проектируем сами // Компоненты и технологии. 2013. № 3. С. 131–138.
Строгонов А., Городков П. Проектирование цифровых устройств обработки сигналов в системе визуально-имитационного моделирования Matlab / Simulink с использованием Altera DSP Builder // Компоненты и технологии. 2018. № 12. С. 22–27.
Строгонов А., Городков П. Проектирование КИХ‑фильтра на распределенной арифметике в системе визуально-имитационного моделирования Matlab / Simulink с использованием Altera DSP Builder // Компоненты и технологии. 2019. № 2. С. 88–94.
А. Строгонов, д. т. н.
Пакет расширения Altera DSP Builder системы визуально-имитационного моделирования Matlab / Simulink позволяет быстро создать имитационную модель сложного цифрового устройства, такого как КИХ‑фильтр, на последовательной и параллельной распределенной арифметике с извлечением VHDL‑кода. Преимущества последовательной и параллельной распределенной арифметики, реализованной в проекте на базе ПЛИС, заключаются в сокращении используемых ресурсов и повышении быстродействия. Рассмотрим пример разработки КИХ‑фильтра на параллельной распределенной арифметике с использованием методологии объектно-ориентированного проектирования ЦОС‑устройств с применением Altera DSP Builder системы Matlab / Simulink, сравним его характеристики с фильтром, реализованным на ЦОС‑блоках с помощью мегафункции FIR II системы Quartus Prime.
Реализация КИХ‑фильтров на параллельной распределенной арифметике позволяет достичь рекордного быстродействия для ПЛИС за счет использования «безумножительных» схем умножения. Причем быстродействие не снижается по мере увеличения числа отводов и коэффициентов фильтра, а также точности представления входных данных. Это актуально для проектов на базе бюджетных серий ПЛИС (особенно отечественных производителей), в которых отсутствуют аппаратные умножители или их количество ограничено, но в них представлено большое количество логических ресурсов или блочной памяти.
Такой подход позволяет также отказаться от применения при разработке КИХ‑фильтров различных мегафункций, использующих аппаратные умножители, встроенные в ЦОС‑блоки ПЛИС (ALTMULT_ADD, ALTMULT_ACCUM), например в САПР Quartus II, или мегаядер FIR Compiler либо FIR II (в Quartus Prime).
В частности, в ПЛИС российского производства серии 5576 нет встроенных умножителей, а ПЛИС серии 5578 содержат от 14 до 66 умножителей с размерностью операндов 18 × 18. На практике требуются КИХ‑фильтры с крутым спадом АЧХ, что приводит к увеличению числа отводов до 110 и более.
ПЛИС Intel серии Cyclone 10GX типа 10CX220 2019 года выпуска содержат 192 ЦОС‑блока с переменной точностью, количество встроенных умножителей с размерностью операндов 18 × 19 – 384 (или 192 для размерности 27 × 27), с аппаратной поддержкой формата с плавающей запятой. ПЛИС СнК Intel серии Stratix типа 10DX 2019 года выпуска содержат уже 11 520 умножителей с размерностью операндов 18 × 19.
Примеры применения распределенной арифметики содержатся во всех руководствах пользователя зарубежных ПЛИС. В частности, инструмент System Generator для разработки и отладки ЦОС‑систем в базисе ПЛИС Xilinx содержит функциональный блок FIR Compiler v5.0 – аналог функции FIR Compiler v5.0 генератора параметризированных ядер XLogiCORE IP [1]. В справочной системе пакета расширения Altera DSP Builder также можно найти примеры КИХ‑фильтров на основе последовательной распределенной арифметики (по адресу: quartus\dsp_builder\DesignExamples\Demos\Filters\DA32).
Однако поскольку в современных ПЛИС содержится огромное число ЦОС‑блоков, в новых версиях САПР, например от компаний Xilinx или Intel (Quartus Prime), и пакетах расширения системы Matlab / Simulink предпочтение отдается систолическим и обратнотранспонированным структурам КИХ‑фильтров с использованием MAC‑блоков.
Чаще других применяется транспонированная схема, позволяющая эффективно распараллелить вычисления. Например, в САПР ПЛИС Xilinx ISE14.4 функция FIR Compiler v6.3, входящая в состав генератора параметризированных ядер XLogiCORE IP, поддерживает такие структуры фильтров. Они получили название «транспонированные структуры, основанные на операциях умножения и накопления» (Transpose Multiply-Accumulate Architecture).
Инструмент System Generator от Xilinx подходит для разработки последовательных КИХ‑фильтров в формате с фиксированной запятой с использованием параметризованных функциональных блоков n-tap MAC FIR Filter и n-tap Dual Port Memory MAC FIR Filter. В функциональных блоках FIR Compiler версии v6.х и старше поддержка распределенной арифметики не предусмотрена.
Покажем, что КИХ‑фильтры на основе параллельной распределенной арифметики демонстрируют наивысшее быстродействие. Для этого рассмотрим пример разработки КИХ‑фильтра на параллельной распределенной арифметике с использованием методологии объектно-ориентированного проектирования цифровых устройств обработки сигналов с применением пакета расширения Altera DSP Builder версии 12.1 системы визуально-имитационного моделирования Matlab / Simulink (версия 8.0.0.783 (R2012b)). Из модели извлечем VHDL‑код и реализуем проект в САПР Quartus II ver.13.0 (сборка 156). Для этого используем ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8, содержащую 56 480 адаптивных логических модулей (АЛМ). Сравним быстродействие фильтра при его реализации в ПЛИС серии Cyclone V на ЦОС‑блоках с помощью мегафункции FIR II САПР Quartus Prime v.15.0.0 (сборка 145).
Уравнение КИХ‑фильтра (нерекурсивного цифрового фильтра с конечно-импульсной характеристикой) представляется как арифметическая сумма произведений [1, 2]:
, (1)
где y – отклик цепи; xk – k-я входная переменная (сигнал, подлежащий фильтрации); Ck – весовой коэффициент k-й входной переменной (постоянный для всех n); K – число отводов фильтра. Для КИХ‑фильтра на четыре отвода уравнение фильтрации будет выглядеть следующим образом: . Предположим, что коэффициенты фильтра – целочисленные со знаком и равны: C1 = –2, C2 = –1, C3 = 7 и C4 = 6.
В случае параллельной распределенной арифметики уравнение для КИХ‑фильтра на четыре отвода (разрядность 4 бита) записывается в виде [1, 2]:
, (2)
где частичные произведения P0, P1, P2 и P3 равны:
(3)
(4)
(5)
(6)
При реализации КИХ‑фильтра на базе параллельной распределенной арифметики на четыре отвода необходимы четыре идентичных массива памяти, параллельно адресуемых всеми битами всех входных переменных, и свертывающее иерархическое дерево многоразрядных сумматоров, осуществляющих суммирование частичных произведений P0, P1, P2 и P3.
В данном случае результат формируется за один такт, тем самым достигается наибольшее быстродействие структуры.
На рис. 1 показана линия задержки КИХ‑фильтра, на рис. 2 – принцип подключения выходов линии задержки КИХ‑фильтра на четыре отвода к 4-входовым LUT. Разрядность входной шины данных N = 4. Входные данные на линии задержки представлены с 4-битной точностью параллельным кодом.
На рис. 3 представлена структура КИХ‑фильтра на четыре отвода, четыре бита на распределенной параллельной арифметике. Фильтр состоит из четырех однотипных 4-входовых LUT, используемых для формирования частичных произведений P0, P1, P2 и P3 и согласно формулам (2) – (6). «Минус» перед P3 на рис. 3 означает перевод P3 в дополнительный код. 4-входовая LUT обеспечивает 16 частичных произведений, представляющих собой комбинации сумм коэффициентов фильтра с 8-битной точностью плюс два бита. Таким образом, размерность 4-входовой LUT составляет 16 × 10. Для суммирования значений с выходов LUT в соответствии с их весом и знаком используются два 12- и один 14-разрядный сумматоры с коррекцией разрядности на входах, чтобы исключить переполнение.
На рис. 4 показаны разрабатываемая имитационная модель КИХ‑фильтра на параллельной распределенной арифметике (обозначена зеленым цветом), построенная по схеме, приведенной на рис. 3, и модель КИХ‑фильтра на последовательной распределенной арифметике (обозначена красным цветом) из [1].
Для краткости модель на основе параллельной арифметики назовем PDA, а на последовательной – SDA. Модели работают на разных скоростях. Для PDA‑модели временной шаг симуляции в Matlab / Simulink установлен равным 1 с, а для SDA‑модели – 0,25 с. Шаг симуляции для SDA‑модели выбирается исходя из того, что отфильтрованные значения на выходе фильтра появляются через четыре такта синхроимпульса. За интервал дискретизации входного сигнала процесс вычисления КИХ‑фильтрами на моделях PDA и SDA должен завершиться. Интервал дискретизации единичного сигнала (дельта-функция) и ЛЧМ‑сигнала (sample time) равен 1 с, поэтому на схеме рис. 4 они также отмечены зеленым цветом.
Для корректной работы имитационной модели КИХ‑фильтра на SDA необходимо использовать ФАПЧ для генерации дочернего синхросигнала. Для этого в модель добавлен блок Clock AlteraBlockset (Clock_Derived). В поле Base Clock Multiplicand Denomerator функционального блока Clock AlteraBlockset подставим значение 4. С помощью функционального блока Tsamp устанавливается частота в четыре раза больше, чем у модели PDA. Имя дочернего синхросигнала: Clock_Derived.
Для проверки работы КИХ‑фильтров на PDA и SDA, построенных с помощью пакета расширения Altera DSP Builder, дополнительно подключен функциональный блок Digital Filter (прямая форма) из библиотеки Simulink.
Входной сигнал умножается на масштабный множитель 7 (в системе Matlab: 2^3–1), отфильтрованный сигнал также делится на это значение. Масштабный множитель подбирался экспериментально, исходя из 4-разрядной точности представления входных отсчетов сигнала с учетом знака числа (в дополнительном коде 4-разрядное двоичное число перекрывает диапазон –8…+7).
Для модели КИХ‑фильтра на PDA коэффициенты не масштабируются, а для КИХ‑фильтра на SDA применяется специальная техника масштабирования, подробно рассмотренная в [3, 4].
Модель состоит из линии задержки на функциональных блоках Delay, служащих регистрами, блоков Bus Splitter, разделяющих 4-разрядные отводы фильтра на битовые значения, генераторов булевых функций (LUT), трех устройств сдвига данных Barrel Shifter влево на один (2 шт.) и на два разряда (что равносильно умножению на 2 и 4 соответственно), а также умножителя для учета знака числа. На рис. 5 показаны результаты имитационного моделирования фильтрации сигнала: ЛЧМ‑сигнал; модель КИХ‑фильтра на PDА; модель Digital Filter из библиотеки Simulink; модель КИХ‑фильтра на SDA. Совпадение результатов фильтрации подтверждает правильность работы имитационных моделей.
В дальнейшем от умножителя на константу –1 необходимо отказаться, так как при синтезе VHDL‑кода будет использоваться умножитель ЦОС‑блока. На рис. 6 показаны изменения в модели, которые необходимо внести, чтобы отказаться от применения умножителя для учета знака частичного произведения путем его замены на сумматор / вычитатель. Такая замена не влияет на логику работы устройства.
Битовые сигналы с выходов разделителей Bus Splitter подключены на основе правила: все младшие разряды всех четырех отводов подключены к 4-входовой LUT (Bit Level Sum of Product), формирующей частичное произведение P0; все старшие разряды всех четырех отводов подключены к 4-входовой LUT, формирующей частичное произведение P1, и так далее, пока не сформируется частичное произведение P3.
Рассмотрим блок BaseClock. Для функционального моделирования в Altera-ModelSim задаются синхросигнал с периодом 20 нс (поле Real-World Clock Period) и временной шаг симуляции в Matlab / Simulink, равный 1 с (поле Simulink Sample Time).
На рис. 7 показано окно настройки содержимого LUT. Коэффициенты представлены с 10-разрядной точностью, а суммы коэффициентов с 12-разрядной. Для такого фильтра требуются четыре идентичные LUT.
Линия задержки проектируемого фильтра построена на регистрах из функциональных блоков Delay. Число уровней конвейеризации блока – один. На рис. 8 представлены настройки функционального блока Bus Splitter (шинный разделитель), разделяющего 4-разрядную шину на биты. Таких блоков в модели четыре.
На рис. 9 показаны настройки 12-разрядного устройства сдвига данных влево на один разряд, что равносильно умножению на два. Направление сдвига определяется портом direction. Дистанция сдвига задается портом distance (d = 1). На рис. 10 представлены настройки 14-разрядного устройства сдвига влево на два разряда, что равносильно умножению на четыре. Суммирование результатов сдвига выполняет дерево сумматоров, показанное на рис. 4.
Из имитационной модели КИХ‑фильтра на PDA (рис. 6) извлечем VHDL‑код с помощью функционального блока SignalCompiler и реализуем проект в САПР Quartus II ver.13.0 (рис. 11).
На рис. 12 представлена оценка задействованных ресурсов на этапе анализа и синтеза в САПР при реализации проекта в базис ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8 (содержит 156 ЦОС‑блоков). Для проекта КИХ‑фильтра на PDA требуются 33 АЛМ, из них адаптивных LUT в режиме 4-входовых LUT – 16, в режиме меньше или равно 3 LUT – 43, выделенных регистров АЛМ – 16, ЦОС- блоков – 0. Архитектурное планирование кристалла ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8 показывает, что в проекте задействуются логические ресурсы (АЛМ) и блочная память типа M10K.
Разработаем проект в САПР Quartus Prime v.15.0 (рис. 13) с использованием мегаядра FIR II (altera_fir_compiler_ii), позволяющего быстро создавать КИХ‑фильтры прямой формы с использованием аппаратных умножителей в ЦОС‑блоках. Коэффициенты фильтра –2, –1, 7 и 6 загрузим из предварительно созданного текстового файла в формате .txt. Реализуем проект в такой же ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8. На рис. 14 показаны настройки мегаядра FIR II САПР Quartus Prime v.15.0 (АЧХ фильтра, закладка «коэффициенты»). На рис. 15 показано архитектурное планирование кристалла ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8. Задействуются АЛМ и два ЦОС‑блока (четыре умножителя).
Оценка ресурсов, задействованных на этапе анализа и синтеза при реализации проекта в базис ПЛИС серии Cyclone V типа 5CGXFC7C7F23C8 с использованием мегаядра FIR II, показывает, что для реализации проекта требуются 22 АЛМ, из них адаптивных LUT для комбинационной логики в режиме меньше или равно трем LUT – 13, выделенных регистров АЛМ для последовательностной логики – 43 и ЦОС‑блоков – 2 (см. рис. 12).
В табл.1 приведена оценка максимальной рабочей частоты и рабочей частоты в наихудшем случае для функциональных моделей КИХ‑фильтра на SDA, PDA и ЦОС‑блоках (мегаядро FIR II) при использовании медленной временной модели в условиях критического напряжения питания ядра ПЛИС 1,1 B и температуры 85 °C (модель slow 1100 mV 85C), полученных с помощью TimeQuest. Анализ представленных в таблице данных показывает, что возможен двукратный выигрыш по быстродействию в случае использования КИХ‑фильтра на PDA.
ЛИТЕРАТУРА
Реализация алгоритмов цифровой обработки сигналов в базисе программируемых логических интегральных схем: Учебное пособие / 4-е изд., испр. и доп. – СПб: Изд-во «Лань», 2019. 352 с.
Строгонов А., Быстрицкий А. КИХ‑фильтр на распределенной арифметике: проектируем сами // Компоненты и технологии. 2013. № 3. С. 131–138.
Строгонов А., Городков П. Проектирование цифровых устройств обработки сигналов в системе визуально-имитационного моделирования Matlab / Simulink с использованием Altera DSP Builder // Компоненты и технологии. 2018. № 12. С. 22–27.
Строгонов А., Городков П. Проектирование КИХ‑фильтра на распределенной арифметике в системе визуально-имитационного моделирования Matlab / Simulink с использованием Altera DSP Builder // Компоненты и технологии. 2019. № 2. С. 88–94.
Отзывы читателей