Генерация кода из многоскоростных моделей

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

  • В пределах тестируемого устройства (DUT).

  • На испытательном стенде приводят в действие ДУТ. В этом случае DUT наследует несколько частот дискретизации от его входов или выходов.

  • Как в испытательный стенд, так и в DUT.

В целом, генерация HDL-кода для многоскоростной модели не сильно отличается от генерации HDL-кода для односкоростной модели. Однако существует несколько требований и ограничений на строение модели и использование специализированных блоков (таких как Rate Transitions), которые применяются к многоскоростным моделям. Для получения дополнительной информации смотрите Многоскоростную модель требования к генерации HDL-кода.

Генерация Clock Enable для многопоточного DUT

Следующая блок-схема показывает внутреннее пространство подсистемы, содержащей блоки, которые явно сконфигурированы с различными шагами расчета. Верхний и нижний блоки Counter Free-Running имеют шаги расчета 10 с и 20 с соответственно. Выходные сигналы счетчика маршрутизируются к выходным портам ST10 и ST20, которые наследуют их шаги расчета. Путь сигнала, заканчивающийся на ST10 запускается с базовой скоростью модели; путь сигнала, заканчивающийся на ST20 является сигналом субрейта, вращающимся на половине базовой скорости модели.

Как показано на следующем рисунке, выходах многоразового привода DUT To Рабочей области блоков в испытательный стенд. Эти блоки наследуют шаги расчета выходов DUT.

В следующем списке показан VHDL® объявление сущности, сгенерированное для DUT.

ENTITY DUT IS
  PORT( clk                               :   IN    std_logic;
        reset                             :   IN    std_logic;
        clk_enable                        :   IN    std_logic;
        ce_out_0                          :   OUT   std_logic;
        ce_out_1                          :   OUT   std_logic;
        ST10                              :   OUT   std_logic_vector(7 DOWNTO 0);  -- uint8
        ST20                              :   OUT   std_logic_vector(5 DOWNTO 0)  -- ufix6
        );
END DUT;

У сущность есть стандартные входы синхронизации, сброса и включения синхроимпульса и данных выходов для ST10 и ST20 сигналы. В сложение сущности имеет два выходов включения синхроимпульса (ce_out_0 и ce_out_1). Эти выходы включения синхроимпульса реплицируют внутренние сигналы включения синхроимпульса, поддерживаемые сущностью контроллера синхронизации.

Следующий рисунок, показывающий фрагмент графики ментора® ModelSim® симуляция сгенерированного кода VHDL, позволяет вам наблюдать временную зависимость синхроимпульса базовой скорости (clk), активизирует часы и вычисленные выходы модели.

После утверждения clk_enable (реплицируется ce_out_0), новое значение вычисляется и выход в ST10 для каждого цикла синхроимпульса базовой скорости.

Новое значение вычисляется и выводится для сигнала субрейта ST20 для каждого другого цикла синхроимпульса базовой скорости. Внутренний сигнал, enb_1_2_1 (реплицируется ce_out_1) определяет сроки выполнения этих расчетов.