Перейти к содержанию
    

Как соединить два порта inout

Здравствуйте! Имеется два порта inout, которые должны быть просто соединены проводом , т.е. ПЛИС просто осуществляет транзит двунаправленной линии. как это примерно должно выглядеть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте! Имеется два порта inout, которые должны быть просто соединены проводом , т.е. ПЛИС просто осуществляет транзит двунаправленной линии. как это примерно должно выглядеть?

соединение внутри плис - между внутренними блоками?

или Вы подключаете внешнюю память (например)?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот есть у меня топ модуль:

 

module top(
                ..................
                inout PORT1,
                inout PORT2,
                ...................
);

 

Хотелось просто соеденить PORT1 и PORT2.

 

Собственно уже нашел в стандарте 2005 глава 7.6 Bidirectional pass switches использовал tran, синтезировалось правильно :biggrin:

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

рекомендую разнести - отдельно вход и отдельно выход. Проще поменять логику - мое мнение ...

Или делать шину на основе мультиплексоров, которая Вам будет коммутировать потоки/данные в разные стороны.

 

Просто внутри плис нет буферов с третьим состоянием, кроме как в виртексах2 и в IO логике

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..ПЛИС просто осуществляет транзит двунаправленной линии..

Maverick прав, нет у вас в плисе сейчас двунаправленных проводов. Гляньте как лапа устроена, там в общем случае, IN+OUT+DIRECTION_CONTROL. Чтобы нормально работать с двунаправленной шиной вам надо как то рулить этим самым DIRECTION_CONTROL.

 

Опишите задачу более детально, чтобы понять что вам именно нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Maverick прав, нет у вас в плисе сейчас двунаправленных проводов. Гляньте как лапа устроена, там в общем случае, IN+OUT+DIRECTION_CONTROL. Чтобы нормально работать с двунаправленной шиной вам надо как то рулить этим самым DIRECTION_CONTROL.

 

Опишите задачу более детально, чтобы понять что вам именно нужно.

 

Имеется у меня микросхема№1 и микросхема№2, обе имеют интерфейс I2C, между ними spartan3 , хотелось просто пробросить линию SDA через ПЛИС.

 

Да на самом деле синтезатор ругается :

 

Bidirectional pin pDSP_I2C_SDA_INOUT feeds another bidirectional pin. Register or buffer must be added between pins.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да на самом деле синтезатор ругается :

Вообще ругается правильно. Такая конструкция или вообще не будет работать, или будет это делать очень плохо. Особенно, если она будет асинхронная и не будет иметь приоритета.

А если на шинах будут помехи и при асинхронном режиме может получиться мультивибратор... :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще ругается правильно. Такая конструкция или вообще не будет работать, или будет это делать очень плохо. Особенно, если она будет асинхронная и не будет иметь приоритета.

А если на шинах будут помехи и при асинхронном режиме может получиться мультивибратор... :)

 

я то думал, что вообще дело плевое, обозвал порты соединил и все замечательно работает ... но не тут, то было ...

 

откуда собственно взять этот управляющий сигнал DIRECTION_CONTROL ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеется у меня микросхема№1 и микросхема№2, обе имеют интерфейс I2C, между ними spartan3 , хотелось просто пробросить линию SDA через ПЛИС.

откуда собственно взять этот управляющий сигнал DIRECTION_CONTROL ?

 

скорее всего Вам необходимо будет реализовать приемник и передатчик I2C, только не скажу мастер или слейв - разбираться нужно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я то думал, что вообще дело плевое, обозвал порты соединил и все замечательно работает ... но не тут, то было ...

 

откуда собственно взять этот управляющий сигнал DIRECTION_CONTROL ?

У меня на сайте, в записках инженера есть раздел - "Мультивибратор длиной в две стойки", это как раз этот случай...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на сайте, в записках инженера есть раздел - "Мультивибратор длиной в две стойки", это как раз этот случай...

прочитал... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему с1-55 волчий глаз? зеленый и маленький? Знаю конторку до сих пор таким пользуются, один из сотрудников спер в свое время и до сих пор гоняет, цифровой не приемлет.... А земля легенд - это где, Байконур?

 

 

По сути вопроса придется делать модуль, который будет следить за сигналами на входах и повторять их на выходе, с учетом протокола I2C. То есть когда мастер держит шину передавать на 2-ой выход что говорят на 1-ом, как только он ее отпускает, менять обратно и со 2-го выхода транслировать на 1-ый, как то так...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На самом деле, в данном случае не надо делать полноценный приемник I2C с разбором протокола. Зная то, что I2C шина имеет выходы с открытым стоком, можно на достаточно высокой частоте мониторить оба входа-выхода, и, когда обнаруживается перепад 1->0 на одном из них, при 1-це на втором, его оставлять в режиме ввода, второй переводить в вывод нуля, до тех пор, пока на первом ноль. Ну и наоборот, если на втором обнаружился 1->0 при единице на первом. Обойдется такая схема в несколько триггеров и LUT.

 

UPD:

Это если мастер снаружи. Если же мастер внутри ПЛИС - то входные линии надо объединить по И, а выходные подать на оба буфера одинаково. Если там мультимастер - и мастера бывают и там, и тут, то надо иметь и ту схему, и эту.

 

UPD2:

Кстати, SCL это все тоже касается, если мультимастер, то, вероятно, такие же схемы надо делать и для нее, если источником SCL могут быть разные стороны.

 

UPD3:

Докучи, ноль на SCL может slave удлинять, таким образом задерживая транзакцию. Однако, я пока таких slave не встречал. Но...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

UPD3:

Докучи, ноль на SCL может slave удлинять, таким образом задерживая транзакцию. Однако, я пока таких slave не встречал. Но...

 

Я встречал, сабако. Существуют. При этом не все мастерА сегодня это терпят. Если не большинство....

 

http://electronix.ru/forum/index.php?showtopic=115710

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По сути вопроса придется делать модуль, который будет следить за сигналами на входах и повторять их на выходе, с учетом протокола I2C. То есть когда мастер держит шину передавать на 2-ой выход что говорят на 1-ом, как только он ее отпускает, менять обратно и со 2-го выхода транслировать на 1-ый, как то так...

 

Стандартный расширитель интерфейса может быть сделан двумя вариантами:

1. По зоне адресов. Если адреса "за мостом", то мост переключается, если "до моста", то нет.

2. По ответному сигналу от ведомого. Адреса транслируются "за мост" и если там формируется сигнал выбора адреса, то мост переключается и передает мастеру данные и чтобы компенсировать переключение с некоторой задержкой передает мастеру сигнал выбора адреса.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...