Настройте рабочую папку, доступную для записи, за пределами установочной папки MATLAB ® для хранения файлов, которые будут создаваться по завершении учебной работы. В инструкциях по обучению предполагается, что создается папкаhdlfilter_tutorials на приводе C.
В этом разделе предполагается, что пользователь знаком с интерфейсом пользователя MATLAB и конструктором фильтров. Ниже приведены инструкции по проектированию и созданию базового фильтра FIR с помощью Filter Designer.
Запустите программное обеспечение MATLAB.
Установите текущую папку в папку, созданную в разделе «Создание папки для файлов учебного пособия».
Запустите конструктор фильтров, введя filterDesigner в окне команд MATLAB. Откроется диалоговое окно Фильтровать инструмент проектирования и анализа (Filter Design & Analysis Tool).

В диалоговом окне «Инструмент проектирования и анализа фильтров» установите следующие параметры фильтра:
| Выбор | Стоимость |
|---|---|
| Тип ответа | Lowpass |
| Метод проектирования | FIR Equiripple |
| Порядок фильтрации | Минимальный заказ |
| Варианты | Коэффициент плотности: 20 |
| Частотные характеристики | Единицы измерения: Fs: Фпас: Фстоп: |
| Характеристики величины | Единицы измерения: Апасс: Астоп: |
Эти настройки предназначены для конструкции фильтра по умолчанию, создаваемой конструктором фильтров. Если изменение фильтра не требуется, а фильтр проекта выделен серым цветом, можно перейти к параметру Квантовать фильтр (Quantize the Filter).
При изменении параметров, перечисленных на шаге 4, щелкните Фильтр проектирования (Design Filter). Конструктор фильтров создает фильтр для указанной конструкции и отображает следующее сообщение в строке состояния конструктора фильтров по завершении задачи.
Designing Filter... Done
Дополнительные сведения о проектировании фильтров с помощью конструктора фильтров см. в документации по Toolbox™ системы DSP.
Необходимо квантовать фильтры для генерации кода HDL. Чтобы квантовать фильтр,
Откройте базовую конструкцию фильтра FIR, созданную в окне «Проектирование фильтра FIR» в конструкторе фильтров.
Нажмите кнопку «Задать параметры квантования
» на левой панели инструментов. Конструктор фильтров отображает арифметическое меню «Фильтр» в нижней половине диалогового окна.

Выбрать Fixed-point из арифметического списка Фильтр (Filter). Затем выберите Specify all из списка Точность фильтра (Filter precision). Конструктор фильтров отображает первую из трех панелей с вкладками параметров квантования в нижней половине диалогового окна.

Используйте опции квантования для проверки влияния различных настроек на производительность и точность квантованного фильтра.
Установите параметры квантования следующим образом:
| Счет | Параметр | Настройка |
|---|---|---|
| Коэффициенты | Длина слова-числителя | 16 |
| Длины дробей с наилучшей точностью | Selected | |
| Использовать неподписанное представление | Cleared | |
| Масштабирование числительных коэффициентов для полного использования всего динамического диапазона | Cleared | |
| Ввод/вывод | Длина входного слова | 16 |
| Длина входной фракции | 15 | |
| Длина выходного слова | 16 | |
| Фильтровать внутренние устройства | Режим округления | Floor |
| Режим переполнения | Saturate | |
| Аккум. длина слова | 40 |
Нажмите кнопку «Применить».
Дополнительные сведения о квантовании фильтров с помощью конструктора фильтров см. в документации панели инструментов системы DSP.
После квантования фильтра можно настроить параметры кодера и создать код VHDL для фильтра. В этом разделе приведены инструкции по запуску пользовательского интерфейса HDL Coder™ Filter Design, настройке параметров и созданию кода VHDL и тестового стенда для базового фильтра FIR, который был разработан и квантован при проектировании фильтра FIR в Filter Designer и квантовании фильтра.
Запустите пользовательский интерфейс кодера HDL проекта фильтра, выбрав «Цели» > «Создать HDL» в диалоговом окне «Конструктор фильтров». Конструктор фильтров отображает диалоговое окно Генерировать ЛПВП (Generate HDL).

Найдите интерактивную справку по проектированию фильтров HDL-кодера.
В окне MATLAB нажмите кнопку Справка на панели инструментов или щелкните Справка > Справка по продукту.
На панели «Содержимое» браузера справки выберите запись «Фильтр при проектировании кодера HDL».
Сверните браузер справки.
В диалоговом окне «Создание HDL» нажмите кнопку «Справка». Откроется небольшое контекстно-зависимое окно справки. В окне отображается информация о диалоговом окне.
Закройте окно Справка.
Наведите курсор на метку или текстовое поле «Папка» на панели «Цель» диалогового окна «Создание HDL» и щелкните правой кнопкой мыши. А что это? появляется кнопка.

