Код
out_swithing: process(nRST, CLK, OUT_SW, PATTERN)
begin
if rising_edge(CLK) then
if nRST = RST_pol then
OUT_SW_sig <= OUT_SW;
PATTERN_sig <= PATTERN;
else
OUT_SW_sig <= OUT_SW_sig;
PATTERN_sig <= PATTERN_sig;
end if;
end if;
end process;
begin
if rising_edge(CLK) then
if nRST = RST_pol then
OUT_SW_sig <= OUT_SW;
PATTERN_sig <= PATTERN;
else
OUT_SW_sig <= OUT_SW_sig;
PATTERN_sig <= PATTERN_sig;
end if;
end if;
end process;
смысл кода в том что-бы синхронно читать вход OUT_SW в внутренний сигнал OUT_SW_sig только во время активизации глобального сброса (nRST). Когда-же сброс не активизирован - сигнал удерживает последнее значение. Это нужно для конфигурации системы.
OUT_SW - определен в entity как input, std_logic;
OUT_SW_sig - определен как сигнал в architecture
OUT_SW_sig - выводится на выход для debugа
Второй вход/сигнал не проверял еще.
В функциональной симуляции работает нормально, в тайминговой и в железе - не работает, т.е. OUT_SW_sig заткнут постоянно в '0';
Когда в процессе debugа ставлю постоянное значение на выход OUT_SW_sig (например '1') - нормально выводится на выход в железе.
Когда вешаю на OUT_SW_sig сам вход OUT_SW и им играюсь (он на dip-switchе) - тоже нормально работает в железе.
А вот в коде - никак.
Чего делаю левого ?
Спасибо..
P.S. FPGA - Lattice ECP2 (LFE2-50E)