Проверьте повышенный проект фильтра косинуса Используя MATLAB

MATLAB и обзор примера Cosimulation Wizard

Этот пример проводит вас по основным шагам для подготовки HDL Verifier™ cosimulation, который использует MATLAB® и симулятор HDL. Этот cosimulation проверяет проект HDL с помощью компонента MATLAB в качестве испытательного стенда. В этом примере вы выполняете шаги к cosimulate MATLAB с симулятором HDL, чтобы проверить пригодность повышенного фильтра косинуса, написанного в Verilog®.

Примечание

Этот пример требует MATLAB, HDL Verifier, Fixed-Point Designer™, и симулятора HDL Incisive® или ModelSim®. Этот пример также предполагает, что вы считали HDL-код Импорта для функции MATLAB.

Испытательный стенд HDL инстанцирует двух компонентов фильтра повышенного косинуса: каждый реализован в HDL, и другой сопоставлен с функцией обратного вызова MATLAB. Испытательный стенд также генерирует стимул для обоих фильтров и сравнивает их выходные параметры.

Пример: настройте учебные файлы (MATLAB)

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

  1. Создайте папку вне осциллографа вашей папки установки MATLAB, в которую можно скопировать учебные файлы. Папка должна быть перезаписываема. Этот пример предполагает, что вы создаете папку под названием MyTests.

  2. Скопируйте все файлы, расположенные в следующей папке MATLAB к папке, которую вы создали:

    matlabroot\toolbox\edalink\foundation\hdllink\demo_src\tutorial

    где matlabroot является корневым каталогом MATLAB в вашей системе.

  3. У вас теперь есть следующие файлы в вашей рабочей папке:

    • filter_tb.v

    • mycallback_solution.m

    • rcosflt_beh.v

    • rcosflt_rtl.v

    • rcosflt_tb.mdl (не используемый в этом примере)

Пример: запустите Cosimulation Wizard (MATLAB)

  1. StartMatlab.

  2. Установите папку, которую вы создали в Примере: Настройте Учебные Файлы (MATLAB) как ваша текущая папка в MATLAB.

  3. В команде MATLAB запрашивают, введите:

    >>cosimWizard

    Эта команда запускает Cosimulation Wizard.

Пример: сконфигурируйте функцию компонента с Cosimulation Wizard

Этот пример приводит вас через следующие страницы мастера, разработанные, чтобы помочь вам в создании функции компонента HDL Verifier:

Пример: задайте тип Cosimulation (MATLAB)

В Полосе набора Cosimulation выполните следующие шаги:

  1. Измените набор опции HDL cosimulation with на MATLAB.

  2. Если вы используете ModelSim, оставляете опцию HDL Simulator как ModelSim.

    Если вы используете Острый, изменяете опцию HDL Simulator на Incisive.

  3. Оставьте опцию опции по умолчанию Use HDL simulator executables on the system path, если исполняемые файлы симулятора HDL появляются на вашем системном пути.

    Если исполняемые файлы не появляются в пути, задайте путь к симулятору HDL, как описано в Типе Cosimulation — функция MATLAB.

  4. Нажмите Next, чтобы перейти к странице HDL Files.

Пример: выберите HDL Files (MATLAB)

На странице HDL Files выполните следующие шаги:

  1. Добавьте файлы HDL в список файлов.

    1. Нажмите Add и обзор к директории, которую вы создали в Примере: Настройте Учебные Файлы (MATLAB).

    2. Выберите файлы Verilog filter_tb.v, rcosflt_rtl.v и rcosflt_beh.v. Можно выбрать несколько файлов в файловом браузере путем удержания клавиши CTRL при выборе файлов с мышью.

    3. Рассмотрите файл в списке файлов с типом файла, идентифицированным, как вы ожидали.

  2. Нажмите Next, чтобы перейти к странице HDL Compilation.

Пример: задайте команды компиляции HDL (MATLAB)

Мастера Cosimulation перечисляют команды по умолчанию в окне Compilation Commands. Вы не должны изменять эти значения по умолчанию для этого примера.

  1. Исследуйте команды компиляции.

    1. Пользователи ModelSim: Ваша панель Компиляции HDL выглядит подобной следующему.

    2. Острые пользователи: Ваши команды Компиляции HDL будут выглядеть подобными следующему:

      ncvlog -64bit -update "/mathworks/home/user/MyTests/filter_tb.v"
      ncvlog -64bit -update "/mathworks/home/user/MyTests/rcosflt_beh.v"
      ncvlog -64bit -update "/mathworks/home/user/MyTests/rcosftl_rtl.v"
  2. Нажмите Next, чтобы перейти к панели Модулей HDL.

    Консоль MATLAB отображает журнал компиляции. Если ошибка происходит во время компиляции, та ошибка появляется в области Status. Измените любые настройки, вы можете, чтобы удалить ошибку прежде, чем перейти к следующему шагу.

