Разработка КИХ-фильтров в системе Xilinx System Generator САПР ISE Design Suite

PDF версия
Цель данной статьи — показать, как влияет формат представления чисел, используемый при разработке устройств ЦОС в системе Matlab/Simulink с применением библиотек System Generator, на результаты функционального моделирования в САПР ПЛИС Xilinx ISE Design Suite 14.4.

System Generator IDS 14.4 — инструмент для разработки и отладки высокопроизводительных систем цифровой обработки сигналов в базисе ПЛИС фирмы Xilinx в системе визуально-имитационного моделирования Matlab/Simulink (версия 8.0.0.783 (R2012b)). Программный пакет обеспечивает высокоуровневое представление проекта, абстрагированное от конкретной аппаратной платформы, которое автоматически компилируется в ПЛИС Xilinx [1, 2, 3, 4, 5, 6]. System Generator является частью технологии XtremeDSP фирмы Xilinx.

System Generator сокращает время симуляции проектов за счет hardware-in-the-loop и HDL co-simulation. System Generator автоматически транслирует ЦОС-системы из Matlab/Simulink-описаний в высокооптимизированные VHDL-описания для ПЛИС Xilinx и создает испытательные стенды. Методология hardware-in-the-loop существенно ускоряет цикл проектирования, поскольку позволяет верифицировать проекты в ПЛИС непосредственно из системы Matlab/Simulink. HDL co-simulation разрешает пользователям импортировать HDL-код и симулировать всю систему в целом. Подробности о преимуществах использования новой методологии объектно-ориентированного проектирования, проводимой фирмой Xilinx, можно найти в работах [1, 2].

 

Проектирование КИХ-фильтров с использованием стандартных блоков системы Matlab/Simulink

Рассмотрим разработку КИХ-фильтра на 4 отвода:

y = С0x0+C1x1+C2x2+C3x3

на стандартных блоках системы Matlab/Simulink (рис. 1а). Предположим, что коэффициенты фильтра известны и равны С0 = –2, C1 = –1, C2 = 7 и C3 = 6.

Модель КИХ-фильтра на 4 отвода с использованием стандартных блоков системы Mathlab/Simulink

Рис. 1.
а) Модель КИХ-фильтра на 4 отвода с использованием стандартных блоков системы Mathlab/Simulink;
б) параметры сигнала (расчет временной функции)

Частота дискретизации сигнала Fs = 1 кГц ([0:1/fs:3] — вектор дискретных значений времени; 1+[0:1/fs:3].*75 — частота импульса). В поле «шаг модельного времени (Sample time)» должна стоять 1 (рис. 1б). На рис. 2 показан нижний уровень модели КИХ-фильтра на 4 отвода. А на рис. 3 изображен сигнал, подлежащий фильтрации, и профильтрованный сигнал. Константы фильтра и сигнал, подлежащий фильтрации, преобразовываются из формата с плавающей запятой в формат с фиксированной запятой (fixdt(1,16,10)) с помощью «автоматизированных мастеров», встроенных в блоки с 16‑битной точностью с учетом знака числа (рис. 4).

Модель КИХ-фильтра на 4 отвода с использованием стандартных блоков системы Matlab/Simulink. Нижний уровень

Рис. 2. Модель КИХ-фильтра на 4 отвода с использованием стандартных блоков системы Matlab/Simulink. Нижний уровень

Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на 4 отвода, созданного с использованием стандартных блоков

Рис. 3. Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на 4 отвода, созданного с использованием стандартных блоков

Константы фильтра и сигнал, подлежащий фильтрации, представляются в формате fixdt(1,16,10)

Рис. 4. Константы фильтра и сигнал, подлежащий фильтрации, представляются в формате fixdt(1,16,10)

>> fs=1e3; % частота дискретизации 1 кГц
>> t=0:1/fs:3; % вектор дискретных значений
>> f0=1+[t*75]; % частота импульса
>> s1=cos(2.*pi.*t.*f0); зашумленный сигнал
>> plot(s1);

Пример 1. Расчет временной функции в Matlab

