Проверьте модуль 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 до вашего окна модели:

    • Блок Constant из библиотеки Simulink Sources

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

    • Блок Display из библиотеки Simulink Sinks

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

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

  1. Дважды кликните значок блока Constant, чтобы открыть диалоговое окно параметров блоков Constant. Введите следующие значения параметров в панель 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 закрывается и значение в изменениях значка блока 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.