Нажмите Что это? Контекстно-зависимое окно справки отображает информацию, описывающую параметр Папка. Настройте содержимое и стиль созданного кода HDL, используя контекстную справку для получения дополнительной информации по мере работы. Для каждого параметра доступен раздел справки.
В текстовом поле «Имя» на панели «Цель» замените имя по умолчанию на basicfir. Этот параметр задает имя объекта VHDL и файла, содержащего код VHDL для фильтра.

Выберите вкладку Глобальные параметры пользовательского интерфейса. Затем перейдите на вкладку Общие раздела Дополнительные параметры пользовательского интерфейса. Напечатать Tutorial - Basic FIR Filter в текстовом поле Комментарий в заголовке. Кодер добавляет комментарий к концу блока комментариев заголовка в каждом созданном файле.

Выберите вкладку «Ports» в разделе «Additional settings» пользовательского интерфейса.

Измените имена портов ввода и вывода. В текстовом поле «Порт ввода» замените filter_in с data_in. В текстовом поле «Порт вывода» замените filter_out с data_out.

Снимите флажок для опции Добавить входной регистр. Теперь панель «Порты» выглядит следующим образом.

Перейдите на вкладку Test Stench (Испытательный стенд) в диалоговом окне Generate HDL (Генерировать ЛПВП). В текстовом поле Имя файла замените имя по умолчанию на basicfir_tb. Этот параметр определяет имя созданного файла тестового стенда.

Нажмите кнопку «Создать», чтобы запустить процесс создания кода.
Кодер отображает сообщения в окне команд MATLAB при создании файлов VHDL фильтра и тестового стенда:
### Starting VHDL code generation process for filter: basicfir ### Generating: C:\hdlfilter_tutorials\hdlsrc\basicfir.vhd ### Starting generation of basicfir VHDL entity ### Starting generation of basicfir VHDL architecture ### HDL latency is 2 samples ### Successful completion of VHDL code generation process for filter: basicfir ### Starting generation of VHDL Test Bench ### Generating input stimulus ### Done generating input stimulus; length 3429 samples. ### Generating Test bench: C:\hdlfilter_tutorials\hdlsrc\basicfir_tb.vhd ### Please wait ... ### Done generating VHDL Test Bench
Как указано в сообщениях, кодер создает папку hdlsrc в текущей рабочей папке и помещает файлы basicfir.vhd и basicfir_tb.vhd в этой папке.
Обратите внимание, что сообщения содержат гиперссылки на сгенерированный код и файлы тестового стенда. Щелкнув эти гиперссылки, можно открыть файлы кода непосредственно в редакторе MATLAB.
Созданный код VHDL имеет следующие характеристики:
Объект VHDL с именем basicfir.
Регистры, использующие асинхронный сброс, когда сигнал сброса является активным высоким (1).
Порты имеют следующие имена:
| Порт VHDL | Имя |
|---|---|
| Вход | data_in |
| Продукция | data_out |
| Вход синхросигнала | clk |
| Вход включения синхросигнала | clk_enable |
| Сброс входного сигнала | reset |
Дополнительный регистр для обработки выходного сигнала фильтра.
Входные синхросигналы, входные синхросигналы и порты сброса имеют тип STD_LOGIC а порты ввода и вывода данных имеют тип STD_LOGIC_VECTOR.
Коэффициенты названы coeff, где nn - номер коэффициента, начинающийся с 1.
Представление безопасности типа используется при объединении нулей: '0' & '0'...
Регистры генерируются с помощью оператора ELSIF clk'event AND clk='1' THEN вместо с rising_edge функция.
Постфикс '_process' добавляется к именам процессов.
Сформированный испытательный стенд:
Является переносимым файлом VHDL.
Принудительное включение синхросигнала, включение синхросигнала и сброс входных сигналов.
Принудительно переводит входной сигнал включения синхросигнала в активное состояние.
Управляет входным синхросигналом высокой (1) в течение 5 наносекунд и низкой (0) в течение 5 наносекунд.
Инициирует сигнал сброса в течение двух циклов плюс время удержания 2 наносекунды.
Применяет время удержания 2 наносекунды к входным сигналам данных.
Для FIR-фильтра применяет импульсные, ступенчатые, линейные, чирпические и белые шумовые стимулы.
По завершении создания кода нажмите кнопку Закрыть (Close), чтобы закрыть диалоговое окно Создать HDL (Generate HDL).
Ознакомление с сгенерированным кодом VHDL путем открытия и просмотра файла basicfir.vhd в редакторе симулятора ASCII или HDL.
Открыть созданный файл фильтра VHDL basicfir.vhd.
Поиск basicfir. Эта строка идентифицирует модуль VHDL, используя значение, указанное для параметра «Имя» на панели «Цель». См. шаг 5 в разделе Конфигурирование и генерация кода VHDL.
Поиск Tutorial. В этом разделе кодер помещает текст, введенный для параметра Комментарий в заголовке. См. шаг 10 в разделе Конфигурирование и генерация кода VHDL.
Поиск HDL Code. В этом разделе перечислены параметры кодера, измененные при настройке и генерации кода VHDL.
Поиск Filter Settings. В этом разделе описываются настройки конструкции фильтра и квантования, указанные в разделе «Проектирование фильтра FIR в конструкторе фильтров» и «Квантование фильтра».
Поиск ENTITY. Эта строка называет объект VHDL, используя значение, указанное для опции Имя (Name) на панели Цель (Target). См. шаг 5 в разделе Конфигурирование и генерация кода VHDL.
Поиск PORT. Это PORT В объявлении определяются порты ввода и вывода синхросигналов, включения синхросигналов, сброса и данных. Портам для синхросигналов, сигналов активизации синхросигналов и сигналов сброса присваиваются имена с использованием векторов символов по умолчанию. Порты для ввода и вывода данных называются так, как указано в опциях Входной порт (Input port) и Выходной порт (Output port) на вкладке Порты (Ports) диалогового окна Генерировать HDL (Generate HDL). См. шаг 12 в разделе Конфигурирование и генерация кода VHDL.
Поиск Constants. В этом разделе определяются коэффициенты. Они именуются с использованием схемы именования по умолчанию. coeff, где nn - номер коэффициента, начинающийся с 1.
Поиск Signals. Этот раздел кода определяет сигналы для фильтра.
Поиск process. PROCESS имя блока Delay_Pipeline_process включает значение по умолчанию PROCESS постфикс блока '_process'.
Поиск IF reset. Этот код подает сигнал сброса. По умолчанию указан активный высокий (1). Также обратите внимание, что PROCESS применяет стиль асинхронного сброса по умолчанию при генерации кода VHDL для регистров.
Поиск ELSIF. Этот код проверяет растущие границы, когда фильтр работает на регистрах. Дефолт ELSIF clk'event вместо необязательного используется инструкция rising_edge функция.
Поиск Output_Register. Этот раздел кода записывает данные фильтра в выходной регистр. Код для этого регистра создается по умолчанию. На шаге 13 в разделе Configure and Generate VHDL Code (Настройка и генерация кода VHDL) флажок Add input register (Добавить входной регистр) был снят, но был выбран параметр Add output register (Добавить выходной регистр). Также обратите внимание, что PROCESS имя блока Output_Register_process включает значение по умолчанию PROCESS постфикс блока '_process'.
Поиск data_out. Этот раздел кода управляет выходными данными фильтра.
В этом разделе объясняется, как проверить созданный код VHDL для базового фильтра FIR с помощью созданного стенда тестирования VHDL. В этом учебном пособии используется программное обеспечение Mentor Graphics ® ModelSim ® в качестве инструмента для компиляции и моделирования кода VHDL. Можно также использовать другие пакеты инструментов моделирования VHDL.
Чтобы проверить код фильтра, выполните следующие действия.
Запустите симулятор Mentor Graphics ModelSim.
Задайте текущую папку, содержащую созданные файлы VHDL. Например:

