У меня есть флип-флоп, который использует как 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? Обратите внимание, что я не хочу генерировать импульс, который является периодом такта, потому что моя схема работает асинхронно.
Отлично! Это сработало! Дело в том, что BitReady, который никогда не переходит в «0», только потому, что я упростил код. Я не понял, что сигналы также могут быть добавлены в список чувствительности. Я думал только о входах. Еще одна вещь, которую я узнал! Большое спасибо. – gccinac
VHDL имеет меньше ограничений, чем люди часто ожидают: если грамматика позволяет это, и компилятор не жалуется на это, он, вероятно, работает. В этом случае, когда вы находитесь внутри архитектуры, сигнал порта отображается так же, как и любой другой сигнал (квалифицированный по своему режиму: не записывайте в порт «in»!) –