Исследование архитектуры аппаратной реализации на ПЛИС КИХ фильтра

Методическое указание к лабораторной работе на учебном стенде LESO7.
Шауэрман Александр А. shamrel@yandex.ru
  1. Цель работы
  2. Теоретические сведения
  3. Введение в Verilog
  4. Ход работы
  5. Вопросы для самопроверки
  6. Содержание отчета

1 Цель работы:

Изучить методы построения дискретных цепей на базе ПЛИС. Исследовать реализацию КИХ фильтра на примере фильтра скользящего среднего.

2 Теоретические сведения

2.1 Фильтр скользящего среднего

Самым простым и широко используемым фильтром с конечной импульсной характеристикой (КИХ) является «фильтр скользящего среднего». Такой фильтр прост в реализации, так как не требует умножителей, а логика работы доступна для понимания: результат фильтрации есть среднее арифметическое последних М отсчетов входного сигнала.

Как следует из названия, в фильтре скользящего среднего для получения каждой точки выходного сигнала выполняется усреднение  некоторого количества точек входного сигнала. Его уравнения имеет вид:

y[i]=\frac{1}{M}\sum\limits_{i=0}^{M-1}x[i+j],
(1)

 

 

где x[ ] – отсчеты входного сигнала, y[ ] – отсчеты выходного сигнала, а M – число точек, используемое для усреднения.y[i]=\frac{1}{M}\sum\limits_{i=0}^{M-1}x[i+j],

Математическое уравнение для частотной характеристики такого может быть получена с помощью преобразования Фурье от прямоугольного импульса:

H[f]=\frac{\sin[{\pi\cdot f\cdot M}]}{M\cdot\sin[{\pi\cdot f}]},
(2)

 

 

где f – нормированная частота (относительно частоты дискретизации).

На рисунке 1 показаны амплитудно-частотные характеристики (АЧХ) фильтров с разным значением M. На рисунке 2 те же АЧХ, но выраженные в дБ.

Амплитудно-частотная характеристика фильтра

Рисунок 1 – Амплитудно-частотная характеристика фильтра

Амплитудно-частотная характеристика фильтра выраженная в дБ

Рисунок 2 – Амплитудно-частотная характеристика фильтра выраженная в дБ

Из рисунка 2 видно, что уровень боковых «лепестков» фильтра не позволяет обеспечить должного затухания в полосе непропускания. Для увеличения затухания в полосе непропускания фильтры могут соединятся каскадно, при этом их передаточные функции перемножаются.

При каскадном включении сигнал с выхода первого фильтра (звена) передается на второй фильтр, а с выхода второго на последующий и так далее.

АЧХ каскадных фильтров при различном числе звеньев

Рисунок 3 – АЧХ каскадных фильтров при различном числе звеньев

АЧХ каскадных фильтров при различном числе звеньев выраженная в дБ

Рисунок 4 – АЧХ каскадных фильтров при различном числе звеньев выраженная в дБ

Из-за своей простоты фильтр скользящего среднего нашел применение во многих приложениях, однако он особенно хорош в задачах борьбы белым шумом.

2.2 Методика измерения АЧХ дискретной цепи

В лабораторной работе для измерения АЧХ дискретной цепи используется связь импульсной характеристики цепи с передаточной функцией. На вход дискретной цепи подаем периодическую последовательность (период T) прямоугольных импульсов малой длительности (τ). В результате на выходе цепи сформируется отклик в виде периодически повторяющихся импульсов. Каждый такой импульс может быть интерпретирован импульсной характеристикой цепи. Спектр импульсной характеристики цепи представляет собой АЧХ этой цепи.

Так как импульсы повторяются, то спектр такого сигнала представляет собой набор линий, период следования импульсов определяет шаг следования линий и, как следствие, разрешающую способность метода измерения по частоте. Шаг может быть найден по формуле:

\Delta f=\frac{1}{T}.
(3)

 

 

Длительность импульсов τ следует выбирать равным периоду дискретизации АЦП.

3 Введение в Verilog

