Создайте модель Simulink для генерации HDL-кода

HDL Coder™ может сгенерировать код VHDL и Verilog из кода MATLAB®, моделей Simulink® и графиков Stateflow®. Можно затем проверить, что сгенерированный код совпадает исходным алгоритмом, и разверните его на целевом компьютере.

Этот пример иллюстрирует, как можно создать модель Simulink для генерации HDL-кода. Модель является простым алгоритмом суммирующего счетчика, который переносится назад, чтобы обнулить после того, как она достигает верхнего предела, который вы задаете.

Открытая модель и библиотека HDL Coder

  1. StartMatlab. От панели инструментов MATLAB нажмите кнопку Simulink. Затем в разделе HDL Coder выберите шаблон Blank DUT.

    Выбор этого шаблона открывает модель Simulink, которая предварительно сконфигурирована для генерации HDL-кода. Сохраните модель с именем файла, таким как hdlcoder_simple_up_counter.slx в рабочей папке, которая перезаписываема.

    Когда вы создаете модель для генерации HDL-кода, вы делите модель в Проект под тестом (DUT) и испытательный стенд. DUT является Подсистема, которая является в основном в верхнем уровне вашей модели и содержит алгоритм, для которого вы генерируете HDL-код. Блоки вне этой Подсистемы формируют испытательный стенд, и содержит входные параметры к Подсистеме и выходным значениям, которые регистрируются. Испытательный стенд гарантирует, что функциональность DUT как ожидалось.

    Для испытательного стенда можно использовать блоки, которые не поддержаны для генерации HDL-кода. В шаблоне Blank DUT модель имеет Подсистему HDL_DUT, которая соответствует DUT. Блоки вне Подсистемы HDL_DUT формируют испытательный стенд. См. также Использование Шаблоны Simulink для генерации HDL-кода.

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

    hdllib

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

    Можно найти дополнительные поддержанные HDL блоки в этих библиотеках блоков:

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

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

    • Vision HDL Toolbox

    • LTE HDL Toolbox

    Восстановить Браузер Библиотеки к представлению по умолчанию, введите:

    hdllib('off')

    Примечание

    Набор поддерживаемых блоков имеет тенденцию изменять каждый релиз. Восстановите свою поддерживаемую библиотеку блоков каждый раз, когда вы устанавливаете новую версию этого продукта.

Разработайте дизайн и испытательный стенд

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

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

    • Тип выходных данных: uint32

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

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

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

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

      Примечание

      Убедитесь, что тип выходных данных этого блока Константа совпадает с типом выходных данных блоков Константа в Подсистеме HDL_DUT.

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

    Эти данные показывают верхний уровень вашей модели после того, как вы применили эти настройки.

Чтобы узнать больше, как создать модель, смотрите, Создают Простую Модель (Simulink).

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

Моделируйте свою модель путем нажатия кнопки. Чтобы видеть результаты симуляции, откройте блок Scope в верхнем уровне вашей модели. Результаты симуляции отображают сигнал Enable в верхней части, генерирующей постоянное значение 1 и сигнала out, рассчитывающего от 0 до 15, затем переносясь назад, чтобы обнулить, и затем подсчитывая снова. Эта фигура отображает форму волны выходного сигнала out.

Проверяйте модель на совместимость HDL

Вы теперь моделировали модель и проверили функциональность вашего проекта. Прежде чем вы сгенерируете HDL-код, необходимо проверить, что образцовые настройки совместимы для генерации HDL-кода. Чтобы сделать ваш проект совместимым для генерации HDL-кода, вы используете Средство проверки Модели HDL. Чтобы изучить, как использовать Средство проверки Модели HDL, смотрите Совместимость HDL Проверки Модели Используя Средство проверки Модели HDL.

Смотрите также

| | |

Похожие темы