Kopart 0 February 27, 2008 Posted February 27, 2008 (edited) · Report post Я так понял уже у многих есть опыт работы с PCI Express 1.1. Ядро Xilinx PCI Express Block Plus не берет на себе формирование пакета TLP. Соответственно, думаю, кто-то уже проходил этот путь. Подскажите какие есть еще варианты решения (1. - сделать самому, ориентируясь на пример Xilinx'a + ECRC)? Edited February 28, 2008 by NiOS Quote Share this post Link to post Share on other sites More sharing options...
Kopart 0 February 29, 2008 Posted February 29, 2008 · Report post Есть кто работал с ядром Xilinx "PCI Express Block Plus" в Virtex 5 ? Quote Share this post Link to post Share on other sites More sharing options...
vitus_strom 0 February 29, 2008 Posted February 29, 2008 · Report post ja nacinaju Quote Share this post Link to post Share on other sites More sharing options...
Kopart 0 February 29, 2008 Posted February 29, 2008 · Report post ja nacinaju На плате от Xilinx или для своей? Quote Share this post Link to post Share on other sites More sharing options...
L_Konstantin 0 March 4, 2008 Posted March 4, 2008 · Report post Реализовывал работу с PCI-E на плате от Xilinx. Кристалл был Spartan3, милионник. Ядро, соотв. софтверное, генерил CoreGenerator-ом. По документации генерить TLP и разбирать пришедшее - не самая сложная и вполне решаемая задача для разработчика. Времени потратишь не сильно много, зато свой модуль работать будет как ты захочешь. ECRC - не заморачивайся. Отметь что ты его не генеришь (в заголовке TLP есть такой бит), а при генерации ядра поставь что его передавать тебе не надо. Сейчас делаем свою плату на Vitrex5 и там будем использоваться встроенное ядро. Пока платы нет, так что изучаю мат. часть. Quote Share this post Link to post Share on other sites More sharing options...
Kopart 0 March 4, 2008 Posted March 4, 2008 · Report post Сейчас делаем свою плату на Vitrex5 и там будем использоваться встроенное ядро. Пока платы нет, так что изучаю мат. часть. Уже пробовали генерить дизайн (пример хотя бы)? У Вас сходились тайминги для ядра? (В своих ответах Xilinx указывает на необходимость использования Multi PAR чтобы сошлись тайминги даже для Hard ядра в Virtex 5). У меня не очень-то сходятся констрейны для их примера х8... (даже с учетом их рекомендаций) А про ECRC - тоже решил не заморачиваться. Так уже и сделал (trim). Quote Share this post Link to post Share on other sites More sharing options...
L_Konstantin 0 March 5, 2008 Posted March 5, 2008 (edited) · Report post Уже пробовали генерить дизайн (пример хотя бы)? У Вас сходились тайминги для ядра? (В своих ответах 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 March 5, 2008 by L_Konstantin Quote Share this post Link to post Share on other sites More sharing options...
Kopart 0 March 5, 2008 Posted March 5, 2008 (edited) · Report post Я взял проект, который делал для 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 March 5, 2008 by NiOS Quote Share this post Link to post Share on other sites More sharing options...
Kopart 0 March 5, 2008 Posted March 5, 2008 · Report post НО отказывается теперь генерить драйвер - говорит уже запушено 5 копий програмы (это после рестарта). Проверили на другом компьютере - там нормально генерит и устанавливает winDriver драйвер. Версия - evalution. Может от нее такие заморочки, как зашили прошивки из примера. Quote Share this post Link to post Share on other sites More sharing options...