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