Этот пример иллюстрирует, как вы можете создать Simulink® модель для генерации HDL-кода. Создание MATLAB® алгоритм, совместимый с генерацией HDL-кода, см. Руководство по написанию кода MATLAB для генерации эффективного HDL-кода.
Модель является простым счетчиком, который отсчитывается вверх и возвращается к нулю после того, как он достигает верхнего предела, который вы задаете. Чтобы открыть модель непосредственно без выполнения шагов, см. «Простая модель счетчика».
Чтобы создать HDL-совместимую модель Simulink, используйте шаблон Blank DUT. Шаблон предварительно сконфигурирован для генерации HDL-кода при помощи hdlsetup
функция.
На панели инструментов MATLAB нажмите кнопку.
На начальной странице Simulink перейдите к разделу HDL Coder, а затем выберите шаблон Blank DUT.
Сохраните модель с именем файла hdlcoder_simple_up_counter.slx
в рабочей папке с возможностью записи.
Шаблон Blank DUT имеет HDL_DUT
подсистема, которая соответствует Design-Und-Test (DUT), для которого вы генерируете HDL-код. Чтобы проверить функциональность DUT, шаблон содержит испытательный стенд за пределами HDL_DUT
подсистема, которая обеспечивает входы в DUT и регистрирует выходные значения. См. Модель разбиения на DUT и испытательный стенд.
Чтобы спроектировать алгоритм счетчика, используйте блоки из HDL Coder Библиотека Блоков. Блоки в этой библиотеке предварительно сконфигурированы для генерации HDL-кода. Чтобы фильтровать браузер библиотеки Simulink, чтобы показать библиотеки блоков, которые поддержку генерацию HDL-кода:
На вкладке Apps выберите HDL Coder.
На вкладке 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
Чтобы восстановить вид по умолчанию в браузере библиотек, нажмите кнопку. Кроме того, в командной строке введите:
hdllib('off')
Дважды кликните HDL_DUT
подсистема. Перетащите блоки из библиотеки HDL Coder в модель. В этой таблице перечислены блоки, которые нужно добавить в модель для разработки счетчика. Чтобы узнать, что делает блок и задать его параметры блоков, дважды кликните блок.
Блок | Библиотека | Количество блоков | Параметры блоков |
---|---|---|---|
Constant | Источники | 2 |
|
Switch | Маршрутизация сигналов | 2 | Критерии для прохождения первого входа: u2 > Порог |
Delay | Дискретный | 2 | Длина задержки: 1 |
Add | Математические операции | 1 | Тип данных аккумулятора: Наследование: То же, что и первый вход |
Relational Operator | Логические и битовые операции | 1 | Реляционный оператор: > |
Переименуйте входные порты 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-код, можно проверить, что настройки модели совместимы с генерацией HDL-кода. Модель счетчика, используемая в этом примере, совместима с генерацией HDL-кода. Чтобы проверить и обновить модель для совместимости с HDL, используйте HDL-код Advisor. См. «Проверка совместимости HDL-файлов модели Simulink с использованием HDL-код Advisor».
checkhdl
| hdllib
| hdlmodelchecker
| hdlsetup