exponenta event banner

Проверка модуля HDL с помощью испытательного стенда Simulink

Обзор учебного пособия

В этой главе описаны основные шаги по настройке сеанса Verifier™ HDL с использованием Simulink ® и блока Cosimulation HDL для проверки модели HDL. Блок косимуляции ЛПВП имитирует аппаратный компонент, применяя входные сигналы к модели ЛПВП и считывая выходные сигналы из нее при моделировании в ModelSim ®/Questa ® Sim. Блок косимуляции HDL поддерживает моделирование моделей VHDL ® или Verilog ®. В учебном пособии, приведенном в этом разделе, вы будете имитировать простую модель VHDL.

Примечание

Это учебное пособие предназначено для пользователей симулятора Mentor Graphics ®. однако большая часть процесса будет одинаковой для пользователей Insisive ®.

Разработка кода VHDL

Типичным сценарием Simulink и ModelSim является создание модели для конкретного компонента оборудования в ModelSim, которую впоследствии необходимо интегрировать в более крупную модель Simulink. Первым шагом является проектирование и разработка модели VHDL в ModelSim. В этом учебном пособии модуль ModelSim и VHDL используются для разработки модели, представляющей следующий инвертор:

Объект VHDL для этой модели будет представлять 8-битовые потоки значений входного и выходного сигнала с IN порт и OUT порт типа STD_LOGIC_VECTOR. Входной тактовый сигнал типа STD_LOGIC инициирует процесс инверсии битов при установке.

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

  1. Запуск ModelSim

  2. Изменение папки, доступной для записи MyPlayArea, который, возможно, был создан для другого учебного пособия. Если папка не создана, создайте ее сейчас. Папка должна быть доступна для записи.

    ModelSim>cd C:/MyPlayArea
    

  3. Откройте новое окно редактирования источника VHDL.

  4. Добавьте следующий код VHDL:

    ---------------------------------------------------
    --  Simulink and ModelSim Inverter Tutorial
    --
    --  Copyright 2003-2004 The MathWorks, Inc.
    --
    ---------------------------------------------------
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    ENTITY inverter IS PORT (
      sin : IN  std_logic_vector(7 DOWNTO 0);
      sout: OUT std_logic_vector(7 DOWNTO 0);
      clk : IN  std_logic
    );
    END inverter;
    
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    ARCHITECTURE behavioral OF inverter IS
    BEGIN
      PROCESS(clk)
      BEGIN
        IF (clk'EVENT AND clk = '1') THEN
          sout <= NOT sin;
        END IF;
      END PROCESS;
    END behavioral;
    
    
  5. Сохранить файл в inverter.vhd.

Компиляция кода VHDL

В этом разделе объясняется, как настроить библиотеку проекта и скомпилировать inverter.vhd, следующим образом:

  1. Убедитесь, что файл inverter.vhd находится в текущей папке, введя ls в командной строке ModelSim.

  2. Создайте библиотеку конструкций для хранения результатов компиляции. Для создания библиотеки и требуется _info , введите vlib и vmap команды следующим образом:

    ModelSim> vlib work
    
    ModelSim> vmap work work
    

    Если работа библиотеки конструкции уже существует, ModelSim не перезаписывает текущую библиотеку, но выводит следующее предупреждение:

    # ** Warning: (vlib-34) Library already exists at "work".
    

    Примечание

    Необходимо использовать меню Файл ModelSim или vlib для создания папки библиотеки таким образом, чтобы _info файл создан. Не создавайте библиотеку с помощью команд операционной системы.

  3. Скомпилировать файл VHDL. Один из способов компиляции файла - щелкнуть имя файла в рабочей области проекта и выбрать «Компиляция» > «Скомпилировать все». Другой альтернативой является указание имени файла VHDL с помощью vcom , следующим образом:

    ModelSim> vcom inverter.vhd
    

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

Создание модели Simulink

Теперь создайте модель Simulink. В этом учебном пособии мы создадим простую модель Simulink, которая управляет вводом в блок, представляющий VHDL-инвертор, закодированный в разделе «Разработка кода VHDL», и отображает инвертированные выходные данные.

Начните с создания модели следующим образом:

  1. Запустите MATLAB ®, если он еще не запущен. Открытие нового окна модели. Затем откройте обозреватель библиотеки Simulink.

  2. Перетащите следующие блоки из браузера библиотеки Simulink в окно модели:

    • Постоянный блок из библиотеки источников Simulink

    • Блок косимуляции HDL из библиотеки блоков HDL Verifier

    • Отображение блока из библиотеки Simulink Sinks

    Расположите три блока в порядке, показанном на следующем рисунке.

Затем настройте блок константы, который является источником входных данных модели, выполнив следующие действия.

  1. Дважды щелкните значок «Блок константы», чтобы открыть диалоговое окно «Параметры блока константы». Введите следующие значения параметров на главной панели:

    • Постоянное значение: 0

    • Время выборки: 10

    Позже можно изменить эти начальные значения, чтобы увидеть влияние различных времен выборки на различные прогоны моделирования.

    Теперь диалоговое окно должно выглядеть следующим образом.

  2. Перейдите на вкладку Атрибуты сигнала (Signal Attributes). Теперь в диалоговом окне отображается меню Тип выходных данных.

    Выбрать uint8 в меню Тип выходных данных. Эта спецификация типа данных поддерживается программным обеспечением HDL Verifier без необходимости преобразования типа. Он сопоставляется непосредственно с типом VHDL для порта VHDL sin, STD_LOGIC_VECTOR(7 DOWNTO 0).

    Теперь диалоговое окно должно выглядеть следующим образом.

  3. Нажмите кнопку OK. Диалоговое окно «Параметры блока константы» закроется, и значение значка блока константы изменится на 0.

Затем настройте блок косимуляции HDL, который представляет модель инвертора, записанную в VHDL. Начните с панели «Порты», выполнив следующие действия:

  1. Дважды щелкните значок блока косимуляции HDL. Откроется диалоговое окно Параметры блока (Block Parameters) для блока косимуляции HDL (HDL Cosimulation block). Перейдите на вкладку «Порты».

  2. На панели «Порты» выберите образец сигнала. /top/sig1 из списка сигналов в центре панели двойным щелчком на нем.

  3. Замените имя пути сигнала образца /top/sig1 с /inverter/sin. Затем нажмите кнопку Применить. Имя сигнала в блоке косимуляции HDL изменяется.

  4. Аналогично, выберите сигнал выборки /top/sig2. Изменить полное имя HDL на /inverter/sout. Выбрать Output из списка режимов ввода-вывода. Измените параметр Sample Time на 10. Затем нажмите кнопку Применить, чтобы обновить список.

  5. Выберите сигнал выборки /top/sig3. Нажмите кнопку «Удалить». Сигнал теперь удален из списка.

    Панель Ports должна отображаться следующим образом.

Теперь настройте параметры панели «Подключение», выполнив следующие действия.

  1. Перейдите на вкладку «Подключение».

  2. Оставьте режим подключения полным моделированием.

  3. Выберите сокет из списка Метод подключения. Эта опция указывает, что Simulink и ModelSim будут взаимодействовать через назначенный порт сокета TCP/IP. Обратите внимание, что теперь отображаются два дополнительных поля - номер порта или услуги и имя хоста.

    Обратите внимание, что, поскольку на этом компьютере по умолчанию выбран симулятор HDL, поле Имя хоста отключено. В этой конфигурации Simulink и ModelSim выполняются на одном компьютере, поэтому вводить имя удаленной системы хоста не требуется.

  4. В текстовом поле Port number или service введите номер порта сокета. 4449 или, если этот порт недоступен в системе, другой допустимый номер порта или имя службы. Модель будет использовать связь сокета TCP/IP для связи с ModelSim. Обратите внимание, что вводится для этого параметра. При настройке ModelSim для связи с Simulink будет указана та же информация о порте сокета.

    Панель «Подключение» должна отображаться следующим образом.

  5. Нажмите кнопку «Применить».

Теперь настройте панель Часы (Clocks), выполнив следующие действия.

  1. Перейдите на вкладку «Часы».

  2. Нажмите кнопку Создать. В список сигналов добавляется новый тактовый сигнал с пустым именем сигнала.

  3. Дважды щелкните по новому имени сигнала для правки. Введите путь сигнала. /inverter/clk. Затем выберите Rising из списка «Край». Задайте для параметра Period значение 10.

  4. Панель «Часы» должна отображаться следующим образом.

  5. Нажмите кнопку «Применить».

Затем введите несколько простых команд Tcl, которые должны быть выполнены до и после моделирования, следующим образом:

  1. Перейдите на вкладку Моделирование (Simulation).

  2. В текстовом поле Pre-simulation Tcl commands отредактируйте команду Tcl по умолчанию:

    puts "Running inverter in Simulink!"
    
  3. В текстовом поле Команды Tcl после моделирования отредактируйте команду Tcl по умолчанию:

    puts "Inverter Done"
    

    Панель моделирования должна выглядеть следующим образом.

  4. Нажмите кнопку «Применить».

Затем просмотрите панель Шкала времени (Timescales), чтобы убедиться, что для нее установлены параметры по умолчанию, как показано ниже.

  1. Перейдите на вкладку Временные шкалы (Timescales).

  2. Настройки по умолчанию на панели «Временные шкалы» показаны на следующем рисунке. Эти параметры необходимы для работы в этом примере. Дополнительные сведения см. в разделе Временные шкалы моделирования.

  3. Нажмите «ОК», чтобы закрыть диалоговое окно «Параметры блока».

Последним шагом является соединение блоков, настройка параметров для всей модели и сохранение модели. Выполните следующие действия:

  1. Подключите блоки, как показано на следующем рисунке.

    На данном этапе также может потребоваться рассмотреть возможность корректировки аннотаций блоков.

  2. Настройте выбор решателя Simulink для дискретного моделирования с фиксированным шагом; это требуется для операции косимуляции. Выполните следующие действия:

    1. На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings). Откроется диалоговое окно Параметры конфигурации модели (Model Configuration Parameters), отображающее панель выбора решателя.

    2. Выбрать Fixed-step в меню «Тип».

    3. Выбрать discrete (no continuous states) в меню Решатель (Solver).

    4. Нажмите кнопку «Применить».

    5. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Параметры конфигурации модели (Model Configuration Parameters).

      Дополнительные сведения о параметрах Simulink, оптимальных для использования с программным обеспечением HDL Verifier, см. в разделе Установка параметров конфигурации модели Simulink.

  3. Сохраните модель.

