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

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

Введение

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

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 для более полного примера при создании и заполнении проектов HDL Coder MATLAB.

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

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

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

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

  3. Щелкните правой кнопкой по Преобразованию Фиксированной точки, продвигаются и выбирают Run to Selected Task, чтобы выполнить оснащенную симуляцию с плавающей точкой.

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

Структура проекта с плавающей точкой

Исходный проект с плавающей точкой и испытательный стенд имеют следующее отношение.

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

  • Испытательный стенд 'mlhdlc_filter_tb.m' (1) должен быть скриптом или функцией без входных параметров.

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

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

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

В текущем примере испытательный стенд MATLAB 'mlhdlc_filter_tb' имеет один вызов функции проекта 'mlhdlc_filter'. Испытательный стенд вызывает проект с входными параметрами с плавающей точкой и накапливает результаты с плавающей точкой для графического вывода.

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

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

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

  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'.

Щелкните по ссылкам к сгенерированному коду в логарифмическом Окне Советника по вопросам Рабочего процесса, чтобы исследовать сгенерированный проект фиксированной точки и обертку.

Очистите Сгенерированные Файлы

Запустите следующие команды, чтобы очистить временную папку проекта.

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');