Я же говорил, что некоторым будет не очевидно. Но давай разберем. Условия задачи таковы: если W6_2 = 1 то триггер сбрасывается (запись 0), если синхронный триггер Str = 1, то устанавливаться. Всего возможно 4 комбинации:
Код:
Str W6_2 Sgt
 0    0  Хранение
 0    1  0
 1    0  1
 1    1  Неопределенное состояние
Тут есть нюанс: четвертое состояние никогда не произойдет потому, что синхронный триггер срабатывает после деактивации W6_2. К тому же, у W6_2 есть приоритет: элемент AND стоит ближе к триггеру. Т.е., если использовать логическую функцию, то мы получаем инверсия W6_2 должна AND'иться с функцией Str OR Sgt. Или ~W6_2 & (Srt | Sgt); С другой стороны, если использовать if блок, то будем иметь каскад из двух условий, причем дефолт значение можно не писать, синтезатор сам настроит его на хранение.

И да, второй пример не совсем функционально аналогичен первому в виду того, что первый if блок имеет приоритет. Т.е., их следует поменять местами:
Код:
if (W6_2) Sgt <= 1'b0;
   else if (Srt) Sgt <= 1'b1;
Вот тут я согласен, спасибо что поправил. Однако в рамках нашей модели будут работать оба варианта, ибо синхронный триггер имеет лог.1 только 1 такт, сразу за деактивацией W6_2, что является результатом цикла записи ядра 6502 на частоте ~1,7МГц и он не успеет сформировать второй, т.к. ядро PPU работает на частоте ~5,2МГц.

PS Я не буду поправлять исходный вариант, чтобы данные сообщения имели смысл.