|
|
  |
PCIe x4, xc5vfx30t, Не работает, подскажите, в чем может быть дело |
|
|
|
Aug 1 2013, 06:04
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Доброго времени суток. Имеется плата собственного изготовления. На борту xc5vfx30t, PCIe x4
На MGT заведен клок от внутреннего генератора 100.000MHz.
(FC пока не интересует) Создан endpoint block plus с помощью core-генератора. Скопированы полученные файлы практически без изменений. Структура проекта:
Код --xilinx_pci_exp_ep.v --pci_exp_64b_app.v --PIO.v --PIO_EP.v --PIO_EP_MEM_ACCESS.v --EP_MEM.v --PIO_64_RX_ENGINE.v --PIO_64_TX_ENGINE.v --ep_pcie.v --pcie_ep.v --pcie_top.v --pcie_reset_logic.v --pcie_clocking.v --prod_fixes.v --pcie_mim_wrapper.v --bram_common.v x3 --pcie_gt_wrapper_top.v --pcie_gt_wrapper.v x2 --tx_sync.v --pcie_blk_if.v --pcie_blk_ll.v --pcie_blk_plus_ll_tx.v --pcie_blk_ll_tx_arb.v --pcie_blk_ll_tx.v --pcie_blk_plus_ll_rx.v --tlm_rx_data_snk.v --tlm_rx_data_snk_mal.v --tlm_rx_data_snk_pwr_mgmt.v --tlm_rx_data_snk_bar.v --cmm_decoder.v --pcie_blk_ll_oqbqfifo.v --sync_fifo.v x2 --pcie_blk_ll_arb.v --pcie_blk_ll_credit.v my_SRL16E x17 --pcie_blk_cf.v --pcie_blk_cf_mgmt.v --pcie_blk_cf_err.v --cmm_errman_cor.v x2 --cmm_errman_cnt_en.v x5 --cmm_errman_ftl.v --cmm_errman_cpl.v x2 --cmm_errman_ram4x26.v --cmm_errman_ram8x26.v --pcie_blk_cf_arb.v --pcie_blk_cf_pwr.v --pcie_soft_int.v --cmm_intr.v --extend_clk.v --xilinx_pci_exp_blk_plus_4_lane_ep_xc5vfx30t-ff665-1.ucf Привожу ucf: Код CONFIG PART = xc5vfx30t-ff665-1; NET "sys_clk_p" LOC = K4; NET "sys_clk_n" LOC = K3; NET "sys_clk_n" DIFF_TERM = "TRUE"; NET "sys_clk_p" DIFF_TERM = "TRUE"; # PCIe Lanes 0, 1 INST "ep/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/GTD[0].GT_i" LOC = GTX_DUAL_X0Y3; # PCIe Lanes 2, 3 INST "ep/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/GTD[2].GT_i" LOC = GTX_DUAL_X0Y2; INST "ep/pcie_ep0/pcie_blk/pcie_ep" LOC = PCIE_X0Y0; # BlockRAM placement INST "ep/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_retry/generate_sdp.ram_sdp_inst" LOC = RAMB36_X4Y4; INST "ep/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_tx/generate_tdp2[1].ram_tdp2_inst" LOC = RAMB36_X4Y3; INST "ep/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_rx/generate_tdp2[1].ram_tdp2_inst" LOC = RAMB36_X4Y2; INST "ep/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_tx/generate_tdp2[0].ram_tdp2_inst" LOC = RAMB36_X4Y1; INST "ep/pcie_ep0/pcie_blk/pcie_mim_wrapper_i/bram_tl_rx/generate_tdp2[0].ram_tdp2_inst" LOC = RAMB36_X4Y0; NET "sys_clk_c" PERIOD = 10 ns; NET "ep/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/gt_refclk_out[0]" TNM_NET = "MGTCLK"; TIMESPEC TS_MGTCLK = PERIOD "MGTCLK" 100 MHz HIGH 50 %; NET "pci_exp_rxp[0]" LOC = C1; NET "pci_exp_rxp[2]" LOC = J1; NET "prsnt" LOC = G15; Прошиваю, жду, что компьютер проведет энумекрацию, или хотя бы что-то, ничего не происходит. Попробовал warm reset, как xilinx советует, ничего. Полез глубже. trn_reset_n - 0 (RESET_DONE 1) - pll залочена. trn_lnk_up_n - в единице, что с этим делать не знаю. Помогите, пожалуйста, добрые люди. Весь измучился.
|
|
|
|
|
Aug 1 2013, 12:01
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(StrangerX @ Aug 1 2013, 13:04)  Доброго времени суток.
Имеется плата собственного изготовления. На борту xc5vfx30t, PCIe x4 Имхо в такой конфигурации ваша плата должна "видеться" БИОСом как x1 устройство вставленное в слот x4 x8 или x16 (зависит от вашей материнской платы). Ваше ядро поддерживает такой режим работы? Сдаётся мне что малость намудрили вы с сигналами PRSNT1 PRSNT2 на разъёме. Посмотрите как это сделано в ML605 например.
|
|
|
|
|
Aug 1 2013, 13:47
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Спасибо за быстрые ответы. Цитата А моделировать пробовали? Да, соделировал с той обвязкой, что предоставлена xilinx - работает. Цитата Имхо в такой конфигурации ваша плата должна "видеться" БИОСом как x1 устройство вставленное в слот x4 x8 или x16 (зависит от вашей материнской платы). Ваше ядро поддерживает такой режим работы? Сдаётся мне что малость намудрили вы с сигналами PRSNT1 PRSNT2 на разъёме. Посмотрите как это сделано в ML605 например. Вставляю в порт x16. Bios не видит. Объясните, пожалуйста, почему должен видеть как x1? Почему Вы считаете, что мой вариант использовать буфер DD1 хуже, чем вариант с резистивным делителем в ML605?
|
|
|
|
|
Aug 1 2013, 16:04
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Цитата(crono @ Aug 1 2013, 18:32)  Прошивка в ПЛИС откуда грузится? Может, время загрузки превышает допустимое? BitStream Compression включен? Прошивка грузится из XCF16. Сжатие отключено. Если бы было в этом дело, думаю помогла бы программная перезагрузка. Пробовал. Где-то я накосячил... Не может быть дело в том, что клок 100MHz у меня не синхронный?
|
|
|
|
|
Aug 1 2013, 17:14
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
судя по trn_lnk_up_n == 1 физический линк у вас не поднялся. Ессесно не могло быть никакой речи об энумерации и прочем. Первым делом проверьте, выключен ли в биосе spread spectrum для PCIe. Второе - заведите для начала x1 линк. Надо ещё покопаться в документации - я не уверен в правильности выбора конкретных GTX_DUAL и разводки. Не получилось ли у вас ненароком некая недопустимая комбинация с Lane reversal? Цитата На MGT заведен клок от внутреннего генератора 100.000MHz. а на схеме я его не вижу в упор.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Aug 2 2013, 05:44
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Цитата(krux @ Aug 1 2013, 21:14)  судя по trn_lnk_up_n == 1 физический линк у вас не поднялся. Ессесно не могло быть никакой речи об энумерации и прочем. Первым делом проверьте, выключен ли в биосе spread spectrum для PCIe. Второе - заведите для начала x1 линк. Надо ещё покопаться в документации - я не уверен в правильности выбора конкретных GTX_DUAL и разводки. Не получилось ли у вас ненароком некая недопустимая комбинация с Lane reversal?
а на схеме я его не вижу в упор. Про комбинацию не знаю, делал по даташиту, мог где-нибудь напутать, конечно, но проверял уже много раз. Я потому и написал про линк, что его нет и биос тут уже не причем. spread spectrum настройки в моем биосе нет. А про то, что не видно на схеме, я же не могу все 9 страниц выложить, ни у кого терпения не хватит читать. Клоки:
Вместо 125МГц стоит генератор на 100. Странно, что меня никто не спросил, почему на второй схеме 125МГц стоит, а не 100.
Сообщение отредактировал StrangerX - Aug 2 2013, 05:46
|
|
|
|
|
Aug 30 2013, 11:04
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Цитата(krux @ Aug 2 2013, 12:22)  Если на вашей материнке spread spectrum включен, а на PCIe плате клок для интерфейса идёт от отдельного генератора - то интерфейс работать не будет. Попробуйте с другой материнкой, либо ставьте честный буфер от клока с разъема. Всю схему приводить - это понятно что смысла нет. По картинкам 1 и 2 и названиям цепей я понял только что подвода 100 МГц к ПЛИС в нужном месте у вас нет, о чем собственно и написал.
теперь вот вижу что есть. Проверил с другой материнкой. Там есть spread spectrum. Tak же не хочет работать. Провел ещё раз моделирование на всякий случай морделируется. Ничего...
|
|
|
|
|
Aug 30 2013, 18:50
|
Частый гость
 
