Если это еще не сделано, вызовите мастер косимуляции.
cosimWizard

На панели «Тип косимуляции» выберите MATLAB в области косимуляции ЛПВП с для создания шаблона функции MATLAB ® (испытательный стенд или компонент).
Выбрать ModelSim или Incisive для имитатора ЛПВП.
Выберите Использовать исполняемые файлы имитатора HDL в системном пути, если в нем находятся файлы. Мастер косимуляции по умолчанию предполагает, что они находятся в системном пути.
Если исполняемые файлы имитатора HDL не находятся в системном пути, выберите Использовать следующие исполняемые файлы имитатора HDL в следующем расположении и укажите расположение папки в текстовом поле ниже.
Если нажать кнопку Далее, а мастер косимуляции не найдет исполняемые файлы, произойдет следующее:
Вы вернетесь в это диалоговое окно, и мастер косимуляции отобразит ошибку в области состояния.
Мастер косимуляции переключает параметр на Использовать следующие исполняемые файлы имитатора HDL в следующем расположении.
Мастер косимуляции делает поле пути моделирования HDL доступным для редактирования.
Перед продолжением необходимо ввести допустимый путь к исполняемым файлам имитатора HDL.
Нажмите кнопку Далее.

На панели «Файлы HDL» укажите файлы, которые будут использоваться при создании функции или блока.
Мастер косимуляции пытается определить тип каждого файла и отобразить его в списке файлов рядом с именем файла. Если мастер косимуляции не может определить тип или отображает неверный тип, можно изменить тип непосредственно в столбце Тип файла (File Type).
По возможности Мастер Cosimulation Wizard автоматически определит порядок компиляции с помощью функции имитатора HDL. Это означает, что файлы можно добавлять в любом порядке.
При использовании ModelSim ® сценарии компиляции будут отображаться как файлы .do (файл макросов ModelSim). При использовании программы Insisive ® сценарии компиляции будут отображаться как системные сценарии.
Нажмите кнопку Добавить, чтобы выбрать одно или несколько имен файлов.
Удалите файлы, выделив имя файла в списке файлов, а затем щелкнув Удалить выбранный файл.
Нажмите кнопку Далее.

На панели Компиляция HDL (HDL Compilation) можно просмотреть сгенерированные команды компиляции HDL. При необходимости эти команды можно переопределить и/или настроить. Если вы включили сценарии компиляции вместо файлов HDL, на этой панели будет показана команда для запуска этих сценариев.
Введите все изменения в команды в поле «Команды компиляции».
Примечание
Не включайте команды оболочки системы; например:
set file = a.vhd vcom $file
Когда элемент управления возвращается к мастеру косимуляции из выполнения команды, переменная больше не содержит заданное значение. При попытке включить этот тип команды на панели «Состояние» появится сообщение об ошибке.
Щелкните Восстановить команды по умолчанию (Restore default commands), чтобы вернуться к созданным командам компиляции HDL. Вам предлагается подтвердить, что вы хотите отменить любые изменения.
Нажмите кнопку Далее, чтобы продолжить.

На панели модуля HDL укажите имя модуля HDL, который будет использоваться при косимуляции.
Введите имя модуля в поле Name of HDL module to cosimulate with.
Задайте дополнительные параметры моделирования в разделе Параметры моделирования. Например, на предыдущем изображении показаны следующие опции:
Разрешение имитатора ЛПВП
Отключить оптимизацию, удаляющую сигналы из вида моделирования
Щелкните Восстановить значения по умолчанию (Restore Defaults), чтобы вернуть параметры по умолчанию.
Для параметра «Метод подключения» выберите Shared Memory если политика брандмауэра не разрешает связь с сокетом TCP/IP.
Нажмите кнопку Далее, чтобы перейти к следующему шагу. В это время в командном окне приложение выполняет следующие действия:
Запуск имитатора ЛПВП.
Загрузка модуля ЛПВП в имитатор ЛПВП.
Запускает сервер HDL и ожидает уведомления о запуске сервера.
Подключается к серверу HDL для получения информации о порте.
Отключает и выключает сервер HDL.

