БИХ-фильтр

Создайте папку для своих учебных файлов

Настройте перезаписываемую рабочую папку вне своей папки установки MATLAB®, чтобы хранить файлы, которые будут сгенерированы, когда вы завершаете свою учебную работу. Учебные инструкции принимают, что вы создаете папку hdlfilter_tutorials на диске C.

Проект БИХ просачивается Filter Designer

Этот пример проводит вас по шагам для разработки БИХ-фильтра, генерации кода Verilog для фильтра и проверки кода Verilog со сгенерированным испытательным стендом.

Этот раздел проводит вас по процедуре разработки и создания фильтра для БИХ-фильтра. Этот раздел принимает, что вы знакомы с интерфейсом пользователя MATLAB и Filter Designer.

  1. Запустите программное обеспечение MATLAB.

  2. Установите свою текущую папку на папку, в которой вы создали, Создают Папку для Ваших Учебных Файлов.

  3. Запустите Filter Designer путем ввода команды filterDesigner в Окно Команды MATLAB. Диалоговое окно The Filter Design & Analysis Tool появляется.

  4. В диалоговом окне Filter Design & Analysis Tool, набор следующие опции фильтра:

    ОпцияЗначение
    Response TypeHighpass
    Design MethodIIR Butterworth
    Filter Order

    Specify order: 5

    Frequency Specifications

    Модули: Hz

    Fs: 48000

    ФК : 10800

  5. Нажмите Design Filter. Filter Designer создает фильтр для заданного проекта. Следующее сообщение появляется в строке состояния Filter Designer, когда задача завершена.

    Designing Filter... Done

    Для получения дополнительной информации о разработке фильтров с Filter Designer смотрите Использование Filter Designer с DSP System Toolbox Software (DSP System Toolbox).

Квантуйте БИХ-фильтр

Необходимо квантовать фильтры для генерации HDL-кода. Квантовать ваш фильтр,

  1. Откройтесь БИХ-фильтр разрабатывают вас созданный в Проекте, БИХ Просачивается Filter Designer, если это не уже открыто.

  2. Нажмите кнопку Set Quantization Parameters на панели инструментов левой стороны. Filter Designer отображает список Filter arithmetic в нижней половине его диалогового окна.

  3. Выберите Fixed-point из списка. Filter Designer отображает первую из трех панелей с вкладками его диалогового окна.

    Используйте опции квантования, чтобы протестировать эффекты различных настроек на производительности и точности квантованного фильтра.

  4. Выберите вкладку Filter Internals и установите Rounding mode на Floor и Overflow Mode к Saturate.

  5. Нажмите Apply. Квантованный фильтр появляется можно следующим образом.

Для получения дополнительной информации о квантовании фильтров с Filter Designer смотрите Использование Filter Designer с DSP System Toolbox Software (DSP System Toolbox).

Сконфигурируйте и сгенерируйте код VHDL

После того, как вы квантуете свой фильтр, вы готовы сконфигурировать опции кодера и сгенерировать код VHDL. Этот раздел проводит вас по запуску пользовательского интерфейса Filter Design HDL Coder™, установке опций, и генерация кода VHDL и испытательного стенда для БИХ фильтрует вас разработанный и квантованный в Проекте, БИХ Просачивается Filter Designer и Квантует БИХ-Фильтр.

  1. Запустите пользовательский интерфейс Filter Design HDL Coder путем выбора Targets> Generate HDL в диалоговом окне Filter Designer. Filter Designer отображает диалоговое окно Generate HDL.

  2. В текстовом поле Name панели Target введите iir. Эта опция называет сущность VHDL и файл, который содержит код VHDL для фильтра.

  3. Выберите вкладку Global settings пользовательского интерфейса. Затем выберите вкладку General раздела Additional settings.

    В текстовом поле Comment in header введите Tutorial - IIR Filter. Кодер добавляет комментарий в конец блока комментария заголовка в каждом сгенерированном файле.

  4. Выберите вкладку Ports. Панель Ports появляется.

  5. Снимите флажок для опции Add output register. Панель Ports теперь появляется как в следующей фигуре.

  6. Выберите вкладку Advanced. Панель Advanced появляется.

  7. Выберите опцию Use 'rising_edge' for registers. Панель Advanced теперь появляется как в следующей фигуре.

  8. Кликните по вкладке Test bench в диалоговом окне Generate HDL. В текстовом поле File name замените имя по умолчанию на iir_tb. Эта опция называет сгенерированный файл испытательного стенда.

  9. В диалоговом окне Generate 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
      Вход Clockclk
      Часы включают входclk_enable
      Вход Resetreset
    • Вводится дополнительный регистр для обработки фильтра.

    • Вход часов, часы включают вход и сбросили порты, имеют тип, STD_LOGIC и ввод данных и выходные порты имеют тип STD_LOGIC_VECTOR.

    • Коэффициенты называют coeffn, где n является содействующим номером, начиная с 1.

    • Безопасное с точки зрения типов представление используется, когда нули конкатенированы: '0' & '0'...

    • Регистры сгенерированы с функцией rising_edge, а не оператором ELSIF clk'event AND clk='1' THEN.

    • Постфиксный '_process' добавлен, чтобы обработать имена.

    Сгенерированный испытательный стенд:

    • Портативный файл VHDL.

    • Часы сил, часы включают и сбросили входные сигналы.

    • Силы часы включают входной сигнал к активному высоко.

    • Управляет входным сигналом часов высоко (1) в течение 5 наносекунд и низко (0) в течение 5 наносекунд.

    • Обеспечивает сигнал сброса для двух циклов плюс время задержки 2 наносекунд.

    • Применяет время задержки 2 наносекунд к сигналам ввода данных.

    • Для БИХ-фильтра, применяет импульс, шаг, пандус, щебет и белые шумовые типы стимула.

