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

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

Введение

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

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. Нажмите кнопку Advisor, чтобы запустить Советника по вопросам Рабочего процесса.

  2. Выберите 'Yes' для опции 'Проект нужно преобразование в фиксированную точку'.

  3. Щелкните правой кнопкой по шагу 'Propose Fixed-Point Types''.

  4. Выберите '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/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');