exponenta event banner

Использование шаблонов Simulink для создания кода HDL

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

Создание модели с использованием шаблона модели кодера HDL

Для моделирования аппаратного обеспечения для эффективной генерации кода HDL создайте модель с использованием шаблона модели кодера HDL.

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

    simulink

  2. В разделе Кодер HDL отображаются шаблоны, предварительно сконфигурированные для создания кода HDL. При выборе шаблона открывается пустая модель в редакторе Simulink Editor. Чтобы сохранить модель, выберите команду Файл (File) > Сохранить как (Save As).

  3. Чтобы открыть браузер библиотеки Simulink, а затем библиотеку блоков кодера HDL, нажмите кнопку «Обозреватель библиотеки» в редакторе Simulink. Либо в командной строке введите

    slLibraryBrowser

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

    hdllib

Шаблоны моделей кодеров HDL

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

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

В шаблоне применяются следующие рекомендации:

  • В диалоговом окне «Параметры конфигурации» в меню «Создание кода HDL» > «Глобальные параметры» для параметра «Тип сброса» установлено значение Synchronous.

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

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

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

Арифметика MATLAB

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

Например, ml_mul_acc Функциональный блок MATLAB показывает, как записать операцию умножения-накопления в 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

Шаблон ПЗУ представляет собой шаблон конструкции, который сопоставляется с ПЗУ в аппаратном обеспечении.

В шаблоне применяются следующие рекомендации:

  • На выходе таблицы поиска имеется блок Delay с ResetType = none.

  • Таблица подстановки структурирована таким образом, что интервал между точками останова равен двум.

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

  • Число записей таблицы подстановки равно двум. Для некоторых инструментов синтеза таблица поиска с числом записей два лучше сопоставляется с ПЗУ. При необходимости заполните стол нулями.

Зарегистрироваться

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

  • В Simulink с помощью блока «Задержка».

  • В 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.

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

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

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

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

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

  • Для блока задержки с отводом:

    • В диалоговом окне «Параметры блока» параметр «Включить текущий ввод в выходной вектор» не включен.

    • В диалоговом окне «Свойства блока HDL» для параметра ResetType установлено значение none.

  • Для блока «Подсистема» в диалоговом окне «Свойства блока HDL» для параметра «Плоская иерархия» установлено значение on.

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

Шаблон Simulink Hardware Patterns содержит шаблоны проектирования для обычных операций с оборудованием:

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

  • Обнаружить передний край

  • Обнаружить опущенную кромку

  • Защелка SR

  • Защелка RS

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

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

Конечный автомат в шаблоне MATLAB показывает, как реализовать конечные автоматы Mealy и Moore с использованием функционального блока MATLAB.

Дополнительные сведения о передовом опыте моделирования конечных автоматов см. в разделе Моделирование конечного автомата для генерации кода HDL.

См. также

|

Связанные темы