Настройка ModelSim для использования с Simulink

Теперь имеется представление VHDL инвертора и модель Simulink, которая применяет инвертор. Чтобы запустить ModelSim таким образом, чтобы он был готов к использованию с Simulink, введите следующую командную строку в окне команды MATLAB (MATLAB Command Window):

vsim('socketsimulink', 4449)

Примечание

Если при настройке блока косимуляции HDL в Simulink была введена другая спецификация порта сокета, замените номер порта 4449 в предыдущей командной строке на соответствующую информацию порта сокета для модели. vsim функция информирует ModelSim об использовании сокета TCP/IP для установления канала связи с моделью Simulink.

Загрузка экземпляров объекта VHDL для косимуляции с помощью Simulink

В этом разделе объясняется, как использовать vsimulink для загрузки экземпляра объекта VHDL для косимуляции с помощью Simulink. vsimulink команда является вариантом проверки HDL для ModelSim vsim команда. Он становится доступным как часть конфигурации ModelSim.

Загрузка экземпляра inverter , выполните следующие действия:

  1. Измените фокус ввода на окно ModelSim.

  2. Если файл виртуального жесткого диска находится не в текущей папке, измените папку на расположение inverter.vhd файл. Например:

    ModelSim> cd C:/MyPlayArea
    
  3. Введите следующее: vsimulink команда:

    ModelSim> vsimulink work.inverter
    

    ModelSim запускает vsim симулятор, готовый к моделированию объекта inverter в контексте модели Simulink. Отображение окна команды ModelSim должно быть аналогично следующему.

