|
Нужно стремиться делать проекты полностью синхронными. Подаете внешний клок на глобальный вход, от него синхронизируете всю схему.
Существуют, конечно, экстремальные схемы, где нужное быстродействие можно выжать только при асинхронном дизайне. Но чтобы делать такие проекты, нужен опыт, и нужно внимательно всё проверять. Основным недостатком асинхронных проектоя является то, что, так сказать, не формализовано обеспечение их безглючности. В таких проектах предупреждения зачастую приходится игнорировать.
Что касается считывания регистра, вот кусок текста, где по SPI читаются друг за другом CntRef и CntFin:
CntShift[].(clk, prn) = (SClock, !FSync); -- shift counter clock and reset
CntShift[] = CntShift[]+1; -- shift counter implementation
if FSync then -- SData = FinDet or..
SData = FinDet;
else -- SData = counters bits
for i in 0 to 7
generate
SData = (CntRef[i] & CntShift[]==i) # (CntFin[i] & CntShift[]==i+8);
end generate;
end if;
E-mail: info@telesys.ru