Этот шаблон проекта показывает MATLAB® пример счетчика, который подходит для генерации HDL-кода.
Этот шаблон проекта демонстрирует две лучшие практики для записи кода MATLAB для генерации HDL-кода:
Инициализируйте постоянные переменные до определенного значения. В этом примере an if оператор и isempty функция инициализирует постоянную переменную. Если постоянная переменная не инициализирована, HDL-код не может быть сгенерирован.
Внутри функции считывайте стойкие переменные перед их изменением, в порядок, чтобы постоянные переменные выводились как регистры.
Этот Simulink® модель иллюстрирует счетчик, смоделированный в этом примере.

Чтобы узнать, как смоделировать счетчик в Simulink, смотрите Создание HDL-совместимой модели Simulink.
Функция mlhdlc_counter является поведенческой моделью четырехфазного синхронного бита. Входной сигнал, enable_ctr, запускает значение счетчика, count_val, увеличить на единицу. Счетчик продолжает увеличиваться на единицу каждый раз, когда вход ненулевой, пока количество не достигает предела 15. После того, как счетчик достигает этого предела, счетчик возвращается к нулю. Постоянная переменная, которая инициализирована как нуль, представляет текущее значение счетчика. Два if операторы определяют значение счетчика на основе входов.
Следующий раздел кода определяет mldhlc_counter функция.
%#codegen function count = mlhdlc_counter(enable_ctr) %four bit synchronous up counter %persistent variable for the state persistent count_val; if isempty(count_val) count_val = 0; end %counting up if enable_ctr count_val=count_val+1; %limit to four bits if count_val>15 count_val=0; end end count=count_val; end