Jump to content

    

Recommended Posts

Всем привет! Появилась задача поднять PCIe на FPGA (на руках плата с Cyclone 4 GX). Сложности возникают абсолютно на всех стадиях. Сгенерировать Hard IP согласно документации Intel вроде и получается, однако даже со сборкой проекта огромное количество проблем, так как из-за не понимая интерфейса IP ядра не понятно что с чем соединять (очевидно что за информацией нужно идти в альтеровскую документацию на IP ядро, но из-за недостатка опыта не получается вытащить от туда необходимую информацию). Также сложность заключается в том, что почти все проекты в свободном доступе для Xilinx. Буду рад любой помощи от более опытных разработчиков: проекты, ссылки, описания и т д. 

Share this post


Link to post
Share on other sites

Судя по всему интел наглухо потер все reference design в инете.

Попробуйте стащить у terasic https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=745&PartNo=4#contents . Я глянул, там есть пример pcie. Все равно они на базе альтеровских примерах делают

 

Удачи, свой первый pcie я подымал около 4 мес не в зуб ногой )

Edited by new123

Share this post


Link to post
Share on other sites

Проще всего для начала поднять в Platform Designer, создав что то на базе Nios2. Там просто несколько полосочек соединить и оно поедет. Раньше всё время, да и сейчас, делаю на низкоуровневых интерфейсах, и там очень много мелочей, которые надо учесть. Я прекрасно понимаю какой ужас сейчас испытывает автор темы. Но пол года назад попробовал PCI-E вместе с Nios2 - а что, работает тоже!

 

Сейчас напугаю, в Platform Designer с PCI-E ядром некоторых версий, некоторых ПЛИС и прочих комбинаций, возникают ошибки и глюки. Как будете встречать их - ищите в поисковиках, я там находил ответы. Будьте готовы скачать другую версию Quartus Prime чтобы убежать от багов...

Share this post


Link to post
Share on other sites
16 hours ago, Ilya_Msk99 said:

поднять PCIe на FPGA (на руках плата с Cyclone 4 GX)

А попробуйте поискать реф дизайн на Cyclone V GX/GT.
Поскольку и там, и там hard IP, подозреваю, будет много общего. А разобраться что с чем соединять в готовом ref проекте на  Cyclone V GT проще простого. 

Ну и мануал на него нормально читается (правда - пару сотен страниц, но можно читать не всё) - если до того с PCIe не сталкивались.

Вот этот user guide м.б. стоит полистать https://www.intel.co.jp/content/dam/altera-www/global/ja_JP/pdfs/literature/ug/ug_c5_pcie.pdf

Share this post


Link to post
Share on other sites
14 часов назад, new123 сказал:

Судя по всему интел наглухо потер все reference design в инете.

Попробуйте стащить у terasic https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=745&PartNo=4#contents . Я глянул, там есть пример pcie. Все равно они на базе альтеровских примерах делают

 

Удачи, свой первый pcie я подымал около 4 мес не в зуб ногой )

 

Да, я уже качал архив с этого сайта и там вроде есть пример проекта. Только через стандартную версию Quarus проект платформ дизайнера не открывается, необходимо скачать про версию. Попробую скачать

12 часов назад, AVR сказал:

Проще всего для начала поднять в Platform Designer, создав что то на базе Nios2. Там просто несколько полосочек соединить и оно поедет. Раньше всё время, да и сейчас, делаю на низкоуровневых интерфейсах, и там очень много мелочей, которые надо учесть. Я прекрасно понимаю какой ужас сейчас испытывает автор темы. Но пол года назад попробовал PCI-E вместе с Nios2 - а что, работает тоже!

 

Сейчас напугаю, в Platform Designer с PCI-E ядром некоторых версий, некоторых ПЛИС и прочих комбинаций, возникают ошибки и глюки. Как будете встречать их - ищите в поисковиках, я там находил ответы. Будьте готовы скачать другую версию Quartus Prime чтобы убежать от багов...

Спасибо! Кажется хорошая идея, стоит попробовать.

Share this post


Link to post
Share on other sites
36 minutes ago, Ilya_Msk99 said:

Только через стандартную версию Quarus проект платформ дизайнера не открывается, необходимо скачать про версию

