Настройте рабочую папку с возможностью записи вне MATLAB® папка установки для хранения файлов, которые будут сгенерированы по завершении учебной работы. Учебные инструкции предполагают, что вы создаете папку hdlfilter_tutorials
на приводе C.
В этом руководстве приведены инструкции по разработке БИХ, генерации кода Verilog для фильтра и проверке кода Verilog с помощью сгенерированного испытательного стенда.
В этом разделе описывается процедура разработки и создания фильтра для БИХ. В этом разделе предполагается, что вы знакомы с пользовательским интерфейсом MATLAB и Filter Designer.
Запустите программное обеспечение MATLAB.
Установите текущую папку в папку, созданную в разделе Создать папку для файлов учебного пособия.
Запустите Filter Designer путем ввода filterDesigner
команда в Командном Окне MATLAB. Откроется диалоговое окно Создания фильтра & Analysis Tool.
В диалоговом окне Создание фильтра & Анализ Инструмента установите следующие опции фильтра:
Опция | Значение |
---|---|
Response Type | Highpass |
Design Method | IIR Butterworth |
Filter Order |
|
Frequency Specifications | Units: Fs: Fc: |
Нажмите Design Filter. Filter Designer создает фильтр для заданного проекта. Следующее сообщение появляется в строке состояния Filter Designer после выполнения задачи.
Designing Filter... Done
Для получения дополнительной информации о разработке фильтров с помощью Filter Designer, смотрите Использовать Filter Designer с DSP System Toolbox Software.
Необходимо квантовать фильтры для генерации HDL-кода. Чтобы квантовать ваш фильтр,
Откройте БИХ создания фильтра, созданные в Design, БИХ фильтр в Filter Designer, если он еще не открыт.
Нажмите кнопку «Задать параметры квантования» на левой панели инструментов. Filter Designer отображает список Filter arithmetic в нижней половине своего диалогового окна.
Выберите Fixed-point
из списка. В Filter Designer отображается первая из трех панелей диалогового окна с вкладками.
Используйте опции квантования, чтобы проверить эффекты различных настроек на эффективность и точность квантованного фильтра.
Выберите вкладку Filter Internals и установите Rounding mode равной Floor
и Overflow Mode к Saturate
.
Нажмите Apply. Квантованный фильтр появляется следующим образом.
Дополнительные сведения о квантовании фильтров с помощью Filter Designer см. в разделе Использование Filter Designer с программным обеспечением DSP System Toolbox.
После квантования фильтра вы готовы сконфигурировать параметры кодера и сгенерировать код VHDL. В этом разделе приведены руководства по запуску HDL Coder™ пользовательского интерфейса Filter Design, настройке и генерации кода VHDL и тестового стенда для БИХ-фильтра, который вы проектировали и квантовали в Проектировании БИХ-фильтра в Filter Designer и Квантовании БИХ-фильтра.
Запустите Filter Design HDL Coder пользовательский интерфейс, выбрав Targets > Generate HDL в диалоговом окне Filter Designer. В Filter Designer появится диалоговое окно «Генерация HDL».
В Name текстовом поле панели Target введите iir
. Эта опция называет сущность VHDL и файл, содержащий код VHDL для фильтра.
Выберите вкладку Global settings пользовательского интерфейса. Затем выберите вкладку General раздела Additional settings.
В Comment in header текстовом поле введите Tutorial - IIR Filter
. Кодер добавляет комментарий в конец блока комментариев заголовка в каждом сгенерированном файле.
Выберите вкладку Ports. Откроется панель Ports.
Снимите флажок для опции Add output register. Теперь панель Ports появится как на следующем рисунке.
Выберите вкладку Advanced. Откроется панель Advanced.
Выберите опцию Use 'rising_edge' for registers. Теперь панель Advanced появится как на следующем рисунке.
Перейдите на вкладку Test bench в диалоговом окне Генерация HDL. В File name текстовом поле замените имя по умолчанию на iir_tb
. Эта опция называет сгенерированный испытательный стенд.
В диалоговом окне «Генерация HDL» нажмите кнопку Generate, чтобы начать процесс генерации кода. Когда генерация кода завершится, нажмите OK, чтобы закрыть диалоговое окно.
Кодер отображает следующие сообщения в Командном окне MATLAB, когда он генерирует фильтр и испытательный стенд файлов VHDL:
### Starting VHDL code generation process for filter: iir ### Starting VHDL code generation process for filter: iir ### Generating: H:\hdlsrc\iir.vhd ### Starting generation of iir VHDL entity ### Starting generation of iir VHDL architecture ### Second-order section, # 1 ### Second-order section, # 2 ### First-order section, # 3 ### HDL latency is 1 samples ### Successful completion of VHDL code generation process for filter: iir ### Starting generation of VHDL Test Bench ### Generating input stimulus ### Done generating input stimulus; length 2172 samples. ### Generating Test bench: H:\hdlsrc\filter_tb.vhd ### Please wait ... ### Done generating VHDL Test Bench ### Starting VHDL code generation process for filter: iir ### Starting VHDL code generation process for filter: iir ### Generating: H:\hdlsrc\iir.vhd ### Starting generation of iir VHDL entity ### Starting generation of iir VHDL architecture ### Second-order section, # 1 ### Second-order section, # 2 ### First-order section, # 3 ### HDL latency is 1 samples ### Successful completion of VHDL code generation process for filter: iir
Как указывают сообщения, кодер создает папку hdlsrc
в текущей рабочей папке и помещает файлы iir.vhd
и iir_tb.vhd
в этой папке.
Обратите внимание, что сообщения включают гиперссылки на сгенерированный код и файлы испытательного стенда. Нажимая на эти гиперссылки, можно открыть файлы кода непосредственно в РЕДАКТОРА MATLAB.
Сгенерированный VHDL код имеет следующие характеристики:
VHDL- сущности с именем iir
.
Регистры, которые используют асинхронные сбросы, когда сигнал сброса активен высокий (1).
Порты имеют следующие имена по умолчанию:
Порт VHDL | Имя |
---|---|
Вход | filter_in |
Выход | filter_out |
Вход синхроимпульса | clk |
Вход включения синхроимпульса | clk_enable |
Сбросьте вход | reset |
Дополнительный регистр для обработки входных данных фильтра.
Входы синхроимпульса, входы синхроимпульса и порты сброса имеют тип STD_LOGIC
и порты входа и выхода данных имеют тип STD_LOGIC_VECTOR
.
Коэффициенты являются именованными коэффициентами
, где n
n
- число коэффициентов, начиная с 1.
Представление type-safe используется, когда нули объединены: '0' & '0'
...
Регистры генерируются с помощью rising_edge
функция, а не оператор ELSIF clk'event AND clk='1' THEN
.
Постфикс- '_process'
добавляется к именам процессов.
Сгенерированный испытательный стенд:
Является портативным файлом.
Заставляет синхроимпульсы, активировать синхроимпульсы и сбрасывать входные сигналы.
Приводит входной сигнал включения синхроимпульса к активному высокому значению.
Управляет входным сигналом синхроимпульса высокий (1) в течение 5 наносекунд и низкий (0) в течение 5 наносекунд.
Формирует сигнал сброса для двух циклов плюс время удержания 2 наносекунды.
Применяет время удержания 2 наносекунды к входным сигналам данных.
Для БИХ применяются типы импульса, шага, пандуса, щебета и белого шума.
Ознакомьтесь с сгенерированным кодом VHDL, открывая и просматривая файл iir.vhd
в редакторе ASCII или Симулятора HDL.
Откройте сгенерированный файл фильтра VHDL iir.vhd
.
Поиск iir
. Эта линия определяет модуль VHDL, используя значение, заданное для опции Name на панели Target. См. шаг 2 в разделе «Настройка и генерация кода VHDL».
Поиск Tutorial
. В этом разделе кодер помещает текст, введенный для опции Comment in header. См. шаг 5 в разделе «Настройка и генерация кода VHDL».
Поиск HDL Code
. В этом разделе перечислены опции кодера, измененные в разделе Настройка и генерация кода VHDL.
Поиск Filter Settings
. В этом разделе кода VHDL описываются параметры создания фильтра и квантования, заданные в Проект фильтра БИХ в Filter Designer и Quantize the БИХ Filter.
Поиск ENTITY
. Эта линия называет сущность VHDL, используя значение, заданное для опции Name на панели Target. См. шаг 2 в разделе «Настройка и генерация кода VHDL».
Поиск PORT
. Этот PORT
объявление определяет часы фильтра, активизацию, сброс и данные порты входа и вывода. Порты для синхроимпульса, включения, сброса и входных и выходных сигналов данных называются векторами символов по умолчанию.
Поиск CONSTANT
. Этот код определяет коэффициенты. Они называются с помощью схемы именования по умолчанию,
, где coeff_<reservedrangesplaceholder0 >
_section<reservedrangesplaceholder0 >
x
является a
или b
, m
- число коэффициентов, и n
- номер раздела.
Поиск SIGNAL
. Этот код определяет сигналы фильтра.
Поиск input_reg_process
. The PROCESS
имя блока input_reg_process
включает в себя PROCESS
по умолчанию блокируйте постфикс
'_process'
. Этот код считывает вход фильтра из регистра входа. Код для этого регистра генерируется по умолчанию. На шаге 7 в разделе Настройка и генерация кода VHDL вы очистили опцию Add output register, но оставили выбранную опцию Add input register.
Поиск IF reset
. Этот код утверждает сигнал сброса. Задано значение по умолчанию, активный высокий (1). Также обратите внимание, что PROCESS
блок применяет стиль асинхронного сброса по умолчанию при генерации кода VHDL для регистров.
Поиск ELSIF
. Этот код проверяет на повышающиеся ребра, когда фильтр работает с регистрами. rising_edge
функция используется в том виде, в котором вы заданы на панели Advanced диалогового окна Генерация HDL. См. шаг 10 в разделе «Настройка и генерация кода VHDL».
Поиск Section 1
. В этом разделе фильтруется секция второго порядка 1 данных. Подобные разделы кода VHDL применяются к другой секции второго порядка и разделу первого порядка.
Поиск filter_out
. Этот код управляет выходными данными фильтра.
В этом разделе описывается, как проверить сгенерированный VHDL-код для БИХ фильтра с сгенерированным VHDL- испытательного стенда. В этом руководстве используется Mentor Graphics® ModelSim® симулятор как инструмент для компиляции и симуляции кода VHDL. Можно использовать другие пакеты инструментов симуляции HDL.
Чтобы проверить код фильтра, выполните следующие шаги:
Запустите симулятор. Когда вы запускаете симулятор Mentor Graphics ModelSim, появляется экран, подобный следующему.
Установите текущую папку в папку, содержащую ваши сгенерированные файлы VHDL. Для примера:
cd hdlsrc
При необходимости создайте библиотеку проекта для хранения скомпилированных сущностей VHDL, пакетов, архитектур и строений. В симуляторе Mentor Graphics ModelSim можно создать библиотеку проекта с vlib
команда.
vlib work
Скомпилируйте сгенерированный фильтр и испытательный стенд файлов VHDL. В симуляторе Mentor Graphics ModelSim вы компилируете код VHDL с vcom
команда. Следующие команды компилируют фильтр и фильтр испытательного стенда VHDL- кода.
vcom iir.vhd vcom iir_tb.vhd
На следующем отображении экрана показана эта командная последовательность и информационные сообщения, отображаемые во время компиляции.
Загрузите испытательный стенд для симуляции. Процедура загрузки испытательного стенда варьируется в зависимости от используемого симулятора. В симуляторе Mentor Graphics ModelSim вы загружаете испытательный стенд для симуляции с vsim
команда. Для примера:
vsim work.iir_tb
На следующем отображении показаны результаты загрузки work.iir_tb
с vsim
команда.
Откройте окно отображения для мониторинга симуляции при запуске испытательного стенда. В симуляторе Mentor Graphics ModelSim используйте следующую команду, чтобы открыть wave окно и просмотреть результаты симуляции как HDL-формы сигналов.
add wave *
Следующее wave окно отображений.
Чтобы начать запускать симуляцию, выполните команду start simulation для своего симулятора. Например, в симуляторе Mentor Graphics ModelSim можно начать симуляцию с run
команда.
Следующее отображение показывает run -all
команда используется для запуска симуляции.
Когда ваш испытательный стенд запускается, следите за сообщениями об ошибке. Если появляются сообщения об ошибках, интерпретируйте их так, как они относятся к созданию фильтра и выбранным опциям генерации HDL-кода. Определите, ожидаются ли результаты на основе индивидуальных настроек, заданных при генерации кода VHDL фильтра.
Примечание
Предупреждающие сообщения, которые отмечают Time: 0 ns
на предыдущем отображении не являются ошибками, и их можно игнорировать.
Сообщение об ошибке, отображаемое на предыдущем отображении, не помечает ошибку. Если сообщение содержит текст Test Complete
, испытательный стенд имеет запуск к завершению, не сталкиваясь с ошибкой. The Failure
часть сообщения привязана к механизму, который кодер использует для завершения симуляции.
В следующем wave окне показаны результаты симуляции как HDL-формы волны.