Проверьте модуль HDL с местом размещения Simulink Test

Учебный обзор

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

Примечание

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

Разработайте код 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 File или команду vlib, чтобы создать папку библиотеки так, чтобы необходимый файл _info был создан. Не создавайте библиотеку с командами операционной системы.

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

    ModelSim> vcom inverter.vhd
    

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

Создайте модель Simulink

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

Запустите путем создания модели, можно следующим образом:

  1. Запустите MATLAB®, если он уже не запускается. Откройте новое окно модели. Затем откройте Library Browser Simulink.

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

    • Постоянный блок от библиотеки Simulink Sources

    • Блок HDL Cosimulation от библиотеки блоков HDL Verifier

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

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

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

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

    • Constant value: 0

    • 'SampleTime' : 10

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

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

  2. Кликните по вкладке Signal Attributes. Диалоговое окно теперь отображается меню Output data type.

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

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

  3. Нажмите OK. Постоянное диалоговое окно параметров блоков закрывается и значение в изменениях значка блока Constant в 0.

Затем, сконфигурируйте блок HDL Cosimulation, который представляет модель инвертора, написанную в VHDL. Запустите с панели Ports путем выполнения следующих действий:

  1. Дважды кликните значок блока HDL Cosimulation. Диалоговое окно Block Parameters для блока HDL Cosimulation появляется. Кликните по вкладке Ports.

  2. В панели Ports выберите демонстрационный /top/sig1 сигнала из списка сигнала в центре панели путем двойного клика на нем.

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

  4. Точно так же выберите демонстрационный /top/sig2 сигнала. Измените Full HDL Name на /inverter/sout. Выберите Output из списка I/O Mode. Измените the Sample Time параметр на 10. Затем нажмите Apply, чтобы обновить список.

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

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

Теперь сконфигурируйте параметры панели Connection путем выполнения следующих действий:

  1. Кликните по вкладке Connection.

  2. Оставьте Connection Mode как Full Simulation.

  3. Выберите сокет из списка Connection method . Эта опция указывает, что Simulink и ModelSim свяжутся через обозначенный порт сокета TCP/IP. Заметьте, что два дополнительных поля, Port number or service и Host name, теперь видимы.

    Обратите внимание на то, что, потому что The HDL simulator is running on this computer выбран по умолчанию, поле Host name отключено. В этой настройке и Simulink и ModelSim выполняются на том же компьютере, таким образом, вы не должны вводить удаленное имя хост-системы.

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

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

  5. Нажмите Apply.

Теперь сконфигурируйте панель Clocks путем выполнения следующих действий:

  1. Кликните по вкладке Clocks.

  2. Нажмите кнопку New. Новый сигнал часов с пустым именем сигнала добавляется к списку сигнала.

  3. Дважды кликните на новом имени сигнала к редактированию. Введите путь прохождения сигнала /inverter/clk. Затем выберите Rising из списка Edge. Установите параметр Period на 10.

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

  5. Нажмите Apply.

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

  1. Кликните по вкладке Simulation.

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

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

    puts "Inverter Done"
    

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

  4. Нажмите Apply.

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

  1. Кликните по вкладке Timescales.

  2. Настройки по умолчанию панели Timescales показывают в следующей фигуре. Эти настройки требуются для операции этого примера. Смотрите Масштабы времени Симуляции для получения дополнительной информации.

  3. Нажмите OK, чтобы закрыть диалоговое окно Block Parameters.

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

  1. Соедините блоки как показано в следующей фигуре.

    На данном этапе вы можете также хотеть рассмотреть настраивающие аннотации блока.

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

    1. Выберите Model Configuration Parameters из меню Simulation в окне модели. Диалоговое окно Model Configuration Parameters открывается, отображая панель Solver selection.

    2. Выберите Fixed-step из меню Type.

    3. Выберите discrete (no continuous states) из меню Solver.

    4. Нажмите Apply.

    5. Нажмите OK, чтобы закрыть диалоговое окно Model Configuration Parameters.

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

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

Создайте ModelSim для использования с Simulink

У вас теперь есть представление VHDL инвертора и модели Simulink, которая применяет инвертор. Чтобы запустить ModelSim, таким образом, что это готово к употреблению с Simulink, введите следующую командную строку в Окно Команды MATLAB:

vsim('socketsimulink', 4449)

Примечание

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

Загрузите экземпляры сущности VHDL для Cosimulation с Simulink

Этот раздел объясняет, как использовать команду vsimulink, чтобы загрузить экземпляр вашей сущности VHDL для cosimulation с Simulink. Команда vsimulink является вариантом HDL Verifier команды ModelSim vsim. Это сделано доступным как часть настройки ModelSim.

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

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

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

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

    ModelSim> vsimulink work.inverter
    

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

Запустите симуляцию

Этот раздел проводит вас по сценарию выполнения и контроля cosimulation сеанса.

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

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

    VSIM n> add wave /inverter/*
    

    Следующее окно wave появляется.

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

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

  4. В модели Simulink измените Constant value на 255, сохраните модель и запустите другую симуляцию. Значение в изменениях блока Display в 0 и окне ModelSim wave обновляется можно следующим образом.

  5. В модели Simulink измените Constant value на 2 и Sample time к 20 и запустите другую симуляцию. На этот раз значение в изменениях блока Display в 253 и окне ModelSim wave появляется как показано в следующей фигуре.

    Обратите внимание на изменения в шаге расчета в окне wave.

Закройте симуляцию

Этот раздел объясняет, как закрыть симуляцию организованным способом, можно следующим образом:

  1. В ModelSim остановите симуляцию путем выбора Simulate> End Simulation.

  2. Выйдите из ModelSim.

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

Для просмотра документации необходимо авторизоваться на сайте