Используйте шаблоны Simulink для генерации HDL-кода

Шаблоны модели HDL Coder™ в Simulink® предоставляют вам шаблоны разработки и лучшые практики для моделей, предназначенных для генерации HDL-кода. Модели, которые вы создаете из одного из шаблонов модели HDL Coder, имеют свои параметры конфигурации и настройки решателя, настроенные для генерации HDL-кода. Чтобы сконфигурировать существующую модель для генерации HDL-кода, использовать hdlsetup.

Создайте модель Используя шаблон модели HDL Coder

Чтобы смоделировать оборудование для эффективной генерации HDL-кода, создайте модель с помощью шаблона модели HDL Coder.

  1. Откройте начальную страницу Simulink. Во вкладке Home MATLAB® нажмите кнопку Simulink. Alternativelty, в командной строке, введите:

    simulink

  2. В разделе HDL Coder вы видите шаблоны, которые предварительно сконфигурированы для генерации HDL-кода. Выбор шаблона открывает пустую модель в Редакторе Simulink. Чтобы сохранить модель, выберите File> Save As.

  3. Чтобы открыть Браузер Библиотеки Simulink и затем открыть Библиотеку блоков HDL Coder, нажмите кнопку Library Browser в Редакторе Simulink. В качестве альтернативы в командной строке, войти

    slLibraryBrowser

    Чтобы отфильтровать Браузер Библиотеки Simulink, чтобы показать библиотеки блоков что генерация HDL-кода поддержки, используйте hdllib функция:

    hdllib

Шаблоны модели HDL Coder

Комплексный множитель

Шаблон Complex Multiplier показывает, как смоделировать комплексный аккумулятор множителя и вручную конвейерно обработать промежуточные стадии. Аппаратная реализация комплексного умножения использует четыре множителя и два сумматора.

Шаблон применяет применяющие лучшые методы:

  • В диалоговом окне Configuration Parameters, в HDL Code Generation> Global Settings, Reset type установлен в Synchronous.

  • Чтобы улучшить скорость, блоки Delay, которые сопоставляют с регистрами в оборудовании, при вводах и выводах множителей и сумматоров.

  • Чтобы поддержать выходные данные множителя комплекса полной точности, размер слова выходных данных вручную задан, чтобы быть (operand_word_length * 2) + 1.

    Например, в шаблоне, размер слова операнда равняется 18, и выходной размер слова равняется 37.

Арифметика MATLAB

Шаблон MATLAB Arithmetic содержит арифметические операции MATLAB, которые выводят DSP48s в оборудовании.

Например, ml_mul_acc Блок MATLAB Function показывает, как записать, что умножение - накапливает операцию в MATLAB. hdlfimath применяет математические настройки фиксированной точки для генерации HDL-кода.

function y = fcn(u1, u2)

% design of a 6x6 multipler 
% same reset on inputs and outputs
% followed by an adder

nt = numerictype(0,6,0);
nt2 = numerictype(0,12,0);
fm = hdlfimath;

persistent u1_reg u2_reg mul_reg add_reg;
if isempty(u1_reg)
    u1_reg = fi(0, nt, fm);
    u2_reg = fi(0, nt, fm);
    mul_reg = fi(0, nt2, fm);
    add_reg = fi(0, nt2, fm);
end

mul = mul_reg;
mul_reg = u1_reg * u2_reg;
add = add_reg;
add_reg(:) = mul+add;
u1_reg = u1;
u2_reg = u2;

y = add;

ROM

Шаблон ROM является шаблоном разработки, который сопоставляет с ROM в оборудовании.

Шаблон применяет применяющие лучшые методы:

  • При выходе интерполяционной таблицы существует блок Delay с ResetType = none.

  • Интерполяционная таблица структурирована таким образом, что интервал между точками останова является степенью двойки.

    Используя табличные размерности, которые являются степенью двойки, позволяет HDL Coder сгенерировать операции сдвига вместо операций деления. При необходимости заполните таблицу нулями.

  • Количество записей интерполяционной таблицы является степенью двойки. Для некоторых инструментов синтеза интерполяционная таблица, которая имеет количество степени двойки записей, сопоставляет лучше с ROM. При необходимости заполните таблицу нулями.

Регистр

Шаблон Register показывает, как смоделировать аппаратные регистры:

  • В Simulink, с помощью блока Delay.

  • В MATLAB, с помощью персистентных переменных.

    Этот шаблон разработки также показывает, как использовать cast распространить типы данных автоматически.

Код MATLAB в блоке MATLAB Function использует персистентную переменную, чтобы смоделировать регистр.

function y = fcn(u)
% Unit delay implementation that maps to a register in hardware

persistent u_d;
if isempty(u_d)
    % defines initial value driven by unit delay at time step 0
    u_d = cast(0, 'like', u);
end

% return delayed input from last sample time hit
y = u_d;

% store the current input
u_d = u;

SRL

Шаблон SRL показывает, как реализовать сдвиговый регистр, который сопоставляет с SRL16 в оборудовании. Можно использовать подобный шаблон, чтобы сопоставить с SRL32.

В подсистеме сдвигового регистра Tapped Delay реализует операцию сдвига, и MATLAB Function, select_tap, реализует выходной мультиплексор.

В select_tap, основанный на нуле адрес, addr шаг 1, потому что индексы MATLAB на основе одни.

function dout = fcn(addr, tdelay)
%#codegen

addr1 = fi(addr+1,0,5,0);
dout = tdelay(addr1);
В сгенерированном коде HDL Coder автоматически не использует шаг, потому что Verilog® и VHDL® основаны на нуле.

Шаблон также применяет применяющие лучшые методы для отображения с SRL16 в оборудовании:

  • Для блока Tapped Delay:

    • В диалоговом окне Block Parameters не включен Include current input in output vector.

    • В диалоговом окне HDL Block Properties ResetType установлен в none.

  • Для блока Subsystem, в диалоговом окне HDL Block Properties, FlattenHierarchy установлен в on.

Аппаратные шаблоны Simulink

Шаблон Simulink Hardware Patterns содержит шаблоны разработки для общей аппаратной работы:

  • Последовательно-параллельный сдвиговый регистр

  • Обнаружьте возрастающее ребро

  • Обнаружьте падающее ребро

  • Фиксатор SR

  • Фиксатор RS

Например, шаблоны разработки для возрастающего обнаружения ребра и падающего обнаружения ребра:

Конечный автомат в MATLAB

Шаблон State Machine in MATLAB показывает, как реализовать Мучнистый и машина состояний Мура с помощью блока MATLAB Function.

Чтобы узнать больше о лучшых практиках для моделирования машины состояний, см. Модель Конечный автомат для генерации HDL-кода.

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте