Синхронизация глобального сигнала сброса к ядру IP синхронизирует область

HDL ядро IP DUT и логика Дешифратора адреса в обертке интерфейса AXI4 Slave ядра IP HDL управляется глобальным сигналом сброса. Если вы генерируете ядро IP HDL без каких-либо ведомых интерфейсов AXI4, HDL Coder™ не генерирует ведомую интерфейсную обертку AXI4. Глобальный сигнал сброса становится тем же самым как сигналом сброса ядра IP и управляет ядром IP HDL для DUT. Чтобы изучить, как можно сгенерировать ядро IP без ведомых интерфейсов AXI4, смотрите, Генерируют Независимое от Совета Ядро IP HDL из Модели Simulink.

Когда вы генерируете ведомые интерфейсы AXI4 в ядре IP HDL, глобальный сигнал сброса управляется тремя сигналами сброса: ядро IP внешний сброс, сигнал сброса межсоединения AXI и мягкая перезагрузка для ядра процессора ARM. Глобальный сигнал сброса в этом случае управляет ядром IP HDL для DUT и логики Дешифратора адреса в ведомой обертке AXI4.

IPCore_Clk и AXILite_ACLK должен быть соединен с тем же источником часов. IPCore_RESETN и AXILite_ARESETN должен быть соединен с тем же источником сброса.

Эти сигналы сброса могут быть или синхронными или асинхронными. Используя асинхронный сброс сигналы могут быть проблематичными и привести к потенциальным проблемам метастабильности в триггерах когда сброс de-asserts в фиксирующемся окне часов. Чтобы избежать генерации возможных метастабильных значений при объединении сигналов сброса, HDL Coder автоматически вставляет логику синхронизации сброса, как обозначено Reset Sync блок. Логика синхронизации сброса синхронизируется, глобальный сигнал сброса к ядру IP синхронизируют область. Эта логика вставляется, когда вы открываете HDL Workflow Advisor и запускаете задачу Generate RTL Code and IP Core IP Core Generation рабочий процесс.

Логика синхронизации сброса содержит два компенсационных триггеров, которые синхронны к IPCore_CLK сигнал. Триггеры убеждаются, что de-утверждение сигнала сброса происходит после двух тактов когда IPCore_CLK сигнал становится высоким. Это синхронное de-утверждение избегает генерации глобального сигнала сброса, который имеет возможные метастабильные значения.

Логика работает по-другому в зависимости от того, задаете ли вы Reset type как Synchronous или Asynchronous на модели. Если вашим Reset type является Asynchronous, логика синхронизации утверждает сигнал сброса асинхронно и de-asserts сигнал сброса синхронно. Например, этот код иллюстрирует сгенерированный код Verilog® для логики синхронизации сброса, когда вы генерируете ядро IP с асинхронным сбросом.

... 
...

reg_reset_pipe_process : PROCESS (clk, reset_in)
  BEGIN
    IF reset_in = '1' THEN
      reset_pipe <= '1';
    ELSIF clk'EVENT AND clk = '1' THEN
      IF enb = '1' THEN
        reset_pipe <= const_0;
      END IF;
    END IF;
  END PROCESS reg_reset_pipe_process;


  reg_reset_delay_process : PROCESS (clk, reset_in)
  BEGIN
    IF reset_in = '1' THEN
      reset_out <= '1';
    ELSIF clk'EVENT AND clk = '1' THEN
      IF enb = '1' THEN
        reset_out <= reset_pipe;
      END IF;
    END IF;
  END PROCESS reg_reset_delay_process;


END rtl;

Если вашим Reset type является Synchronous, логика синхронизации утверждает и de-asserts сигнал сброса синхронно. Например, этот код иллюстрирует сгенерированный код Verilog для логики синхронизации сброса, когда вы генерируете ядро IP с синхронным сбросом.

...
...

reg_reset_pipe_process : PROCESS (clk)
  BEGIN
    IF clk'EVENT AND clk = '1' THEN
      IF reset_in = '1' THEN
        reset_pipe <= '1';
      ELSIF enb = '1' THEN
        reset_pipe <= const_0;
      END IF;
    END IF;
  END PROCESS reg_reset_pipe_process;


  reg_reset_delay_process : PROCESS (clk)
  BEGIN
    IF clk'EVENT AND clk = '1' THEN
      IF reset_in = '1' THEN
        reset_out <= '1';
      ELSIF enb = '1' THEN
        reset_out <= reset_pipe;
      END IF;
    END IF;
  END PROCESS reg_reset_delay_process;


END rtl;

Похожие темы