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

В этом примере показана генерация HDL-кода из проекта MATLAB ® с фиксированной точкой, который готов к генерации кода.

Введение

Код MATLAB, используемый в примере, является реализацией декодера viterbi, смоделированного с использованием конструкций с фиксированной точкой.

design_name = 'mlhdlc_viterbi';
testbench_name = 'mlhdlc_viterbi_tb';
  1. MATLAB Проекта: mlhdlc_viterbi

  2. Тестовый набор MATLAB: mlhdlc_viterbi_tb

Откройте mlhdlc_viterbi функции проекта, нажав на вышеуказанную ссылку, чтобы заметить использование функций Fixed-Point Designer:

  1. использование 'fi', 'numerictype' и 'fimath' для моделирования типов данных с фиксированной точкой

  2. использование 'bitget', 'bitsliceget', 'bitconcat' для моделирования битовых операций

Создайте новую папку и скопируйте соответствующие файлы

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

mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_fixpt_design'];

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

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

coder -hdlcoder -new fixpt_codegen

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

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

Пропустите преобразование фиксированной точки

Запустите HDL Advisor и выберите 'Сохранить исходные типы' для опции 'Преобразование с фиксированной точкой:'.

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

Если ваш проект находится в плавающей точке, следуйте инструкциям в Преобразование из плавающей запятой в фиксированную запятую и преобразуйте ваш проект в фиксированную точку, прежде чем переходить к шагам генерации HDL-кода.

Запуск генерации HDL-кода

Щелкните правой нажатие кнопки на шаге 'Code Generation' и выберите опцию 'Run this task', чтобы запустить весь шаг генерации кода непосредственно.

Исследуйте сгенерированный HDL-код, нажав на гиперссылки в Генерацию кода Журнала окне.

Попробуйте больше параметров генерации кода

Поскольку это большой проект со значительным количеством функций, вы можете попробовать опцию 'Generate instantiable code for functions' на вкладке Advanced.

Повторно исследуйте сгенерированный HDL-код и сравните его с предыдущим шагом.

Очистка сгенерированных файлов

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

mlhdlc_demo_dir = fullfile(matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'matlabhdlcoderdemos');
mlhdlc_temp_dir = [tempdir 'mlhdlc_fixpt_design'];
clear mex;
cd (mlhdlc_demo_dir);
rmdir(mlhdlc_temp_dir, 's');