да не гуляет _синхронный_ сброс - все в нем хорошо, то есть микропроцессор от этого сброса не сбрасывается, а продолжает работать
экспериментировать дальше пока времени нет,
вот описание сброса (типа по Гейслеру), то есть для системы используется rstout (выход триггера)
Код
async : if syncrst = 0 generate
reg1 : process (clk, arst) begin
if rising_edge(clk) then
r <= r(3 downto 0) & clklock;
rstoutl <= r(4) and r(3) and r(2);
end if;
if (arst = '0') then r <= "00000"; rstoutl <= '0'; end if;
end process;
rstout <= (rstoutl and rst) when scanen = 1 else rstoutl;
end generate;
наблюдал rstout, при этом не только он но и другие сигналы имеют "иголки" - просто объяснить, что это не так мне было бы сложнее чем сброс, поэтому в качестве примера я привел сброс
--------------------------
кстати не вижу никакой проблемы использовать LOCK для синхр. сброса - в любом случае тактовый сигнал появляется до того как поднимется LOCK, поэтому если сброс не заведен на управление PLL, то
Код
sync : if syncrst = 1 generate
reg1 : process (clk) begin
if rising_edge(clk) then
r <= (r(3 downto 0) & clklock) and (rst & rst & rst & rst & rst);
rstoutl <= r(4) and r(3) and r(2);
end if;
end process;
rstout <= rstoutl and rst;
end generate;
такая конструкция не имеет проблем (разве что до появления сброса схема находится в неопределенном состоянии - но так как внутри ПЛИСины трехстабильных шин и конфликта драйверов нет, то если немножко до появления клока постоит враскоряку то ничего страшного)