С помощью приложения Simulink HDL Coder системы Matlab/Simulink извлечем из имитационной модели КИХ-фильтра в автоматическом режиме код языка VHDL и сгенерируем моделирующую программу на языке VHDL (испытательный стенд). Далее в САПР Xilinx ISE 14.4 разработаем проект и осуществим функциональное моделирование. Проект разместим в базис ПЛИС серии Spartan-6 xa6slx4-3csg225.

На рис. 5 и 6 показаны результаты функционального моделирования с использованием испытательного стенда. На рис. 5 и 6 видно, что входной сигнал и коэффициенты фильтра умножаются на масштабный множитель 1024 (210) согласно выбранному формату представления чисел с фиксированной запятой fixdt(1, 16, 10). Для получения правильного результата фильтрации необходимо предусмотреть последующее деление на 1048576. Уравнение фильтрации будет выглядеть так:

y/1048576 = (C0×1024)(x0×1024)+ +(C1×1024)(x1×1024)+(C2×1024)(x2×1024)+(C3×1024)(x3×1024).

Входной сигнал и коэффициенты умножаются на 1024

Рис. 5. Входной сигнал и коэффициенты умножаются на 1024

Импульсная характеристика фильтра. Коэффициенты умножаются на 1024

Рис. 6. Импульсная характеристика фильтра. Коэффициенты умножаются на 1024

 

Проектирование КИХ-фильтров с использованием Xilinx System Generator САПР ISE Design Suite

Рассмотрим разработку имитационной модели КИХ-фильтра на распределенной арифметике без использования встроенных ЦОС-блоков (тип фильтра — Single-Rate FIR) с применением функционального блока FIR Compiler v5.0, являющегося аналогом функции FIR Compiler v5.0 САПР Xilinx ISE, получаемой с помощью генератора параметризированных ядер XLogiCORE IP (рис. 7). Примеры использования генератора параметризированных ядер для разработки КИХ-фильтров на 4 отвода можно посмотреть в работах [7, 8]. Для верификации предусмотрены фильтры DF2T (транспонированная реализация дискретного фильтра) и Digital Filter (прямая форма). Блок FIR Compiler v5.0 является параметризированным (рис. 8). На рис. 8 показаны настройки блока. Согласно настройкам блока реализуется КИХ-фильтр на параллельной распределенной арифметике. На рис. 9 показано имитационное моделирование.

Задание частоты тактирования системы (фильтра) в САПР ISE (100 ns) и периода симуляции в Simulink (1 с)

Рис. 7.
а) Задание частоты тактирования системы (фильтра) в САПР ISE (100 ns) и периода симуляции в Simulink (1 с);
б) модель КИХ-фильтра на 4 отвода с использованием блока FIR Compiler v5.0

Настройки блока FIR Compiler 5.0

Рис. 8. Настройки блока FIR Compiler 5.0:
а) закладка «спецификация фильтра»;
б) закладка «реализация фильтра» (коэффициенты фильтра несимметричные, со знаком, квантованные, представлены в формате FIX_8_4)

Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на 4 отвода, созданного с помощью блоков Digital Filter, FIR Compiler 5.0 и DF2T

Рис. 9. Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на 4 отвода, созданного с помощью блоков Digital Filter, FIR Compiler 5.0 и DF2T

Для представления чисел со знаком в формате с фиксированной запятой Xilinx System Generator использует нотацию FIX, а для беззнаковых — UFIX. Формат FIX можно рассматривать как пару чисел M.N, где M — общее число двоичных разрядов; N — число разрядов дробной части. Входной сигнал представляется в формате FIX_16_8, коэффициенты фильтра в формате FIX_8_4, профильтрованный сигнал FIX_26_12 (рис. 10). С помощью блока System Generator создадим в автоматическом режиме проект фильтра и испытательный стенд. Проект разместим в базис ПЛИС серии Spartan-6 xc6slx4-3tqg144.

Входной сигнал умножается на масштабный множитель 256, коэффициенты фильтра на 16. Период синхросигнала 100 нс

Рис. 10. Входной сигнал умножается на масштабный множитель 256, коэффициенты фильтра на 16. Период синхросигнала 100 нс

