[an error occurred while processing this directive]
|
CALCULATION : process (RST, CLK, CALK_s, CALK_RD, CALK_WR, CALK_end,RESULT_ONEi, RESULT_ONEp, RESULTi, RESULTp,CMPRi, CMPRp, STATE)
begin
if CLK='1' and CLK'event then
if RST='0' then
FIRSTi<=(others=>'0');
FIRSTp<=(others=>'0');
BURST256i<=(others=>'0');
LASTi<=(others=>'0');
BURST256p<=(others=>'0');
LASTp<=(others=>'0');
elsif CALK_s='1' then
FIRSTi<="0000000" & RESULT_ONEi;
elsif CALK_RD='1' then
BURST256i<=RESULTi(15 downto 8);
LASTi<=RESULTi(7 downto 0);
elsif CALK_WR='1' then
FIRSTp<="0000000" & RESULT_ONEp;
if CMPRi='1' then
FIRSTi<=SIZE;
BURST256i<=(others=>'0');
LASTi<=(others=>'0');
end if;
elsif CALK_WR_PAUS='1' then
BURST256p<=RESULTp(15 downto 8);
LASTp<=RESULTp(7 downto 0);
elsif CALK_end='1' then
if CMPRp='1' then
FIRSTp<=SIZE;
BURST256p<=(others=>'0');
LASTp<=(others=>'0');
end if;
end if;
---------------------------------------------------------------------
if STATE=LOGIC_RD or STATE=SDR_MINUS_BURST then
if BURST256i/=x"00" then
BURST256i<=BURST256i-'1';
else
LASTi<=x"00";
end if;
elsif STATE=WR_MINUS_BURST and FLAG_FISTp='0' then
if BURST256p/=x"00" then
BURST256p<=BURST256p-'1';
else
LASTp<=x"00";
end if;
end if;
end if;
end process;
Это самый медленный процесс во все блоке он производит рачетдлительностей последовательности пакетов
В первой части CALK_s, CALK_RD, CALK_WR, CALK_WR_PAUS, CALK_end это последовательные синхронные тригера
CMPRi и CMPRp это схемы сравнения
RESULT_ONEi, RESULTi и RESULT_ONEp, RESULTp - это асинхронные суматоры
E-mail: info@telesys.ru