[an error occurred while processing this directive]
Проблемы с оператором CASE, точнее, что после синтеза
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Nick Kovalyov 12 января 2005 г. 16:22

Имеем такую конструкцию:
.....................
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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru