Проверьте HDL-модуль с Simulink Test стендом

Обзор руководства

В этой главе приведены основные шаги для настройки HDL Verifier™ сеанса, которая использует Simulink® и блок HDL Cosimulation для проверки HDL- модели. Блок HDL Cosimulation косимулирует оборудование компонент путем применения входных сигналов к и считывания выхода сигналов от HDL- модели под симуляцией в ModelSim®/ Questa®Сим. Блок HDL Cosimulation поддерживает симуляцию любого VHDL® или Verilog® модели. В руководстве в этом разделе вы косимулируете простую модель 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".
    

    Примечание

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

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

    ModelSim> vcom inverter.vhd
    

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

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

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

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

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

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

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

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

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

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

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

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

    • Constant value: 0

    • Sample time: 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. Измените параметр 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 показаны на следующем рисунке. Эти настройки необходимы для операции этого примера. Для получения дополнительной информации смотрите Simulation Timescales.

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

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

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

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

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

    1. В Modeling tab нажмите Model Settings. Откроется диалоговое окно Model Configuration Parameters, в котором отобразится панель Solver selection.

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

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

    4. Нажмите Apply.

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

      Смотрите Модель Set 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 для косимуляции с Simulink

В этом разделе описывается, как использовать vsimulink Команда для загрузки образца VHDL- сущности для косимуляции с 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 должно быть подобно следующему.

Выполняйте симуляцию

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

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

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

    VSIM n> add wave /inverter/*
    

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

  2. Измените вход особого внимания в окне модели Simulink.

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

  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.