При необходимости создайте библиотеку дизайна для хранения скомпилированных объектов VHDL, пакетов, архитектур и конфигураций. В симуляторе Mentor Graphics ModelSim можно создать библиотеку конструкций с помощью vlib команда.

Скомпилировать созданные файлы VHDL фильтра и тестового стенда. В симуляторе Mentor Graphics ModelSim выполняется компиляция кода VHDL с помощью vcom команда. Следующие команды компилируют код VHDL тестового стенда фильтра и фильтра.
vcom basicfir.vhd vcom basicfir_tb.vhd
На следующем экране отображается последовательность команд и информационные сообщения, отображаемые во время компиляции.

Загрузите стенд для моделирования. Процедура загрузки стенда зависит от используемого тренажера. В симуляторе Mentor Graphics ModelSim загружается тестовый стенд для моделирования с помощью vsim команда. Например:
vsim work.basicfir_tb
На следующем рисунке показаны результаты загрузки work.basicfir_tb с vsim команда.

Откройте окно отображения для мониторинга моделирования при запуске тестового стенда. В симуляторе Mentor Graphics ModelSim используйте следующую команду, чтобы открыть окно волны и просмотреть результаты моделирования как формы сигналов HDL.

Появится следующее окно волны.

Чтобы запустить моделирование, выполните команду start simulation для симулятора. Например, в симуляторе Mentor Graphics ModelSim можно запустить моделирование с помощью run команда.
На следующем дисплее показаны run -all используется для запуска моделирования.

Во время моделирования тестового стенда следите за сообщениями об ошибках. Если появляются сообщения об ошибках, интерпретируйте их как относящиеся к конструкции фильтра и выбранным опциям генерации кода HDL. Определите, ожидаются ли результаты на основе настроек, заданных при создании кода фильтра VHDL.
В следующем волновом окне показаны результаты моделирования в виде сигналов HDL.
