В этом примере показана генерация HDL-кода из проекта MATLAB ® с фиксированной точкой, который готов к генерации кода.
Код MATLAB, используемый в примере, является реализацией декодера viterbi, смоделированного с использованием конструкций с фиксированной точкой.
design_name = 'mlhdlc_viterbi'; testbench_name = 'mlhdlc_viterbi_tb';
MATLAB Проекта: mlhdlc_viterbi
Тестовый набор MATLAB: mlhdlc_viterbi_tb
Откройте mlhdlc_viterbi функции проекта, нажав на вышеуказанную ссылку, чтобы заметить использование функций Fixed-Point Designer:
использование 'fi', 'numerictype' и 'fimath' для моделирования типов данных с фиксированной точкой
использование '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);
coder -hdlcoder -new fixpt_codegen
Затем добавьте файл 'mlhdlc _ viterbi.m' к проекту в качестве функции MATLAB и 'mlhdlc _ viterbi _ tb.m' в качестве испытательного стенда MATLAB.
Более полное руководство по созданию и заполнению проектов MATLAB HDL Coder см. в разделе «Начало работы с MATLAB в HDL».
Запустите HDL Advisor и выберите 'Сохранить исходные типы' для опции 'Преобразование с фиксированной точкой:'.
Шаг, связанный с преобразованием с плавающей точкой в фиксированную точку, удаляется из дерева рабочих процессов, когда мы пропускаем преобразование.
Если ваш проект находится в плавающей точке, следуйте инструкциям в Преобразование из плавающей запятой в фиксированную запятую и преобразуйте ваш проект в фиксированную точку, прежде чем переходить к шагам генерации 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');