В этом примере показано, как работать с файлами, созданными при преобразовании с плавающей запятой в фиксированную.
В этом учебном пособии используется простой фильтр, реализованный в плавающей точке, и связанные с ним средства тестирования, которые иллюстрируют структуру файлов созданного кода с фиксированной точкой.
design_name = 'mlhdlc_filter'; testbench_name = 'mlhdlc_filter_tb';
Проектирование MATLAB: mlhdlc_filter
MATLAB testbench: mlhdlc_filter_tb
При выполнении следующих строк кода необходимые файлы примеров копируются во временную папку.
mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos'); mlhdlc_temp_dir = [tempdir 'mlhdlc_flt2fix']; % create a temporary folder and copy the MATLAB files cd(tempdir); [~, ~, ~] = rmdir(mlhdlc_temp_dir, 's'); mkdir(mlhdlc_temp_dir); cd(mlhdlc_temp_dir); copyfile(fullfile(mlhdlc_demo_dir, [design_name,'.m*']), mlhdlc_temp_dir); copyfile(fullfile(mlhdlc_demo_dir, [testbench_name,'.m*']), mlhdlc_temp_dir);
Перед созданием кода смоделируйте проект с помощью средства тестирования, чтобы убедиться в отсутствии ошибок во время выполнения.
mlhdlc_filter_tb


Для создания нового проекта введите следующую команду:
coder -hdlcoder -new flt2fix_project
Затем добавьте файл «mlhdlc _ filter» в проект в качестве функции MATLAB и «mlhdlc _ filter _ tb» в качестве тестового стенда MATLAB.
Более подробное руководство по созданию и заполнению проектов кодера MATLAB HDL см. в разделе Начало работы с MATLAB в Workflow-процессе HDL.
При подготовке к этапу формирования кода фиксированной точки необходимо выполнить следующие задачи:
Нажмите кнопку Помощник по рабочим процессам, чтобы запустить помощник по рабочим процессам.
Выбирать Convert to fixed-point at build time для опции Преобразование фиксированных точек.
Щелкните правой кнопкой мыши на шаге «Преобразование фиксированной точки» и выберите «Выполнить до выбранной задачи», чтобы выполнить инструментальное моделирование с плавающей точкой.
Дополнительные сведения об этих шагах см. в разделе Преобразование с плавающей точкой на фиксированную.
Исходная конструкция с плавающей запятой и testbench имеют следующие связи.

Для преобразования с плавающей запятой в фиксированную применяются следующие требования к исходной конструкции и тестовым инструментам:
Testbench 'mlhdlc _ filter _ tb.m' (1) должен быть сценарием или функцией без входных данных.
Конструкция «» mlhdlc _ filter.m «» (2) должна быть функцией.
Должен быть, по крайней мере, один вызов проекта из испытательного стенда. Все узлы вызовов участвуют в определении предлагаемых типов фиксированных точек.
Как конструкция, так и средства тестирования могут вызывать другие подфункции в файле или другие функции по пути MATLAB. Функции, существующие в matlab/toolbox, не преобразуются в фиксированные точки.
В текущем примере MATLAB testbench 'mlhdlc _ filter _ tb' имеет единственный вызов конструкторской функции 'mlhdlc _ filter'. Testbench вызывает проект с вводами с плавающей запятой и накапливает результаты с плавающей запятой для печати.
На этапе проверки типа для этой конструкции генерируется код с фиксированной точкой и компилируется для проверки отсутствия ошибок при применении типов. Выходные файлы будут иметь следующую структуру.

В процессе проверки типа с фиксированной точкой выполняются следующие шаги:
Файл конструкции «mlhdlc _ filter.m» преобразуется в файл с фиксированной точкой для создания кода MATLAB с фиксированной точкой, «mlhdlc _ filter _ fixpt.m» (3).
Все пользовательские функции, вызываемые в конструкции с плавающей запятой, преобразуются в фиксированную точку и включаются в создаваемый файл конструкции.
Создается новый файл оболочки конструкции с именем «mlhdlc _ filter _ wrapper _ fixpt.m» (2). Этот файл преобразует значения данных с плавающей запятой, предоставленные средством тестирования, в типы с фиксированной запятой, определенные для входных данных проекта на этапе преобразования. Эти значения фиксированных точек подаются в преобразованную конструкцию фиксированных точек «mlhdlc _ filter _ fixpt.m».
'mlhdlc _ filter _ fixpt.m' будет использоваться для создания кода HDL.
Все сгенерированные файлы с фиксированной точкой хранятся в выходном каталоге 'codegen/mlhdlc _ filter/fixpt'.

Щелкните ссылки на созданный код в окне журнала помощника по рабочим процессам, чтобы проверить созданный дизайн с фиксированной точкой и обертку.
Выполните следующие команды для очистки временной папки проекта.
mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos'); mlhdlc_temp_dir = [tempdir 'mlhdlc_flt2fix']; clear mex; cd (mlhdlc_demo_dir); rmdir(mlhdlc_temp_dir, 's');