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

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

Введение

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

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 для более полного примера на этом шаге.

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

Запустите Советника по вопросам HDL и выберите 'Keep original types' на опции 'Преобразование Фиксированной точки':.

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

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

Запустите генерацию 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');