Это, должно быть, самая распространенная проблема среди людей, плохо знакомых с VHDL, но я не вижу, что я здесь делаю неправильно! Кажется, это соответствует всем идиомам, которые я встречал при разработке правильного конечного автомата. Я компилирую в Altera Quartus 9.2, для чего это стоит. Фактическая ошибка:
«Не удается вывести регистр для «spiclk_out» в [файл] [строка], потому что он не удерживает свое значение за границей часов»
ENTITY spi_state_machine IS
PORT(
spiclk_internal : IN STD_LOGIC;
reset : IN STD_LOGIC;
spiclk_out : BUFFER STD_LOGIC
);
END spi_state_machine;
PROCESS(spiclk_internal, reset)
BEGIN
IF reset = '1' THEN
spiclk_out <= '0';
END IF;
IF spiclk_internal = '1' AND spiclk_internal'EVENT THEN --error here
spiclk_out <= NOT spiclk_out;
END IF;
END PROCESS;
Спасибо за ваше время.
spiclk_out
в предложенииELSE
для этогоIF
? - person Marty   schedule 13.05.2011