Как решить проблему с защелкой? - PullRequest
0 голосов
/ 11 января 2020

У меня вопрос по 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;
...