3.1 Знаковая и беззнаковая формы представления данных

При математической обработке сигналов выполняются операции сложения и умножения причем операнды могут быть как положительными, так и отрицательными. После АЦП сигнал представляется в виде отчетов в двоичном беззнаковом коде. Используются только положительные значения, в то время как напряжение на входе АЦП может быть как положительным, так и отрицательным. Для задач цифровой обработки сигналов цифровой код  с АЦП должен быть представлен в дополнительном коде.

Рассмотрим передаточную характеристику 8-ми битного АЦП. Для удобства положим, что максимальное входное напряжение равняется Umax, а минимальное равняется Umin, причем  Umax является положительным, а Umin отрицательным, но равны по модулю (в стенде LESO7 Umax = 1 В, Umin = -1 В).  При подаче на вход максимального напряжения на выходе АЦП после преобразования будет  цифровой код 11111111b, что в десятеричном виде равняется 255d. При подаче на вход отрицательного напряжения Umin на выходе будет код 00000000b. При подаче на вход напряжения близкого к 0 В, на выходе будет значение 10000000b, если напряжение немного больше нуля, и 01111111b, если напряжение немного меньше нуля. В обоих случаях выходной код положителен, информация о знаке отсутствует (рисунок 5 а).

Передаточная характеристика АЦП; а)в беззнаковом коде; б)в дополнительном коде

Рисунок 5 – Передаточная характеристика АЦП; а) в беззнаковом коде; б)  в дополнительном коде

Для перевода значений в дополнительный код используются различные методы, наиболее очевидным является способ, когда к изначальному значению прибавляется наименьшее отрицательное число -128d. На языке Verilog HDL это будет записано следующим образом:

wire     signed    [7:0] signal1;    
assign signal1 = $signed (adc1_d -128)

Директива (системная функция) $signed переводит результат операции в знаковую форму. Обратите внимание, что при объявлении шины signal1 использовано ключевое слово signed, оно говорит компилятору, что эта переменная должна рассматриваться как знаковая.
Для чисел с разрядностью N для получения наименьшего (максимального по модулю) числа удобно использовать конструкцию:

wire signed [N-1:0] min = $signed({1'b1,{(N-1){1'b0}}});

При выводе информации на ЦАП имеет место обратная ситуация: ЦАП работает в беззнаковом формате, а результат цифровой обработки представлен в виде знакового дополнительного кода. Для перевода из дополнительного кода в беззнаковый выполняют аналогичную операцию: добавляют наименьшее отрицательное значение:

dac1_d <= signal1 + $signed({1'b1, {(13){1'b0}}});

В примере  dac1_d – это 14 разрядный регистр.  
Об особенностях знаковых арифметических операциях в языке Verilog можно узнать в статье Знаковая арифметика в Verilog.       

3.4 Параметризация модулей

Довольно частот возникает ситуация, когда в проекте требуется использовать однотипные модули, но с различной разрядностью входных или выходных данных. Язык Verilog предоставляет мощный инструмент решения данной проблемы – это использование параметров.

В заголовке модуля вводятся требуемые параметры, которые могут быть использованы при описании входных или выходных портов. Такие модули называются параметризированными. Они обеспечивают гибкость программирования и устраняют необходимость дублирования однотипного кода.

При объявлении модуля указывают имена и начальные значения параметров. Параметры представляют из себя константу, следовательно значение параметра не может быть изменено во время выполнения кода. Однако параметры модуля могут быть изменены во время компиляции. Это позволяет настраивать экземпляры модулей.

Если при создании экземпляра значение параметра не указать, то будет использовано значение по умолчанию.

Можно создать множество экземпляров одного модуля с различными параметрами.

3.5 Графический просмотр синтезируемого кода

В своем составе Quartus Prime содержит набор утилит с общим названием Netlist Viewer (Просмотр Списка Цепей). Эти утилиты в графическом виде показывают синтезируемую схему.

Просмотрщик RTL Viewer (Register Transfer Level) показывает проектируемую схему, созданную компилятором после первичного синтеза (рисунок 6).