не уверен что прошка поддерживает CIV. Где то наверное ошибка

Share this post


Link to post
Share on other sites
1 час назад, Yuri124 сказал:

А попробуйте поискать реф дизайн на Cyclone V GX/GT.
Поскольку и там, и там hard IP, подозреваю, будет много общего. А разобраться что с чем соединять в готовом ref проекте на  Cyclone V GT проще простого. 

Ну и мануал на него нормально читается (правда - пару сотен страниц, но можно читать не всё) - если до того с PCIe не сталкивались.

Вот этот user guide м.б. стоит полистать https://www.intel.co.jp/content/dam/altera-www/global/ja_JP/pdfs/literature/ug/ug_c5_pcie.pdf

За несколько дней не нашел ни одного подходящего дизайна для моего проекта. Искал как для 4, так и 5 циклона (в том числе и на сайте https://fpgacloud.intel.com/devstore/platform/?page=1&acds_version=any&family=cyclone-v). В основном проблема в том, что у Интел все ссылки не рабочие, а остальные проекты для корневого порта и к тому же нагружены уж очень слишком и точно не подходят для начала. А по поводу документации это конечно правильный совет, но после того как я сгенерил IP ядро я получил 50+ пинов и конечно, если другие способы не сработают останется только читать в документации каждый пин в отдельности, пытаться что-то с коммутировать и надеяться что все заработает.

2 минуты назад, new123 сказал:

не уверен что прошка поддерживает CIV. Где то наверное ошибка

Насколько я знаю не поддерживает. Но платформ дизайнер совершенно точно требует про версию. Ничего не остается - только пробовать

Share this post


Link to post
Share on other sites

Вот тут кое-что еще есть https://community.intel.com/t5/FPGA-Wiki/PCI-Express-in-Qsys-Example-Designs/ta-p/735762

Попробуйте посмотреть не на Цыклоны, а на более старшие их товарищи - Стратиксы.

В QSYS думаю, проекты очень похожие (аналогичные), только надо будет изменить целевую микросхему.

К примеру, на Cyclone V когда генерировал - вываливалась туча ворнингов, явно относящихся к Stratix V. Отсюда вывод - изначально проект делался для этого чипа, а потом сделали кучу клонов под более младшие модели FPGA, не вылизывая их. Но - рабочее.

И  - как-то пробовал перекомпилировать проект с Cyclone V на Arria V( т.к. вторая - более быстрая, а при попытке генерировать на Cyclone Vто, что нужно было, не сходилась времянка) - сходу получилось, без всяких изменений.

Share this post


Link to post
Share on other sites
46 minutes ago, Ilya_Msk99 said:

Но платформ дизайнер совершенно точно требует про версию

открыл я этот проект, даже с ходу не нашел qsys. Ни в pro, ни в standart. Стал разбираться, а там все руками собрано, на базе корки PCI Express Compiler

 

46 minutes ago, Ilya_Msk99 said:

получил 50+ пинов и конечно

Все сводится в проекте этом (как и вашем будущем) к подключению около десяти сигналов. (хотя в самом топе да, там полный ужас около 30)

module top_example_chaining_top (
    // inputs:
    local_rstn_ext,
    pcie_rstn,
    reconfig_clk,
    refclk,
    rx_in0,
    rx_in1,
    rx_in2,
    rx_in3,
    usr_sw,

    // outputs:
    L0_led,
    alive_led,
    comp_led,
    lane_active_led,
    tx_out0,
    tx_out1,
    tx_out2,
    tx_out3
)
 

юзер_резет, резет_pcie_пина, клок_реконфигурации, реф_клок_с_разъема, трансиверы_rx
куча_статусных_ледов, трансиверы_tx

вдобавок от куда то нужно будет забрать клок из корки для вашей user_logic + скорее всего подключить тестовый (test_in)

 

я так понял, CIVGX потянет еще и dma движок (и в проекте он есть вроде), это уже следующая задача

Edited by new123

Share this post


Link to post
Share on other sites
17 минут назад, new123 сказал:

Все сводится в проекте этом (как и вашем будущем) к подключению около десяти сигналов. (хотя в самом топе да, там полный ужас около 30)


module top_example_chaining_top (
    // inputs:
    local_rstn_ext,
    pcie_rstn,
    reconfig_clk,
    refclk,
    rx_in0,
    rx_in1,
    rx_in2,
    rx_in3,
    usr_sw,

    // outputs:
    L0_led,
    alive_led,
    comp_led,
    lane_active_led,
    tx_out0,
    tx_out1,
    tx_out2,
    tx_out3
)
 

юзер_резет, резет_pcie_пина, клок_реконфигурации, реф_клок_с_разъема, трансиверы_rx
куча_статусных_ледов, трансиверы_tx

вдобавок от куда то нужно будет забрать клок из корки для вашей user_logic + скорее всего подключить тестовый (test_in)

 

я так понял, CIVGX потянет еще и dma движок (и в проекте он есть вроде), это уже следующая задача

У меня есть этот проект, там используется старая версия IP ядра. Те пины, что Вы привели - с ними все ясно, это то что идет напрямую с разъема PCIe. Но в этом проекте кроме этих нескольких пинов на сгенеренное ядро больше ничего не заводится и все остальные пины этого ядра болтаются в воздухе. В этом вся проблема

20 минут назад, new123 сказал:

открыл я этот проект, даже с ходу не нашел qsys. Ни в pro, ни в standart. Стал разбираться, а там все руками собрано, на базе корки PCI Express Compiler

Проект платформ дизайнера для про версии это я нашел в подобном архиве для циклона 10, тоже на сайте терасика

Share this post


Link to post
Share on other sites
17 minutes ago, Ilya_Msk99 said:

и это я нашел в подобном архиве для циклона 10

с этого и надо было начинать )) Все десятки идут под pro версию. Я думаю надо начать с теоретической части и мануала. Я не стал поправлять выше Юрия, но под слабые чипы, которые только только начинали поддерживать PCIE не идут современные корки, которые упомянул Юрий и вы. Вроде как подходит только PCI Express Compiler. Но это не точно. Пока что лень мануал читать, читал про это года 4 назад

 

