Работа с сгенерированными файлами с фиксированной точкой

В этом примере показано, как работать с файлами, сгенерированными во время преобразования из плавающей запятой в фиксированную запятую.

Введение

Это руководство использует простой фильтр, реализованный в плавающей точке и связанном тестовом наборе, чтобы проиллюстрировать файловую структуру сгенерированного кода с фиксированной точкой.

design_name = 'mlhdlc_filter';
testbench_name = 'mlhdlc_filter_tb';

Код MATLAB ®

  1. MATLAB Проекта: mlhdlc_filter

  2. Тестовый набор 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

Создайте новый HDL Coder™ проект

Чтобы создать новый проект, введите следующую команду:

coder -hdlcoder -new flt2fix_project

Затем добавьте файл 'mlhdlc _ filter' к проекту в качестве функции MATLAB и 'mlhdlc _ filter _ tb' в качестве испытательного стенда MATLAB.

Более полное руководство по созданию и заполнению проектов MATLAB HDL Coder см. в разделе «Начало работы с MATLAB в HDL».

Рабочий процесс генерации кода с фиксированной точкой

Выполните следующие задачи при подготовке к шагу генерации кода с фиксированной точкой:

  1. Нажмите кнопку Советник по рабочему процессу, чтобы запустить Советник по рабочему процессу.

  2. Выберите Convert to fixed-point at build time для опции Преобразование с фиксированной точкой.

  3. Щелкните правой кнопкой мыши Шаг преобразования с фиксированной точкой и выберите Выполнить до выбранной задачи, чтобы выполнить инструментальную симуляцию с плавающей точкой.

Более полное руководство по этим шагам см. в разделе Преобразовании из плавающей запятой в фиксированную запятую.

Конструкторская структура с плавающей точкой

Оригинальный проект с плавающей точкой и testbench имеют следующие отношения.

Для преобразования из плавающей запятой в фиксированную запятую, следующие требования применяются к исходному проекту и тестовому набору:

  • Тестбенч 'mlhdlc _ filter _ tb.m' (1) должен быть скриптом или функцией без входов.

  • Проект 'mlhdlc _ filter.m' (2) должен быть функцией.

  • Должен быть хотя бы один вызов проекта из тестового набора. Все узлы вызова вносят свой вклад при определении предлагаемых типов фиксированных точек.

  • И проект, и тестбенч могут вызвать другие подфункции в файле или другие функции в пути MATLAB. Функции, которые существуют в matlab/toolbox, не преобразуются в фиксированную точку.

В текущем примере MATLAB testbench 'mlhdlc _ filter _ tb' имеет один вызов функции проекта 'mlhdlc _ filter'. Testbench вызывает проект с входами с плавающей точкой и накапливает результаты с плавающей точкой для графического изображения.

Проверьте типы

На этапе валидации типа для этого проекта генерируется код с фиксированной точкой и компилируется, чтобы убедиться, что при применении типов нет ошибок. Файлы выхода будут иметь следующую структуру.

Следующие шаги выполняются в процессе валидации типа с фиксированной точкой:

  1. Файл проекта 'mlhdlc _ filter.m' преобразуется в фиксированную точку, чтобы сгенерировать код MATLAB с фиксированной точкой 'mlhdlc _ filter _ fixpt.m' (3).

  2. Все пользовательские функции, вызываемые в проекте с плавающей точкой, преобразуются в фиксированную точку и включаются в сгенерированный файл проекта.

  3. Создается новый файл оболочки проекта, называемый 'mlhdlc _ filter _ wrapper _ fixpt.m' (2). Этот файл преобразует значения данных с плавающей точкой, предоставленные тестовым центром, в фиксированные точки, определенные для входных входов проекта во время шага преобразования. Эти значения с фиксированной точкой подаются в преобразованный проект с фиксированной точкой 'mlhdlc _ filter _ fixpt.m'.

  4. 'mlhdlc _ filter _ fixpt.m' будет использоваться для генерации HDL-кода.

  5. Все сгенерированные файлы с фиксированной точкой хранятся в выходной директории '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');