Окно просмотрщика RTL

Рисунок 6 – Окно просмотрщика RTL

Вид схемы можно увеличить или уменьшить с помощью инструмента масштабирования: колесико мышки с зажатым CTRL.  

Двойной клик на любом блоке схемы покажет детальную структуру этого блока (если, конечно, блок имеет внутреннюю структуру).

Просмотрщик RTL очень полезен при отладке. Он позволяет проектировщику увидеть структуру разрабатываемой схемы, показывает связь между функциональными блоками. По сути RTL Viewer демонстрирует в графическом виде то, как компилятор понял текстовое описание схемы на языке HDL. Просмотрщик RTL отображает только те блоки, которые управляют действительными входами и выходами. Таким образом, если в схеме отсутствует ожидаемый блок, то весьма вероятно что описание на Verilog  было выполнено неверно.

Для того, чтобы посмотреть итоговую схему, полученную уже после адаптации под ПЛИС, можно использовать утилиты Technology Map Viewer (Post-Mapping) и Technology Map Viewer (Post-Fitting). Первая утилита показывает схему распределенную по ресурсам ПЛИС, вторая утилита показывает ту же схему, но уже после итоговой оптимизации.

В Quartus утилиты доступны в меню главного окна Tools -> Netlist Viewers.

3.6 Масштабирование сигнала

В результате арифметических операций разрядность результата может отличаться от разрядности операндов. Так при сложении N разрядных чисел разрядность результата будет уже N+1, а при умножении – 2*N. Для того, чтобы согласовать по разрядности приемник сигнала и источник выполняют операцию масштабирования.

Масштабирование используется как для увеличения разрядности числа, так и для уменьшения. Как правило, уменьшение разрядности числа приводит к потере значащих бит и, как следствие, к уменьшению точности.

Для масштабирования сигнала удобно использовать операции сдвига. В языке Verilog HDL существуют следующие операции сдвига:

<<     – логический сдвиг влево;
>>     – логический сдвиг  вправо;
<<<     – арифметический сдвиг влево;
>>>     – арифметический сдвиг вправо.

При логическом сдвиге освободившиеся биты заполняются нулями. Очевидно, что логический сдвиг влево отрицательного числа (старший знаковый бит равен единице) приведет к положительному числу.

Арифметический сдвиг влево ведет себе аналогично логическому – на освободившееся места записываются нули. При арифметическом сдвиге вправо учитывается знак операнда и на освободившееся место записывается значение знакового бита. Пример:

a = 5'b10100;    // старший бит знаковый бит 1
b = a <<< 2;     //b == 5'b10000
c = a >>> 2;     //c == 5'b11101
d = a <<  2;     //d == 5'b10000
e = a >>  2;     //e == 5'b00101

Арифметический сдвиг на N символов влево эквивалентен делению на числа 2N, арифметический сдвиг на N символов вправо эквивалентен умножению на 2N. При этом в ПЛИС не синтезируются умножители и делители, а операция сводится к манипуляции с адресами бит в шине без привлечения аппаратных ресурсов.

4 Ход работы

4.1 Этап 1. Исследование спектра единичного импульса

Создать проект в Quartus Prime.

В модуле верхнего уровня подключить выход АЦП на вход ЦАП. С помощью IP-функции ALTPLL установить частоту дискретизации АЦП и преобразования ЦАП 100 кГц.

Скомпилировать проект и загрузить файл конфигурации в учебный стенд LESO7.

Подключить к задействованному в проекте входу АЦП выход генератора LESO5. К выходу ЦАП подключить вход анализатора сигналов LESO4.

Подать гармонический сигнал (размах: 1.8 В, частота: 1000 Гц, смещение: 0 В), убедиться, что на выходе ЦАП сигнал без искажений. Наличие искажений контролировать визуально по осциллограмме и по спектру (паразитные гармоники не должны быть выше -40 дБ.).

Подать импульсный сигнал.

Установить шаг частоты импульсов равный 1000 Гц (соответствующий период следования рассчитать по формуле 4). Длительность импульса  выбрать равным периоду дискретизации АЦП. В этом случае спектр сигнала в диапазоне частот от 0 до fд, будет наиболее равномерным.