Пример: выберите HDL Modules for Cosimulation (MATLAB)

В панели Модулей HDL выполните следующие шаги:

  1. Задайте имя модуля/сущности HDL для cosimulation.

    В Name of HDL module to cosimulate with выберите filter_tb из выпадающего списка, чтобы задать модуль Verilog, который вы будете использовать для cosimulation.

    Если вы не видите filter_tb в выпадающем списке, можно ввести его вручную.

  2. Для Connection method выберите Shared Memory, если ваша политика брандмауэра не позволяет коммуникацию сокета TCP/IP.

  3. Нажмите Next, чтобы перейти к странице Callback Schedule.

    Cosimulation Wizard запускает симулятор HDL в фоновом режиме консоль с помощью заданного модуля HDL и опций симуляции. После того, как мастер запускает симулятор HDL, страница Callback Schedule появляется. В системах Windows® консоль остается открытой. Не закрывайте консоль; приложение закрывает это окно после завершения.

Пример: задайте расписание коллбэка

На странице Callback Schedule выполните следующие шаги:

  1. Оставьте Callback type как matlabcp (значение по умолчанию). Этот тип дает Cosimulation Wizard команду создавать функцию обратного вызова MATLAB как компонент для cosimulation с симулятором HDL.

  2. Оставьте Callback function name как callback_fcn. Мастер дает это имя сгенерированной функции обратного вызова MATLAB.

  3. Для HDL component нажмите Browse. Кликните по значку расширителя рядом с filter_tb, чтобы расширить выбор. Выберите u_rcosflt_beh и нажмите OK. Вы указали к Cosimulation Wizard, что симулятор HDL сопоставляет этот компонент с функцией обратного вызова MATLAB.

  4. Установите Trigger mode на Rising Edge.

  5. Для Trigger Signal нажмите Browse. Кликните по значку расширителя рядом с filter_tb, чтобы расширить выбор. Выберите u_rcosflt_beh. В списке портов справа, выберите clk. Нажмите OK.

  6. Нажмите Add. Cosimulation Wizard генерирует соответствующую команду matlabcp, которая сопоставляет модуль HDL u_rcosflt_beh с функцией MATLAB callback_fcn, как показано в следующем изображении:

    Для получения дополнительной информации о параметрах коллбэка смотрите страницу с описанием для matlabcp.

  7. Нажмите Next, чтобы перейти к странице Generate Script.

Пример: сгенерируйте скрипт

  1. Оставьте Launch HDL simulator after exiting this dialog выбранным.

  2. Нажмите Finish, чтобы завершить сеанс Cosimulation Wizard и сгенерировать скрипты.

Пример: настройте функцию обратного вызова

После того, как вы нажмете Finish в Cosimulation Wizard, приложение генерирует три файла HDL в текущем каталоге:

  • compile_hdl_design.m: Для перекомпиляции проекта HDL

  • launch_hdl_simulator.m: повторно запустить сервер MATLAB и запустить симулятор HDL.

  • callback_fcn.m: функция обратного вызова MATLAB

В дополнение к запуску симулятора HDL программное обеспечение HDL Verifier открывает редактора MATLAB и загружает callback_fcn.m (частичное показанное изображение).

Сгенерированный шаблон включает четыре части:

  • Инициализируйте внутреннее состояние (состояния) функции обратного вызова

  • Считайте сигнал из компонента HDL

  • Запишите сигнал в компонент HDL

  • Обновите внутреннее состояние (состояния)

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

Примечание

Можно найти завершенную измененную функцию обратного вызова в mycallback_solution.m. Эта функция находится в директории, в которую вы скопировали учебные файлы. Можно использовать этот файл, чтобы перезаписать тот в текущем каталоге. Назовите файл "callback_fcn.m" и поменяйте имя функции на callback_fcn.

Пример: задайте внутренние состояния

Задайте два внутренних состояния: вектор с 49 элементами, чтобы содержать входные параметры фильтра и вектор коэффициентов фильтра.

Отредактируйте callback_fcn.m так, чтобы раздел внутреннего состояния содержал следующий код:

Пример: считайте сигнал из компонента HDL

Считайте вход фильтра и преобразуйте его в десятичное число в MATLAB.

Отредактируйте callback_fcn.m так, чтобы раздел сигнала чтения содержал следующий код:

Пример: запишите сигнал в компонент HDL

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

Отредактируйте callback_fcn.m так, чтобы раздел сигнала записи содержал следующий код:

Пример: обновите внутренние состояния

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

Отредактируйте callback_fcn.m так, чтобы раздел внутренних состояний обновления содержал следующий код:

Пример: запустите Cosimulation и проверьте проект HDL

Переключитесь на симулятор HDL и введите следующую команду в консоль симулятора HDL:

run 200 ns

Вы видите следующий вывод, отображенный в симуляторе HDL:

Эти сообщения указывают, что вывод компонента HDL совпадает с поведенческим выводом компонента MATLAB.