На рис. 10 и 11 показано функциональное моделирование с использованием моделирующей программы, сгенерированной в автоматическом режиме для случая, когда применен функциональный блок FIR Compiler v5.0. Входной сигнал, подлежащий фильтрации, умножается на масштабный множитель 256, а коэффициенты фильтра масштабируются на 16 согласно выбранному формату представления чисел.

Импульсная характеристика фильтра. Коэффициенты умножаются на 16

Рис. 11. Импульсная характеристика фильтра. Коэффициенты умножаются на 16

Для получения правильного результата фильтрации необходимо предусмотреть деление на 4096. Уравнение фильтрации будет выглядеть следующим образом:

y/4096 = (C0×16)(x0×256)+(C1×16)(x1×256)+(C2×16)(x2×256)+ +(C3×16)(x3×256).

На рис. 12 показана модель КИХ-фильтра на 4 отвода с перегружаемыми коэффициентами с использованием блока FIR Compiler v5.0, а на рис. 13 — результаты имитационного моделирования.

Модель КИХ-фильтра на 4 отвода с перегружаемыми коэффициентами с использованием блока FIR Compiler v5.0

Рис. 12. Модель КИХ-фильтра на 4 отвода с перегружаемыми коэффициентами с использованием блока FIR Compiler v5.0

При достижении 2500 отсчетов происходит загрузка вектора значений коэффициентов [1 1 1 1] вместо [–2 –1 7 6]

Рис. 13. При достижении 2500 отсчетов происходит загрузка вектора значений коэффициентов [1 1 1 1] вместо [–2 –1 7 6]

Рассмотрим разработку имитационной модели систолического КИХ-фильтра (тип фильтра — Single-Rate FIR) с использованием блока FIR Compiler v6.3, являющегося аналогом функции FIR Compiler v6.3 САПР Xilinx ISE, получаемой с помощью генератора параметризированных ядер XLogiCORE IP (рис. 14). На рис. 15 показан формат представления входного сигнала и закладка «Реализация» блока FIR Compiler 6.3. Входной сигнал представлен в формате FIX_16_8, а коэффициенты фильтра в формате FIX_4_0. Профильтрованный сигнал представляется с 20‑битной точностью. На рис. 16 показано имитационное моделирование.

Систолический КИХ-фильтр на 4 отвода с использованием блока FIR Compiler v6.3

Рис. 14. Систолический КИХ-фильтр на 4 отвода с использованием блока FIR Compiler v6.3

Настройки блоков

Рис. 15. Настройки блоков:
а) входной сигнал представляется в формате FIX_16_8;
б) закладка «реализация», коэффициенты фильтра целые, со знаком, представлены в формате FIX_4_0

Имитационное моделирование фильтра на 4 отвода, созданного с помощью блока FIR Compiler 6.3

Рис. 16. Имитационное моделирование фильтра на 4 отвода, созданного с помощью блока FIR Compiler 6.3

С помощью блока System Generator создадим в автоматическом режиме проект фильтра и испытательный стенд. На рис. 17 показано функциональное моделирование с использованием моделирующей программы, сгенерированной в автоматическом режиме (период синхросигнала 100 нс). Входной сигнал, подлежащий фильтрации, умножается на масштабный множитель 256, а коэффициенты фильтра не масштабируются согласно выбранному формату представления чисел. Для получения правильного результата фильтрации необходимо предусмотреть деление на 256. Уравнение фильтрации будет выглядеть следующим образом:

y/256 = C0(x0×256)+C1(x1×256)+ +C2(x2×256)+C3(x3×256).

Функциональное моделирование с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме

Рис. 17. Функциональное моделирование с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме.
Входной сигнал умножается на 256, а коэффициенты фильтра не масштабируются

 

Проектирование КИХ-фильтров для случая, когда коэффициенты неизвестны

Рассмотрим проектирование КИХ-фильтра (рис. 18) с использованием MAC-блока c большим числом отводов для подавления высокочастотных шумов в аудиосистеме (CD-качество). Данный пример основан на функциональном блоке n‑tap Dual Port Memory MAC FIR Filter из библиотеки Xilinx Reference Blockset/DSP. Кратко рассмотрен в работе [6].

