Mahagam (26.04.2015 13:34, просмотров: 223) ответил POV на Ну само-то always реагирует на оба фронта. А вот внутри видимо уже при неблокирующем присваивании защёлки нет? Хотя...
потому что первый вариант написан корректно. кстати, верилог позволяет эту запись написать заметно лаконичнее:
always @(posedge clock or posedge load)
if (load) q <= data;
else {shiftout, q} <= {q, shiftin};
кроме того, наличие posedge перед load определяет синхронность или асинхронность параллельной загрузки.
что касается второго варианта, то попробуйте объяснить сначала себе, а потом и остальным, что надо загрузить в q если фронты load и clock придут строго синхронно? потому оно и в один логический блок втискивается, там это разруливается условиями.
кстати, есть мелкая недоработка даже первого варианта: shiftout в случае параллельной загрузки не меняется. а по логике работы устройства вполне может быть что и должен сбрасываться.