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

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

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

Примечание

Этот пример требует MATLAB, HDL Verifier, Fixed-Point Designer™ и ModelSim® или Острый® Симулятор HDL. Этот пример также предполагает, что вы считали 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.