Создайте HDL-совместимую модель Simulink

Этот пример иллюстрирует, как вы можете создать Simulink® модель для генерации HDL-кода. Создание MATLAB® алгоритм, совместимый с генерацией HDL-кода, см. Руководство по написанию кода MATLAB для генерации эффективного HDL-кода.

Модель является простым счетчиком, который отсчитывается вверх и возвращается к нулю после того, как он достигает верхнего предела, который вы задаете. Чтобы открыть модель непосредственно без выполнения шагов, см. «Простая модель счетчика».

Использование пустого шаблона DUT

Чтобы создать HDL-совместимую модель Simulink, используйте шаблон Blank DUT. Шаблон предварительно сконфигурирован для генерации HDL-кода при помощи hdlsetup функция.

  1. На панели инструментов MATLAB нажмите кнопку.

  2. На начальной странице Simulink перейдите к разделу HDL Coder, а затем выберите шаблон Blank DUT.

  3. Сохраните модель с именем файла hdlcoder_simple_up_counter.slx в рабочей папке с возможностью записи.

Шаблон Blank DUT имеет HDL_DUT подсистема, которая соответствует Design-Und-Test (DUT), для которого вы генерируете HDL-код. Чтобы проверить функциональность DUT, шаблон содержит испытательный стенд за пределами HDL_DUT подсистема, которая обеспечивает входы в DUT и регистрирует выходные значения. См. Модель разбиения на DUT и испытательный стенд.

Выберите блоки из HDL Coder библиотеки

Чтобы спроектировать алгоритм счетчика, используйте блоки из HDL Coder Библиотека Блоков. Блоки в этой библиотеке предварительно сконфигурированы для генерации HDL-кода. Чтобы фильтровать браузер библиотеки Simulink, чтобы показать библиотеки блоков, которые поддержку генерацию HDL-кода:

  1. На вкладке Apps выберите HDL Coder.

  2. На вкладке HDL Code выберите HDL Block Properties > Open HDL Block Library.

Кроме того, в командной строке введите hdllib.

hdllib

Блоки в библиотеке HDL Coder доступны с Simulink. Если у вас нет HDL Coder™, можно симулировать блоки в модели, но невозможно сгенерировать HDL-код.

Дополнительные поддерживаемые HDL блоки можно найти в следующих библиотеках блоков:

  • Поддержка HDL DSP System Toolbox

  • Поддержка HDL-кода Communications Toolbox

  • Vision HDL Toolbox

  • Wireless HDL Toolbox

Чтобы восстановить вид по умолчанию в браузере библиотек, нажмите кнопкуexit HDL-compatible blocks mode. Кроме того, в командной строке введите:

hdllib('off')

Разрабатывайте алгоритм для DUT

  1. Дважды кликните HDL_DUT подсистема. Перетащите блоки из библиотеки HDL Coder в модель. В этой таблице перечислены блоки, которые нужно добавить в модель для разработки счетчика. Чтобы узнать, что делает блок и задать его параметры блоков, дважды кликните блок.

    БлокБиблиотекаКоличество блоковПараметры блоков
    ConstantИсточники2
    • Постоянные значения: 1 и 0

    • Выход данных: uint8

    SwitchМаршрутизация сигналов2Критерии для прохождения первого входа: u2 > Порог
    DelayДискретный2Длина задержки: 1
    AddМатематические операции1Тип данных аккумулятора: Наследование: То же, что и первый вход
    Relational OperatorЛогические и битовые операции1Реляционный оператор: >
  2. Переименуйте входные порты In1 и In2 на count_threshold и Enable соответственно. Поместите блоки в свою модель и соедините их.

The Enable сигнал определяет, отсчитывается ли счетчик вверх от предыдущего значения. Когда Enable сигнал логически высок, счетчик отсчитывается от нуля до count_threshold значение. Когда значение out становится равным count_threshold значение, счетчик возвращается к нулю и снова начинает подсчет. Когда Enable сигнал становится логическим низким, счетчик удерживает предыдущее значение.

Создайте испытательный стенд для проекта

Перейдите к верхнему уровню модели и измените настройки входа.

  • Constant вход блока в count_threshold: Этот вход указывает максимальное значение, до которого отсчитывается счетчик. В этом примере показано, как спроектировать 4-битный счетчик вверх. Установите Constant value равным 15 (2 ^ 4 - 1) и установите Output data type на uint8.

    Тип выходных данных этого Constant блока затем соответствует типу выходных данных блоков Constant внутри HDL_DUT подсистема.

  • Counter Free-Running вход блока в Enable: Удалить Counter Free-Running блок. Замените этот блок на Constant блок, который имеет значение 1, Output data type установлено на boolean, и Sample time 1.

Смотрите также Создание Простой Модели.

В предыдущем разделе показаны hdlcoder_simple_up_counter.slx модель, которую вы создали, выполнив шаги, описанные выше. Чтобы открыть модель в MATLAB, нажмите кнопку Open Model.

Простая модель счетчика

Откройте эту модель, чтобы увидеть простой счетчик. Модель отсчитывает от нуля до порогового значения, а затем оборачивается назад к нулю. Значение порога установлено в 15. Чтобы изменить пороговое значение, измените значение входа на count_threshold порт. Сигнал Enable определяет, отсчитывается ли счетчик вверх или содержит предыдущее значение. Значение 1 указывает, что счетчик пересчитывается вверх постоянно.

Моделирование и проверка функциональности проекта

Установите Stop time модели равной 50. Симулируйте модель нажатием кнопки. Чтобы увидеть результаты симуляции, откройте блок Scope на верхнем уровне вашей модели.

В результаты симуляции отображается Enable сигнал, генерирующий постоянное значение 1. The out счетчики сигналов от 0 на 15, возвращается к нулю и снова отсчитывается.

Сгенерируйте HDL-код из модели Simulink

Прежде чем вы сгенерируете HDL-код, можно проверить, что настройки модели совместимы с генерацией HDL-кода. Модель счетчика, используемая в этом примере, совместима с генерацией HDL-кода. Чтобы проверить и обновить модель для совместимости с HDL, используйте HDL-код Advisor. См. «Проверка совместимости HDL-файлов модели Simulink с использованием HDL-код Advisor».

См. «Генерация HDL-кода из модели Simulink».

См. также

| | |

Похожие темы