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