[an error occurred while processing this directive]
|
В данном случае следующий запрос появляется через два такта после снятия предыдущего. Уж не знаю, отформатируется ли.
CONSTANT WIDTH=8;
SUBDESIGN arb
(
clk,reset : INPUT;
ack[WIDTH-1..0] : OUTPUT;
req[WIDTH-1..0] : INPUT;
)
VARIABLE
ack[WIDTH-1..0] : DFF;
reqc[WIDTH..0] : NODE;
present : DFF;
BEGIN
ack[].clk=clk;
ack[].clrn=!reset;
present.clk=clk;
present.clrn=!reset;
present.d=ack[0].q#ack[1].q#ack[2].q#ack[3].q#ack[4].q#ack[5].q#ack[6].q#ack[7].q;
reqc[0]=present.q;
FOR I IN 0 TO WIDTH-1 GENERATE
ack[i].d=req[i]&!reqc[i];
reqc[i+1]=CARRY(reqc[i]#req[i]);
END GENERATE;
END;
Если же выкинуть present и посадить reqc[0] на землю, новый запрос будет появляться в момент снятия предыдущего, но будет вообще 8 элементов.
E-mail: info@telesys.ru