Я сделал то же самое на Этлис.Есть счетчики clk. Знать частоту часов в файле .ucf (файл отображения).Имеется логическое значение состояния ожидания, isWait. Когда sensorDisp равен 1, тогда isWait = true. Я уже упоминал псевдокод ниже.
Вы можете создать отдельный процесс для этого с помощью ввода clk и sensordisp.И запомните, если какой-либо переменной / сигналу не было присвоено какое-либо значение в каком-либо прогоне кода, if выведет защелку, поскольку ей нужно предыдущее значение, поскольку она не назначена.
movimiento: process (clk,sensorIzq, sensorDer, sensorDisp,clk)
begin
if(clk edge ) then
if (isWait) then
if(wait_counter < "frequency")) then
wait_couter++;
else
isWait = False;
Disp = '0';
end if;
else
if(sensorDisp = '1') then
wait_counter = 0;
isWait = True;
Disp <= '1';
end if;
if(sensorIzq='1' and sensorDer='0' and sensorDisp = '0') then
llantaIzq<='1';
llantaDer<='0';
elsif(sensorIzq='0' and sensorDer='1'and sensorDisp = '0') then
llantaIzq<='0';
llantaDer<='1';
elsif(sensorIzq = '1' and sensorDer = '1' and sensorDisp = '0') then
llantaIzq <= '1';
llantaDer <= '1';
elsif(sensorIzq = '1' and sensorDer = '1' and sensorDisp = '1') then
llantaIzq <= '0';
llantaDer <= '0';
end if;
end if;
end if;
end process movimiento;
end comportamiento;