Имитационная модель КИХ-фильтра на 43 отвода с возможностью вычисления коэффициентов по заданной спецификации с помощью графической среды FDATool и АЧХ. На вход фильтра подключен источник случайного сигнала

Рис. 18. Имитационная модель КИХ-фильтра на 43 отвода с возможностью вычисления коэффициентов по заданной спецификации с помощью графической среды FDATool и АЧХ. На вход фильтра подключен источник случайного сигнала

Для хранения коэффициентов фильтра и входных отсчетов будем использовать блочную память ПЛИС Xilinx (двухпортовое ОЗУ). Параметры спецификации фильтра следующие: единицы измерения Гц; частота взятия отчетов Fs = 44 100 Гц (44,1 кГц); порядок фильтра — автоматический выбор (Minimum Order); граница полосы пропускания fPass = 6000 Гц (6 кГц); граница полосы задерживания (подавления) fStop = 7725 Гц (7,725 кГц); неравномерность АЧХ в полосе пропускания APass (Rp = 1 дБ); минимальное затухание в полосе задерживания AStop (Rs = 48 дБ). Осуществим синтез фильтров с равномерными пульсациями АЧХ в полосах пропускания и задерживания методом Ремеза (Equiripple). По заданной технической спецификации синтезируется фильтр с порядком n = 42 (импульсная характеристика содержит n+1 ненулевых отсчетов), или 43 коэффициента.

На рис. 19 показаны настройки функционального блока источника случайного сигнала. В поле Sample Time необходимо указать период дискретизации сигнала 1/Fs = 1/44 100.

Источник случайного сигнала с периодом дискретизации 1/44 100

Рис. 19. Источник случайного сигнала с периодом дискретизации 1/44 100

Библиотека DSP Xilinx blockset содержит встроенную графическую среду для синтеза и анализа фильтров FDATool, представленную в виде одноименного блока, помеченного маркером X (рис. 20а). Использование специальной функции xlfda_numerator(‘FDATool’) позволяет импортировать рассчитанные коэффициенты фильтра (числитель передаточной функции) непосредственно в блок MAC Based FIR. Коэффициенты можно также посмотреть в системе Matlab с помощью команды xlfda_numerator(‘FDATool’).

Блок FDATool

Рис. 20.
а) Блок FDATool;
б) маска с параметрами блока MAC Based FIR. Значения коэффициентов фильтра вычисляются с помощью команды xlfda_numerator(‘FDATool’)

Блок MAC Based FIR является параметризованным (шесть переменных). Двойным кликом по блоку можно задать значения параметров в определенных полях (рис. 20б). Входные данные представляются в формате FIX_10_8, а коэффициенты как FIX_12_12. Обозначения переменных можно посмотреть в маске (правая кнопка мыши, Mask, Edit Mask) на рис. 21.

Маска с параметрами функционального блока MAC Based FIR

Рис. 21. Маска с параметрами функционального блока MAC Based FIR

