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

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

Отправлено Dr.Alex 25 ноября 2004 г. 11:29
В ответ на: А может я просто неправильно понял по поводу логики после TFF. отправлено Oldring 24 ноября 2004 г. 19:01

Если вас так волнует чего там синтезируется (что сов. правильно при освоении HDL),
то можно и RTL-схему посмотреть, или её нет в вебпаке? В синплифае уж точно есть, и очень хорошая.
(Вы ведь про него что-то упомянали.)
Но использовать его для синтеза всё же не очень оправдано, XST приемлемые результаты даёт.
Ещё вам нужен модельсим, тестбенчи писать обязательно.
А флурпланер есть в вебпаке? В нём тоже можно глянуть, как легло.
А фпга-едитор.. ну.. не уверен что будет приятно искать в нем ответы на ваши вопросы..
В общем, всё что нужно - есть, обращайтесь если надо.

Теперь по вчерашнему.
С примитивами не советую связываться - уверен, что можно получить всё что вам нужно, описывая это на HDL
в человеческом стиле (наверно это вы и подразумеваете под behavioral).
А вот насчёт защёлкивания входов не согласен, или просто не понял. Можете их защёлкивать когда угодно
(даже когда сами выставляете данные, просто это нЕзачем).

Немножко об управлении тристабильными буферами и PCI.
Понятное дело, сигнал с Z определяется реально двумя сигналами, второй из которых - енейбл буфера.
Теперь рассмотрим конструкцию:


process begin
wait until clk'event .....
if что_то_там then stop <= 'Z';
end if;
end process;

Понятно, мы защёлкиваем '0' в триггер, управляющий енейблом, но что мы защёлкиваем в триггер самого сигнала?
Логично предположить, что его состояние не изменяется. Однако я нарвался на то, что оно может и меняться.
(Справедливости ради, сам никогда бы не додумался, что такое может быть.)
И это не обязательно глюк синтезатора - действительно, какая разница что там, если драйвер всё равно отключен.
Может, ему так удобнее (ну, логика так легла).
И нам, казалось бы, тоже всё равно, ан нет. Что если значение триггера сигнала меняется чуть скорее, чем триггера енейбла?
Тогда у нас будет глитч - перед тем, как вывод перейдёт в Z, он изменит своё состояние (на короткое время).
Опять же, а какое нам дело до глитча, ведь схемы-то синхронные?
Только не в этот раз.
В PCI, прежде чем сигнал (управляющий, а не шина ad) переходит в Z, он должен стать неактивным ('1') в предыдущем такте.
Зачем? А затем что если вы активизировали сигнал ('0'), а потом отключили драйвер, то он будет доползать до неактивного
состояния ('1') только за счёт пуллапа на мамке. А это долго. Работа шины нарушится.
В случае нашего глитча это и получается, неактивный сигнал кратковременно становится активным,
и сразу после этого драйвер отключается. Нельзя.
Поэтому в таких случаях нужно явно управлять обоими триггерами, как я уже писал.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


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

E-mail: info@telesys.ru