Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCIe x4, xc5vfx30t
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
StrangerX
Доброго времени суток.

Имеется плата собственного изготовления.
На борту 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 - в единице, что с этим делать не знаю.

Помогите, пожалуйста, добрые люди. Весь измучился.
crono
А моделировать пробовали?
Bad0512
Цитата(StrangerX @ Aug 1 2013, 13:04) *
Доброго времени суток.

Имеется плата собственного изготовления.
На борту xc5vfx30t, PCIe x4

Имхо в такой конфигурации ваша плата должна "видеться" БИОСом как x1 устройство вставленное в слот x4 x8 или x16 (зависит от вашей материнской платы). Ваше ядро поддерживает такой режим работы?
Сдаётся мне что малость намудрили вы с сигналами PRSNT1 PRSNT2 на разъёме. Посмотрите как это сделано в ML605 например.

StrangerX
Спасибо за быстрые ответы.
Цитата
А моделировать пробовали?

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

Вставляю в порт x16. Bios не видит.
Объясните, пожалуйста, почему должен видеть как x1?

Почему Вы считаете, что мой вариант использовать буфер DD1 хуже, чем вариант с резистивным делителем в ML605?
crono
Прошивка в ПЛИС откуда грузится? Может, время загрузки превышает допустимое? BitStream Compression включен?
StrangerX
Цитата(crono @ Aug 1 2013, 18:32) *
Прошивка в ПЛИС откуда грузится? Может, время загрузки превышает допустимое? BitStream Compression включен?

Прошивка грузится из XCF16. Сжатие отключено. Если бы было в этом дело, думаю помогла бы программная перезагрузка. Пробовал. Где-то я накосячил... Не может быть дело в том, что клок 100MHz у меня не синхронный?
krux
судя по trn_lnk_up_n == 1 физический линк у вас не поднялся. Ессесно не могло быть никакой речи об энумерации и прочем.
Первым делом проверьте, выключен ли в биосе spread spectrum для PCIe.
Второе - заведите для начала x1 линк.
Надо ещё покопаться в документации - я не уверен в правильности выбора конкретных GTX_DUAL и разводки. Не получилось ли у вас ненароком некая недопустимая комбинация с Lane reversal?

Цитата
На MGT заведен клок от внутреннего генератора 100.000MHz.

а на схеме я его не вижу в упор.
StrangerX
Цитата(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.
krux
Если на вашей материнке spread spectrum включен, а на PCIe плате клок для интерфейса идёт от отдельного генератора - то интерфейс работать не будет. Попробуйте с другой материнкой, либо ставьте честный буфер от клока с разъема.
Всю схему приводить - это понятно что смысла нет. По картинкам 1 и 2 и названиям цепей я понял только что подвода 100 МГц к ПЛИС в нужном месте у вас нет, о чем собственно и написал.

теперь вот вижу что есть.
StrangerX
Цитата(krux @ Aug 2 2013, 12:22) *
Если на вашей материнке spread spectrum включен, а на PCIe плате клок для интерфейса идёт от отдельного генератора - то интерфейс работать не будет. Попробуйте с другой материнкой, либо ставьте честный буфер от клока с разъема.
Всю схему приводить - это понятно что смысла нет. По картинкам 1 и 2 и названиям цепей я понял только что подвода 100 МГц к ПЛИС в нужном месте у вас нет, о чем собственно и написал.

теперь вот вижу что есть.

Проверил с другой материнкой. Там есть spread spectrum. Tak же не хочет работать.
Провел ещё раз моделирование на всякий случай морделируется. Ничего...
ivanoffer
Цитата(StrangerX @ Aug 30 2013, 15:04) *
Проверил с другой материнкой. Там есть spread spectrum. Tak же не хочет работать.
Провел ещё раз моделирование на всякий случай морделируется. Ничего...


Ваша история напоминает мою. Не все материнские платы дружат с PCIe устройствами,
имеющими свой опорный такт 100МГц какой бы стабильный он не был. Этому есть ряд причин,
вдаваться не буду. Могу посоветовать сначала подать на опорный тактовый вход клок с
ламелей PCIe разъема, например, лакированными скрученными проводами. Припаять можно,
проверял (естественно через разделительные емкости).
Flood
Цитата(StrangerX @ Aug 1 2013, 10:04) *
Доброго времени суток.

Имеется плата собственного изготовления.
На борту xc5vfx30t, PCIe x4
Нажмите для просмотра прикрепленного файла


Что-то я не пойму, как у вас символ разъема нарисован. То ли RX c TX перепутаны, то ли стороны разъема. Где физически находится пин A1 на ножевом разъеме реальной платы?
Если символ нарисован так, будто бы фаска ножевого разъема смотрит на зрителя, то похоже на перепутку RX / TX.
И еще ,имхо, PERST# зря не использован. Ну а про пользу применения тактового сигнала с разъема тут уже говорили.
FLTI
Цитата(ivanoffer @ Aug 30 2013, 22:50) *
Могу посоветовать сначала подать на опорный тактовый вход клок с
ламелей PCIe разъема, например, лакированными скрученными проводами. Припаять можно,
проверял (естественно через разделительные емкости).

Немого офф. Стоит ли ставить clock cleaner на клок с PCIe?
Разумеется не при навесном монтаже, а на плате.
StrangerX
Посмотрел ltssm_state с помощью chipscope - останавливается на значении 2 - polling. Подскажите кто-нибудь, пожалуйста, что это может значить.
Flood
Цитата(StrangerX @ Sep 12 2013, 17:37) *
Посмотрел ltssm_state с помощью chipscope - останавливается на значении 2 - polling. Подскажите кто-нибудь, пожалуйста, что это может значить.

Я выше писал насчет возможной перепутки TX / RX - это проверили?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.