Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: bidirectional I/O
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
qwqw
на промежуточном этапе понадобилось внутри Spartan'a соединить 2 ноги, обе двунаправленные,
тоесть имитировать обычный проводник на ПП
Возможно ли это в принципе?
andrew_b
Цитата(qwqw @ Apr 6 2006, 13:21) *
напромежуточном этапе понадобилось внутри Spartan'a соединить 2 ноги, обедвунаправленные,
тоесть имитировать обычный проводник на ПП
Возможно ли это в принципе?

В принципе, возможно, если управлять направлением. Делается натристабильных буферах, если они есть внутри FPGA, а не только в IOB'ах.
qwqw
не совсем понял, как управлять переключением.
Задача полностью имитировать внешний проводник,
сигналы на обоих его концах двунаправленные, с третим состоянием (сигналы PCI)
DS
Это сделать невозможно, т.к. пин подключен внутри сразу к обслуживающей схеме, коммутация возможна только после нее. Соответственно, направление передачи данных можно менять только дополнительными управляющими сигналами.
oval
Цитата(qwqw @ Apr 6 2006, 14:21) *
на промежуточном этапе понадобилось внутри Spartan'a соединить 2 ноги, обе двунаправленные,
тоесть имитировать обычный проводник на ПП
Возможно ли это в принципе?

В принципе возможно, если в Вашем семействе Spartan'а имеются внутренние линии с тремя состояниями. Возможно придется организовать еще один более высокий уровень иерархии проекта, чтобы там и организовать эту самую двунаправленную связь. Также некоторые средства синтеза по умолчанию преобразуют локальные (внутренние) двунаправленные шины в обычные однонаправленные. Чтобы в действительности получить внутреннюю двунаправленную шину (сигнал), возможно потребуется задать некоторые специфические атрибуты синтезатора. Кроме того, обычно внутренние шины кристалла "подтянуты" к питанию или земле.
vladec
В принципе невозможно переключать сигнал по значению самого сигнала. Вне зависимости от наличия тристабильных буферов внутри кристалла.
Iouri
и да и нет. описать в хдл файле нет проблем, сдругой сторы как это
имплиментируется зависит от фпга и компалера. если это только для
модели то вперед, если для реального железа то советую подумать
удачи
beg
Делал внутренние двунаправленные шины на Virtex, без проблем.
oval
Цитата(beg @ Apr 7 2006, 19:35) *
Делал внутренние двунаправленные шины на Virtex, без проблем.

Аналогично, на VirtexII, тоже без проблем wink.gif
Gate
Цитата(oval @ Apr 7 2006, 19:44) *
Цитата(beg @ Apr 7 2006, 19:35) *

Делал внутренние двунаправленные шины на Virtex, без проблем.

Аналогично, на VirtexII, тоже без проблем wink.gif

Без управляющего сигнала, задающего направление передачи? Задача ведь стоит "полностью имитировать внешний проводник".
По-моему, часть авторов прочитала цитату, которая в кавычках, а часть авторов ее пропустила. Или у виртекса действительно такие чудесные буфера на пинах?
beg
Цитата(Gate @ Apr 7 2006, 21:59) *
Без управляющего сигнала, задающего направление передачи? Задача ведь стоит "полностью имитировать внешний проводник".
По-моему, часть авторов прочитала цитату, которая в кавычках, а часть авторов ее пропустила. Или у виртекса действительно такие чудесные буфера на пинах?

Само собой, делал с управлением. А задача "полностью имитировать внешний проводник" здесь, очевидно возникла из - за нежелания терять 1-2 такта на переключение направления. Думаю, что для сигналов типа t/s и s/t/s без этого не обйтись, разве что провод припаять. Для сигналов типа o/d можно попытаться использовать буферы IOBUF. На входы T буферов перекрестно подать инверсии выходов O, входы I - на gnd. Потребуются подтягивающие резисторы. Встроенные pull-ups имеют десятки килоом, поэтому с ними тактов можно потерять гораздо больше.
oval
Цитата(Gate @ Apr 7 2006, 21:59) *
Цитата(oval @ Apr 7 2006, 19:44) *

Цитата(beg @ Apr 7 2006, 19:35) *

Делал внутренние двунаправленные шины на Virtex, без проблем.

Аналогично, на VirtexII, тоже без проблем wink.gif