Максимальное значение коэффициента составляет 0.3022 (определяется командой: max(xlfda_numerator(‘FDATool’)) а минимальное –0.067. Поэтому коэффициенты фильтра целесообразно представить в формате Fix_12_12. Это обеспечивает приведение коэффициентов к диапазону [–0.5, 0.4998]. Для сравнения можно было бы использовать формат Fix_12_11 (перенесение десятичной точки влево на один разряд при сохранении длины слова), что привело бы к диапазону [–1, 0,9995] (рис. 22).

Представление чисел в формате с фиксированной запятой в System Generator

Рис. 22. Представление чисел в формате с фиксированной запятой в System Generator

На рис. 23а изображена структурная схема КИХ-фильтра на 43 отвода с использованием одного MAC-блока и блочной двухпортовой памяти (ОЗУ). Входной сигнал перед записью в блочную память  подвергается передискретизации на величину в 43 раза выше, чем частота взятия отсчетов Fs. Память разбита на два банка, которые используют различные режимы работы. Первый сконфигурирован как ОЗУ и работает в режиме циклического буфера, второй как ПЗУ. Емкость первого банка памяти, предназначенного для хранения отсчетов, составляет 43 строки (адреса 0–42) на 10 столбцов (FIX_10_8) или 43×10‑разрядных слов. Циклический буфер имитирует работу линии задержки фильтра (рис. 23а). Второй банк предназначен для хранения коэффициентов фильтра емкостью 43 строки (адреса 43–85) на 12 столбцов (FIX_12_12) или 43×12‑разрядных слов. На рис. 23б показан пример реализации КИХ-фильтра на 4 отвода с использованием 1 MAC-блока.

Cтруктурная схема КИХ-фильтра на 43 отвода с использованием одного MAC-блока и блочной памяти, разбитой на два банка, один из которых используется в виде циклического буфера для хранения и считывания отсчетов, а другой — для хранения коэффициентов фильтра

Рис. 23.
а) Cтруктурная схема КИХ-фильтра на 43 отвода с использованием одного MAC-блока и блочной памяти, разбитой на два банка, один из которых используется в виде циклического буфера для хранения и считывания отсчетов, а другой — для хранения коэффициентов фильтра;
б) КИХ-фильтр на четыре отвода с использованием одного MAC-блока

На рис. 24 дана структурная схема MAC-блока с применением библиотек System Generator. Схема предназначена для размещения в логические ресурсы ПЛИС. Основные функциональные блоки: Memory (двухпортовая память с управляющим автоматом), MAC engine (блок умножения с накоплением), Register (регистр захвата для операции конвейеризации), Down Sample (понижение частоты дискретизации в 43 раза), Convert 1 (представляет результат фильтрации с требуемой точностью или преобразует формат FIX_24_20, образующийся в процессе умножения и накопления, в формат FIX_10_8). Блок din (Xilinx Gateway In, можно рассматривать как вход в ПЛИС) преобразует тип double в формат FIX_10_8. Блок MAC Out выполняет обратную функцию, преобразует формат FIX_10_8 в тип double. Его можно рассматривать как выход из ПЛИС.

Структурная схема MAC-блока с применением библиотек System Generator

Рис. 24. Структурная схема MAC-блока с применением библиотек System Generator

Блок Dual Port RAM представляет память ОЗУ с двумя портами A и B. Входные отсчеты записываются в и считываются из порта A (ОЗУ), коэффициенты считываются из порта B (рис. 25). Процессом записи и считывания управляет автомат (блок Address Control) (рис. 26). Основные функциональные блоки автомата — это два суммирующих счетчика coef_counter (предварительно загружается число 43) и Data_Counter (предварительно загружается 0), адресующихся к портам A и B ОЗУ и компаратор. На один из входов компаратора подключается константа 85 (команда 2*length(coef)-1). Компаратор управляет входом разрешения счета счетчика Data_Counter и формирует сигнал we (латентность 1), разрешающий запись в ОЗУ, и сигнал сброса аккумулятора (латентность 5) с последующим формированием сигнала разрешения работы регистра захвата.

Двухпортовая память с управляющим автоматом

Рис. 25. Двухпортовая память с управляющим автоматом

Управляющий автомат двухпортовой памяти и настройки блоков счетчиков coef_counter и Data_Counter

Рис. 26. Управляющий автомат двухпортовой памяти и настройки блоков счетчиков coef_counter и Data_Counter

ОЗУ (рис. 27) инициализируется вектором значений с применением следующей команды [zeros(1, length(coef))(coef)] (рис. 28). Блок памяти имеет латентность 1. На рис. 27 показано, что сигнал, подлежащий фильтрации, подвергается передискретизации в 43 раза. Передискретизация и последующая операция понижения частоты дискретизации (децимация) обеспечивают по внешним входам фильтра организацию структуры фильтра типа Single-Rate FIR.

Двухпортовая память на основе блочной памяти ПЛИС и настройки блока Xilinx Dual Random Access

Рис. 27. Двухпортовая память на основе блочной памяти ПЛИС и настройки блока Xilinx Dual Random Access

