У меня вопрос по VHDL. Следующий код предназначен для выбора хода игрока в игре. Он хорошо имитирует, но когда я генерирую поток битов, у него появляется предупреждение: «[Synthesizer 8-327] выводит защелку для переменной 'teToca_reg' [" C: /...../ Eleccion.vhd ": 137] «Основная проблема возникает из-за назначения, выполненного в процессе, который мне нужен для того, чтобы сигнал« камбио »получил первое значение хода в этой игре и чтобы его можно было изменять после каждого раза, когда В1 нажат. Проблема возникает из-за того, что присвоение выполняется позже комбинационно в противоположном направлении, так что вывод «teToca» принимает измененное значение. Сигнал «FinPartida» устанавливается в 1, когда игра заканчивается, и «победа» дает значение, поэтому «teToca» получает новое значение.
proceso_switch: process(clk,reset)
begin
if reset = '1' then
cambia <= '0';
elsif clk'event and clk='1' then
if FinPartida='1' then
cambia <= tetoca; --LATCH
elsif state = S_JUEGO and flanco='1' and B1='1' and posicion/=9 and pos1(posicion)='0' and pos2(posicion)='0' then
cambia <= NOT cambia; --OK
end if;
end if;
end process;
teToca <= empieza when state = S_ESPERA and reset = '0' else
'0' when state = S_ESPERA and reset = '1' else
--PLATCH--
cambia when state = S_JUEGO AND (flanco='1' and B1='1' and posicion/=9 and pos1(posicion)='0' and pos2(posicion)='0') else
--LATCH--
'0' when state = S_JUEGO AND win="001" else
'1' when state = S_JUEGO AND win="100";
turno <= teToca;