exponenta event banner

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

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

Введение

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

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

Код MATLAB ®

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

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

Создание нового проекта HDL Coder™

Для создания нового проекта введите следующую команду:

coder -hdlcoder -new flt2fix_project

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

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

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

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

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

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

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

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

Структура конструкции с плавающей запятой

Исходная конструкция с плавающей запятой и testbench имеют следующие связи.

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

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

Щелкните ссылки на созданный код в окне журнала помощника по рабочим процессам, чтобы проверить созданный дизайн с фиксированной точкой и обертку.

Очистка созданных файлов

Выполните следующие команды для очистки временной папки проекта.

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