Вектор инициализации блочной памяти ПЛИС (коэффициенты КИХ-фильтра симметричны)

Рис. 28. Вектор инициализации блочной памяти ПЛИС (коэффициенты КИХ-фильтра симметричны)

Для выравнивания числа столбцов в банках памяти используется блок pad (основан на блоке Xilinx Bus Concatenator), выполняющий роль конкатенации (склеивания) двух шин. Склеиваются две шины в форматах UFix_10_0 (10‑разрядная шина, младшие разряды lo) и UFix_2_0 (2‑разрядная шина, старшие разряды hi). Результатом склеивания является шина в формате UFix_12_0, которая преобразуется в тип Fix_12_12.

На рис. 29 показан умножитель и аккумулятор. Результат умножения представляется в формате Fix_22_20, а результат сложения в формате Fix_24_20 c учетом переполнения и операции расширения знака числа. Разрядность выходной шины аккумулятора определяется следующей командой:

ceil(log2(max(1,sum(abs(coef*2^coef_binpt)))))+data_width+1.
Умножитель и аккумулятор

Рис. 29. Умножитель и аккумулятор

Умножитель имеет латентность 3 для согласования с реальной латентностью, равной трем, характерной для встроенных умножителей в ПЛИС Xilinx.

На рис. 30 показана настройка периода симуляции в Simulink. С учетом того, что используется передискретизация, период симуляции должен быть 1/(43Fs). Период синхросигнала задаем 10 нс. В меню Configuration Parameters задаем время симуляции 0,05 c. На рис. 31 показано удаление высокочастотных составляющих из случайного сигнала с помощью КИХ-фильтра на 43 отвода. Моделирование отклика КИХ-фильтра на единичный импульс в Simulink показано на рис. 32. Период синхросигнала увеличен до 100 нс. Функциональное моделирование показывает, что входной сигнал (единичный импульс, не путать с дельта-функцией, которая позволяет просмотреть коэффициенты фильтра, рис. 11) и выходной сигнал умножаются на 256 (рис. 33). Профильтрованные значения обновляются через 43 такта синхроимпульса. Фрагменты значений выходного сигнала и коэффициентов фильтра в формате double и FIX приведены в таблице.

Настройка периода симуляции в Simulink

Рис. 30. Настройка периода симуляции в Simulink

Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на 43 отвода с использованием одного MAC-блока и блочной памяти

Рис. 31. Имитационное моделирование в системе Matlab/Simulink КИХ-фильтра на 43 отвода с использованием одного MAC-блока и блочной памяти

Имитационная модель КИХ-фильтра

Рис. 32.
а) Имитационная модель КИХ-фильтра (на вход подается единичный импульс);
б) моделирование отклика КИХ-фильтра

Функциональное моделирование с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме. Входной сигнал (единичный импульс) и выходной сигнал умножаются на 256

Рис. 33. Функциональное моделирование с использованием моделирующей программы на языке VHDL, сгенерированной в автоматическом режиме. Входной сигнал (единичный импульс) и выходной сигнал умножаются на 256

Таблица. Фрагменты значений выходного сигнала и коэффициентов фильтра в форматах double и FIX при прохождении по структуре единичного импульса

Значения отклика в формате double

Значения отклика в формате FIX_10_8 (значения отклика * масштабный множитель 256)

Коэффициенты фильтра в формате double

Коэффициенты фильтра в формате FIX_12_12 (коэфф.
фильтра*4096)

–0,00195;

–1

–0,0019

–8

–0,01196;

–3

–0,099

–41

–0,02588;

–7

–0,0139

–57

–0,0400;

–10

–0,0141

–58

