В этом примере показано, как работать с файлами, сгенерированными во время преобразования из плавающей запятой в фиксированную запятую.
Это руководство использует простой фильтр, реализованный в плавающей точке и связанном тестовом наборе, чтобы проиллюстрировать файловую структуру сгенерированного кода с фиксированной точкой.
design_name = 'mlhdlc_filter'; testbench_name = 'mlhdlc_filter_tb';
MATLAB Проекта: mlhdlc_filter
Тестовый набор MATLAB: 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 Coder см. в разделе «Начало работы с MATLAB в HDL».
Выполните следующие задачи при подготовке к шагу генерации кода с фиксированной точкой:
Нажмите кнопку Советник по рабочему процессу, чтобы запустить Советник по рабочему процессу.
Выберите Convert to fixed-point at build time
для опции Преобразование с фиксированной точкой.
Щелкните правой кнопкой мыши Шаг преобразования с фиксированной точкой и выберите Выполнить до выбранной задачи, чтобы выполнить инструментальную симуляцию с плавающей точкой.
Более полное руководство по этим шагам см. в разделе Преобразовании из плавающей запятой в фиксированную запятую.
Оригинальный проект с плавающей точкой и 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'.
Щелкните ссылки на сгенерированный код в окне журнала Workflow Advisor, чтобы изучить сгенерированный проект с фиксированной точкой и оболочку.
Выполните следующие команды, чтобы очистить временную папку проекта.
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');