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

Соединить две FPGA платы по PCIE

8 hours ago, novartis said:

Да, все получилось. Соединил плату Стратикс 5 и плату сетевой карты через рейзер x8. 

Root Complex завёлся. Прочитал root config space. Прочитал endpoint config space.

Cпасибо, а какой "рейзер" Вы в итоге купили?

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


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

10 hours ago, novartis said:

Root Complex завёлся. Прочитал root config space. Прочитал endpoint config space.

Касательно клока - это интересная инфа. Кстати, упоминаемая материнская плата - это Terasic TR5, или что-то иное? Чем организуете вышеозначенные обращения - NIOS'ом? Какие дальнейшие планы?

У нас установка малость крупнее будет. В качестве хоста выступает Xilinx VCU118 , через FMC дочернюю плату HTG-FMC-PCIE-RC (содержит генератор клоков на борту) подключается riser'овский PCIe switch (типа такого), а уже к нему - платы конечных устройств (USB, SATA, graphics controller etc). Карты подключаются через конструктор, составленный из вариантов подобного.

Успешно наладили работу в Линуксе с

  • USB controller (клава и мышь)
  • Ethernet card (network)
  • SATA controller (HDD) - правда, здесь работа пока недостаточно стабильна - передача зависает через 2...24 часа

До сих пор не работает

  • NVMe card (SSD M.2 carrier) - совсем не видится из-за плохого качества сигнала (весьма поганой глазковой диаграммы)
  • graphics card - на определенном раннем этапе был некоторый успех с графической картой, но потом мы ее неудачно включили и загубили, после чего углубились в другие проблемы и пока не возвращались к этому вопросу

В фоновом режиме исследуем/поднимаем дальше. Если у кого-то есть аналогичный опыт, было бы интересно обменяться информацией.

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


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

4 hours ago, Джеймс said:

Cпасибо, а какой "рейзер" Вы в итоге купили?

года два назад на алиэкспресс покупал, самые обычные.

2 hours ago, Raven said:

Кстати, упоминаемая материнская плата - это Terasic TR5, или что-то иное?

В один рейзер x16 вставлена плата с FPGA, в другой рейзер x16 вставлена сетевая карта. Эти два рейзера соединены между собой usb кабелем.

К одному из этих рейзеров припаял витую пару к pcie refclk, другой конец витой пары припаял к рейзеру x1 - этот рейзер x1 вставляю в материнскую плату компа, от него и беру опорный клок для pcie.

Ниоса нет. Сначала простую стейт машину набросал, потом реализовал простенький логический блок, который берет команды из памяти (чтобы команды мог без перепрошивки менять).

Вместо сетевой карты цеплял NVME SSD диск, прочитал endpoint config space, запустил nvme контроллер (CC.EN = 1), посмотрел, что взводится ответный сигнал CSTS.RDY. Пока на этом остановился.

index.thumb.jpg.bb21fb445718c4be752cc8804aab5e4d.jpg

2 hours ago, Raven said:

подключается riser'овский PCIe switch (типа такого)

Мне думается, что этот PCIe switch все у вас и портит.

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


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

7 hours ago, novartis said:

В один рейзер x16 вставлена плата с FPGA, в другой рейзер x16 вставлена сетевая карта. Эти два рейзера соединены между собой usb кабелем.

К одному из этих рейзеров припаял витую пару к pcie refclk, другой конец витой пары припаял к рейзеру x1 - этот рейзер x1 вставляю в материнскую плату компа, от него и беру опорный клок для pcie.

Ниоса нет. Сначала простую стейт машину набросал, потом реализовал простенький логический блок, который берет команды из памяти (чтобы команды мог без перепрошивки менять).

Т.е., PC у вас только как подручный генератор PCIe clock'а? А то я уж подумал по фото, что он полностью в деле.

Quote

Мне думается, что этот PCIe switch все у вас и портит.

Ну, он естественным образом попадает под подозрение, конечно. Но не все так просто. Дело в том, что: 1) с другими картами неплохо работает (хотя и небезупречно); 2) с упомянутым M.2 carrier плохую глазковую диаграмму показывает соединение напрямую FMC - M2_Carrier, т.е. без участия этого коммутатора. Т.е., скорее сам носитель M.2 не лучшим образом работает с райзерными кабелями. В общем, складывается ощущение, что не так уж эти коммутаторы и плохи (при своей смешной цене). Просто пока мы не научились PCIe как следует готовить. Так что еще есть куда копать.

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


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

On 8/1/2020 at 6:52 AM, novartis said:

Да, все получилось. Соединил плату Стратикс 5 и плату сетевой карты через рейзер x8. Пробовал запитать в плис pcie корку от другой опорной тактовой частоты с платы, ничего не получалось (опорная частота должна быть с дедикейтед клок пин, должна находиться в том же регионе, что и пины линков и т.п.), поэтому в итоге припаял к райзеру витую пару (одна пара из обычного эзернет кабеля) и подал опорный клок с материнской платы.

Root Complex завёлся. Прочитал root config space. Прочитал endpoint config space.

А как Вы ROOT программировали? У меня ROOT AvSt на Cyclone10 . Link поднимается, делаю запрос конфигурации (TLP), а корка не отвечает..

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


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

On 2/11/2021 at 3:04 PM, tolik1 said:

А как Вы ROOT программировали? У меня ROOT AvSt на Cyclone10 . Link поднимается, делаю запрос конфигурации (TLP), а корка не отвечает..

Нужно сделать:
1). запись в регистр root_conf_space флагов Memory Space Enable, Bus Master Enable (X"00000006")

TX TLP пакет: 00000006 00000004 0000000F 44000001

В ответ придет RX TLP пакет: 00000000 00000000 00000004 0A000000

2). запись в регистр root_conf_space номера шины Endpoint устройства (X"00" & PCIE_SECONDARY_BUS_NUM & PCIE_SECONDARY_BUS_NUM & X"00")

TX TLP пакет: 

00000000 00000018 0000010F 44000001
00000000 00000000 00000000 00010100

В ответ придет RX TLP пакет: 00000000 00000100 00000004 0A000000

3). Можно читать регистры root_conf_space

Запрос: 00000000 00000000 0000020F 04000001

Ответ:

00000000 00000200 00000004 4A000001
00000000 00000000 00000000 00014987

 

 

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


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

On 2/18/2021 at 9:24 AM, novartis said:

Нужно сделать:
1). запись в регистр root_conf_space флагов Memory Space Enable, Bus Master Enable (X"00000006")

TX TLP пакет: 00000006 00000004 0000000F 44000001

В ответ придет RX TLP пакет: 00000000 00000000 00000004 0A000000

2). запись в регистр root_conf_space номера шины Endpoint устройства (X"00" & PCIE_SECONDARY_BUS_NUM & PCIE_SECONDARY_BUS_NUM & X"00")

TX TLP пакет: 


00000000 00000018 0000010F 44000001
00000000 00000000 00000000 00010100

В ответ придет RX TLP пакет: 00000000 00000100 00000004 0A000000

3). Можно читать регистры root_conf_space

Запрос: 00000000 00000000 0000020F 04000001

Ответ:


00000000 00000200 00000004 4A000001
00000000 00000000 00000000 00014987

 

 

Спасибо огромное! Процесс пошел!

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


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

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

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

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

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

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

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

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

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

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