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

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

  • В устройстве под тестом (DUT).

  • В испытательном стенде, управляющем DUT. В этом случае DUT наследовал несколько частот дискретизации от своих вводов или выводов.

  • И в испытательном стенде и в DUT.

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

Часы включают генерацию для многоскоростного DUT

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

Как показано в следующей фигуре, выходные параметры многоскоростного DUT управляют К блокам Рабочей области в испытательном стенде. Эти блоки наследовали шаги расчета 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;

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

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

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

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