На рисунке 7 показано окно генератора с настройками импульсов для исследования цепи с частотой дискретизации 100 кГц. На рисунке 8 и рисунке 9 показаны осциллограмма и спектр полученного сигнала.

Настройки генератора LESO5. Импульсный сигнал

Рисунок 7 – Настройки генератора LESO5. Импульсный сигнал

Осциллограмма импульсного сигнала

Рисунок 8 – Осциллограмма импульсного сигнала

Спектр импульсного сигнала

Рисунок 9 – Спектр импульсного сигнала

Полученные настройки генератора использовать для исследования АЧХ цепей в последующих этапах работы.

4.2 Этап 2. Исследование простейшего КИХ фильтра

В модуль верхнего уровня вставить экземпляр модуля фильтра.

Сигнал с АЦП должен быть переведен в знаковую форму.

На первый выход ЦАП подать сигнал с АЦП, на второй ЦАП подать сигнал с выхода фильтра. Сигналы подавать с учетом масштабирования.

Скомпилировать проект и загрузить файл конфигурации в учебный стенд LESO7.

Используя генератор LESO5 подать на вход АЦП последовательность импульсов с параметрами, рассчитанными на предыдущем этапе работы. С помощью анализатора LESO4 наблюдать сигнал и спектр на выходе фильтра.

Сравнить сигнал на входе фильтра и выходе. Измерить ширину и размах импульса (рисунок 10). Сохранить спектр сигнала (рисунок 11).

Импульс на входе и выходе фильтра. Зеленый трек – вход фильтра, желтый трек – выход фильтра

Рисунок 10 – Импульс на входе и выходе фильтра. Зеленый трек – вход фильтра, желтый трек – выход фильтра

Спектр импульса на выходе фильтра

Рисунок 11 – Спектр импульса на выходе фильтра

С помощью RTL-Viewer изучить схему реализации фильтра.

Для этого открыть RTL-Viewer, выбрать блок simple_fir:fir_inst (рисунок 12), раскрыть его (значок «+»).

 RTL-Viewer. Выбор модуля

Рисунок 12 – RTL-Viewer. Выбор модуля

Сохранить схему модуля фильтра (рисунок 13).

RTL-Viewer. Схема фильтра

Рисунок 13 – RTL-Viewer. Схема фильтра

Сохранить осциллограммы и спектр сигналов.

Сделать выводы.

4.3 Этап 3. Исследование каскадного включение фильтров

В модуль простейшего фильтра ввести параметр определяющий разрядность данных.  Листинг:

В модуль верхнего уровня добавить второй экземпляр фильтра. Сигнал с выхода первого фильтра подать на вход второго. С выхода второго фильтра сигнал подать на ЦАП. Учесть, что разрядность сигнала после прохождения фильтра увеличивается на единицу.

Используя генератор LESO5 подать на вход АЦП последовательность импульсов. С помощью анализатора LESO4 наблюдать сигнал и спектр на выходе фильтра (рисунок 14, рисунок 15).

Импульс на выходе каскадного фильтра

Рисунок 14 – Импульс на выходе каскадного фильтра

Спектр импульса на выходе каскадного фильтра

Рисунок 15 –  Спектр импульса на выходе каскадного фильтра

Измерить параметры отклика на импульс (длительность, напряжение).

С помощью RTL-Viewer изучить схему реализации фильтра.

RTL-Viewer. Каскадное объединение фильтров

Рисунок 16 - RTL-Viewer. Каскадное объединение фильтров

Сделать выводы.

4.4 Этап 4. Исследование фильтров порядка M

Изменить модуль фильтра для реализации большего порядка. Порядок фильтра (М) выбрать согласно варианту.

На листинге ниже модуль фильтра для М = 4.

