Основной КИХ-фильтр

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

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

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

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

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

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

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

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

    ОпцияЗначение
    Response TypeLowpass
    Design MethodFIR Equiripple
    Filter OrderMinimum order
    OptionsDensity Factor: 20
    Frequency Specifications

    Модули: Hz

    Fs: 48000

    Fpass: 9600

    Fstop: 12000

    Magnitude Specifications

    Модули: dB

    Apass: 1

    Astop: 80

    Эти настройки для создания фильтра по умолчанию, которое Filter Designer создает для вас. Если вы не должны изменять фильтр, и Design Filter отображается серым, вы сделаны и можете пропустить, чтобы Квантовать Фильтр.

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

    Designing Filter... Done

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

Квантуйте фильтр

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

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

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

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

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

    Установите параметры квантования можно следующим образом:

    ВкладкаПараметрУстановка
    CoefficientsNumerator word length16
     Best-precision fraction lengthsSelected
     Use unsigned representationCleared
     Scale the numerator coefficients to fully utilize the entire dynamic rangeCleared
    Input/OutputInput word length16
     Input fraction length15
     Output word length16
    Filter InternalsRounding modeFloor
     Overflow modeSaturate
     Accum. word length40
  4. Нажмите Apply.

Для получения дополнительной информации о квантовании фильтров с Filter Designer см. документацию 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. Найдите, что Filter Design HDL Coder онлайн помогает.

    1. В окне MATLAB нажмите кнопку Help на панели инструментов или нажмите Help> Product Help.

    2. В панели Contents браузера Help выберите запись Filter Design HDL Coder.

    3. Минимизируйте браузер Help.

  3. В диалоговом окне Generate HDL нажмите кнопку Help. Маленькое контекстно-зависимое окно справки открывается. Окно отображает информацию о диалоговом окне.

  4. Закройте окно Help.

  5. Установите свой курсор на метку Folder или текстовое поле в панели Target диалогового окна Generate HDL, и щелкните правой кнопкой. Кнопка What's This? появляется.

  6. Нажмите What's This? The контекстно-зависимая информация об отображениях окна справки, описывающая опцию Folder. Сконфигурируйте содержимое и стиль сгенерированного HDL-кода, с помощью контекстно-зависимой справки, чтобы получить больше информации, как вы работаете. Тема справки доступна для каждой опции.

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

  8. Выберите вкладку Global settings пользовательского интерфейса. Затем выберите вкладку General раздела Additional settings пользовательского интерфейса. Введите Tutorial - Basic FIR Filter в текстовом поле Comment in header. Кодер добавляет комментарий в конец блока комментария заголовка в каждом сгенерированном файле.

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

  10. Поменяйте имена портов ввода и вывода. В текстовом поле Input port замените filter_in с data_in. В текстовом поле Output port замените filter_out с data_out.

  11. Снимите флажок для опции Add input register. Панель Ports теперь похожа на следующее.

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

  13. Нажмите Generate, чтобы запустить процесс генерации кода.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  14. Когда вы закончите генерировать код, нажмите Close, чтобы закрыть диалоговое окно Generate HDL.

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

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

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

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

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

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

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

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

  7. Ищите PORT. Этот PORT объявление задает часы, часы включают, сбрасывают, и ввод данных и выходные порты. Порты для часов, часы включают и сбросили сигналы, названы с векторами символов по умолчанию. Порты для ввода данных и выхода называют, когда вы задали на Input port и опциях Output port на вкладке Ports диалогового окна Generate HDL. Смотрите, что шаг 12 в Конфигурирует и Генерирует Код VHDL.

  8. Ищите Constants. Этот раздел задает коэффициенты. Их называют с помощью схемы именования по умолчанию, coeffn, где n содействующий номер, начиная с 1.

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

  10. Ищите process. PROCESS имя блока Delay_Pipeline_process включает PROCESS по умолчанию постфикс блока '_process'.

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

  12. Ищите ELSIF. Этот код проверяет на возрастающие ребра, когда фильтр работает с регистрами. ELSIF clk'event по умолчанию оператор используется вместо дополнительного rising_edge функция.

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

  14. Ищите data_out. Этот раздел кода управляет выходными данными фильтра.

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

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

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

  1. Запустите свое средство моделирования Mentor Graphics ModelSim.

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

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

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

    vcom basicfir.vhd
    vcom basicfir_tb.vhd
    

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

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

    vsim work.basicfir_tb

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

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

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

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

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

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

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