|
Как на одной PCI-плате разместить 2 разных PCI-устройства ?, вопрос ... |
|
|
|
 |
Ответов
|
Jul 16 2008, 10:32
|

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

|
Спасибо всем за ответы. Устройство будет серийное, поэтому нельзя отступать от стандартов, иначе замучают потребители ... Но и мост, как отдельный корпус, ставить не хочется. Склоняюсь к мысли, что вместо 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 байт). Так что с логикой тут всё в порядке. Другое дело, что с точки зрения нагрузки по току и целостности сигналов нельзя подключать два корпуса параллельно на шину, а вот если засунуть восемь устройств в один корпус - то пожалуйста.
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Jul 16 2008, 12:09
|

Частый гость
 
Группа: Участник
Сообщений: 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
--------------------
Зачем все делать просто, когда все можно усложнить?
|
|
|
|
|
Jul 16 2008, 13:09
|

Знающий
   
Группа: Свой
Сообщений: 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, и в конфиг-циклах они будут отзываться по очереди, а не одновременно.
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|