Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 824

.pdf
Скачиваний:
10
Добавлен:
30.04.2022
Размер:
35.76 Mб
Скачать

111

Рис. 2.27. Линия задержки КИХ-фильтра на четыре отвода на умножителях с использованием метода правого сдвига и сложения

111

112

Рис. 2.28. Умножители с использованием метода правого сдвига и сложения и дерево сумматоров КИХ-фильтра на четыре отвода

112

113

Рис. 2.29. Доработанная схема умножителя с использованием метода правого сдвига и сложения с учетом его работы в составе КИХ-фильтра

113

114

Рис. 2.30. Временные диаграммы работы КИХ-фильтра на четыре отвода на умножителях

сиспользованием метода правого сдвига и сложения при поступлении входных отчетов -5, 3, 1

и0. Результат: 10, -1, -40, -10, 25, 6

114

Таблица 2.3 КИХ-фильтр на четыре отвода, реализованный в базисе

ПЛИС EP2C5F256C6, временная модель Slow-model

Техничес-

Разработан-

Программный

 

Программный

 

кие характе-

ный MAC-

умножитель

на

умножитель

на

ристики

блок

мегафункции

 

мегафункции

 

 

 

ALTMEMMULT

ALTMEMMULT.

 

 

. Коэффициенты

Коэффициенты

 

 

загружаются

из

загружаются

из

 

 

внешнего порта,

памяти (умножи-

 

 

МГц

 

тель

на

 

 

 

 

константу), МГц

Частота в

240

210

 

260

 

наихудшем

 

 

 

 

 

случае, Fmax

 

 

 

 

 

Повысить производительность КИХ-фильтра с использованием программного умножителя на мегафункции ALTMEMMULT позволяет вариант загрузки коэффициентов из блочной памяти ПЛИС (260 МГц).

Представленный в главе 1 (раздел 1.5) MAC-блок с использованием метода правого сдвига и сложения может быть использован для проектирования высокопроизводительных и компактных КИХ-фильтров небольшой разрядности. При этом на его реализацию в базисе ПЛИС потребуются незначительные логические ресурсы (менее 1 %) и будет наблюдаться экономия аппаратных и программных умножители. Недостатками такого MAC-блока являются трудоемкость его разработки и наличие своего интерфейса в отличие от унифицированных интерфейсов мегафункции ALTMEMMULT, что может оказаться неудобным в использовании.

115

2.4. Проектирование квантованных КИХ-фильтров

Рассмотрим два варианта извлечения кода языка VHDL из моделей расширения Simulink (среда моделирования систем непрерывного и дискретного времени) системы Matlab (существует еще вариант извлечения кода непосредственно из алгоритмов Matlab). Первый вариант извлечения кода из описания структуры фильтра базовыми элементами расширения Simulink. Второй вариант из описания структуры фильтра с помощью языка M-файлов Simulink.

На рис. 2.31 показана имитационная модель (верхний уровень иерархии) симметричного КИХ-фильтра на восемь отводов взятая из демонстрационного примера Simulink HDL Coder Examples Symmetric FIR Filters. На вход фильтра поступает сигнал, зашумленный шумом (2001 отсчет):

x_in = cos(2.*pi.*(0:0.001:2).*(1+(0:0.001:2).*75)).'.

Рассмотрим используемые параметры сигнала. Частота дискретизации сигнала FS 1 кГц ([0:1/fs:2] – вектор

дискретных значений времени; 1+[0:1/fs:2].*75 – частота импульса). Шаг модельного времени (Sample time) – 1. Ниже показан пример расчета временной функции в системе Matlab.

>>fs=1e3; % частота дискретизации 1кГц

>>t=0:1/fs:2; % вектор дискретных значений

>>f0=1+[t*75]; % частота импульса

>>s1=cos(2.*pi.*t.*f0); зашумленный сигнал

>>plot(s1);

116

Рис. 2.31. Имитационная модель симметричного КИХфильтра на восемь отводов. Верхний уровень иерархии

Предположим, что коэффициенты фильтра известны и хранятся в функциональных блоках Constant с одноименными именами Constant – Constant3. Выходные сигналы представляются в формате с фиксированной запятой fixdt(1,16,10): h1 = -0.1339; h2 = -0.0838; h3 = 0.2026; h4 = 0.4064. Преобразовывать значения из формата с плавающей запятой в формат с фиксированной запятой позволяют “автоматизированные мастера”, встроенные в функциональные блоки (рис. 2.32).

Коэффициенты фильтра и входной сигнал подлежащий фильтрации подвергаются масштабированию путем умножения на масштабный множитель 1024 (210 ) в соответствии с выбранным форматом 16.10 (sfix16_En10) и последующему округлению. Например, h1*1024= -137,1136 округляется до целого значения -137D или ff77 в дополнительном коде при длине машинного слова 16 бит). В шестнадцатеричной системе счисления с учетом знака числа они будут выглядеть следующим образом: ff77, ffaa, 00cf, 01a0.

117

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

а)

б)

Рис. 2.32. Настройка функционального блока Constant с именем Constant1: а) задается вещественное число -0.083, являющееся одним из коэффициентов фильтра (закладка Main); б) выходной формат представления этого числа

fixdt(1,16,10) (закладка Signal Attributes)

Значения входного сигнала, который необходимо

118

профильтровать, изменяются по амплитуде от -1 до +1. Они представлены в формате с фиксированной запятой

(sfix16_En10). Функциональный блок Data Tupe Conversion

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

1024: 1, 0.9990234375 и т.д.

Рассмотрим имитационную модель КИХ-фильтра на рис. 2.33. После запуска модели над входным сигналом x_in, коэффициентами фильтра, выходными сигналами y_out и delayed_x_scope_out (выход линии задержки) указывается используемый формат.

При использовании арифметики с фиксированной запятой операции сложения не приводят к необходимости округления результатов – они могут лишь вызвать переполнение разрядной сетки. Поэтому выходы с пресумматоров Add-Add3 представляются в формате sfix17_En10 для учета переполнения. Выходы с умножителей

Product –Product 3 представляются в формате sfix33_En20, т.к.

умножение чисел с фиксированной запятой приводит к увеличению числа значащих цифр результата по сравнению с сомножителями, которые в данном случае 16- и 17-разрядные и следовательно - к необходимости округления. Выходы с сумматоров Add5-Add6 первого уровня дерева сумматоров представляются в формате sfix34_En20 а второго уровня - sfix35_En20. Следовательно, результат фильтрации (сигнал y_out) представляется в формате sfix35_En20 (рис. 2.33).

119

Рис. 2.33. Имитационная модель симметричного КИХфильтра на восемь отводов с указанием формата сигналов. Нижний уровень иерархии. Структура фильтра в элементах

системы Matlab/Simulink

Далее с помощью приложения Simulink HDL Coder системы Matlab/Simulink извлечем в автоматическом режиме код языка VHDL КИХ-фильтра (пример 1). Запуск приложения осуществляется из меню Code/HDL Code/Generate HDL. Предварительно с помощью меню Code/HDL Code/Option необходимо заказать определенные опции и осуществить настройки.

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

USE IEEE.numeric_std.ALL;

ENTITY symmetric_fir IS

PORT( clk

:

IN

std_logic;

reset

:

IN

std_logic;

clk_enable

:

IN

std_logic;

120