VHDL process, обьясните как работает
Вот смотрю шпаргалку по vhdl тут - https://www.ics.uci.edu/~jmoorkan/vhdlref/process.html и в ней говорится что process бывает ''clocked" типа такого:
Код:
process
begin
wait until CLK'event and CLK='1';
Q1 <= D1;
end process;
и "combinational" типа такого:
Код:
process (A, B, SEL)
begin
Z <= B;
if SEL='1' then
Z <= A;
end if;
end process;
A у меня вот такой случай что надо и то и другое сразу, ну я и сочинил такое:
Код:
process(ppi_cs_n_int, reset_inp_n)
begin
if(reset_inp_n = '0') then
slots_enable <= '0';
else
if(ppi_cs_n_int'event and ppi_cs_n_int = '0') then
slots_enable <= '1';
end if;
end if;
end process;
ppi_cs_n_int - это сигнал доступа к порту i8255 который в MSX применяется как mapper памяти, и как токо процессор обращается к i8255 нужно включить этот самый mapper аж до момента сброса (reset_inp_n = '0')
Так вот вопрос, может ли процесс быть наполовину ''clocked" а наполовину ''combinational" (как я сочинил)? или это неправильно и если в "sensitivity list" есть сигнал который ''clocked" то данный процесс будет выполняться строго по "clock"-у этого сигнала? ну и тогда тот кусок надо бы переписать как:
Код:
process
begin
wait until ppi_cs_n_int'event and ppi_cs_n_int = '0';
slots_enable <= '1';
end process;
process(reset_inp_n)
begin
if(reset_inp_n = '0') then
slots_enable <= '0';
end if;
end process;
и таки интересно, как же насамом деле будет работать процесс в котором есть "clocked" сигнал но есть и другие сигналы в "sensitivity list", будет ли он запускаться при изменении этих сигналов тоже? или только по "clocked" сигналу?