exponenta event banner

Создание кода HDL из кода MATLAB с помощью интерфейса командной строки

В этом примере показано, как использовать интерфейс командной строки HDL Coder™ для генерации кода HDL из кода MATLAB ®, включая преобразование с плавающей запятой в фиксированную и создание файла программирования FPGA.

Обзор

Создание кода HDL с помощью интерфейса командной строки включает следующие основные шаги:

  1. Создать fixpt объект конфигурации кодера. (Необязательно)

  2. Создание hdl объект конфигурации кодера.

  3. Задайте параметры объекта конфигурации. (Необязательно)

  4. Выполните команду codegen для создания кода.

Интерфейс командной строки кодера HDL может использовать два объекта конфигурации кодера с командой codegen. Дополнительное fixpt объект конфигурации кодера конфигурирует преобразование кода MATLAB с плавающей запятой в фиксированную. hdl объект конфигурации кодера конфигурирует параметры генерации кода HDL и программирования FPGA.

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

В примере кода реализован интегратор дискретного времени и его испытательный стенд.

Копирование файлов стенда проектирования и испытаний во временную папку

Выполните следующий код для копирования файлов стенда проектирования и тестирования во временную папку:

close all;
design_name = 'mlhdlc_dti';
testbench_name = 'mlhdlc_dti_tb';

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

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 и преобразовать конструкцию из плавающей точки в фиксированную, используя настройки по умолчанию.

Вам нужно только ваше имя, mlhdlc_dtiи название испытательного стенда, mlhdlc_dti_tb:

close all;

% Create a 'fixpt' config with default settings
fixptcfg = coder.config('fixpt');
fixptcfg.TestBenchName = 'mlhdlc_dti_tb';

% Create an 'hdl' config with default settings
hdlcfg = coder.config('hdl'); %#ok<NASGU>

После настройки fixpt и hdl для выполнения преобразования с плавающей запятой в фиксированную и создания кода HDL выполните следующую команду codegen.

codegen -float2fixed fixptcfg -config hdlcfg mlhdlc_dti

Если в проекте уже используются типы и функции фиксированных точек, преобразование фиксированных точек можно пропустить:

hdlcfg = coder.config('hdl'); % Create an 'hdl' config with default settings
hdlcfg.TestBenchName = 'mlhdlc_dti_tb';
codegen -config hdlcfg mlhdlc_dti

В остальном этом примере описывается, как настроить создание кода с помощью hdl и fixpt объекты.

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

Для выполнения преобразования с плавающей запятой в фиксированную требуется fixpt объект config.

Создать fixpt и укажите имя тестового стенда:

close all;
fixptcfg = coder.config('fixpt');
fixptcfg.TestBenchName = 'mlhdlc_dti_tb';

Задать параметры предложения по типу преобразования с фиксированной точкой

Генератор кода может предлагать типы с фиксированной точкой на основе выбора длины слова или длины дроби. Эти два варианта являются взаимоисключающими.

Основывать предлагаемые типы на длине слова 24:

fixptcfg.DefaultWordLength = 24;
fixptcfg.ProposeFractionLengthsForDefaultWordLength = true;

Кроме того, предлагаемые типы фиксированных точек можно основывать на длине дроби. Следующий код настраивает кодер для предложения типов на основе длины дроби 10:

fixptcfg.DefaultFractionLength = 10;
fixptcfg.ProposeWordLengthsForDefaultFractionLength = true;

Установка запаса прочности

Генератор кода увеличивает диапазон данных моделирования, на основе которого создается предложение типа с фиксированной точкой, на процент запаса прочности. Например, запас прочности по умолчанию равен 4, что увеличивает диапазон данных моделирования, используемый для предложения типа с фиксированной точкой 4%.

Задайте для параметра SafetyMargin значение 10%:

fixptcfg.SafetyMargin = 10;

Включить ведение журнала данных

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

Включить ведение журнала данных в fixpt объект конфигурации:

fixptcfg.LogIOForComparisonPlotting = true;

Просмотр отчета о предложении числового типа

Сконфигурируйте генератор кода для запуска отчета по предложениям типов после предложения типов с фиксированной точкой:

fixptcfg.LaunchNumericTypesReport = true;

Создание объекта конфигурации создания кода HDL

Для создания кода необходимо создать hdl и задайте имя тестового стенда:

hdlcfg = coder.config('hdl');
hdlcfg.TestBenchName = 'mlhdlc_dti_tb';

Установка целевого языка

Можно создать код VHDL или Verilog. Кодер HDL по умолчанию генерирует код VHDL. Чтобы создать код Verilog:

hdlcfg.TargetLanguage = 'Verilog';

Создание кода испытательного стенда ЛПВП

Создайте тестовый стенд HDL на тестовом стенде MATLAB ®:

hdlcfg.GenerateHDLTestBench = true;

Моделирование сгенерированного кода HDL с помощью имитатора HDL

Если необходимо смоделировать созданный код HDL с помощью имитатора HDL, необходимо также создать тестовый стенд HDL.

Включите моделирование HDL и используйте симулятор ModelSim:

hdlcfg.SimulateGeneratedCode = true;
hdlcfg.SimulationTool = 'ModelSim'; %  or 'ISIM'

Создание файла программирования FPGA

Файл программирования FPGA можно создать, если установлен инструмент синтеза. Включите синтез, укажите инструмент синтеза и укажите FPGA:

% Enable Synthesis.
hdlcfg.SynthesizeGeneratedCode = true;

% Configure Synthesis tool.
hdlcfg.SynthesisTool = 'Xilinx ISE'; %  or 'Altera Quartus II';
hdlcfg.SynthesisToolChipFamily = 'Virtex7';
hdlcfg.SynthesisToolDeviceName = 'xc7vh580t';
hdlcfg.SynthesisToolPackageName = 'hcg1155';
hdlcfg.SynthesisToolSpeedValue = '-2G';

Выполнить создание кода

Теперь, когда у вас есть ваш fixpt и hdl настроить объекты конфигурации, выполнить команду codegen для выполнения преобразования с плавающей запятой в фиксированную, создать код HDL и создать файл программирования FPGA:

codegen -float2fixed fixptcfg -config hdlcfg mlhdlc_dti