Исследуйте сгенерированный код VHDL

Познакомьтесь со сгенерированным кодом VHDL путем открытия и просматривания файла iir.vhd в редакторе симулятора HDL или ASCII.

  1. Откройте сгенерированный файл фильтра VHDL iir.vhd.

  2. Ищите iir. Эта строка идентифицирует модуль VHDL, с помощью значения, которое вы задали для опции Name в панели Target. Смотрите, что шаг 2 в Конфигурирует и Генерирует Код VHDL.

  3. Ищите Tutorial. Этот раздел - то, куда кодер помещает текст, вы ввели для опции Comment in header. Смотрите, что шаг 5 в Конфигурирует и Генерирует Код VHDL.

  4. Ищите HDL Code. Этот раздел перечисляет опции кодера, в которых вы изменили, Конфигурируют и Генерируют Код VHDL.

  5. Ищите Filter Settings. Этот раздел кода VHDL описывает проект фильтра и настройки квантования, когда вы задали в Проекте, БИХ Просачивается Filter Designer и Квантует БИХ-Фильтр.

  6. Ищите ENTITY. Эта строка называет сущность VHDL, с помощью значения, которое вы задали для опции Name в панели Target. Смотрите, что шаг 2 в Конфигурирует и Генерирует Код VHDL.

  7. Ищите PORT. Это объявление PORT задает часы фильтра, часы включают, сбрасывают, и ввод данных и выходные порты. Порты для часов, часы включают, сбрасывают, и ввод данных и выходные сигналы называют с векторами символов по умолчанию.

  8. Ищите CONSTANT. Этот код задает коэффициенты. Их называют с помощью схемы именования по умолчанию, coeff_xm_sectionn, где x является a или b, m является содействующим номером, и n является номером раздела.

  9. Ищите SIGNAL. Этот код задает сигналы фильтра.

  10. Ищите input_reg_process. Имя блока PROCESS input_reg_process включает блок PROCESS по умолчанию, снабжает постфиксом '_process'. Этот код читает вход фильтра из входного регистра. Код для этого регистра сгенерирован по умолчанию. На шаге 7 в Конфигурируют и Генерируют Код VHDL, вы очистили опцию Add output register, но оставили опцию Add input register выбранной.

  11. Ищите IF reset. Этот код утверждает сигнал сброса. Значение по умолчанию, активное высокий (1), было задано. Также обратите внимание, что блок PROCESS применяет асинхронный стиль сброса по умолчанию при генерации кода VHDL для регистров.

  12. Ищите ELSIF. Этот код проверяет на возрастающие ребра, когда фильтр работает с регистрами. Функция rising_edge используется, когда вы задали в панели Advanced диалогового окна Generate HDL. Смотрите, что шаг 10 в Конфигурирует и Генерирует Код VHDL.

  13. Ищите Section 1. Этот раздел - то, где раздел второго порядка 1 данные отфильтрован. Подобные разделы кода VHDL применяются к другому разделу второго порядка и разделу первого порядка.

  14. Ищите filter_out. Этот диск кода выходные данные фильтра.

Проверьте сгенерированный код VHDL

Этот раздел объясняет, как проверить сгенерированный код VHDL для БИХ-фильтра со сгенерированным испытательным стендом VHDL. Этот пример использует средство моделирования Mentor Graphics® ModelSim® в качестве инструмента для компиляции и симуляции кода VHDL. Можно использовать другие пакеты инструмента симуляции HDL.

Чтобы проверить код фильтра, завершите следующие шаги:

  1. Запустите свое средство моделирования. Когда вы запускаете средство моделирования Mentor Graphics ModelSim, отображение на экране, подобное следующему, появляется.

  2. Установите текущую папку на папку, которая содержит ваши сгенерированные файлы VHDL. Например:

    cd hdlsrc
  3. При желании создайте библиотеку проекта, чтобы сохранить скомпилированные сущности VHDL, пакеты, архитектуру и настройки. В средстве моделирования Mentor Graphics ModelSim можно создать библиотеку проекта с командой vlib.

    vlib work
  4. Скомпилируйте сгенерированный фильтр и файлы VHDL испытательного стенда. В средстве моделирования Mentor Graphics ModelSim вы компилируете код VHDL с командой vcom. Следующие команды компилируют фильтр и фильтруют код VHDL испытательного стенда.

    vcom iir.vhd
    vcom iir_tb.vhd

    Следующее отображение на экране показывает эту последовательность команды и информационные сообщения, отображенные во время компиляции.

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

    vsim work.iir_tb

    Следующее отображение показывает результаты загрузки work.iir_tb с командой vsim.

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

    add wave *
    

    Следующие отображения окна wave.

  7. Чтобы начать запускать симуляцию, дайте команду симуляции запуска для своего средства моделирования. Например, в средстве моделирования Mentor Graphics ModelSim, можно запустить симуляцию с команды run.

    Следующее отображение показывает команду run -all, используемую, чтобы запустить симуляцию.

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

    Примечание

    • Предупреждающие сообщения, которые отмечают Time: 0 ns в предыдущем отображении, не являются ошибками, и можно проигнорировать их.

    • Сообщение отказа, которое появляется в предыдущем отображении, не отмечает ошибка. Если сообщение включает textTest Complete, испытательный стенд выполнение до завершения, не сталкиваясь с ошибкой. Часть Failure сообщения связывается к механизму что использование кодера, чтобы закончить симуляцию.

    Следующее окно wave показывает результаты симуляции формами волны HDL.