Jump to content
    

Модуль для TLP в PCI Express.

Я так понял уже у многих есть опыт работы с PCI Express 1.1.

Ядро Xilinx PCI Express Block Plus не берет на себе формирование пакета TLP.

 

Соответственно, думаю, кто-то уже проходил этот путь.

Подскажите какие есть еще варианты решения (1. - сделать самому, ориентируясь на пример Xilinx'a + ECRC)?

Edited by NiOS

Share this post


Link to post
Share on other sites

Реализовывал работу с PCI-E на плате от Xilinx. Кристалл был Spartan3, милионник.

 

Ядро, соотв. софтверное, генерил CoreGenerator-ом.

 

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

 

ECRC - не заморачивайся. Отметь что ты его не генеришь (в заголовке TLP есть такой бит), а при генерации ядра поставь что его передавать тебе не надо.

 

Сейчас делаем свою плату на Vitrex5 и там будем использоваться встроенное ядро. Пока платы нет, так что изучаю мат. часть.

Share this post


Link to post
Share on other sites

Сейчас делаем свою плату на Vitrex5 и там будем использоваться встроенное ядро. Пока платы нет, так что изучаю мат. часть.

Уже пробовали генерить дизайн (пример хотя бы)?

У Вас сходились тайминги для ядра? (В своих ответах Xilinx указывает на необходимость использования Multi PAR чтобы сошлись тайминги даже для Hard ядра в Virtex 5).

 

У меня не очень-то сходятся констрейны для их примера х8... (даже с учетом их рекомендаций)

 

А про ECRC - тоже решил не заморачиваться. Так уже и сделал (trim).

Share this post


Link to post
Share on other sites

Уже пробовали генерить дизайн (пример хотя бы)?

У Вас сходились тайминги для ядра? (В своих ответах Xilinx указывает на необходимость использования Multi PAR чтобы сошлись тайминги даже для Hard ядра в Virtex 5).

 

У меня не очень-то сходятся констрейны для их примера х8... (даже с учетом их рекомендаций)

 

Я взял проект, который делал для Spartan3 (x1), и перенес его целиком на Virtex5 (x4).

Соответственно заменил ядро и немного поправил интерфейс (там есть немного различий).

 

Проект развелся вполне замечательно.

Чтобы времянки получались адекватными - не забывайте прописывать в Constraints все то что прописано в примере (генерится вместе с ядром). Без этих спецификаций в спартане вообще ничего не запускалось (softIP) как раз из-за того что все времянки были просто гиганскими при дефолтной разводке.

 

У меня следующие прописано для Virtex5 (x4):

 

NET "sys_reset_n" LOC = "R5" | IOSTANDARD = LVCMOS25 | PULLUP | NODELAY ;

NET "sys_clk_p" LOC = "D4" ;

NET "sys_clk_n" LOC = "D3" ;

INST "refclk_ibuf" DIFF_TERM = "TRUE" ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/GTD[0].GT_i" LOC = GTP_DUAL_X0Y4;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/GTD[2].GT_i" LOC = GTP_DUAL_X0Y3;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_tx/generate_tdp2[1].ram_tdp2_inst" LOC =RAMB36_X1Y8 ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_rx/generate_tdp2[1].ram_tdp2_inst" LOC =RAMB36_X1Y7 ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_tx/generate_tdp2[0].ram_tdp2_inst" LOC =RAMB36_X1Y6 ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_rx/generate_tdp2[0].ram_tdp2_inst" LOC =RAMB36_X1Y5 ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_retry/generate_sdp.ram_sdp_inst" LOC =RAMB36_X1Y9 ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk_if/ll_bridge/tx_bridge/tx_bridge/shift_pipe1" LOC = "SLICE_X59Y36" ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk_if/ll_bridge/rx_bridge/arb_inst/completion_available" LOC = "SLICE_X58Y26" ;

INST "ep/BU2/U0/pcie_ep0/pcie_blk_if/cf_bridge/management_interface/mgmt_rdata_d1_3" LOC = "SLICE_X59Y25" ;

NET "sys_clk_c" PERIOD = 10ns;

NET "ep/BU2/U0/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/gt_refclk_out[0]" TNM_NET = "MGTCLK" ;

TIMESPEC "TS_MGTCLK" = PERIOD "MGTCLK" 100.00 MHz HIGH 50 % ;

 

При разводке получается следующее:

Listing Pin Delays by value: (nsec)

 

d < 1.00 < d < 2.00 < d < 3.00 < d < 4.00 < d < 5.00 d >= 5.00

--------- --------- --------- --------- --------- ---------

8546 5290 1181 96 5 0

Edited by L_Konstantin

Share this post


Link to post
Share on other sites

Я взял проект, который делал для Spartan3 (x1), и перенес его целиком на Virtex5 (x4).

Проект развелся вполне замечательно.

Для х4 у меня тоже все разводится на стандартнх настройках (Там частота дефайлтная 125МГЦ)

 

У меня не разводится на х8 на дефаултной частоте(250МГц). Лучше что получилось по 2 ошибки на 2 констрена (при трех проходах Xplorer).

 

Пока разбираюсь с х4. Пытаюсь пока грузить оригинальные bit примеров х4.

 

Появилась новая проблема - с двумя bit файлами примерами (1. с сайта, 2 с диска с платой) перестал работать GUI WinDriver.

 

Пока не трогал мульти прошивку в EPROM - можно было перешивать прошивку в ПЛИС. WinDriver - понимал - все три прошивки и смотрел, какие ресурсы внутри. (В оригинальной прошивке в плате был BAR0 - размером 0х1000000 - 16Мб. в примерах - по 2кб).

 

Потом как в руководстве для Мулти ревизионного EPROM залили две ревизии прошивки(.msc) из архива с сайта (да и с диска платы тоже).

 

 

Теперь WinDriver смотри ресурсы в пишет /читает BAR's только после залития прошивки в ПЛИС и рестарта (что-то с прошивокой в PROM).

 

НО отказывается теперь генерить драйвер - говорит уже запушено 5 копий програмы (это после рестарта).

 

* Драйвер из примера MET ставиться и правильно работает.

 

Кто-нибудь сталкивался с этим?

Edited by NiOS

Share this post


Link to post
Share on other sites

НО отказывается теперь генерить драйвер - говорит уже запушено 5 копий програмы (это после рестарта).

Проверили на другом компьютере - там нормально генерит и устанавливает winDriver драйвер.

Версия - evalution. Может от нее такие заморочки, как зашили прошивки из примера.

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.

×
×
  • Create New...