exponenta event banner

Создание кода HDL для подсистем с массивом шин

Массив шин - это массив, элементами которого являются шины. Каждый элемент в массиве шин должен быть невиртуальным и иметь один и тот же тип данных.

Массив шин компактно представляет структурированные данные. Массив:

  • Снижение сложности модели

  • Сокращение объема обслуживания за счет организации и маршрутизации сигналов в модели Simulink ® для векторизированных алгоритмов

Дополнительные сведения см. в разделе Группирование невиртуальных шин в массивах шин.

Можно создать HDL-код для виртуальных и невиртуальных блоков, которые Simulink поддерживает с массивом шин. Дополнительные сведения см. в разделе Блоки с поддержкой шины.

Как кодер HDL генерирует код для массива шин

HDL Coder™ расширяет массив шин в модели Simulink до соответствующих скалярных сигналов в сгенерированном коде.

Эта модель Simulink имеет массив сигналов шин на интерфейсе DUT.

Массив шин объединяет два невиртуальных элемента шины, каждый из которых имеет скаляры a и b типов uint16 и int32 соответственно.

Результирующий код HDL расширяет массив шин на скаляры и содержит четыре скалярных входных и выходных порта.

В сгенерированном коде массив расширения шины приводит к четырем скалярным сигналам на входном и выходном портах. Для первого объекта шины входными портами являются In_1_a и In_1_b. Для второго объекта шины они In_2_a и In_2_b. На выходе для первого объекта шины они Out_1_a и Out_1_b. Для второго объекта шины они Out_2_a и Out_2_b.

ENTITY DUT IS
  PORT( In1_1_a   :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        In1_1_b   :   IN    std_logic_vector(31 DOWNTO 0);  -- int32
        In1_2_a   :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        In1_2_b   :   IN    std_logic_vector(31 DOWNTO 0);  -- int32
        Out1_1_a  :   OUT   std_logic_vector(15 DOWNTO 0);  -- uint16
        Out1_1_b  :   OUT   std_logic_vector(31 DOWNTO 0);  -- int32
        Out1_2_a  :   OUT   std_logic_vector(15 DOWNTO 0);  -- uint16
        Out1_2_b  :   OUT   std_logic_vector(31 DOWNTO 0)   -- int32
        );
END DUT;

Кодер HDL генерирует код в соответствии с порядком, в котором указываются элементы шины и элементы массива в модели Simulink. Если для модели Simulink указан целевой язык VHDL, содержащий объект шины с массивами, кодер HDL сохраняет массивы в сгенерированном коде и не развертывается на скаляры.

Ограничения на набор шин

  • Не используйте массив шин внутри других типов данных. Нельзя использовать сигнал шины, содержащий массив шин.

  • Системные и функциональные блоки MATLAB, содержащие системные объекты, не поддерживаются массивом шин.

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