Учебное пособие 800631
.pdf211
Рис. 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