Асинхронный, потому что работает по внутренним событиям, а не по клокам.
В частности Quartus скомпилировал следующий код на Verilog:
always @(Reset or Interlock)
begin
if(ContMode)
RegInterlock<=RegInterlock | Interlock;
else if(Reset)
RegInterlock<=16'h00;
end
- таким образом, что одна из ветвей условия никогда не сможет выполниться из-за задержек на переключения.
В общем, понятно, что лучше делать синхронно, но пока мало опыта, да и трудно все втиснуть, когда зажат всего в 240 LE :)
P.S. Вообще-то, я программист C++, а это в программировании железа еще хуже, чем гуманитарий.