На панели «Расписание обратного вызова» введите обратные вызовы нескольких компонентов или функций тестового стенда из имитатора HDL. Введите следующую информацию для каждой функции обратного вызова:
Тип обратного вызова: выбрать matlabcp для создания функции компонента или matlabtb для создания функции испытательного стенда.
Имя функции обратного вызова (необязательно): укажите имя компонента или функции тестового стенда, если оно не совпадает с именем компонента HDL. По умолчанию предполагается, что имя функции совпадает с именем компонента HDL.
Компонент HDL: Введите имя компонента вручную или найдите его, нажав кнопку «Обзор».
Режим триггера: Укажите один из следующих параметров для запуска функции обратного вызова:
Repeat
Rising Edge
Falling Edge
Sensitivity
Время выборки (ns) или триггерный сигнал:
Если выбран триггер Repeatвведите время выборки в наносекундах.
Если выбран Rising Edge, Falling Edge, или Sensitivity, Время выборки (ns) изменяется на триггерный сигнал. Введите имя сигнала, используемого для запуска обратного вызова.
Можно просмотреть существующие сигналы в указанном компоненте HDL, нажав кнопку Обзор.
Нажмите кнопку Add, чтобы добавить команду в список MATLAB Callback Functions.
Если требуется запланировать дополнительные функции обратного вызова, повторите описанные выше шаги. Если требуется удалить какие-либо функции обратного вызова, выделите линию, которую требуется удалить, и нажмите кнопку Remove.
Примечание
При попытке добавить функцию обратного вызова для того же модуля HDL, что и существующую функцию обратного вызова в списке MATLAB Callback Functions, новая функция обратного вызова перезаписывает существующую (это верно даже при изменении типа обратного вызова). В окне Статус появится предупреждение:
Warning: This HDL component already has a scheduled callback function, which is replaced by this new one.
Нажмите кнопку Далее.

Нажмите кнопку Назад, чтобы просмотреть или изменить настройки.
Нажмите кнопку Готово, чтобы создать сценарии.
Мастер косимуляции создает следующие файлы и открывает их в отдельных окнах редактора MATLAB.
launchHDLsimulator - сценарий запуска имитатора ЛПВП для косимуляции с MATLAB.
compileHDLDesign - сценарий компиляции, который можно повторно использовать для последующей компиляции данного компонента.
Файлы функций (*.m) - настраиваемые шаблоны функций компонента и тестового стенда, по одному для каждого компонента, указанного в мастере косимуляции.
Шаблон, создаваемый мастером, содержит некоторые простые команды ввода-вывода порта и пустые процедуры, в которые добавляется собственный код, как показано в примере ниже. Полный пример создания и использования функции MATLAB см. в разделе Проверка конструкции косинусного фильтра с помощью MATLAB.
function osc_top_u_osc_filter1x(obj) % Automatically generated MATLAB(R) callback function. % Copyright 2010 The MathWorks, Inc. % $Revision $ % Initialize state of callback function. if (strcmp(obj.simstatus,'Init')) disp('Initializing states ...'); % Store port information in userdata % The name strings of ports that sends data from HDL simulator to % MATLAB callback function obj.userdata.FromHdlPortNames = fields(obj.portinfo.out); obj.userdata.FromHdlPortNum = length(fields(obj.portinfo.out)); % The name strings of ports that sends data from MATLAB callback % function to HDL simulator obj.userdata.ToHdlPortNames = fields(obj.portinfo.in); obj.userdata.ToHdlPortNum = length(fields(obj.portinfo.in)); % Initialize state obj.userdata.State = 0; end % Obj.tnow is the current HDL simulation time specified in seconds disp(['Callback function is executed at time ' num2str(obj.tnow)]); if(obj.userdata.FromHdlPortNum > 0) % The name of the first input port portName = obj.userdata.FromHdlPortNames{1}; disp(['Reading input port ' portName]); % Convert the multi-valued logic value of the first port to decimal portValueDec = mvl2dec( ... obj.portvalues.(portName), ... % Multi-valued logic of the first port obj.portinfo.out.(portName).size); %#ok<NASGU> % Bit width % Then perform any necessary operations on this value passed by HDL simulator. % ... % Optionally, you can translate the port value into fixed point object, % e.g. % myfiobj = fi(portValueDec,1, 16, 4); end % Update your state(s). In the following example, we use this internal % state to implement a one-bit counter obj.userdata.State = ~obj.userdata.State; if(obj.userdata.ToHdlPortNum > 0) % The name of the first output port in HDL portName = obj.userdata.ToHdlPortNames{1}; disp(['Writing output port ' portName]); % Assign the first port value to internal state obj.userdata.State. % Before assignment, convert decimal value to multi-valued logic. % You can change obj.userdata.State to another other valid decimal values. obj.portvalues.(portName) = dec2mvl(... obj.userdata.State, ... obj.portinfo.in.(portName).size); % Operate on other out ports, if there are any. % ... end