Я вам кстати дал пример именно по CIVGX

Edited by new123

Share this post


Link to post
Share on other sites
17 minutes ago, new123 said:

Я не стал поправлять выше Юрия, но под слабые чипы, которые только только начинали поддерживать PCIE не идут современные корки, которые упомянул Юрий

так судя по названиям тех архивов, что я дал ссылку - там под Quartus 13-14 собиралось, откуда там современное могло взяться :)

Под Cyclone V точно было рабочее всё (что-то не очень масштабировалось из-за слабого быстродействия этого чипа, но работало даже со слаками).

Я, возможно, не понял ТС - подумал, что у него неясности по соединениям в QSYS блочков, из которых образовано ядро...

 

Edited by Yuri124

Share this post


Link to post
Share on other sites
14 минут назад, new123 сказал:

с этого и надо было начинать )) Все десятки идут под pro версию. Я думаю надо начать с теоретической части и мануала. Я не стал поправлять выше Юрия, но под слабые чипы, которые только только начинали поддерживать PCIE не идут современные корки, которые упомянул Юрий и вы. Вроде как подходит только PCI Express Compiler. Но это не точно. Пока что лень мануал читать, читал про это года 4 назад

 

Я вам кстати дал пример именно по CIVGX

 

Я уже скачивал ранее архив по той ссылке что Вы приводили для циклона 4, но там нет проекта для PCIe 

Share this post


Link to post
Share on other sites
5 hours ago, Yuri124 said:

Под Cyclone V точно было рабочее всё

а с них начиная и пошло hard ip v-series и потом они же перекочевали плавно на все десятые серии, за исключением, что под stratix 10 сделали дополнительную корку на 256Mhz gen3 x16. Я с ней  провозился месяц, официально исправил два бага, после чего бросил это дело и вернулся на 256Mhz gen3 x8 стандартную обкатанную корку

5 hours ago, Ilya_Msk99 said:

Я уже скачивал ранее архив по той ссылке что Вы приводили для циклона 4, но там нет проекта для PCIe 

ну как же нет, я прежде чем скинуть ссылку, скачал все проверил. И код с ней здесь приложил

Edited by new123

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this