В рассматриваемом примере предложена оригинальная идея организации работы циклического буфера. Сигнал, вырабатываемый компаратором (we) приостанавливает на один такт синхроимпульса работу счетчика Data_Counter (рис. 34), тем самым происходит двойная адресация к строке 42. Это обеспечивает запись десятичного числа один в строку памяти с адресом 42. При работе в САПР ISE эта единица умножается на масштабный множитель 256. Далее это число будет умножено на коэффициент –8 (–0,0019 в формате double), что и даст результат –2048 (рис. 34а). Через последующие 43 такта десятичная единица будет записана в строку с адресом 41 (рис. 34б). Эта единица вышеописанным способом заполнит первый банк ОЗУ, то есть «пробежится» по всем коэффициентам фильтра, и процедура повторится снова в зависимости от ширины единичного импульса, которая задается параметром Step Time. В нашем случае это величина 0,001 (рис. 32, блок Step). Как только импульс упадет в ноль, им последовательно будет заполнен первый банк ОЗУ.

Результаты расчетов в пошаговом режиме в системе Matlab и временные диаграммы в ISE Design Suite, поясняющие принцип работы циклического буфера

Рис. 34. Результаты расчетов в пошаговом режиме в системе Matlab и временные диаграммы в ISE Design Suite, поясняющие принцип работы циклического буфера

Проверка результата фильтрации (рис. 33).

Фрагмент уравнения КИХ-фильтра:

y(FIX24_20) = –8(FIX12_12)×X0 – 41(FIX12_12)×X1 – 57(FIX12_12) – …

Первый проход:

X0 = 1(FIX10_8);

y(FIX24_20) = –8×256 = –2048;

ydouble = –2048/1048576  –0,00195.

Переводим формат ydouble в y(FIX10_8) = –0,00195×256 –0,499 –1.

Второй проход:

X1 = 1(FIX10_8);

X0 = 1(FIX10_8);

y(FIX24_20) = –8×256–41×256 =

= –2048–10496 = –12544;

ydouble = –12544/1048576 ≈ –0,01196.

Переводим формат ydouble в y(FIX10_8) = –0,01196×256 –3,06176 –3.

Третий проход:

X2 = 1(FIX10_8);

X1 = 1(FIX10_8);

X0 = 1(FIX10_8);

y(FIX24_20) = –8×256 – 41×256 – 57×256 = –27136;

ydouble = –27136/1048576  –0,02588.

Переводим формат ydouble в y(FIX10_8) = –0,02588×256 –6,62528 –7.

 

Выводы

С использованием Xilinx System Generator рассмотрено проектирование КИХ-фильтров в формате с фиксированной запятой. Рассмотрение результатов функционального моделирования с использованием моделирующих программ на языке VHDL, сгенерированных в автоматическом режиме при переходе от имитационных моделей КИХ-фильтров различной структуры, созданных в системе Matlab/Simulink, к функциональным в САПР ПЛИС Xilinx ISE Design Suite, показало, что входной сигнал, подлежащий фильтрации, и коэффициенты фильтра умножаются на масштабные множители 2N. Подводя итог, можно отметить, что в функциональном блоке n‑tap Dual Port Memory MAC FIR Filter используются такие понятия, как интерполяция, децимация, двухпортовая память, циклический буфер, латентность.

Литература
  1. Тарасов И. Методология проектирования для ПЛИС Xilinx: организационные аспекты // Компоненты и технологии. 2015. № 1.
  2. Тарасов И. Проектирование для ПЛИС Xilinx: системные аспекты и уровень регистровых передач // Компоненты и технологии. 2015. № 2.
  3. Долинский М. Обзор современных подходов и средств к «программистской» разработке аппаратного обеспечения алгоритмически сложных цифровых систем // Компоненты и технологии. 2004. № 1.
  4. Литвинов А. Быстрая разработка устройств ЦОС в системе Xilinx System Generator // Современная электроника. 2013. № 1.
  5. Тарасов И. Возможности FPGA фирмы Xilinx для цифровой обработки сигналов // Компоненты и технологии. 2007. №5
  6. System Generator for DSP. User Guide. UG640 (v 13.3). October 19, 2011. xilinx.com
  7. Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров в САПР ПЛИС Xilinx ISE Design Suite // Компоненты и технологии. 2014. № 11.
  8.  Строгонов А., Цыбин С., Городков П. Проектирование КИХ-фильтров на распределенной арифметике в САПР ПЛИС Xilinx ISE Design Suite // Компоненты и технологии. 2015. № 2.

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

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