А.А. Макаренко М.Ю.Плотников РАСЧЕТ ЦИФРОВЫХ ФИЛЬТРОВ МЕТОДОМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ Учебное пособие Санкт-Петербург 2014 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ САНКТ-ПЕТЕРБУРГСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ А.А. Макаренко М.Ю.Плотников РАСЧЕТ ЦИФРОВЫХ ФИЛЬТРОВ МЕТОДОМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ Учебное пособие Санкт-Петербург 2014 А.А.Макаренко, М.Ю.Плотников. Расчет цифровых фильтров методом автоматизированного проектирования. Учебное пособие. – СПб: НИУИТМО, 2014. – 50 с. В учебном пособии кратко рассмотрены структуры цифровых фильтров, а также способ их проектирования и расчета средствами автоматизированного проектирования - средой проектирования Matlab. Учебной пособие адресовано студентам бакалавриата и магистрантам, обучающихся по направлению 210700 Инфокоммуникационные технологии и системы связи» и изучающим курс «Цифровая обработка сигналов» Рекомендовано к печати Ученым советом Факультета инфокоммуникационных технологий 19.06.2014 года, протокол №06/14. В 2009 году Университет стал победителем многоэтапного конкурса, в результате которого определены 12 ведущих университетов России, которым присвоена категория «Национальный исследовательский университет». Министерством образования и науки Российской Федерации была утверждена программа его развития на 2009–2018 годы. В 2011 году Университет получил наименование «Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики» Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, 2014 А.А.Макаренко, М.Ю.Плотников 2014 2 Содержание 1. Структуры цифровых фильтров .................................................................... 4 1.1. Структура нерекурсивных фильтров ................................................ 4 1.2. Структуры рекурсивных фильтров ................................................... 5 2. Генерация входных тестовых сигналов ...................................................... 11 2.1 Классификация сигналов .................................................................. 11 2.2. Написание скрипта для генерации тестовых сигналов в среде Matlab................................................................................................. 10 2.3. Контрольные задания ........................................................................ 13 3. Создание цифрового фильтра в среде Matlab ............................................. 15 3.1. Генерация коэффициентов цифрового фильтра в среде Matlab ..... 15 3.2. Контрольные задания ........................................................................ 17 4. Работа в среде Xilinx ISE Design Suite 14.4 ................................................ 18 4.1. Генерация цифрового фильтра в среде Xilinx ISE Design Suite 14.4 .................................................................................................. 18 4.2. Контрольные задания ........................................................................ 31 5. Моделирование цифрового фильтра в среде Xilinx ISE Design Suite 14.4 ............................................................................................................... 31 5.1. Создание програ1ммной оболочки для моделирования средствами языка VHDL ................................................................ 31 5.2. Моделирование цифровых фильтров с помощью средства верификации логических схем ...................................................... 36 5.3. Контрольные задания ........................................................................ 40 Литература ....................................................................................................... 41 Приложение А. Скрипт генерации входных сигналов в среде Matlab ......... 42 Приложение B. Пример программной оболочки для моделирования фильтра в среде ISE Xilinx Design Suite 14.4 ..................................... 44 Приложение C. Скрипт обработки данных в среде Matlab ........................... 47 3 В настоящем учебном пособии кратко рассмотрены структуры цифровых фильтров, а также способ их проектирования и расчета средствами автоматизированного проектирования - средой проектирования Matlab. 1. Структуры цифровых фильтров 1.1 Структура нерекурсивных фильтров В цифровых фильтрах структура нерекурсивного фильтра изображается схемой, которая соединяет вход и выход фильтра и в которую введены элементы задержки, перемножители и сумматоры. Такая схема - это способ визуализировать прохождение отсчетов исходной последовательности и отобразить, где и когда эти отсчеты подвергается задержкам и математической обработке. Структура непосредственно следует из формулы передаточной функции или разностного уравнения фильтра. Такая простая структура нерекурсивного фильтра называется прямой структурой (рис.1). Выходы элементов задержки последовательно умножаются на ряд коэффициентов, определяющих вид импульсной характеристики фильтра, и полученные произведения суммируются для формирования выходного сигнала. Таким образом, выходной сигнал определяется сверткой входного сигнала со значениями импульсной характеристики. Данный фильтр содержит в передаточной функции лишь нули (поскольку в нем нет рекурсивных элементов обратной связи), и, следовательно, для получения частотной характеристики с крутым срезом необходимо относительно большое число элементов задержки. Достоинством нерекурсивного фильтра является то, что такой фильтр всегда устойчив и может обеспечить линейную фазовую характеристику. Рис. 1. Прямая структура КИХ-фильтра 4 Выходной сигнал нерекурсивного фильтра определяется следующим разностным уравнением: y(k)=b0x(k)+...+bN-1x(k-N+1) . 1.2 Структуры рекурсивных фильтров Фильтр с бесконечной импульсной характеристикой (рекурсивный фильтр, БИХ-фильтр) - электронная схема, в состав которой входят элементы задержки, перемножители и сумматоры. В основе структуры рекурсивного фильтра находится цепь обратной связи, соединяющая один или более выходов рекурсивного фильтра с его входом через перемножители, коэффициенты которых заданы параметрами передаточной функции фильтра. Отличительной чертой таких фильтров является то, что их импульсная характеристика теоретически имеет бесконечную длину во временной области, а передаточная функция имеет дробно-рациональный вид. Рекурсивные фильтры могут быть построены в соответствии с различными структурами. Прямая форма 1 В этой части обратимся к прямой канонической структуре, которая характеризуется следующей функцией передачи: (1) Во-первых, мы вводим промежуточную переменную x1(k): . (2) Передаточная функция (1) может быть представлена как произведение двух передаточных функций: 5 . (3) Формуле (3) соответствует последовательное включение рекурсивного фильтра с передаточной функцией H1(z) и нерекурсивного фильтра с передаточной функцией H2(z) (рис.2). Рис. 2. Последовательное включение фильтров H1(z) и H2(z) Такая структура рекурсивного фильтра (непосредственная реализация) называется прямой формой 1 (рис.3). 6 Рис. 3. Структура БИХ-фильтра "прямая форма 1" Прямая форма 2 Для реализации БИХ-фильтра в соответствии с прямой формой 1 требуется (N+M-2) элементов задержки. Но как сократить число элементов задержки, разделив их между рекурсивной и нерекурсивной частями фильтра? Решением этой задачи является реализация БИХ-фильтра в соответствии со структурой, называемой "прямая форма 2" (рис.4). 7 Рис. 4. Структура БИХ-фильтра "прямая форма 2" Альтернативный подход состоит из разложения передаточной функции, представленной уравнением (1), на последовательно соединенные БИХфильтр, а затем КИХ-фильтр. Промежуточной переменной x1(k) соответствует разностное уравнение 8 . (4) Выходной сигнал y(k) через переменную x1(k) может быть выражен следующим образом: . (5) Следует отметить, что , Используя уравнения (4) представленную на рис.5. (6) . и (5), можно организовать (7) структуру, Рис. 5. Структура прямой формы до объединения элементов задержки 9 Каноническая форма После объединения элементов задержки образуется структура БИХфильтра, называемая канонической формой БИХ-фильтра (рис.6). Рис. 6. Структура "Каноническая форма" БИХ-фильтра На практике часто используется ячейка - БИХ-фильтр, в котором М=N=2 10 (рис.7). Такая ячейка второго порядка применяется в качестве элементарного модуля при каскадной реализации фильтра относительно высокого порядка. Каскадная реализация обеспечивает создание более устойчивого БИХ-фильтра и снижает влияние ошибок округления результатов промежуточных вычисления на точность работы всего фильтра. Рис. 7. Каноническая структура ячейки второго порядка 2. Генерация входных тестовых сигналов 2.1 Классификация сигналов Под сигналом обычно понимают принятые данные или просто материальный носитель информации. Принять рассматривать сигналы как функции, заданные в каких-то координатах: одномерные сигналы, заданные в виде функций времени x(t), двумерные сигналы (например, изображения) P(x,y), заданные на некоторой плоскости, и т. д. На практике чаще всего рассматриваются сигналы, описываемые действительными функциями. 11 Рис. 8. Основные виды сигналов: а) аналоговый, б) импульсный, в) цифровой Аналоговый или непрерывный сигнал описывается непрерывной или реже кусочно-непрерывной функцией времени x(t), причем значения как самой функции, так и ее аргумента принадлежат бесконечному множеству. Сигнал x(t) называется аналоговым, потому что такой сигнал является аналогом изменения значений какой-то физической величины, порождающей этот сигнал. Импульсные или дискретные сигналы xP(t) образуются путём дискретизации аналогового сигнала во времени: умножения аналогового сигнала x(t) на функцию дискретизации y(t), представляющую собой периодическую последовательность δ-функций, следующих с интервалом дискретизации Δt. Отметим, что и у такого сигнала значения функции принадлежат бесконечному множеству. Цифровой сигнал xS(k) - это импульсный сигнал, подвергнутый дискретизации по уровню. Цифровой сигнал описывается квантованной решетчатой функцией (рис.9), т. е. решетчатой функцией, значения которой принадлежат конечному множеству и принимают лишь ряд дискретных уровней уровней квантования, число которых определяется разрядностью числа, посредством которого описывается значения цифрового сигнала. Рис. 9. К определению цифрового сигнала 12 Финитный или ограниченный во времени сигнал характеризуется тем, что длительность этого сигнала имеет конечное значение, т.е. такой сигнал отличен от нуля лишь на конечном интервале T. Очень важным является класс сигналов с конечным или финитным спектром. Спектр таких сигналов X(jω) обращается в нуль вне некоторого конечного интервала частот. 2.2 Написание скрипта для генерации тестовых сигналов в среде Matlab Для моделирования цифровых фильтров в среде ISE Xilinx Design Suite 14.4 необходимо создать входной тестовый сигнал в правильном формате в среде Matlab. Этот тестовый сигнал должен быть записан в текстовый файл, в котором цифровые отсчеты тестового сигнала записаны построчно. Приведем пример скрипта, выполняющего генерацию подобного тестового сигнала и записывающего его в текстовый файл. Следует отметить, что генерируемый приведенным способом тестовый сигнал соответствует реальному сигналу, который можно получить, например, с 16-ти разрядного АЦП, выдающего знаковые цифровые отсчеты в формате дополнения до двух (two’s complement). Для генерации входного тестового сигнала необходимо выполнить следующие шаги: - запустить Matlab. - создать новый скриптовый *.m файл, выбрав команду «New» > «Script» в меню «Файл»; - записать в скриптовый файл последовательность команд, осуществляющих генерацию тестового сигнала и его запись в текстовый файл (см. пример в Приложении А). - запустить выполнение скрипта кнопкой «Run», расположенной на верхней панели управления средой Matlab. В результате выполнения скрипта, приведенного в Приложении А, на экран будет выведен сигнал, математически описываемый выражением: I=A*cos(2*π*f1*t)+A1*cos(2*π*f2*t), (8) Этот сигнал представляет собой сумму двух косинусоидальных сигналов с амплитудами A=10000, A1=4000 и частотами f1=1 кГц и f2=10 кГц. В результате выполнения скрипта цифровые отсчеты сигнала (8) будут записаны в тестовый файл IPUT_DATA.txt в формате two’s complement fixed-point. На экран будет выведен результат выполнения скрипта, представленный на рис.10. 13 Входной сигнал 4 Амплитуда, отн.ед. 1.5 x 10 1 0.5 0 -0.5 -1 -1.5 0 0.001 0.002 0.003 0.004 0.005 Время, с 0.006 0.007 0.008 0.009 0.01 Спектр входного сигнала Амплитуда, отн.ед. 10000 8000 6000 4000 2000 0 0 1000 2000 3000 4000 5000 6000 7000 8000 Частота, Гц 9000 10000 11000 12000 13000 14000 15000 Рис.10. Результат выполнения скрипта генерации входного тестового сигнала Далее создадим цифровой фильтр низких частот, с помощью которого можно отфильтровать сигнал на частоте f2. 2.3. Контрольные задания Напишите скрипт для генерации тестовых сигналов в среде Matlab. Тестовый сигнал должен задаваться формулой: I=A*cos(2*π*f1*t)+A1*cos(2*π*f2*t) +A2*cos(2*π*f3*t), и иметь следующие параметры (Табл.1): Таблица 1 Варианты тестовых сигналов Номер Частота A A1 A2 f1, Гц f2, Гц f3, Гц варианта Дискретизации, Гц 1 100000 10000 5000 3000 1000 3000 5000 2 100000 8000 3000 5000 500 2000 3500 3 100000 9000 7000 4000 850 3700 4900 4 100000 5000 1000 4000 3000 6000 9000 5 100000 2500 1000 7000 100 10000 15000 6 50000 2000 3000 6000 3000 13000 13500 7 50000 7000 12000 11000 4000 6000 8000 14 (9) 8 9 10 11 12 13 14 15 16 17 18 19 20 50000 50000 50000 125000 125000 125000 125000 125000 200000 200000 200000 200000 200000 2000 3000 9000 13000 2000 1000 5000 7000 10000 4000 2000 4000 1000 5000 6000 7000 1000 5000 8000 7000 3000 4000 2000 8000 1000 3000 14000 8000 2000 3000 7000 2000 2000 8000 1000 8000 1000 17000 4000 7000 4500 2500 20000 16500 17000 1000 2000 3500 14500 17000 10000 8000 8000 6000 4000 25000 21500 18000 3000 4000 5500 16000 19000 15000 10000 9000 8500 5500 30000 23000 20000 5000 6500 8000 18500 21000 20000 15000 3. Создание цифрового фильтра в среде Matlab 3.1 Генерация коэффициентов цифрового фильтра в среде Matlab Для расчета коэффициентов нужного нам фильтра низких частот воспользуемся утилитой среды Matlab Filter Design and Analysis Tool (FDATool), функционал которой позволяет конвертировать коэффициенты цифровых фильтров в формат two’s complement fixed-point и записывать их в специализированный файл коэффициентов, интегрируемый в среду Xilinx ISE Design Suite 14.4. Для создания цифрового фильтра с конечной импульсной характеристикой (КИХ фильтра) в среде Matlab необходимо выполнить следующие действия: - запустить Matlab; - набрать в командной строке Matlab команду «fdatool», вызывающую GUI интерфейс утилиты FDATool (см. рис.11); - на вкладке «Set quantization parameters», расположенной в левой нижней части GUI-интерфейса необходимо в окне «Filter arithmetic» установить параметр «fixed-point»; - далее необходимо перейти на вкладку «Design Filter»; - занести в нижеперечисленные поля следующие значения: Response Type – Lowpass – выбор типа фильтра: фильтр низких частот; Design Method – FIR, Equiripple – особенности построения фильтра: эллиптический фильтр c конечной импульсной характеристикой (КИХ); Filter Order – Minimum order (минимизировать количество коэффициентов фильтра); 15 Frequency Specifications (задание частотной характеристики фильтра): Units, Hz – единицы измерения частоты, Гц; Fs – частота дискретизации входных сигналов: 100000 Гц; Fpass – полоса пропускания до 2000 Гц; Fstop – полоса подавления с 5000 Гц; Magnitude Specifications (задание амплитудной характеристики фильтра): Units, dB – единицы измерения, дБ; Apass – неравномерность АЧХ фильтра в полосе пропускания: 0,1 дБ; Astop – ослабление сигналов в полосе подавления: 80 дБ. Рис. 11. GUI интерфейс утилиты FDATool После внесения всех значений в поля интерфейса необходимо запустить процесс генерации фильтра путем нажатия на кнопку «Design Filter» для запуска процесса расчета коэффициентов фильтра. В результате генерации получается фильтр низких частот 111-го порядка, с АЧХ (синим) и ФЧХ (зеленым), представленными на рис.11. Для просмотра полученных коэффициентов фильтра необходимо нажать кнопку «Filter Coefficients», расположенную над графиком АЧХ фильтра на панели управления FDATool. 16 Для переноса рассчитанных коэффициентов фильтра в среду Xilinx ISE Design Suite 14.4 необходимо сгенерировать специализированный файл коэффициентов с расширением *.coe. Данный тип файлов распознается средой Xilinx ISE и может быть использован для создания реального цифрового фильтра на ПЛИС фирмы Xilinx. Генерация файла коэффициентов для среды Xilinx ISE Design Suite 14.4 в формате two’s complement fixed-point производится путем выбора пункта меню утилиты FDATool «Targets» > «XILINX Coefficient (.COE) file». После этого нужно задать имя файла и указать путь к месту сохранения файла (имя файла и путь к нему не должны содержать пробелов, русских букв и спецсимволов). 3.2. Контрольные задания Сгенерируйте цифровой фильтр средствами утилиты Matlab FDATool и создайте файл коэффициентов *.coe. Параметры фильтра приведены согласно вариантам: 1. Тип фильтра: фильтр низких частот, полоса пропускания 2000 Гц. 2. Тип фильтра: полосовой фильтр, полоса пропускания от 1000 Гц до 3000 Гц. 3. Тип фильтра: фильтр высоких частот, полоса пропускания от 1000 Гц. 4. Тип фильтра: заграждающий фильтр, полоса заграждения от 4000 Гц до 8000 Гц. 5. Тип фильтра: фильтр высоких частот, полоса пропускания от 500 Гц. 6. Тип фильтра: фильтр низких частот, полоса пропускания 5000 Гц. 7. Тип фильтра: фильтр низких частот, полоса пропускания 6000 Гц. 8. Тип фильтра: фильтр высоких частот, полоса пропускания от 3000 Гц. 9. Тип фильтра: полосовой фильтр, полоса пропускания от 5000 Гц до 7000 Гц. 10. Тип фильтра: фильтр низких частот, полоса пропускания 1000 Гц. 11. Тип фильтра: полосовой фильтр, полоса пропускания от 22000 Гц до 27000 Гц. 12. Тип фильтра: фильтр низких частот, полоса пропускания 1000 Гц. 13. Тип фильтра: заграждающий фильтр, полоса заграждения от 17000 Гц до 20000 Гц. 14. Тип фильтра: фильтр низких частот, полоса пропускания 1500 Гц. 15. Тип фильтра: полосовой фильтр, полоса пропускания от 3000 Гц до 6000 Гц. 16. Тип фильтра: полосовой фильтр, полоса пропускания от 4000 Гц до 10000 Гц. 17 17. Тип фильтра: фильтр низких частот, полоса пропускания 11000 Гц. 18. Тип фильтра: фильтр высоких частот, полоса пропускания от 12000 Гц. 19. Тип фильтра: полосовой фильтр, полоса пропускания от 11000 Гц до 18000 Гц. 20. Тип фильтра: фильтр низких частот, полоса пропускания 8000 Гц. Параметры Apass = 0,1 дБ и Astop=80 дБ одинаковы для всех вариантов. 4. Работа в среде Xilinx ISE Design Suite 14.4 4.1. Генерация цифрового фильтра в среде Xilinx ISE Design Suite 14.4 Цифровой КИХ фильтр на основе созданного файла коэффициентов *.coe может быть добавлен как в новый проект среды Xilinx ISE Design Suite 14.4, так и в уже существующий. Рассмотрим подробнее процесс создания цифрового фильтра в новом проекте. Для создания нового проекта программы для конкретной ПЛИС, который в будущем будет содержать генерируемый цифровой фильтр необходимо запустить среду Xilinx ISE Design Suite 14.4 и в меню «File» выбрать опцию «New project» - программа предложит выбрать имя проекта и его расположение на диске. Эти данные необходимо заполнить на английском языке и без пробелов (см. рис. 3): Name: FIR_FILTER - название проекта. Location: D:\Xilinx_projects\TESTS\FIR_FILTER – расположение проекта на диске. Top level source type: Schematic – верхний уровень иерархии проекта: блок-схема. 18 Рис. 12. Создание нового проекта в среде Xilinx ISE Design Suite 14.4 – шаг 1 Следующим шагом создания нового проекта является указание конкретной ПЛИС, под которую создается этот проект. При выборе ПЛИС из приведенного в окне списка следует помнить, что существующие ПЛИС могут значительно отличаться как по своей архитектуре, так по техническим характеристикам. Поэтому некоторые стандартные функции среды Xilinx ISE Design Suite 14.4 могут поддерживаться для одной ПЛИС и не поддерживаться для другой. В качестве примера остановимся на выборе ПЛИС Xilinx Spartan 3 XC3S1000 FT256. Создание цифровых фильтров для этой ПЛИС осуществляется с использованием стандартного блока генерации фильтров из библиотеки Core Generator - Fir Compiler v5.0. Для указания конкретной ПЛИС необходимо установить в интерфейсном окне настроек проекта следующие параметры (см. рис.13): Evaluation Development Board: None Specified – отладочная плата: не задана. Product Category: All – категория продукта: все. Family: Spartan 3 – семейство ПЛИС. Device: XC3S1000 – модель ПЛИС. FT: 256 – общее число вводоввыводов. Speed: -5 – быстродействие ПЛИС. 19 Synthesis Tool: XST(VHDL/Verilog) – основная утилита для синтеза. Simulator: iSim – симулятор. Preferred Language: VHDL – предпочитаемый язык. Property Specification in project file: Store all values – параметры хранения данных. VHDL Source Analysis Standard: VHDL-93 – стандарт языка VHDL. Создание проекта будет осуществлено после нажатия кнопок «Next» и «Finish». Рис. 13. Создание нового проекта в среде Xilinx ISE Design Suite 14.4 – шаг 2 Следующим шагом генерации цифрового фильтра является добавление в проект файла верхнего уровня иерархии схематического типа (Schematic), который станет основным рабочим полем проекта. Создание этого файла производится путем выбора опции «New source» в выпадающем меню, вызываемом правым щелчком мыши по наименованию ПЛИС, для которой создается проект (см. рис.14): 20 Рис. 14. Создание рабочего поля проекта Далее необходимо осуществить выбор типа нового файла для добавления в проект. Для этого в поле «Select Source Type» выбираем «Schematic» и указываем имя файла (например, «FILTER_TOP_LEVEL» см. рис.15). Рис. 15. Добавление новых файлов в проект После этого вновь созданный файл появится в окне иерархии и будет открыт в рабочем пространстве среды Xilinx ISE Design Suite 14.4. Файл автоматически станет файлом иерархии верхнего уровня (Top Module). В 21 дальнейшем на рабочее поле этого файла могут помещаться цифровые блоки, логические примитивы и соединения между ними, схематично отображающие связи между элементами проекта. Теперь сгенерируем и добавим на рабочее поле проекта цифровой фильтр на основе созданного ранее в среде Matlab файла коэффициентов *.coe. Для этого добавим в проект новый файл с именем «LOWPASS_FILTER» типа «IP (Core generator & Architecture Wizard)», как это осуществлялось ранее для файла основного рабочего поля проекта (рис.16): Рис. 16. Генерация цифрового фильтра в среде Xilinx ISE Design Suite 14.4 – шаг 1 После нажатия кнопки «Next» на экран будет выведен список всех доступных стандартных программно-аппаратных блоков для выбранной ПЛИС. Функционал имеющихся блоков очень широк и включает в себя не только базовые арифметические операции, но и другие, гораздо более сложные функции: цифровую фильтрацию, децимацию, интерполяцию, быстрое преобразование Фурье, тригонометрические операции, работу со стандартными интерфейсами передачи данных и т.д. Для генерации цифрового фильтра воспользуемся блоком генерации цифровых фильтров «Fir Compiler v5.0» из библиотеки Core Generator. Для этого запустим GUI-интерфейс этого блока, выделив его среди перечня стандартных программно-аппаратных блоков в каталоге «Digital Signal Processing/Filters» (рис.17). 22 Рис. 17. Генерация цифрового фильтра в среде Xilinx ISE Design Suite 14.4 – шаг 2 В результате на экран будет выведен GUI-интерфейс блока генерации цифровых фильтров Fir Compiler v5.0 (рис.18): Рис. 18. Интерфейс блока Fir Compiler v5.0. 23 Для создания цифрового фильтра с требуемыми коэффициентами в первую очередь необходимо указать путь к созданному ранее файлу *.coe. Для этого параметру «Select Source» необходимо задать значение «COE File» и указать путь к файлу коэффициентов .*coe через меню «Browse…». После этого на экран «Freq. Response» будет выведена АЧХ фильтра в соответствии с коэффициентами файла *.coe (рис.19). Рис.19. Генерация цифрового фильтра с заданными коэффициентами – шаг 1 Далее необходимо корректно настроить блок «Fir Compiler v5.0» с тем, чтобы получить цифровой фильтр с нужными характеристиками. Для этого на первой странице GUI-интерфейса необходимо дополнительно выставить следующие параметры: - указать тип фильтра без изменения частоты дискретизации: Filter Type – Single Rate; - установить количество каналов фильтра, равное 1: Number of Channels 1; - определить формат указания частоты дискретизации фильтра указание частоты: Select format - Frequency Specification; 24 - входная частота дискретизации - Input Sampling Frequency: 0.1 MHz - тактовая частота работы блока (определяется возможностями ПЛИС) - Clock Frequency: 25 MHz. На второй странице GUI-интерфейса параметры фильтра должны быть установлены в соответствии с рис.20: - архитектура построения фильтра – Filter Architecture: Systolic Multiply Accumulate; - структура коэффициентов фильтра (унаследованная) – Coefficient Structure: Inferred; - тип коэффициентов фильтра (знаковые) – Coefficient Type: Signed; - разрядность коэффициентов фильтра – Coefficient Width: 16; - число путей параллельной обработки – Number of Paths: 1; - разрядность входного сигнала – Input Data Width: 16; - число разрядов дробной части входного сигнала – Input Data Fractional Width: 0; - параметры округления выходного сигнала (максимальная точность) – Output Rounding Mode: Full Precision; - число разрядов дробной части выходного сигнала – Output Data Fractional Bits: 0; - удержание значений выходного сигнала (текущий выходной цифровой отсчет остается на выходе фильтра до генерации следующего отсчета выходного сигнала) – Registered Output:yes. 25 Рис.20. Генерация цифрового фильтра с заданными коэффициентами – шаг 2 На третьей странице GUI-интерфейса параметры фильтра должны быть установлены в соответствии с рис.21: - параметры оптимизации фильтра (минимизация занимаемых ресурсов) – Optimization Goal: Area; - в области опций контроля (Control Options) должен быть помечен пункт ND (New Data), высокий логический уровень этого входного сигнала сообщает фильтру о приходе нового цифрового отсчета на вход фильтра; - в области Memory Options все значения должны быть установлены на Automatic. 26 Рис. 21. Генерация цифрового фильтра с заданными коэффициентами – шаг 3 На четвертой странице GUI-интерфейса настроенные ранее параметры фильтра – см. рис.22: 27 представлены все Рис. 22. Генерация цифрового фильтра с заданными коэффициентами – шаг 4 После установки всех параметров GUI-интерфейса в соответствии с указанными ранее значениями запуск процесса генерации фильтра осуществляется путем нажатия на кнопку «Generate» (см. рис.22). После завершения процесса генерации сгенерированный фильтр появится в окне иерархии проекта Xilinx ISE Design Suite 14.4 (см. рис.23). Рис. 23. Сгенерированный фильтр в окне иерархии проекта 28 В связи с некоторыми особенности этой среды разработки желательно осуществить повторную генерацию этого фильтра (либо путем его открытия через окно иерархии и повторной генерации, либо путем выполнения команды Regenerate Core в окне доступных процессов, расположенном ниже окна иерархии). После генерации фильтра необходимо добавить его в качестве блока на основное рабочее поле проекта «FILTER_TOP_LEVEL.sch» - в файл верхнего уровня иерархии, созданный ранее. Для этого среди вкладок под областью доступных команд и процессов необходимо выбрать вкладку «Symbols». После этого в списке доступных файлов необходимо найти сгенерированный фильтр «LOWPASS_FILTER» (см. рис.24) и «перетащить» его на основное рабочее поле проекта - схему. Рис. 24. Выбор фильтра для переноса на основное рабочее поле проекта После «перетаскивания» схематичное изображение фильтра появится на основном рабочем поле проекта, как это показано на рис.25. Рис. 25. Схематичное изображение фильтра на основном рабочем поле проекта 29 Появившийся на основном рабочем поле проекта цифровой фильтр содержит следующие интерфейсные элементы: входы: - DIN (15:0) – входная шина данных с разрядностью 16 бит (т.е. значения входного сигнала для фильтра могут меняться в пределах от -2N-11 до 2N-1-1, где N=16); - ND (New Data) – входной сигнал с разрядностью 1 бит, высокий логический уровень которого сообщает фильтру о приходе на вход DIN (15:0) нового отсчета данных; - CLK – вход тактового сигнала, определяющего быстродействие логических элементов фильтра выходы: - DOUT (38:0) – выходная шина данных с разрядностью 39 бит (т.е. значения выходного сигнала фильтра могут меняться в пределах от -2N-1-1 до 2N-1-1, где N=39); - RFD (Ready For Data) – выходной сигнал с разрядностью 1 бит, высокий логический уровень которого сообщает о том, что фильтр выполнил предыдущее преобразование и готов к приему нового цифрового отсчета данных на входе DIN (15:0); - RDY (Ready) - выходной сигнал с разрядностью 1 бит, высокий логический уровень которого сообщает о том, что на выходе фильтра появился новый цифровой отсчет выходного сигнала. При необходимости схематичное изображение фильтра можно изменить путем вызова всплывающего меню правой кнопкой мыши и выбора пунктов меню «Symbol» > «Edit Symbol», как это показано на рис. 26. Рис. 26. Изменение схематичного изображения фильтра 30 После добавления цифрового фильтра на основное рабочее поле проекта остается проверить его работоспособность путем его функционального моделирования с помощью встроенного в среду разработки Xilinx ISE Design Suite 14.4 средства для верификации логических схем. 4.2 Контрольные задания Сгенерируйте цифровой фильтр среде Xilinx ISE Design Suite 14.4 на основе файлов коэффициентов, полученных в ходе выполнения задания по п. 2.2. 5. Моделирование цифрового фильтра в среде Xilinx ISE Design Suite 14.4 5.1 Создание программной оболочки для моделирования средствами языка VHDL Рассмотрим подробнее процесс моделирования вновь созданного цифрового фильтра. Для моделирования фильтра необходимо добавить в проект новый файл: программную оболочку для моделирования - VHDL Test Bench. С помощью такой программной оболочки и специализированных библиотек и команд языка VHDL можно описать входные сигналы для цифрового фильтра, в том числе и те сигналы, которые были созданы и записаны ранее в текстовый файл с помощью скрипта среды Matlab. Для создания файла VHDL Test Bench необходимо сгенерировать и добавить его в проект тем же способом, как это осуществлялось ранее для файлов основного рабочего поля проекта и самого цифрового фильтра (рис.27): 31 Рис. 27. Добавление в проект файла программной оболочки для моделирования (VHDL Test Bench) После добавления файла в проект пользователю будет предложено выбрать Unit Under Test (UUT) – файл, который будет моделироваться программной оболочкой VHDL Test Bench. В качестве такого файла необходимо выбрать цифровой фильтр (см. рис.28). Рис. 28. Выбор файла для симуляции (UUT) После завершения выбора нужного файла моделирования для пользователя будет открыт текстовый файл VHDL Test Bench, который 32 уже содержит информацию о моделируемом фильтре – его портах вводавывода (см. рис.29). Рис. 29. Программная оболочка для моделирования VHDL Test Bench Этот файл теперь необходимо модифицировать – описать сигналы на входных портах моделируемого фильтра, подключить текстовые файлы для чтения входного сигнала и записи выходного, а также правильно задать периодичность записи выходного сигнала. Полный текст VHDL Test Bench со всеми необходимыми внесенными изменениями представлен в Приложении B. Рассмотрим подробнее основные части программной оболочки для моделирования VHDL Test Bench. Стоит отметить, что для языка VHDL не важен регистр, поэтому все команды можно писать как обычными, так и заглавными буквами. В первую очередь необходимо убедиться в том, что в файл программной оболочки включены все необходимые для моделирования библиотеки языка VHDL, а именно: LIBRARY ieee - задает основную библиотеку стандарта VHDL IEEE; USE ieee.std_logic_1164.ALL - выбор всех компонентов части библиотеки IEEE std_logic_1164, отвечающей за использование типов сигналов std_logic (один бит данных) и std_logic_vector (шина данных); use IEEE.std_logic_arith.all - выбор всех компонентов части библиотеки IEEE std_logic_arith, отвечающей за использование математических операций; use IEEE.std_logic_unsigned.all - выбор всех компонентов части библиотеки IEEE std_logic_unsigned, отвечающей за беззнаковые вычисления над типом данных std_logic_vector; 33 use ieee.numeric_std.all - выбор всех компонентов части библиотеки IEEE numeric_std, отвечающей как за знаковые, так и беззнаковые математические операции; USE IEEE.STD_LOGIC_TEXTIO.ALL - выбор компонентов части библиотеки IEEE IEEE.STD_LOGIC_TEXTIO, отвечающей за чтение и запись данных в текстовые файлы; use std.textio.all - выбор всех компонентов библиотеки std.textio, отвечающей за работу с текстовыми файлами; LIBRARY UNISIM задает имя основной библиотеки для функционального моделирования логических элементов на ПЛИС фирмы Xilinx; USE UNISIM.Vcomponents.ALL - выбор всех компонентов части библиотеки UNISIM Vcomponents, содержащей описания всех логических примитивов ПЛИС фирмы Xilinx. Далее в тексте программной оболочки VHDL Test Bench должны следовать описания архитектуры моделируемого фильтра: портов вводавывода и одноименных сигналов. После этого должны следовать описания основных констант, используемых при моделировании и определение путей к входным и выходным файлам: constant clk_period : time := 40 ns; – задание входной тактовой частоты для цифрового фильтра; constant N: integer := 30000000; – задание максимального числа записей выходного сигнала (желательно не использовать слишком большие значения, кроме того – выставленного параметра хватит для моделирования и записи выходного сигнала цифрового фильтра с частотой дискретизации 100 кГц длительностью в 300 секунд). FILE INPUT : TEXT OPEN READ_MODE IS "D:\Xilinx_projects\TESTS\INPUT_DATA.TXT"; – открытие текстового файла INPUT_DATA.TXT для чтения; FILE OUTPUT : TEXT OPEN WRITE_MODE IS "D:\Xilinx_projects\TESTS\OUTPUT_DATA.TXT"; – создание и открытие текстового файла OUTPUT_DATA.TXT для записи. Следующим важным элементом программной оболочки VHDL Test Bench является непосредственное описание процессов для входных сигналов цифрового фильтра. Nd_process :process – создание процесса; begin – начало процесса ND <= '0'; – запись в порт ND (New Data) логического значения «0» (данных нет); wait for 9960 ns; – ожидание в течение 9960 наносекунд; ND <= '1'; – запись в порт ND (New Data) логического значения «1» (появились данные на входном порте); 34 wait for 40 ns; – ожидание в течение 40 наносекунд и затем переход к первой команде процесса и повторение всей последовательности команд процесса; end process; – конец описания процесса. Поскольку частота дискретизации для моделируемого фильтра составляет 100 кГц, то период следования цифровых отсчетов 1/100 кГц = 10000 нс, поэтому период следования стробов ND также должен составлять 9960 + 40 нс = 10000 нс. Длительность строба в 40 нс соответствует тактовой частоте работы фильтра – настройкам сгенерированного фильтра и константе constant clk_period : time := 40 ns, объявленной ранее. Подобным образом описываются все процессы для входных портов моделируемого фильтра, в том числе и основной процесс симуляции чтения входного тестового сигнала из текстового файла: stim_proc: process – создание основного процесса моделирования и чтения данных из текстового файла; variable L: line; – объявление вспомогательной переменной L; variable DIN_TXT : STD_LOGIC_VECTOR (15 DOWNTO 0) := x"0000"; – объявление вспомогательной переменной DIN_TXT и задание ее нулевого начального значения; file vector_file: text is in "D:\Xilinx_projects\TESTS\INPUT_DATA.TXT"; – указание пути к файлу для чтения данных; begin – начало процесса; din <=x"0000"; – запись нулевого начального значения сигнала данных на входе фильтра; while not endfile (vector_file) loop – проверка на достижение конца файла, начало цикла моделирования; readline(vector_file, L); read(L, DIN_TXT); переменную DIN_TXT; wait for 9960 ns; наносекунд; din <= DIN_TXT; сигнала на вход фильтра; wait for 40 ns; наносекунд; end loop; wait; пользователем; – чтение строки из файла; – запись прочитанной строки в – ожидание – подача – ожидание в течение значения в – конец цикла моделирования – ожидание до завершения 35 9960 тестового течение 40 процесса end process; – конец процесса После описания процесса чтения тестового сигнала из файла остается описать процесс записи выходных данных моделируемого цифрового фильтра в выходной текстовый файл: write_process: process – создание процесса записи выходных данных в текстовый файл; variable i: integer range 0 to N := 0; – объявление вспомогательной переменной i – количества возможных записей в файл (N = 30000000); variable outLine : line; – объявление вспомогательной переменной outLine; begin – начало процесса; while i < N loop – проверка на операций записи данных; количество проведенных – ожидание в течение 10 wait for 10 us; микросекунд; write (outLine, dout); – запись текущего значения выходного сигнала цифрового фильтра в переменную outLine; writeline (OUTPUT, outLine); – запись значения переменной outLine в текстовый файл; i := i + 1; – наращивание значения счетчика количество произведенных записей; end loop; – конец цикла записи; end process; – конец процесса записи. Не следует забывать заканчивать описание программной оболочки VHDL Test Bench командой «END;». 5.2 Моделирование цифровых верификации логических схем фильтров с помощью средства После описания программной оболочки для моделирования VHDL Test Bench остается запустить сам процесс моделирования. Это осуществляется путем переключения среды Xilinx ISE Design Suite 14.4 в режим Simulation, как это показано на рис.30. 36 Рис. 30. Переключение в режим симуляции в Xilinx ISE Design Suite 14.4 Далее необходимо запустить встроенное в среду Xilinx ISE Design Suite 14.4 средство для верификации логических схем iSim Simulator «двойным щелчком» по пункту меню Simulate Behavioral Model в области доступных команд и процессов, как это показано на рис. 31. Рис. 31. Запуск средства верификации логических схем iSim Для запуска процесса симуляции остается задать время симуляции (согласно частоте дискретизации моделируемого цифрового фильтра и длительности входного сигнала в текстовом файле – 100 миллисекунд) и нажать на кнопку «Run for the time specified on the toolbar», как это показано на рис.32. Рис. 32. Запуск процесса моделирования цифрового фильтра с помощью средства верификации логических схем iSim После этого начнется процесс моделирования цифрового фильтра, который может продлиться несколько минут в зависимости от 37 быстродействия персонального компьютера пользователя и параметров фильтра (разрядности, частоты дискретизации и т.д.). Ход процесса моделирования показан на рис.33. Рис. 33. Процесс моделирования цифрового фильтра с помощью средства верификации логических схем iSim Из рис.33 можно увидеть, что выходной сигнал с цифрового фильтра представлен в виде цифровых отсчетов, меняющихся с периодичностью в 10 мксек, что соответствует выбранной частоте дискретизации 100 кГц. После завершения моделирования – достижения временной отметки в 100 мсек, текстовый файл OUTPUT_DATA.TXT, содержащий цифровые отсчеты выходного сигнала в формате two’s complement fixed-point появится в указанной ранее директории. Далее данные этого файла необходимо сконвертировать в формат, удобный для анализа – signed integer. Для этого необходимо по аналогии с созданием скрипта для генерации входного тестового сигнала написать в программе Matlab скрипт, интерпретирующий данные текстового файла с выходным сигналом. Пример такого скрипта приведен в Приложении C. В результате выполнения такого скрипта на экран будет выведен график выходного сигнала цифрового фильтра (см. рис.34), реализованного в среде Xilinx ISE Design Suite 14.4 и отмоделированного с помощью входного тестового сигнала с использованием средства для верификации логических схем iSim. 38 Сигнал после фильтрации 9 Амплитуда, отн.ед. 3 x 10 2 1 0 -1 -2 -3 0 0.01 0.02 0.03 0.04 Амплитуда, отн.ед. 0.06 0.07 0.08 0.09 0.1 Спектр сигнала после фильтрации 9 3 0.05 Время, с x 10 2.5 2 1.5 1 0.5 0 0 1000 2000 3000 4000 5000 6000 7000 8000 Частота, Гц 9000 10000 11000 12000 13000 14000 Рис. 34. Результат моделирования цифрового фильтра с помощью средства верификации логических схем iSim Согласно рис.34, в результате пропускания входного тестового сигнала через сгенерированный в среде Xilinx ISE Design Suite 14.4 цифровой фильтр низких частот с полосой пропускания 2 кГц сигнал на частоте 10 кГц был полностью отфильтрован. Следует также отметить, что выходной сигнал цифрового фильтра на частоте 1 кГц имеет теперь большую амплитуду, чем во входном тестовом сигнале. Этот эффект усиления сигнала является следствием целочисленного представления всех коэффициентов, созданных ранее в среде Matlab. Так, в ходе создания файла коэффициентов *.coe коэффициенты фильтра преобразуются в формат fixed-point, причем при преобразовании учитываются только значащие разряды после запятой, что при представлении этих коэффициентов в двоичном виде эквивалентно умножению коэффициентов на 2N (N-разрядность коэффициентов фильтра, в нашем случае N=16). Таким образом, для ПЛИС все коэффициенты представляются как знаковые целые числа. По этой причине согласно принципу работы цифрового фильтра (согласно разностному уравнению), выходной сигнал цифрового фильтра усиливается. В связи с этим возникает необходимость увеличения разрядности выходного сигнала цифрового фильтра по сравнению с входной. Так, в нашем случае, разрядность входного сигнала была равна 16, а выходного сигнала – 39. Усиление фильтров следует обязательно учитывать в схемах цифровой обработки сигналов на ПЛИС. Однако усиление фильтра можно и полностью исключить путем «отбрасывания» младших разрядов 39 15000 выходного сигнала, что эквивалентно при представлении выходного сигнала фильтра в двоичном виде делению на 2 M, где M – количество «отбрасываемых» разрядов. Сама процедура «отбрасывания» может осуществляться как с помощью специально разработанного средствами языка VHDL программно-аппаратного блока, так и непосредственно с помощью блока генерации цифровых фильтров Fir Compiler v5.0. Блок генерации цифровых фильтров Fir Compiler v5.0 предлагает несколько вариантов «отбрасывания» ненужных младших разрядов выходного сигнала, основанных на различных методах округления (см. рис.20 - параметр Output Rounding Mode). Возможны следующие варианты округления значения выходного сигнала с отбрасыванием его младших разрядов: - Full Precision – без «отбрасывания» младших разрядов; - Truncate LSBs – усечение младших разрядов (обеспечивает наименьшую точность результата); - Non Symmetric Rounding Down – округление до наименьшего целого; - Non Symmetric Rounding Up – округление до наибольшего целого; - Symmetric Rounding to Zero – симметричное округление к нулю; - Symmetric Rounding to Infinity – симметричное округление к бесконечности; Каждый из представленных методов округления имеет свои преимущества, а выбор использования того или иного метода округления завит от конкретной задачи. 5.3. Контрольные задания Опишите программную оболочку для моделирования цифровых фильтров, сгенерированных согласно п. 2.2 и 3.2 (см. Приложение B), отмоделируйте цифровой фильтр в среде Xilinx ISE Design Suite 14.4 с помощью средства верификации логических схем iSim и проанализируйте результаты моделирования с помощью скрипта для анализа данных (см. Приложение С) в среде Matlab. 40 Литература 1. Тарасов И.Е. Разработка цифровых устройств на основе ПЛИС Xilinx с применением языка VHDL. – М.: Горячая линия – Телеком, 2005. – 252 с. 2. Максфилд К. Проектирование на ПЛИС. Курс молодого бойца. – М.: Издательский дом «Додэка-XXI», 2007. – 408 c. 3. Spartan 3 FPGA Family Data Sheet [Электронный ресурс]. – Режим доступа: http://www.xilinx.com/support/documentation/data_sheets/ds099.pdf, свободный. Яз. англ. (дата обращения 01.12.2013). 4. Fir Compiler 5.0 [Электронный ресурс]. – Режим доступа: http://www.xilinx.com/support/documentation/ip_documentation/fir_compiler_d s534.pdf, свободный. Яз. англ. (дата обращения 01.12.2013). 5. Официальный сайт фирмы Xilinx http://www.xilinx.com/ 41 Приложение А. Скрипт генерации входных сигналов в среде Matlab clc; clear all; % очистка экрана Matlab % очистка переменных Matlab fid = fopen('INPUT_DATA.txt','w'); записи данных Fs = 100000; A = 10000; A1 = 4000; f1 = 1000; f2 = 10000; T = 0.1; N = T*Fs; a = 0; i = 0; % открытие файла для % частота дискретизации, Гц. % амплитуда сигнала 1, отн. ед. % амплитуда сигнала 2, отн. ед. % частота сигнала 1, отн. ед. % частота сигнала 2, отн. ед. % длительность сигналов, сек. % общее количество точек сигналов % вспомогательная переменная % вспомогательная переменная struct.mode = 'fixed'; struct.roundmode = 'floor'; struct.overflowmode = 'saturate'; struct.format = [16 0]; бит q = quantizer(struct); % задание параметров структуры % для представления данных % в формате % two's complement fixed-point 16 % Создание структуры для % конвертации данных в формат % two's complement fixed-point t=0:1/Fs:T; % генерация отсчетов времени I=A*cos(2*pi*f1*t)+A1*cos(2*pi*f2*t); % генерация входного сигнала M=fix(I); % отбрасывание дробной части for s=1:1:N M1 = num2bin(q,M(s)); fprintf(fid,'%s\n',M1); i=i+1; % цикл конвертации % данных в формат % two's complement fixed-point % запись сконвертированных % данных в текстовый файл 42 if(i>N/100) % цикл вывода на экран % % выполненного задания clc; i=0; a=(s/N)*100; disp('Выполнено, %:'); disp(a); end end Y = fft(M,N); P = 2*abs(Y)/N; P(1)=P(1)/2; samp = Fs*(0:N/2)/N; % расчет спектра % входного сигнала subplot (2,1,1); plot (t,M); title('Входной сигнал'); xlabel('Время, с'); ylabel('Амплитуда, отн.ед.'); % построение графика % входного сигнала % расчет частот спектра subplot (2,1,2); plot(samp,P(1:N/2+1)); title('Спектр входного сигнала'); xlabel('Частота, Гц'); ylabel('Амплитуда, отн.ед.'); % построение спектра % входного сигнала disp('Генерация тестового сигнала завершена'); fclose all; % закрытие всех файлов 43 Приложение B. Пример программной оболочки для моделирования фильтра в среде ISE Xilinx Design Suite 14.4 LIBRARY ieee; -USE ieee.std_logic_1164.ALL; -use IEEE.std_logic_arith.all; -use IEEE.std_logic_unsigned.all; -use ieee.numeric_std.all; -USE IEEE.STD_LOGIC_TEXTIO.ALL; -use std.textio.all; -LIBRARY UNISIM; -USE UNISIM.Vcomponents.ALL; ENTITY TEST_BENCH_FILTER IS -END TEST_BENCH_FILTER; -- -- ARCHITECTURE behavior OF TEST_BENCH_FILTER IS --- Component Declaration for the Unit Under Test (UUT) COMPONENT LOWPASS_FILTER -PORT( clk : IN std_logic; nd : IN std_logic; rfd : OUT std_logic; rdy : OUT std_logic; din : IN std_logic_vector (15 downto 0); dout : OUT std_logic_vector (38 downto 0) ); END COMPONENT; --Inputs signal clk : std_logic := '0'; signal nd : std_logic := '0'; signal din : std_logic_vector (15 downto 0) := (others => '0'); --Outputs signal rfd : std_logic; signal rdy : std_logic; signal dout : std_logic_vector (38 downto 0); 44 -- Clock period definitions constant clk_period : time := 40 ns; constant N: integer := 30000000; FILE INPUT : TEXT OPEN READ_MODE IS "D:\Xilinx_projects\TESTS\INPUT_DATA.TXT"; FILE OUTPUT : TEXT OPEN WRITE_MODE "D:\Xilinx_projects\TESTS\OUTPUT_DATA.TXT"; BEGIN -- Instantiate the Unit Under Test (UUT) uut: LOWPASS_FILTER PORT MAP ( clk nd rfd rdy din dout => clk, => nd, => rfd, => rdy, => din, => dout ); -- Clock process definitions clk_process :process begin clk <= '0'; wait for clk_period/2; clk <= '1'; wait for clk_period/2; end process; Nd_process :process begin ND <= '0'; wait for 9960 ns; ND <= '1'; wait for 40 ns; end process; -- Stimulus process stim_proc: process variable L: line; 45 IS variable DIN_TXT : STD_LOGIC_VECTOR (15 DOWNTO 0) := x"0000"; file vector_file: text is in "D:\Xilinx_projects\TESTS\INPUT_DATA.TXT"; begin -- //======================= =======================// din <=x"0000"; while not endfile (vector_file) loop INPUT DATA FUNCTION readline(vector_file, L); read(L, DIN_TXT); wait for 9960 ns; din <= DIN_TXT; wait for 40 ns; end loop; wait; -//========================== ==================================// end process; --//====================== WRITE ==============================// write_process: process END TO OF DATA FILE PROCESS WRITE PROCESS variable i: integer range 0 to N := 0; variable outLine : line; begin while i < N loop wait for 10 us; write (outLine, dout); writeline (OUTPUT, outLine); i := i + 1; end loop; end process; --//======================== END ===============================// END; 46 OF Приложение C. Скрипт обработки данных в среде Matlab clc; % очистка экрана Matlab data = fopen('OUTPUT_DATA.txt','rb'); fileinfo = load ('OUTPUT_DATA.txt'); [N m] = size(fileinfo); data_out = fopen('DATAOUT.txt', 'wt'); % открытие файла для чтения % загрузка содержимого файла % определение размеров файла % открытие файла для записи Fs=100000; k=0; j=0; % частота дискретизации данных % вспомогательная переменная % вспомогательная переменная for j=1:N; % цикл обработки данных k=k+1; data1 = fgetl(data); [y z] = size(data1); struct.mode = 'fixed'; struct.roundmode = 'floor'; struct.overflowmode = 'saturate'; struct.format = [z 0]; q = quantizer(struct); c= bin2num(q,data1); % чтение строки из файла % определение размеров строки % формирование структуры % для преобразования данных % в формат % signed integer % конвертация данных fid2 = fprintf(data_out,'%d\n', c); % запись данных в файл if (k>N/100) % цикл вывода на экран % % выполнения % конвертации clc; disp('Processing...'); disp(N); disp(j); disp(j/N*100); k=0; end end 47 disp('Conversion is complete'); fclose all; % закрытие всех файлов M=load('DATAOUT.txt'); данных t=0:1/Fs:(N-1)/Fs; шкалы Y = fft(M,N); P = 2*abs(Y)/N; P(1)=P(1)/2; samp = Fs*(0:N/2)/N; % загрузка сконвертированных subplot (2,1,1); plot (t,M); title('Сигнал после фильтрации'); xlabel('Время, с'); ylabel('Амплитуда, отн.ед.'); % построение графика % сконвертированного сигнала % формирование временной % расчет спектра сигнала % расчет оси частот спектра subplot (2,1,2); plot(samp,P(1:N/2+1)); % построение спектра title('Спектр сигнала после фильтрации'); % сконвертированного сигнала xlabel('Частота, Гц'); ylabel('Амплитуда, отн.ед.'); fclose all; % закрытие всех файлов 48 В 2009 году Университет стал победителем многоэтапного конкурса, в результате которого определены 12 ведущих университетов России, которым присвоена категория «Национальный исследовательский университет». Министерством образования и науки Российской Федерации была утверждена программа его развития на 2009–2018 годы. В 2011 году Университет получил наименование «Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики» КАФЕДРА СВЕТОВОДНОЙ ФОТОНИКИ Кафедра физики и техники оптической связи вошла в состав Инженерно-физического факультета в 1976 г. и в 2010 г. была переведена на вновь созданный Факультет инфокоммуникационных технологий. Заведующим кафедрой является д.т.н., проф., заслуженный деятель науки РФ И.К. Мешковский. На кафедре развились два научно-технических направления: технология оптического волокна и создание новых композиционных оптических материалов. В 1982 г. кафедра первой в стране стала осуществлять подготовку инженеров по специальности «Волоконная и интегральная оптика». На базе кафедры были проведены первые в России разработки по технологии производства оптического волокна, оптических жгутов, различных волоконно-оптических приборов и систем. Возникла научная школа в области фотоники дисперсных и нелинейных сред. В 1998 г. в связи с развитием систем телекоммуникации и высокими потребностями в специалистах по волоконно-оптической связи кафедра первой в Санкт-Петербурге стала осуществлять подготовку инженеров по специальности «Физика и техника оптической связи», а с 2008 г. подготовку бакалавров и магистров по направлению «Телекоммуникации». На кафедре проводятся студенческие научные семинары по телекоммуникации. Кафедра осуществляет научные разработки совместно со многими зарубежными фирмами и университетами. С 2014 г. кафедра носит название "Кафедра Световодной фотоники". Александр Александрович Макаренко Михаил Юрьевич Плотников Расчет цифровых фильтров методом автоматизированного проектирования Учебное пособие В авторской редакции Редакционно-издательский отдел НИУ ИТМО Зав. РИО Н.Ф. Гусарова Лицензия ИД № 00408 от 05.11.99 Подписано к печати Заказ № Тираж 100 экз. Отпечатано на ризографе Редакционно-издательский отдел Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики 197101, Санкт-Петербург, Кронверкский пр., 49