Вы можете базовая линия показатели производительности путем синхронизации выполнения HDL и модели Simulink® отдельно и добавления их вместе; вы не можете ожидать лучшую производительность, чем это. Убедитесь, что отдельные симуляции являются представительными: выполнение средства моделирования только для HDL с нереалистичным входным стимулом могло быть намного быстрее чем тогда, когда реалистический входной стимул обеспечивается.
В то время как cosimulation влечет за собой определенное количество издержек, иногда сама симуляция HDL также замедляет производительность. Задайте себе эти вопросы при попытке анализировать и улучшать производительность:
Фактор | Предложения для улучшения скорости |
---|---|
Вы, используют NFS или другие удаленные файловые системы? | Как быстро файловая система? Рассмотрите использование другого типа или ожидайте, что файловая система, которую вы используете, повлияет на производительность. |
Вы используете отдельные машины в Simulink и симуляторе HDL? | Как быстро сеть? Ожидайте, пока сеть не более тиха, или свяжитесь со своим системным администратором для совета относительно улучшения связи. |
Вы используете ту же машину в Simulink и симуляторе HDL? |
|
Вы используете optimal (то есть, как можно больше) частоты дискретизации Simulink на блоке HDL Cosimulation? | Например, если вы устанавливаете выходную частоту дискретизации на 1, но только используете каждую 10-ю выборку, вы могли сделать уровень 10 и уменьшать трафик между Simulink и симулятором HDL. Другой пример - то, если вы помещаете очень быстрые часы как вход с блоком HDL Cosimulation, но не имеете ни одной из другой входной потребности такая высокая скорость. В этом случае необходимо сгенерировать часы в HDL или (только Incisive® и пользователи ModelSim®) через Clocks или панель Simulation на блоке HDL Cosimulation. |
Пользователи ModelSim: вы компилируете/разрабатываете HDL с помощью vopt поток? | Используйте -voptargs=+acc оптимизировать ваш проект для максимума (HDL) скорость средства моделирования (только пользователи ModelSim). |
Вы используете режим Simulink Accelerator™? | Режим Acceleration может ускорить выполнение вашей модели. См. "Ускоряющиеся Модели” в Руководстве пользователя Simulink. |
Если у вас есть программное обеспечение Communications Toolbox™, вы рассмотрели использование Обрамленных сигналов? | Обрамленные сигналы сокращают количество взаимодействий Simulink/HDL. |
Основанная на системе координат обработка может улучшить вычислительное время ваших моделей Simulink, потому что несколько выборок могут быть обработаны целиком. Использование основанных на системе координат сигналов также позволяет вам симулировать поведение основанных на системе координат систем более реалистично. Обработка поддержек блока HDL Simulator одноканальных основанных на системе координат сигналов.
frame данных является набором последовательных выборок от одного канала или нескольких каналов. Одна система координат одноканального сигнала представлена вектор-столбцом M-1. Сигналом является frame based, если это распространено через систему координат модели за один раз.
Основанная на системе координат обработка требует программного обеспечения DSP System Toolbox™. Исходные блоки от библиотеки Sources позволяют вам задать основанный на системе координат сигнал путем установки параметров блоков Samples per frame. Большинство других блоков обработки сигналов сохраняет состояние системы координат входного сигнала. Можно использовать блок Buffer, чтобы буферизовать последовательность выборок в системы координат.
См. “Работу с Сигналами” в документации DSP System Toolbox для получения дальнейшей информации об основанной на системе координат обработке.
Вы не должны конфигурировать блок HDL Simulator никаким специальным способом к основанной на системе координат обработке. Чтобы использовать основанную на системе координат обработку в cosimulation, соедините один или несколько одноканальных основанных на системе координат сигналов с одним или несколькими входными портами блока HDL Simulator. Все такие сигналы должны удовлетворить требования, описанные в Основанных на системе координат Требованиях к обработке и Ограничениях. Блок HDL Simulator конфигурирует любые выходные параметры для основанной на системе координат операции в подходящем формате кадра.
Использование основанных на системе координат сигналов влияет только на сторону Simulink cosimulation. Поведение HDL-кода при симуляции в симуляторе HDL не изменяется ни в каком случае. Simulink принимает, что обработка симулятора HDL демонстрационная базирующийся. Simulink собирает выборки, полученные от симулятора HDL в системы координат как требуется. С другой стороны Simulink передает выходные данные к симулятору HDL в системах координат, которые распакованы и обработаны симулятором HDL одна выборка за один раз.
Наблюдайте следующие ограничения и требования при соединении основанных на системе координат сигналов в с блоком HDL Simulator:
Связь смешанных основанных на системе координат и основанных на выборке сигналов с тем же блоком HDL Simulator не поддержана.
Только одноканальные основанные на системе координат сигналы могут быть соединены с блоком HDL Simulator. Использование многоканальных (матричных) основанных на системе координат сигналов не поддержано в этом релизе.
Все основанные на системе координат сигналы, соединенные с блоком HDL Simulator, должны иметь тот же формат кадра.
Основанная на системе координат обработка в модели Simulink очевидна для операции модели HDL при симуляции в симуляторе HDL. Модель HDL, как предполагают, основана на выборке. Следующее ограничение также применяется к модели HDL при симуляции в симуляторе HDL:
Задайте сигналы VHDL® как скалярные значения, не векторы или массивы (за исключением битовых векторов. VHDL и битовые векторы Verilog® преобразованы в соответственно измеренный скалярный тип данных фиксированной точки блоком HDL Cosimulation). |
Этот пример показывает использование блока HDL Simulator к cosimulate реализация VHDL простого фильтра lowpass. В примере вы сравните производительность симуляции с помощью основанных на системе координат и основанных на выборке сигналов.
Этот пример характерен для пользователей ModelSim; однако, большая часть процесса будет тем же самым для Острых пользователей.
Файлы в качестве примера (в matlabroot
):
Модель в качестве примера:
\toolbox\edalink\extensions\modelsim\modelsimdemos\frame_filter_cosim
Код VHDL для фильтра, чтобы быть cosimulated:
\toolbox\edalink\extensions\modelsim\modelsimdemos\VHDL\frame_demos\lp_fir_8k.vhd
Фильтр был спроектирован с Filter Designer, и код был сгенерирован Filter Design HDL Coder™.
Пример использует файл данных matlabroot
\toolbox\signal\signal\mtlb.mat
как входной сигнал. Этот файл содержит речевой сигнал. Выборочные данные имеют тип данных double
, произведенный на уровне 8 кГц.
Следующий рисунок показывает frame_filter_cosim
модель.
Audio Source Signal From Workspace
блок обеспечивает входной сигнал от переменной mtlb
рабочей области. Блок сконфигурирован для частоты дискретизации на 8 кГц, с форматом кадра 80, как показано в этом рисунке.
Частота дискретизации и формат кадра входного сигнала распространяют в модели.
Файл кода VHDL lp_fir_8k.vhd
реализует простой КИХ-фильтр lowpass с частотой среза 1 500 Гц. Блок HDL Simulator симулирует этот модуль HDL. Порты блока HDL Simulator и сигнал часов сконфигурированы, чтобы совпадать с соответствующими сигналами на сущности VHDL.
Для симуляции ModelSim, чтобы выполниться, когда мы хотим его к, clk_enable
сигнал lp_fir_8k
сущность должна быть обеспечена высоко. Сигнал обеспечен командой перед симуляцией, переданной блоком HDL Simulator. Команда была введена в панель Simulation блока HDL Simulator, как показано в следующем рисунке (пример, показанный для использования с ModelSim).
Блок HDL Simulator возвращает выходной параметр в переменной audiobuff1
рабочей области через
Filtered Signal To Workspace
блок.
Чтобы запустить cosimulation, выполните следующие шаги:
Запустите MATLAB® и сделайте его вашим активным окном.
Настройте и превратитесь в перезаписываемую рабочую папку, которая является вне контекста вашей папки установки MATLAB.
Добавьте папку в качестве примера в путь MATLAB:
matlabroot\toolbox\edalink\extensions\modelsim\modelsimdemos\frame_cosim
Скопируйте файл VHDL lp_fir_8k.vhd
к вашей рабочей папке.
Откройте модель в качестве примера.
open frame_filter_cosim.mdl
Загрузите исходный речевой сигнал, который будет отфильтрован в рабочее пространство MATLAB.
load mtlb
Если у вас есть совместимая звуковая карта, можно воспроизвести исходный сигнал путем ввода следующих команд в командной строке MATLAB:
a = audioplayer(mtlb,8000); play(a);
Запустите ModelSim путем ввода следующей команды в командной строке MATLAB:
vsim
Окно ModelSim должно теперь быть активным. В противном случае запустите его.
В подсказке ModelSim создайте библиотеку проекта и скомпилируйте код фильтра VHDL от исходного файла lp_fir_8k.vhd
, путем ввода следующих команд:
vlib work vmap work work vcom lp_fir_8k.vhd
Фильтр lowpass, который будет симулирован, задан как сущность lp_fir_8k
. В подсказке ModelSim загрузите инстанцированную сущность lp_fir_8k
для cosimulation:
vsimulink lp_fir_8k
ModelSim теперь создан для cosimulation.
StartMatlab. Запустите симуляцию и измерьте прошедшее время можно следующим образом:
t = clock; sim(gcs); etime(clock,t) ans = 2.7190
Синхронизация в этой выборке кода типична для запуска этой модели, учитывая симуляцию Stop time 1 секунды и формат кадра 80 выборок. Синхронизации системно-зависимы и будут варьироваться немного от одной симуляции, запущенной к следующему.
Примите во внимание синхронизацию, вы получили. Для следующей запущенной симуляции вы измените модель в основанную на выборке операцию и получите сравнительную синхронизацию.
MATLAB хранит отфильтрованный звуковой сигнал, возвращенный в ModelSim в переменной audiobuff1
рабочей области. Если у вас есть совместимая звуковая карта, можно воспроизвести отфильтрованный сигнал услышать эффект фильтра lowpass. Проигрывайте сигнал путем ввода следующих команд в командной строке MATLAB:
b = audioplayer(audiobuff1,8000); play(b);
Откройте диалоговое окно параметров блоков Audio Source Signal From Workspace
блокируйте и установите свойство Samples per frame на 1
, как показано в этом рисунке.
Закройте диалоговое окно и выберите окно Simulink. Выберите Simulation> Update diagram.
Теперь исходный сигнал (и все сигналы, наследовавшиеся ему), являются скаляром.
Запустите ModelSim. В подсказке ModelSim ввести
restart
StartMatlab. Запустите симуляцию и измерьте прошедшее время можно следующим образом:
t = clock; sim(gcs); etime(clock,t) ans = 3.8440
Заметьте, что прошедшее время значительно увеличилось с основанным на выборке входным сигналом. Синхронизация в этой выборке кода типична для основанного на выборке запуска этой модели, учитывая симуляцию Stop time 1 секунды. Синхронизации системно-зависимы и будут варьироваться немного от одной симуляции, запущенной к следующему.
Закройте симуляцию организованным способом. В ModelSim остановите симуляцию путем выбора Simulate> End Simulation и выйдите из ModelSim. Затем закройте окно модели Simulink.