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