Этот шаблон проекта показывает 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