exponenta event banner

Шаблоны проектирования оборудования с использованием функционального блока MATLAB

В этом примере показано, как эффективно использовать функциональный блок MATLAB для моделирования часто используемых аппаратных алгоритмов с использованием Coder™ HDL. Библиотека шаблонов дизайна HDL используется для отображения функций кодера MATLAB, поддерживаемого кодером HDL.

Краткое введение

Функциональный блок MATLAB поддерживает моделирование и генерацию кода для ограниченного подмножества языка MATLAB ®. Он обеспечивает механизм реализации алгоритма в Simulink ® и Stateflow ®. Дополнительные сведения об использовании этого блока в Simulink:

  >> docsearch('About Code Generation from MATLAB Algorithms')

Подмножество функций, поддерживаемых кодером HDL

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

  • Различные числовые классы (int, uint, логический, одинарный, двойной)

  • Арифметика с фиксированной точкой с использованием объекта «fi»

  • Поддержка арифметических, логических, реляционных и побитовых операторов

  • Полная поддержка выражений MATLAB с использованием указанных выше операторов

  • 1-D и 2-D Матричные операции

  • Подстрочный индекс матрицы

  • Управление потоком с помощью if, switch, для операторов

  • Подфункции

  • Постоянные переменные в состояние модели

  • Функции библиотеки MATLAB с фиксированной точкой и целым числом

Моделирование аппаратных алгоритмов

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

% To illustrate the use of the above features in hardware modeling a
% sample patterns library is created that shows how to model common
% HDL problems. To open this sample library model please type
% at the command prompt

open_system('eml_hdl_design_patterns')

Использование блоков в этой библиотеке

Чтобы построить некоторые образцы моделей с использованием блоков в этой модели и соблюдать созданный код, выполните следующие действия:

  • Создайте новую модель.

  • Скопируйте интересующий блок из библиотеки eml_hdl_design_patterns в эту модель.

  • Поместите его в тестируемую подсистему или устройство.

  • Выполните команду 'hdlsetup'.

  • Запустите makehdl, чтобы создать код для блока

  • Создайте вокруг него действующий стенд испытаний с использованием источников и раковин Simulink.

  • Выполните команду makehdltb для создания testbench.

  • Используйте файл сценария Modelsim «» .do «» для моделирования созданного кода.

дополнительные сведения или тип см. в учебном примере модели 'eml _ hdl _ incrementer'

  >> docsearch('Tutorial Example: Incrementer')

Арифметика моделирования

В этом разделе рассматриваются некоторые аспекты проектирования, которые помогают генерировать эффективную ЛПВП из функционального блока MATLAB. Обратите внимание, что для моделирования арифметических операций произвольной длины с использованием подписанных и неподписанных логических векторов рекомендуется использовать объект fi. Объекты fi обеспечивают мощный механизм моделирования арифметики фиксированных точек. Вот несколько моментов, которые следует отметить при использовании объектов fi в блоке функции MATLAB.

Функция fi помогает определить объект с фиксированной точкой с настраиваемым «числовым типом» (определяющим знак, длину слова, длину фракции) и «fimath» (определяющим режимы округления и насыщения).

Для генерации кода HDL рекомендуется использовать формат, показанный ниже. (с режимами Floor, Wrap и FurePrecision), как показано ниже.

Однако при моделировании алгоритмов, требующих более сложной логики округления и насыщения, можно использовать другие режимы fimath для округления (пол, потолок, фиксация, ближайший) и переполнения (обтекание, насыщение).

  fimath(...
  'RoundMode', 'floor',...
  'OverflowMode', 'wrap',...
  'ProductMode', 'FullPrecision', 'ProductWordLength', 32,...
  'SumMode', 'FullPrecision', 'SumWordLength', 32);

Примеры: Следующие примеры показывают влияние свойств fimath на созданный код.

  open_system('eml_hdl_design_patterns/Adders/add_with_carry')
  open_system('eml_hdl_design_patterns/Misc/eml_expr')

Состояние моделирования с использованием постоянных переменных

Для моделирования сложной логики управления возможность моделирования регистров является основным требованием. В модели программирования кодера MATLAB элементы удержания состояния представлены в виде постоянных переменных. Переменная, объявленная постоянной, сохраняет свое значение для вызовов функций в программном обеспечении и для шагов времени выборки Simulink. Элементы удержания состояния в аппаратных средствах, таких как регистры и триггеры, также проявляют аналогичное поведение. Следующие примеры того, как значения постоянных переменных могут быть изменены с использованием условий глобального и локального сброса.

Примеры: open_system ('eml_hdl_design_patterns/Delay') open_system ('eml_hdl_design_patterns/Delays/unit задерживаются'), open_system ('eml_hdl_design_patterns/Delays/integer задержка') open_system ('eml_hdl_design_patterns/Delays/tap задержка') open_system ('eml_hdl_design_patterns/Delays/tap вектор задержки')

Моделирование счетчиков и FSM

Управляющие конструкции кодера MATLAB, такие как switch/case и if-elseif-else, в сочетании с элементами задержки и арифметическими операциями с фиксированной точкой, позволяют моделировать логику управления. Примеры в FSM показывают, как использовать управляющие операторы switch-case и if-elseif-end. Счетчик показывает состояние модели и способ квантования элементов данных в циклах.

Примеры: open_system ('eml _ hdl _ design _ patterns/FSM') open_system ('eml _ hdl _ design _ patterns/Counters')

Моделирование побитовых операций

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

Ниже приведен краткий список побитовых функций, поддерживаемых кодером HDL:

  • bitget, bitsliceget, bitconcat, bitset, bitcmp

  • bitand, bitor, bitxor

  • bitandreduction, bitorreduction, bitxorreduction

  • bitshift, bitsll, bitsrl, bitsra, bitrol, bitror

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

  • Предпочитать неподписанные подписанные входные операнды

  • Используйте параметры ненасыщенного fimath для создания меньшего количества оборудования.

  • Предпочитает, чтобы OverflowMode был «wrap», а RoundMode - «floor»

Примеры: open_system ('eml _ hdl _ design _ patterns/Bit Twiddlers/hdl_bit_ops') open_system (' eml _ hdl _ design _ patterns/Bit Twiddlers/signal_distance') open_system ('eml _ hdl _ design _ patterns/Word Twiddlers/nibble_swap_with_slice_concat')

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

open_system('hdlcoder_int2bits_bits2int')

В этой модели используется функциональный блок MATLAB, реализованный в Word Twiddlers библиотека.

open_system('eml_hdl_design_patterns/Word Twiddlers/Bits2Int')
open_system('eml_hdl_design_patterns/Word Twiddlers/Int2Bits')
open_system('eml_hdl_design_patterns/Word Twiddlers/Integer to Bits')
open_system('eml_hdl_design_patterns/Word Twiddlers/Bits to Integer')

Моделирование элементов оборудования

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

Примеры: open_system ('eml _ hdl _ design _ patterns/Shift Registers/shift_reg_universal')

Заключение

Этот пример иллюстрирует различные возможности, открывающиеся для аппаратного моделирования с помощью функционального блока MATLAB. Рассматривается набор шаблонов для решения общих задач аппаратного моделирования с использованием функционального блока MATLAB. Дополнительные сведения об этой библиотеке см. в документе.

  >> docsearch('The eml_hdl_design_patterns Library')