Основной конечная импульсная характеристика

Создайте папку для ваших обучающих файлов

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

Проектирование конечной импульсной характеристики в Filter Designer

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

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

  2. Установите текущую папку в папку, созданную в разделе Создать папку для файлов учебного пособия.

  3. Запустите Filter Designer путем ввода filterDesigner команда в Командном Окне MATLAB. Откроется диалоговое окно Создания фильтра & Analysis Tool.

  4. В диалоговом окне Создание фильтра & Анализ Инструмента проверьте, что заданы следующие опции фильтра:

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

    Units: Hz

    Fs: 48000

    Fpass: 9600

    Fstop: 12000

    Magnitude Specifications

    Units: 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. Нажмите кнопку «Задать параметры квантования» на левой панели инструментов. 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 для фильтра. В этом разделе приведены руководства по запуску HDL Coder™ UI Filter Design, настройке параметров и генерации кода VHDL и тестового стенда для основного КИХ-фильтра, который вы проектировали и квантовали в Design a FIR Filter in Filter Designer и Quantize the Filter.

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

  2. Найдите интерактивную справку Filter Design HDL Coder.

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

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

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

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

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

  5. Наведите курсор на метку Folder или текстовое поле на панели Target диалогового окна Генерация HDL и щелкните правой кнопкой мыши. Появится кнопка What's This?.

  6. Щелкните What's This? Контекстно-зависимое окно справки отображает информацию, описывающую опцию 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 в диалоговом окне Генерация 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
      Вход синхроимпульсаclk
      Вход включения синхроимпульсаclk_enable
      Сбросьте входreset
    • Дополнительный регистр для обработки вывода фильтра.

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

    • Коэффициенты являются именованными коэффициентами n, где n - число коэффициентов, начиная с 1.

    • Представление type-safe используется, когда нули объединены: '0' & '0'...

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

    • Постфикс- '_process' добавляется к именам процессов.

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

    • Является портативным файлом.

    • Заставляет синхроимпульсы, активировать синхроимпульсы и сбрасывать входные сигналы.

    • Приводит входной сигнал включения синхроимпульса к активному высокому значению.

    • Управляет входным сигналом синхроимпульса высокий (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 диалогового окна Генерация HDL. См. шаг 12 в разделе «Настройка и генерация кода VHDL».

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

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

  10. Поиск process. The 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. Чтобы начать запускать симуляцию, выполните команду start simulation для своего симулятора. Например, в симуляторе Mentor Graphics ModelSim можно начать симуляцию с run команда.

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

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

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