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

Учебное пособие 800631

.pdf
Скачиваний:
21
Добавлен:
01.05.2022
Размер:
9.89 Mб
Скачать

211

Рис. 4.13. Систолический КИХ-фильтр на восемь отводов с 18-битной точностью представления коэффициентов с использованием ЦОС-блоков ПЛИС серии Stratix V

211

212

Рис. 4.14. Систолические регистры, подключаемые опционально с помощью мегафункции ALTMULT_ADD в ЦОС-блоке с переменной точность ПЛИС серии Cyclon V

212

213

Рис. 4.15. Включение систолического регистра в последовательную цепь сумматоров в мегафункции ALTMULT_ADD для ПЛИС серии Cyclon V

213

Реализация параллельных КИХ-фильтров на четыре отвода в базис ПЛИС серии Stratix III

 

Ресурсы ПЛИС

Систолический

Четыре мегафункции

Мегафункция

 

 

КИХ-фильтр с

умножения с накоплением

умножения и

 

 

однотипными

ALTMULT_ACCUM

сложения

 

 

процессорными

(внешняя линия задержки и

ALTMULT_ADD

 

 

элементами без

дерево сумматоров)

(внешняя линия

 

 

использования

 

задержки)

 

 

встроенных ЦОС-

 

 

 

 

блоков

 

 

 

 

 

 

 

214

Максимальная частота/

432/400

429/400

514/400

частота в наихудшем случае,

 

 

 

 

 

 

 

 

MГц

 

 

 

 

 

 

 

 

 

Число LUT для реализации

59

18

0

 

комбинационныъх функций

 

 

 

 

 

 

 

 

 

Адаптивных логических

44

18

8

 

модулей (ALM)

 

 

 

 

 

 

 

 

 

Число выделенных

65

12

12

 

регистров для реализации

 

 

 

 

последовательностной

 

 

 

 

логики

 

 

 

 

 

 

 

 

 

Встроенные ЦОС-блоки,

-

16

4

 

18х18 бит

 

 

 

 

 

 

 

 

 

 

214

 

 

Реализации параллельных КИХ-фильтров на четыре отвода в базис ПЛИС серии Stratix III представлены в таблице. Все рассмотренные варианты фильтров реализованы на мегафункциях. Первый вариант реализован без использования мегафункциями ЦОС-блоков (рис. 4.7), второй вариант задействует лишь по одному умножителю в блоке из четырех возможных мегафункции ALTMULT_ACCUM (рис. 2.13), а третий – четыре умножителя из четырех возможных в блоке мегафункции ALTMULT_ADD (рис.2.14). Приведенная таблица показывает оптимальное использование ресурсов ЦОС-блоков мегафункцией ALTMULT_ADD за счет использования четырех перемножителей и встроенного дерева сумматоров в блоке, реализующих первые и вторые уровни суммирования. Во всех случаях частота работы фильтров ограничивается величиной 400 МГц.

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

Кратко рассмотрим особенности проектирования цифровых фильтров на примере систолического КИХ-фильтра в САПР ПЛИС Quartus II версии 11.1 Web Edition. Начиная с версии 10.0 из САПР Quartus II исключен векторный редактор, а моделирование предлагается вести с использованием различных симуляторов высокоуровневых языков описания аппаратурных средств, например Active-HDL, Riviera-Pro, ModelSim и др. В качестве свободно распространяемого симулятора с ограниченными возможностями пользователю предлагается использовать систему моделирования ModelSimAltera Free.

Рассмотрим уравнение КИХ-фильтра (нерекурсивного цифрового фильтра с конечно-импульсной характеристикой)

215

которое

представляется

как

арифметическая

сумма

произведений:

 

 

 

 

 

K 1

 

 

 

 

y сk xk ,

 

 

 

k 0

 

 

где y

отклик цепи;

xk

k я входная переменная;

сk весовой коэффициент k й входной переменной, который

является постоянным для всех n ; K - число отводов фильтра. Разработаем модель систолического фильтра на четыре

отвода y C0 x0 С1x1 С2 x2 C3 x3 в САПР ПЛИС Quartus II версии 11.1 в базисе ПЛИС серии Cyclone II с однотипными процессорными элементами (рис. 4.16 и рис. 4.17). ПЛИС серии Cyclone II выбраны из соображений, что в САПР ПЛИС

Quartus II Web Edition не поддерживаются ПЛИС серий Cyclon V и Stratix V.

Дадим произвольное имя файлу верхнего уровня проектной иерархии - poly_syst_main.bdf. Предположим что коэффициенты фильтра целочисленные со знаком известны и равны С0 2 , С1 1 , С2 7 и С3 6 . На вход КИХфильтра поступают входные отсчеты -5, 3, 1 и 0. Правильные значения на выходе фильтра: 10, -1, -40, -10, 26, 6 и т.д., т.е. согласно формуле.

На рис. 4.18 показаны временные диаграммы работы систолического КИХ-фильтра реализованного в базисе ПЛИС Stratix III на четыре отвода с однотипными процессорными элементами в САПР ПЛИС Quartus II версии 9.1.

216

217

Рис. 4.16. Систолический КИХ-фильтр на четыре отвода в САПР ПЛИС Quartus II версии 11.1 с однотипными процессорными элементами

217

218

Рис. 4.17. Однотипный процессорный элемент

Рис. 4.18. Временные диаграммы работы систолического КИХ-фильтра на четыре отвода с однотипными процессорными элементами в САПР ПЛИС Quartus II версии 9.1

218

219

Рис. 4.19. Настройки закладки EDA Tool Settings САПР ПЛИС Quartus II версии 11.1

219

Рассмотрим моделирование КИХ-фильтра с использованием симулятора ModelSim-Altera STARTER EDITION. Предварительно его необходимо подключить. Это осуществляется с помощью меню Assigments/settings/EDA Tool settings. В поле Tool name САПР ПЛИС Quartus II версии 11.1

необходимо выбрать симулятор ModelSim-Altera а в поле

Format Netlist Writer settings указать выходной формат

“нетлиста” – язык VHDL (рис. 4.19).

Предварительно необходимо создать текстовый сценарий функционирования систолического КИХ-фильтра с использованием структурного стиля языка VHDL (“тестбенч”). В качестве промежуточного шаблона, который необходимо отредактировать, можно взять файл poly_syst_main.vht. Для этого необходимо его сформировать следующими действиями:

меню Processing/Start/Start Test Bench Template Writer (пример 2). Отредактируем объект poly_syst_main_vhd_tst, который основан на компоненте poly_syst_main, и сохраним его под именем test_poly_syst_main.vhd (пример 3).

--Vhdl Test Bench template for design : poly_syst_main

--Simulation tool : ModelSim-Altera (VHDL)

LIBRARY ieee;

USE ieee.std_logic_1164.all; ENTITY poly_syst_main_vhd_tst IS END poly_syst_main_vhd_tst;

ARCHITECTURE poly_syst_main_arch OF poly_syst_main_vhd_tst IS

--constants

--signals

SIGNAL clk : STD_LOGIC;

SIGNAL out_filtr : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL out_result_tap1 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL out_result_tap2 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL out_result_tap3 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL res : STD_LOGIC;

SIGNAL tap_out : STD_LOGIC_VECTOR(3 DOWNTO 0);

220