реклама на сайте
подробности

 
 
> Как на одной PCI-плате разместить 2 разных PCI-устройства ?, вопрос ...
Demeny
сообщение Jul 15 2008, 09:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Возможно ли на одной печатной плате c краевым стандартным PCI-разъёмом разместить два разных PCI-устройства ? Одно устройство будет стандартным PCI-контроллером (например, Ethernet-контроллер RTL8139 или аналогичный), второе устройство будет релизовано на FPGA.
Сам думаю и опыт подсказывает, что вроде как можно с точки зрения логики работы шины, Bus/Device/Function, оба устройства будут иметь одинаковые Bus/Device, и устройство на FPGA будет "откликаться" на свой номер функции в конфигурационных циклах...
Сомнения есть в части схемотехнической. Ограничен ли, например, потребляемый ток от одного разъёма на мат. плате ? Как разводить проводники от шины - просто параллельно ? Нет ли здесь ещё подводных камней ?


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Demeny
сообщение Jul 16 2008, 10:32
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Спасибо всем за ответы.
Устройство будет серийное, поэтому нельзя отступать от стандартов, иначе замучают потребители ... twak.gif
Но и мост, как отдельный корпус, ставить не хочется.
Склоняюсь к мысли, что вместо PCI-PCI моста в FPGA уж лучше засунуть оба устройства - одно там и так предполагалось по определению, а второе (которое стандартное) - придётся реализовать на базе каких-нибудь Cores, это будет либо Ethernet, либо USB Host.
Есть ещё вариант - поискать чипы USB Host Controller без PCI-интерфейса (кстати, может кто навскидку знает такие ?), и его регистры тогда просто маппировать в регистры BAR. Тогда с точки зрения PCI устройство у нас будет одно, просто часть BAR-регистров будет относиться к UHCI. Ведь состав UHCI регистров стандартен и "немногословен".
Цитата(I.S.A. @ Jul 16 2008, 14:21) *
Для подключения двух устройств - надо два IDSEL, а на разъеме он, вроде бы, один. Отсюда вывод - мост, либо на ПЛИС, либо обтдельно.

Не обязательно - есть ведь многофункциональные устройства. IDSEL формируется из Bus/Device, а с помощью Function выбирается устройство на самой плате, таким образом, на плату приходит один IDSEL, а устройств на плате может быть до 8 - и каждое устройство имеет своё конфиг-пространство (по 256 байт). Так что с логикой тут всё в порядке.
Другое дело, что с точки зрения нагрузки по току и целостности сигналов нельзя подключать два корпуса параллельно на шину, а вот если засунуть восемь устройств в один корпус - то пожалуйста.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
I.S.A.
сообщение Jul 16 2008, 12:09
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 6-08-07
Из: Москва
Пользователь №: 29 583



Цитата(Demeny @ Jul 16 2008, 14:32) *
...
Не обязательно - есть ведь многофункциональные устройства. IDSEL формируется из Bus/Device, а с помощью Function выбирается устройство на самой плате, таким образом, на плату приходит один IDSEL, а устройств на плате может быть до 8 - и каждое устройство имеет своё конфиг-пространство (по 256 байт). Так что с логикой тут всё в порядке.
...


Я чего-то не понимаю или...

Device-ов уже будет два и они оба в конфигурационном цикле будут отзываться на шине, что приведет к колизии шины и раскоряке платы. БИОС, на сколько я знаю, сканит все девайсы именно в конфиг циклах.

Другое дело, если вы ваш второй Ethernet запихнете в виде IP-core, или как там, в ПЛИС за одним и тем же PCI контроллером, тогда Device будет один. В МФУ - контроллер PCI один, а устройств несколько. БИОС найдет одного вендора и один дефайс, а так - два фиг знает чего на одном адресе.

Сообщение отредактировал I.S.A. - Jul 16 2008, 12:10


--------------------
Зачем все делать просто, когда все можно усложнить?
Go to the top of the page
 
+Quote Post
Demeny
сообщение Jul 16 2008, 13:09
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(I.S.A. @ Jul 16 2008, 16:09) *
Я чего-то не понимаю или...

Device-ов уже будет два и они оба в конфигурационном цикле будут отзываться на шине, что приведет к колизии шины и раскоряке платы. БИОС, на сколько я знаю, сканит все девайсы именно в конфиг циклах.

Устройство (в смысле вся PCI-плата) откликается на конфигурационный цикл, когда выставлен IDSEL в 1, при этом в фазе адреса приходит номер адресуемой функции (3 бита 8..10), и номер (смещение) запрашиваемого конфиг-регистра (8 бит 0..7). Устройство может оказаться многофункциональным (до 8 функций), при этом оно декодирует пришедший номер функции, каждая функция имеет своё конфиг-пространство и в принципе может иметь свои Vendor ID и Device ID.
BIOS сканирует все девайсы, перебирая всевозможные комбинации Bus/Device/Function, при этом материнская плата генерирует IDSEL, основываясь только на Bus/Device, а номер функции декодирует устройство само, если оно многофункциональное, или не декодирует вовсе, тогда перебирая функции мы увидим 8 одинаковых конфиг-пространств.
Исходя из этого ничто не мешает на одной плате разместить два совсем разных устройства со своими Vendor/Device, одно из них будет иметь географическую адресацию 0/12/0, другое 0/12/1, и в конфиг-циклах они будут отзываться по очереди, а не одновременно.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Demeny   Как на одной PCI-плате разместить 2 разных PCI-устройства ?   Jul 15 2008, 09:15
- - XVR   Цитата(Demeny @ Jul 15 2008, 13:15) Возмо...   Jul 15 2008, 10:34
|- - Demeny   Цитата(XVR @ Jul 15 2008, 14:34) Камни ес...   Jul 15 2008, 11:48
- - DpInRock   Плюнуть и попробовать. Нам ли бояться даташита на ...   Jul 15 2008, 12:33
|- - makc   Цитата(DpInRock @ Jul 15 2008, 16:33) Плю...   Jul 15 2008, 13:45
|- - Andrew Su   Цитата(makc @ Jul 15 2008, 16:45) Если хо...   Jul 15 2008, 19:12
- - DpInRock   По хорошему, стандарт PCI тут ни при делах. Главно...   Jul 15 2008, 16:24
|- - makc   Цитата(DpInRock @ Jul 15 2008, 20:24) По ...   Jul 15 2008, 19:49
- - DpInRock   Если два абсолютно независимых устройства - то без...   Jul 15 2008, 21:25
- - I.S.A.   Для подключения двух устройств - надо два IDSEL, а...   Jul 16 2008, 10:21
- - DpInRock   А как будет проходить запрос прямого доступа интер...   Jul 16 2008, 15:15
|- - makc   Цитата(DpInRock @ Jul 16 2008, 19:15) А к...   Jul 16 2008, 15:28
- - DpInRock   При том, что существует только одна линия запроса ...   Jul 16 2008, 16:29
|- - makc   Цитата(DpInRock @ Jul 16 2008, 20:29) При...   Jul 16 2008, 16:47
- - DpInRock   Не встречал никогда езернет контроллер - не мастер...   Jul 16 2008, 16:52
|- - makc   Цитата(DpInRock @ Jul 16 2008, 20:52) Не ...   Jul 16 2008, 17:05
- - Demeny   Тема нашла неожиданное развитие. Смотрел даташит...   Jul 24 2008, 12:43


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 15:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.0154 секунд с 7
ELECTRONIX ©2004-2016