Без управляющего сигнала, задающего направление передачи? Задача ведь стоит "полностью имитировать внешний проводник".
По-моему, часть авторов прочитала цитату, которая в кавычках, а часть авторов ее пропустила. Или у виртекса действительно такие чудесные буфера на пинах?


Я уже чего-то совсем ничего не понимаю sad.gif

Берете два блока, каждый из которых имеет по порту типа inout, соединяете эти порты сигналом, получаете двунаправленную шину. Все управление третьим состоянием заключено внутри блоков. Другой вариант, если буферы двунаправленных сигналов внешние по отношению к блокам (или единому блоку): создаем отдельную архитектуру верхнего уровня, в ней сохраняем все технологические буферы, кроме тех двунаправленных буферов, которые относятся к эмулируемому проводнику. Вместо них HDL текстом описываем двунаправленную локальную шину, то есть организуем два буфера с тремя состояниями: один для сигналов (AIn, AOut, AEn), второй для сигналов (BIn, BOut, BEn).

Вообщем, логически повторить поведение проводника, проблемы не вижу smile.gif
Gate
Oval,
думаю, что Вы ошибаетесь. Двунаправленный буфер в fpga - это входной буфер объединенный с выходным (с z-состоянием). Этим вых. буфером надо управлять.
Еще синтезатор очень часто внутренние шины с z превращает в мультиплексор. Хотя, насколько я помню, у какого-то виртекса были внутренние буфера с z, но вроде в последующих сериях от них отказались, т.к. они очень медленные. Знающие xilinx да поправят меня.
makc
Цитата(Gate @ Apr 8 2006, 15:06) *
Oval,
думаю, что Вы ошибаетесь. Двунаправленный буфер в fpga - это входной буфер объединенный с выходным (с z-состоянием). Этим вых. буфером надо управлять.
Еще синтезатор очень часто внутренние шины с z превращает в мультиплексор. Хотя, насколько я помню, у какого-то виртекса были внутренние буфера с z, но вроде в последующих сериях от них отказались, т.к. они очень медленные. Знающие xilinx да поправят меня.


Еще BUFT были у Spartan-2. А вот у Spartan-3 их нет... Для него синтезатор, действительно, делает мультиплексоры.
oval
Цитата(Gate @ Apr 8 2006, 15:06) *
Oval,
думаю, что Вы ошибаетесь. Двунаправленный буфер в fpga - это входной буфер объединенный с выходным (с z-состоянием). Этим вых. буфером надо управлять.

Думаю, вряд-ли я ошибаюсь. smile.gif Из чего состоят двунаправленные буфера, я знаю и понимаю. Надо управлять, не вопрос, будем управлять, как я описал выше. smile.gif

Цитата
Еще синтезатор очень часто внутренние шины с z превращает в мультиплексор.

Да, совершенно верно. Но этим процессом зачастую можно управлять с помощью специальных атрибутов синтеза.

Цитата
Хотя, насколько я помню, у какого-то виртекса были внутренние буфера с z, но вроде в последующих сериях от них отказались, т.к. они очень медленные. Знающие xilinx да поправят меня.

Да, не во всех семействах FPGA Xilinx есть возможность организовать внутренние шины с тримя состояниями.

Так вот, логическое НОРМАЛЬНОЕ поведение структуры IOB и внешнего проводника можно повторить, используя внутренние буфера с тримя состояниями. Естественно, электрические проблемы (платы, соединения и т. п.) повторить таким образом не удасться. Например, можно с эмулировать логическое соединение PCI мастера(ов) и PCI слэйва(ов) внутри FPGA, то есть создать виртуальную PCI шину. Подчеркиваю, что речь идет об эмуляции логики работы шины PCI.

P.S. Как я понял автора темы, у него стояла некоторая подобная задача. Возможно, для отладки.
vladec
Здесь мне видится дело не в тонкостях синтеза, а в схемотехнике. Попробуйте просто нарисовать схему, а потом посмотрите, сможет ли она работать и тогда вы увидите проблемы с сигналами управления.
Very_hard
Не представляю себе возможность организации такой шины без дополнительных сигналов управления направлением передачи. Пин надо либо драйвить либо читать. Кто то (управляющий сигнал) должен сделать выбор smile.gif
vladec
Совершенно верно
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.