То В этом примере показано, как компактное использование симулирует уровни на многоскоростном проекте, может сгенерировать нежелательный HDL-код и предоставляет немного рекомендаций оптимальной генерации кода.
Эта модель в качестве примера содержит 3 подсистемы, первый демонстрирует проблему, и другие обеспечивают практические способы решить вопрос.
Отметьте в ниже проекта существует два острова логик, оба выполнения на различных уровнях. Дифференциал уровня между этими двумя уровнями является 10E-06, который является очень высоким номером и возможно нереалистичный для практического проекта FPGA. Эта модель имеет блок Gain с плавающей точкой, оператор мультицикла, в быстро-тактовой области.
Рабочая генерация кода на этой модели, мы добираемся:
Скомпилированная сгенерированная модель выглядит как ниже. Обратите внимание на то, что задержка высокой производительности на быстрой области тактовой частоты проекта добавляется, чтобы сбалансировать задержки через несколько выходных путей системы.
Высокое количество регистров в быстрой области тактовой частоты имеет нежелательную генерацию HDL-кода сообщения эффекта: # Сгенерированные файлы HDL являются отдельно очень большими. # большое количество регистров трубопровода сделает вмещение проекта в FPGA невероятным.
Следующие разделы этого документа создают общую осведомленность об ограничении ресурсов, которое многоскоростные модели могут создать, когда используется в присутствии операций мультицикла и предоставляют немного рекомендаций для оптимального использования ресурсов.
open_system('hdlcoder_multirate_delaybalancing');
Модели User Simulink могут иметь различные пути тактовой частоты из-за различных причин моделирования. В присутствии оптимизации, как конвейеризация ввода-вывода, распределенная конвейеризация, потоковая передача и/или совместное использование или операции мультицикла, как дюйм/с с плавающей точкой, математические функции фиксированной точки как sqrt или делятся, трубопроводы введены, которые применяются на том же уровне, на котором действует путь прохождения сигнала.
Представление любой дополнительной конвейеризации вводит нежелательную задержку наверху, которая должна быть сбалансирована через несколько выходных путей, действующих на различных уровнях. Если различие в отношении между самой быстрой и самой медленной тактовой частотой в модели Simulink является очень большим, это заставляет большое количество регистров быть сгенерированным в итоговом HDL-коде. Файлы HDL становятся большими, и проект даже не может поместиться в FPGA.
Пользователь может не знать о нежелательном влиянии, которое дифференциал уровня его модели оказывает на HDL-код. Например, в вышеупомянутой модели, частота дискретизации, заданная на постоянном блоке, не была уделенным должным вниманием и установила его оценивать, который вызвал дифференциал уровня 10E06 с уровнем базовой модели. Такой высокий 'дифференциал уровня' казался неумышленным.
Наше предложение должно было бы изменить частоту дискретизации постоянного блока, чтобы запуститься на том же уровне как базовая модель для такой ситуации.
Рабочая генерация кода на этой модели, мы добираемся:
Обратите внимание на то, что выходные числа задержки значительно уменьшились. Скомпилированная сгенерированная модель выглядит как ниже.
Нет никакого нежелательного высокого количества регистров.
Если многоскоростной желательное свойство, в котором нуждается пользователь, пользователь должен считать создание дифференциала уровня максимально практичным.
Например, если один путь проекта, запускающегося на уровне 'нс' и другого пути его проекта, в 'нас', желательная функция проекта, пользователь может все еще принять решение иметь многоскоростные пути в своей модели с осведомленностью, которые задерживаются, балансировка может вызвать высокое количество регистров.
Рабочая генерация кода на этой модели, мы добираемся:
Скомпилированная сгенерированная модель похожа на рисунок ниже. В сгенерированной модели и HDL-коде, у нас будет близко к 1 000 регистров в быстрой тактовой частоте выход path. Дополнительная стоимость регистров весьма обычна для управляющих логик, которые запускаются 1000x быстрее, чем система. Пользователь только должен знать об ограничениях аппаратного ресурса для такой модели.
Чтобы оптимизировать на общем количестве регистров в FPGA, пользователь может также использовать HDLCoder, "Сопоставляющий задержки трубопровода с RAM" функция. Выполнение этого будет компромисс ресурс RAM, чтобы экономить на логической области.
>> hdlset_param (gcs, 'MapPipelineDelaysToRAM', 'on');