Создайте модель 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 является Subsystem, который является в основном в верхнем уровне вашей модели и содержит алгоритм, для которого вы генерируете HDL-код. Блоки вне этого Subsystem формируют испытательный стенд, и содержит входные параметры к Subsystem и выходным значениям, которые регистрируются. Испытательный стенд гарантирует, что функциональность DUT как ожидалось.

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

  2. Откройте Библиотеку блоков HDL Coder для разработки вашего встречного алгоритма. Отфильтровать Браузер Библиотеки Simulink, чтобы показать библиотеки блоков, что генерация HDL-кода поддержки, во вкладке Apps, выбирает HDL Coder. Вкладка HDL Code появляется. Выберите HDL Block Properties> Open HDL Block Library.

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

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

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

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

    • Vision HDL Toolbox

    • Wireless HDL Toolbox

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

    В качестве альтернативы в командной строке MATLAB, введите:

    hdllib('off')

    Примечание

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

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

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

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

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

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

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

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

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

      Примечание

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

    • Вход блока Counter 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-кода.

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

| | |

Похожие темы