Этот пример показывает генерацию HDL-кода от фиксированной точки проект MATLAB®, который готов к генерации кода.
Код MATLAB, используемый в примере, является реализацией декодера Витерби, смоделированного с помощью построений фиксированной точки.
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 для более полного примера на этом шаге.
Запустите Советника по вопросам HDL и выберите 'Keep original types' на опции 'Преобразование Фиксированной точки':.
Связанный с преобразованием из плавающей запятой в фиксированную запятую шаг удален из дерева рабочего процесса, когда мы пропускаем преобразование.
Если ваш проект находится в с плавающей точкой, следуйте инструкциям в С плавающей точкой к Рабочему процессу Фиксированной точки и преобразуйте свой проект в фиксированную точку прежде, чем перейти на шаги генерации HDL-кода.
Щелкните правой кнопкой мыши по 'Генерации кода', продвигаются и выбирают, опция 'Запускают эту задачу', чтобы запустить весь шаг генерации кода непосредственно.
Исследуйте сгенерированный HDL-код путем нажатия на гиперссылки в окне Code Generation Log.
Когда это - большой проект со значительным количеством функций, можно попробовать опцию, 'Генерируют instantiable код для функций' во Вкладке "Дополнительно".
Вновь исследуйте сгенерированный 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');