[an error occurred while processing this directive]
|
Имеем такую конструкцию:
.....................
signal rgt:STD_LOGIC_VECTOR(15 downto 0);
signal count:unsigned(3 downto 0);
...........................
if clk'event and clk='1' then
if st='1' then
case conv_integer(count) is
when 8=>sino<=odd;
pr:='0';
when 9=>sino<='1';
when 10=>sino<='1';
st<='0';
t<=t xor '1';
when others=>rgt<='1'&rgt(15 downto 1);
odd<=odd xor rgt(0);
sino<=rgt(0);
end case;
count<=count+1;
else
count<="0000";
end if;
end if;
Это фрагмент кода передатчика RS485. Все это реализуется в APEX20K (Quartus). Для моделирования использую Aldec Active HDL 5.1.
При функциональном моделировании все OK. Но при послесинтезном (временном моделировании) - ГЛЮК. Регистр RGT продолжает сдвиг и при значении счетчика COUNT 8,9,10. Как будто Altera не различает, что сдвиг делать только при значении счетчика 0..7 и ВСЕ.
Пока я обошел этот глюк. Но объясните, в чем собака порылась?
E-mail: info@telesys.ru