Да, интересно.
На модели Async не подтверждается, пробовал разные режимы снятия/установки RPLY.
На реальном процессоре 1801ВМ1А тоже не подтверждается:
RPLY синхронизирован по спаду CLC [http://i081.radikal.ru/1512/19/f11326642bb1t.jpg]
RPLY синхронизирован по фронту CLC [http://s019.radikal.ru/i628/1512/88/2fa4b312f4cat.jpg]
Диаграмма снималась на БК-0010, вспомнилось что там схема RPLY не на ТМ2 сделана, там 155ИР1 стоит на синхронизацию RPLY, надо достать ту плату и восстановить реальную схему.
Посмотрел уравнения:
Получается такое - DIN снимается по второму RPLY на фронте CLC, что наблюдается на диаграмме. Значит был активен din_done и qbus_done, qbus_flag очистился. oe_clr не активируется. А потом оно ждет снятия RPLY (комбинации ~rply_ack[0] & rply_ack[2]), тут видимо снятие RPLY на процессор не успело поступить через схему синхронизации, другого варианта для такой диаграммы я не вижу.Код:always @(*)
begin
if (~slk)
sync_out <= qbus_win_h;
if (slk)
qbus_win_h <= qbus_win;
end
always @(*)
begin
if (oe_clr)
qbus_win <= 1'b0;
else
if (dmr_req_l & qbus_gnt_l)
qbus_win <= 1'b1;
end
assign oe_clr = mj_res | (~rply_ack[0] & rply_ack[2] & ~qbus_flag);
assign qbus_done = (din_done & ~plrt[7]) | dout_done | mj_res;
assign din_done = din_out_l & rply_ack[3];
always @(*)
begin
if (qbus_done)
qbus_flag <= 1'b0;
else
if (sync_fedge)
qbus_flag <= 1'b1;
end
always @(*)
begin
if (~slk) rply_ack[0] <= (pin_rply_in & pin_bsy);
if ( slk) rply_ack[1] <= rply_ack[0];
if (~slk) rply_ack[2] <= rply_ack[1];
if ( slk) rply_ack[3] <= rply_ack[2];
end
Упдата: RPLY на диаграмме формировался РЕ-мулятором (уже и не вспомнить с какой версией циклограмм), точный момент плавает на 10-30нс, так что вариабельность вполне возможна.

