2013-03-06 2 views
1

У меня есть флип-флоп, который использует как clk входной сигнал, поступающий от обработки к другим сигналам. Это означает, что я не использую часы системы не как вход. Таким образом, когда я делаю:Обнаружение нарастающего фронта сигнала std_logic в VHDL

architecture sampler_a of sampler_e is 
    signal S0_s : std_logic := '0'; 
begin 
    -- In my block this is not only a not. I put this to simplify things. 
    S0_s <= not(S0_i);     
    S0_o <= S0_s; 

    process(S0_i) 
    begin 
    --Also with rising edge does not work 
    if (S0_s'event and S0_s= '1') then 
     BitReady_o <= '1'; 
    end if; 
    end process; 
end sampler_a; 

BitReady не меняется в процессе моделирования (в ModelSim). Используется ли здесь std_logic? Обратите внимание, что я не хочу генерировать импульс, который является периодом такта, потому что моя схема работает асинхронно.

ответ

2

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

Измените свой список чувствительности на S0_s и, если он должен работать. Однако, как в настоящее время написано, один раз BitReady_o становится '1', нет способа вернуть его '0'.

+0

Отлично! Это сработало! Дело в том, что BitReady, который никогда не переходит в «0», только потому, что я упростил код. Я не понял, что сигналы также могут быть добавлены в список чувствительности. Я думал только о входах. Еще одна вещь, которую я узнал! Большое спасибо. – gccinac

+0

VHDL имеет меньше ограничений, чем люди часто ожидают: если грамматика позволяет это, и компилятор не жалуется на это, он, вероятно, работает. В этом случае, когда вы находитесь внутри архитектуры, сигнал порта отображается так же, как и любой другой сигнал (квалифицированный по своему режиму: не записывайте в порт «in»!) –

Смежные вопросы