Запустить моделирование

В этом разделе описывается сценарий запуска и мониторинга сеанса косимуляции.

Выполните следующие действия:

  1. Откройте и добавьте сигналы инвертора в окно волны, введя следующую команду ModelSim:

    VSIM n> add wave /inverter/*
    

    Появится следующее окно волны.

  2. Измените фокус ввода на окно модели Simulink.

  3. Запустите моделирование Simulink. Значение в блоке «Отображение» изменяется на 255. Также обратите внимание на изменения, происходящие в окне волны ModelSim. Возможно, потребуется увеличить масштаб изображения, чтобы получить лучшее представление о данных сигнала.

  4. В модели Simulink измените значение константы на 255сохраните модель и запустите другое моделирование. Значение в блоке «Отображение» изменяется на 0 и окно волны ModelSim обновляется следующим образом.

  5. В модели Simulink измените значение константы на 2 и время выборки до 20 и начать другое моделирование. На этот раз значение в блоке «Отображение» изменяется на 253 и появится окно волны ModelSim, как показано на следующем рисунке.

    Обратите внимание на изменение времени выборки в окне волны.

Моделирование завершения работы

В этом разделе описывается упорядоченное завершение моделирования следующим образом:

  1. В ModelSim остановите моделирование, выбрав команду Моделировать (Simulate) > Завершить моделирование (End Simulation).

  2. Выход из ModelSim.

  3. Закройте окно модели Simulink.