HDL Coder™ может сгенерировать код VHDL и Verilog из кода MATLAB®, моделей Simulink® и графиков Stateflow®. Можно затем проверить, что сгенерированный код совпадает исходным алгоритмом, и разверните его на целевом компьютере.
Этот пример иллюстрирует, как можно создать модель Simulink для генерации HDL-кода. Модель является простым алгоритмом суммирующего счетчика, который переносится назад, чтобы обнулить после того, как она достигает верхнего предела, который вы задаете.
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 формируют испытательный стенд.
Откройте Библиотеку блоков 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
Чтобы восстановить Браузер Библиотеки к представлению по умолчанию, в Браузере Библиотеки, нажимают кнопку.
В качестве альтернативы в командной строке MATLAB, введите:
hdllib('off')
Набор поддерживаемых блоков имеет тенденцию изменять каждый релиз. Восстановите свою поддерживаемую библиотеку блоков каждый раз, когда вы устанавливаете новую версию этого продукта.
Дважды кликните Подсистему HDL_DUT. Перетащите блоки из библиотеки HDL Coder и добавьте их в свою модель. Эта таблица иллюстрирует блоки, чтобы добавить к вашей модели для разработки суммирующего счетчика. Узнать о том, что блок, и задавать параметры блоков для того блока, действительно дважды кликает блок.
Блок | Библиотека | Количество блоков | Параметры блоков |
---|---|---|---|
Constant | Источники | 2
|
|
Switch | Маршрутизация сигнала | 2
| Критерии передачи первого входа: u2> Порог |
Delay | Дискретный | 2
| Длина задержки: 1 |
Add | Математические операции | 1
| Тип данных аккумулятора: Наследуйтесь: То же самое, как сначала введено |
Relational Operator | Логика и битовые операции | 1
| Оператор отношения:> |
Переименуйте входные порты In1
и In2
к count_threshold
и Enable
соответственно. Поместите блоки в свою модель и соедините их как показано в фигуре.
Enable
сигнал задает, должен ли счетчик рассчитать вверх от предыдущего значения. Когда Enable
сигнал является логикой высоко, счетчик подсчитывает от нуля до count_threshold
значение. Когда значение out
становится равным count_threshold
значение, счетчик переносится назад, чтобы обнулить и начинает рассчитывать снова. Когда Enable
сигнал становится логикой низко, счетчик содержит предыдущее значение.
Перейдите к верхнему уровню модели и измените входные настройки.
Вход блока 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-кода.
checkhdl
| hdllib
| hdlmodelchecker
| hdlsetup