В этом примере показано, как работать с файлами, сгенерированными во время преобразования из плавающей запятой в фиксированную запятую.
Этот пример использует простой фильтр, реализованный в с плавающей точкой и связанном испытательном стенде, чтобы проиллюстрировать файловую структуру сгенерированной фиксированной точки.
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 для более полного примера при создании и заполнении проектов HDL Coder MATLAB.
Выполните следующие задачи при подготовке к шагу генерации фиксированной точки:
Нажмите кнопку Workflow Advisor, чтобы запустить Советника по вопросам Рабочего процесса.
Выберите Convert to fixed-point at build time
для опции преобразование Фиксированной точки.
Щелкните правой кнопкой по Преобразованию Фиксированной точки, продвигаются и выбирают Run to Selected Task, чтобы выполнить оснащенную симуляцию с плавающей точкой.
Обратитесь к Преобразованию из плавающей запятой в фиксированную запятую для более полного примера на этих шагах.
Исходный проект с плавающей точкой и испытательный стенд имеют следующее отношение.
Для преобразования из плавающей запятой в фиксированную запятую следующие требования применяются к первоначальному проекту и испытательному стенду:
Испытательный стенд 'mlhdlc_filter_tb.m' (1) должен быть скриптом или функцией без входных параметров.
Проект 'mlhdlc_filter.m' (2) должен быть функцией.
Должен быть по крайней мере один вызов проекта от испытательного стенда. Все сайты вызова способствуют при определении предложенных фиксированных точек.
И проект и испытательный стенд могут вызвать другие подфункции в файле или другие функции на пути MATLAB. Функции, которые существуют в рамках MATLAB/тулбокса, не преобразованы в фиксированную точку.
В текущем примере испытательный стенд MATLAB 'mlhdlc_filter_tb' имеет один вызов функции проекта 'mlhdlc_filter'. Испытательный стенд вызывает проект с входными параметрами с плавающей точкой и накапливает результаты с плавающей точкой для графического вывода.
Во время шага валидации типа фиксированная точка сгенерирована для этого проекта и скомпилирована, чтобы проверить, что нет никаких ошибок при применении типов. Выходные файлы будут иметь следующую структуру.
Следующие шаги выполняются во время процесса валидации фиксированной точки:
Файл проекта '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'.
Щелкните по ссылкам к сгенерированному коду в логарифмическом Окне Советника по вопросам Рабочего процесса, чтобы исследовать сгенерированный проект фиксированной точки и обертку.
Запустите следующие команды, чтобы очистить временную папку проекта.
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');