На первый выход ЦАП должен выводиться сигнал до фильтра, на второй выход ЦАП должен выводиться сигнал после фильтра.
Используя генератор LESO5 подать на вход АЦП последовательность импульсов. С помощью анализатора LESO4 наблюдать сигнал и спектр на выходе фильтра. Измерить ширину основного «лепестка» спектра.  Измерить относительный уровень второго «лепестка» спектра.

Пример измерения показан на рисунке 17.  Ширина основного «лепестка» составила 25 кГц, уровень основного «лепестка»: -18.66 дБ, уровень второго «лепестка»: -35.52, относительные уровень второго лепестка -13.86 дБ (из уровня первого отнять уровень второго).   

Спектр импульса на выходе фильтра 4-го порядка.

Рисунок 17 ­– Спектр импульса на выходе фильтра 4-го порядка.

С помощью RTL-Viewer изучить схему реализации фильтра.

RTL-Viewer. Схема фильтра 4-го порядка
Рисунок 18 – RTL-Viewer. Схема фильтра 4-го порядка

Сохранить осциллограммы и спектр сигналов.

Сделать выводы.

4.5 Этап 5. Исследование каскадного включения фильтров порядка M

В модуль верхнего уровня добавить второй экземпляр фильтра. Сигнал с выхода первого фильтра подать на вход второго.

Для того, чтобы было удобнее сравнивать сигнал на выходе первого каскада и второго, сигнал на ЦАП подадим через мультиплексор. С помощью тумблеров стенда будем управлять мультиплексором.

На листинге ниже пример каскадного включения двух фильтров 4-го порядка. Обратите внимание на реализацию мультиплексора.

На рисунке 19 и рисунке 20 показаны осциллограмма и спектр импульса на выходе второго каскада фильтра (тумблер SB1 установлен в ноль, тумблер SB2 установлен в единицу ).

Импульс на выходе каскадного фильтра 4-го порядка

Рисунок 19 – Импульс на выходе каскадного фильтра 4-го порядка

Спектр импульса на выходе каскадного фильтра 4-го порядка

Рисунок 20 – Спектр импульса на выходе каскадного фильтра 4-го порядка

Измерить параметры отклика на импульс (длительность, напряжение).

С помощью RTL-Viewer изучить схему реализации фильтра.

Сохранить осциллограммы и спектр сигналов.

Сделать выводы.

4.6 Этап 6. Исследование прохождение сигналов через цифровой фильтр

4.6.1 Исследование прохождения «чистых» сигналов

Загрузить в ПЛИС файл конфигурации из предыдущего этапа работы.

Поочередно подавать с генератора LESO5 на вход стенда сигналы разных форм, наблюдать формы и спектр сигналов на выходе первого каскада фильтра и второго.

Исследуемые формы: синусоидальная, треугольная, пилообразная, прямоугольная.

Размах сигнала для каждой формы установить 1 В.

Для каждой формы произвести исследование на частотах fД/100 и fД/20, где fД – частота дискретизации.

При исследовании спектра время развертки должно быть выбрано таким образом, чтобы по диапазон частот был от 0 Гц до  fД/2.

Сохранить скриншоты осциллограмм (рисунок 21, рисунок 22, рисунок 23, рисунок 24) и спектров сигналов.