Группа: Участник
Сообщений: 120
Регистрация: 21-07-11
Пользователь №: 66 348

|
Цитата(StrangerX @ Aug 30 2013, 15:04)  Проверил с другой материнкой. Там есть spread spectrum. Tak же не хочет работать. Провел ещё раз моделирование на всякий случай морделируется. Ничего... Ваша история напоминает мою. Не все материнские платы дружат с PCIe устройствами, имеющими свой опорный такт 100МГц какой бы стабильный он не был. Этому есть ряд причин, вдаваться не буду. Могу посоветовать сначала подать на опорный тактовый вход клок с ламелей PCIe разъема, например, лакированными скрученными проводами. Припаять можно, проверял (естественно через разделительные емкости).
|
|
|
|
|
Aug 30 2013, 20:04
|
Знающий
   
Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871

|
Цитата(StrangerX @ Aug 1 2013, 10:04)  Доброго времени суток. Имеется плата собственного изготовления. На борту xc5vfx30t, PCIe x4
Что-то я не пойму, как у вас символ разъема нарисован. То ли RX c TX перепутаны, то ли стороны разъема. Где физически находится пин A1 на ножевом разъеме реальной платы? Если символ нарисован так, будто бы фаска ножевого разъема смотрит на зрителя, то похоже на перепутку RX / TX. И еще ,имхо, PERST# зря не использован. Ну а про пользу применения тактового сигнала с разъема тут уже говорили.
|
|
|
|
|
Sep 1 2013, 17:57
|
Местный
  
Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832

|
Цитата(ivanoffer @ Aug 30 2013, 22:50)  Могу посоветовать сначала подать на опорный тактовый вход клок с ламелей PCIe разъема, например, лакированными скрученными проводами. Припаять можно, проверял (естественно через разделительные емкости). Немого офф. Стоит ли ставить clock cleaner на клок с PCIe? Разумеется не при навесном монтаже, а на плате.
|
|
|
|
|
Sep 12 2013, 13:37
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 7-08-09
Пользователь №: 51 787

|
Посмотрел ltssm_state с помощью chipscope - останавливается на значении 2 - polling. Подскажите кто-нибудь, пожалуйста, что это может значить.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|