Гармонический сигнал (1 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 21 – Гармонический сигнал (1 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Гармонический сигнал (5 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 22 – Гармонический сигнал (5 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Сигнал прямоугольной формы (1 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 23 – Сигнал прямоугольной формы (1 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Сигнал прямоугольной формы (5 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 24 – Сигнал прямоугольной формы (5 кГц) на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Сохранить осциллограммы и спектр сигналов.

Сделать выводы.

4.6.2 Исследование прохождения сигналов с шумом

Загрузить в ПЛИС файл конфигурации из предыдущего этапа работы.

С помощью генератора LESO5  сформировать сигнал гармонической формы с примесью шума. Для этого на генераторе активировать режим амплитудной модуляции (кнопка «АМ»). В этом режиме сигнал первого канала выступает в роли несущей, сигнал со второго канала – модулирующий. Настройки второго канала активируются кнопкой «CH2». Для второго канала выбрать сигнал типа шум (кнопка «Noise»).

Для несущей (первый канал, основное окно) установить параметры сигнала:

  1. размах (Vpp): 2 В;
  2. смещение (Vdc): 0 мВ;
  3. частота: fД/100;
  4. форма: синус;
  5. Уровень: 100 %.

Для второго канала установить параметры:

  1. размах (Vpp): 2 В;
  2. смещение (Vdc): 0 мВ;
  3. длительность: выбрать равную шагу дискретизации (1/fД).

В примере  (рисунок 26) для f­Д = 100 кГц, установлено 10000 нс.

Окно генератора. Настройка несущей

Рисунок 25 – Окно генератора. Настройка несущей

Настройка шума

Рисунок 26 – Настройка шума

Подать сигнал с канала CH1 генератора на вход АЦП. Наблюдать форму и спектр сигнала до фильтра и на выходе (рисунок 27, рисунок 28, рисунок 29).

Гармонический сигнал (1 кГц) с шумом на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 27 – Гармонический сигнал (1 кГц) с шумом на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Гармонический сигнал (1 кГц) с шумом на входе фильтра

Рисунок 28 – Гармонический сигнал (1 кГц) с шумом на входе фильтра

Гармонический сигнал (1 кГц) с шумом на выходе фильтра

Рисунок 29 – Гармонический сигнал (1 кГц) с шумом на выходе фильтра

Повторить измерение для сигнала прямоугольной формы (рисунок 30).

Сигнал прямоугольной формы (1 кГц) с шумом на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 30 – Сигнал прямоугольной формы (1 кГц) с шумом на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Сохранить скриншоты осциллограмм и спектров сигналов.

Сделать выводы.

4.7 Этап 7. Исследование эффекта увеличение эквивалентной разрядности сигнала  

Загрузить в ПЛИС файл конфигурации из предыдущего этапа работы.

Подать на вход АЦП гармонический сигнал размахом 100 мВ, частотой fД/100. На анализаторе сигналов для измерительного канала выставить усиление по вертикали 0.1 В/деление. Наблюдать сигнал и спектр на входе и выходе фильтра (рисунок 31, рисунок 32, рисунок 33).

Гармонический сигнал малой амплитуды на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Рисунок 31 – Гармонический сигнал малой амплитуды на входе и выходе фильтра. Желтый трек – вход фильтра, зеленый трек – выход фильтра

Спектр гармонического сигнала до фильтра

Рисунок 32 – Спектр гармонического сигнала до фильтра

Спектр гармонического сигнала после фильтра

Рисунок 33 – Спектр гармонического сигнала после фильтра

Сохранить скриншоты сигнала и спектра.

Сделать выводы.

5 Вопросы для самопроверки:

  1. Объяснить особенность знаковой арифметики в языке Verilog HDL.
  2. В чем принципиальное отличие логического и арифметического сдвига числа.
  3. Какая связь между импульсной характеристикой дискретной цепи и АЧХ?
  4. Чем отличается АЧХ и передаточная функция цепи?
  5. Как в аналитическом виде выразить АЧХ в дБ?
  6. Для чего применяется каскадное включение фильтров?
  7. Какой вид импульсной характеристики фильтра скользящего среднего?
  8. Как выглядит импульсная характеристика каскадного фильтра скользящего среднего?
  9. В чем физический смысл нормированной частоты?

6 Содержание отчета:

  1. Название и цель работы.
  2. Структурная схема фильтра скользящего среднего.
  3. Схема каскадного включения фильтров.
  4. Предварительный расчет (для пунктов, где он выполняется).
  5. Осциллограммы и скриншоты измерений (для пунктов, где это указано).
  6. Для каждого этапа сделать выводы.

 

 

20 сентября 2018
Прикрепленные файлы: 
ВложениеДатаРазмер
PDF icon Учебный стенд Leso7. Принципиальная схема17/09/20181.02 МБ
Орфографическая ошибка в тексте:
Чтобы сообщить об ошибке автору, нажмите кнопку "Отправить сообщение об ошибке". Вы также можете отправить свой комментарий.