Перейти к содержанию
    

Ядро PCI Express Block Plus в Virtex 5

Серьёзных исследований не проводили. На первый взгляд - скорость не падает.

Стоило бы проверить.

Где-то на этом форуме видел тему, что кто-то жаловался на падение скорости подобного рода контроллера, как потом выяснилось, из-за большой активности других устройств на PCIe .

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Модуль AMBPEX5 в режиме x8

 

 

Вывод данных ( из компьютера в устройство )

1. системная память (непрерывная) 128 МБайт - 1080 Мбайт/с

2. пользовательская память (разрывная) 128 Мбайт - 1080 Мбайт/с

 

Подскажите пожалуйста в каком режиме осуществляется вывод данных из компьютера в устройство. Я наблюдаю такую картину: В режиме вывода данных из устройства на компьютер все отлично MPS = 128Байт, скорость 1200 Мбайт/с. При записи из компьютера в устройство 128Байт данных, на шине RX PCI Express Block Plus приходят 16 TLP длинной 1DW со сдвигом данных.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При записи из компьютера в устройство 128Байт данных, на шине RX PCI Express Block Plus приходят 16 TLP длинной 1DW со сдвигом данных.

 

Это какая-то странная ситуация. Пришлите отправляемый запрос, надо на него посмотреть.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такой вопрос, кто нить сталкивался с изохронным режимом (приложение А спецификации) работы PCI Express.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читая форум, прихожу к мысли что с проблемами на этапе установки соединения столкнулся один я.

Есть две платы PCI/104 express. Одна из них как раз с virtex-5 и example design из PCI Express Block Plus корки. Возможности потестить ее с разными хостами нет. PCIe устройство не детектируется, после долгих тыканий набрел на гид по отладке сего ядра на сайте xilinx, благодаря которому смог установить следующую заковырку:

 

На этапе установке связи хост шлёт плате TS1-пакет с link number, который хочет ей присвоить (точнее начинает слать непрерывно такие пакеты). Через некоторое время плата начинает отсылать такие же пакеты обратно, подтверждая что приняла номер. После этого хост добавляет в отсылаемые пакеты желаемый lane number. И тут (если быть точным за пару пакетов до прихода lane number) плата выставляет флаг rx_elec_idle (насколько я понимаю сообщая о том, что приемная линия перешла в режим простоя) и в наглую не шлет ответный пакет хосту. Через некоторое время процесс инициализации сбрасывается, в сумме он повторяется несколько раз, потом хост естественно оставляет попытки.

 

Предполагая количество людей, которые уже использовали тот же самый пример и ядро, смутно понимаю что дело не в нем. Грешить на root complex тоже очень не хочется, начальство имеет планы на использование конкретно его в будущих разработках. Буду рад любым подсказкам и наводкам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читая форум, прихожу к мысли что с проблемами на этапе установки соединения столкнулся один я.

Есть две платы PCI/104 express. Одна из них как раз с virtex-5 и example design из PCI Express Block Plus корки. Возможности потестить ее с разными хостами нет. PCIe устройство не детектируется, после долгих тыканий набрел на гид по отладке сего ядра на сайте xilinx, благодаря которому смог установить следующую заковырку:

 

На этапе установке связи хост шлёт плате TS1-пакет с link number, который хочет ей присвоить (точнее начинает слать непрерывно такие пакеты). Через некоторое время плата начинает отсылать такие же пакеты обратно, подтверждая что приняла номер. После этого хост добавляет в отсылаемые пакеты желаемый lane number. И тут (если быть точным за пару пакетов до прихода lane number) плата выставляет флаг rx_elec_idle (насколько я понимаю сообщая о том, что приемная линия перешла в режим простоя) и в наглую не шлет ответный пакет хосту. Через некоторое время процесс инициализации сбрасывается, в сумме он повторяется несколько раз, потом хост естественно оставляет попытки.

 

Предполагая количество людей, которые уже использовали тот же самый пример и ядро, смутно понимаю что дело не в нем. Грешить на root complex тоже очень не хочется, начальство имеет планы на использование конкретно его в будущих разработках. Буду рад любым подсказкам и наводкам

 

А какая плата? Там есть switch? Или конфигурация stack up/down фиксирована? Как сброс сделан?

Могу дать свою прошивку и тестовую прогу под windows в обмен на ucf файл.

Мы сейчас свою плату PCI104 express делаем, вот не хотелось бы тоже наколоться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процессорная плата - MSM945 от Digital-Logic (ныне Kontron).

Плата с плисом - SMT101 от Sundance (они кстати предоставляют тестовую прошивку под PCIe, но она так же не работает как и пример от корки, что лишний раз намекает что проблемы либо в связи, либо в root complex). (как я заметил вы ищете примеры разводки, но, к несчастью, от Sundance мне удалось получить только схему)

 

Процессорная плата рассчитана только на нахождение на верхушке мезонина, поэтому CPU_DIR фиксированно заведен на единицу. Сброс с разъема PCIe заведен на дополнительную плисину Spartan-3, которая конфигурирует Virtex. Выведя сигналы сброса на светодиоды, я всегда вижу как вначале почему-то мигает trn_reset, затем вместе пару раз trn_reset и sys_reset. Все это в течении пары секунд, пока пытается установиться соединение.

 

От прошивки бы и проги не отказался :) Хотя в данный момент они вряд ли помогут с проблемами на нижнем уровне. Кстати, если вы имеете отношение к Томскому "Интенсис" и их SGDMA, то я качал демонстрационную версию модуля, однако у нас плисы разные (у меня XC5VFX30T), и я так и не смог адаптировать ucf под свою плату (сыпались какие-то ошибки с GTP/GTX трансиверами).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процессорная плата - MSM945 от Digital-Logic (ныне Kontron).

Плата с плисом - SMT101 от Sundance (они кстати предоставляют тестовую прошивку под PCIe, но она так же не работает как и пример от корки, что лишний раз намекает что проблемы либо в связи, либо в root complex). (как я заметил вы ищете примеры разводки, но, к несчастью, от Sundance мне удалось получить только схему)

 

Процессорная плата рассчитана только на нахождение на верхушке мезонина, поэтому CPU_DIR фиксированно заведен на единицу. Сброс с разъема PCIe заведен на дополнительную плисину Spartan-3, которая конфигурирует Virtex. Выведя сигналы сброса на светодиоды, я всегда вижу как вначале почему-то мигает trn_reset, затем вместе пару раз trn_reset и sys_reset. Все это в течении пары секунд, пока пытается установиться соединение.

 

От прошивки бы и проги не отказался :) Хотя в данный момент они вряд ли помогут с проблемами на нижнем уровне. Кстати, если вы имеете отношение к Томскому "Интенсис" и их SGDMA, то я качал демонстрационную версию модуля, однако у нас плисы разные (у меня XC5VFX30T), и я так и не смог адаптировать ucf под свою плату (сыпались какие-то ошибки с GTP/GTX трансиверами).

 

Спасибо!

Мне кажется дело со сбросом. На отладочных китах сброс не используется, вместо него кнопка для ручного сброса. Попробуйте его вообще отключить в прошивке. Адаптировать sgdma помогу, самому интересно, шлите ucf файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

собственно вот:

 

###############################################################################
# Define Device, Package And Speed Grade
###############################################################################

CONFIG PART = xc5vfx30t-ff665-1;

###############################################################################
# User Time Names / User Time Groups / Time Specs
###############################################################################

# CONFIG STEPPING = "ES";

###############################################################################
# User Physical Constraints
###############################################################################


###############################################################################
# Pinout and Related I/O Constraints
###############################################################################

#
# SYS reset (input) signal.  The sys_reset_n signal should be
# obtained from the PCI Express interface if possible.  For
# slot based form factors, a system reset signal is usually
# present on the connector.  For cable based form factors, a
# system reset signal may not be available.  In this case, the
# system reset signal must be generated locally by some form of
# supervisory circuit.  You may change the IOSTANDARD and LOC
# to suit your requirements and VCCO voltage banking rules.
#

NET "sys_reset_n"      LOC = "H9"  | IOSTANDARD = LVCMOS33 | PULLUP | NODELAY;

#
# SYS clock 250 MHz (input) signal. The sys_clk_p and sys_clk_n
# signals are the PCI Express reference clock. Virtex-5 GTX
# Transceiver architecture requires the use of a dedicated clock
# resources (FPGA input pins) associated with each GTX Transceiver Tile.
# To use these pins an IBUFDS primitive (refclk_ibuf) is
# instantiated in user's design.
# Please refer to the Virtex-5 GTX Transceiver User Guide
# (UG198) for guidelines regarding clock resource selection.
#

NET  "sys_clk_p"       LOC = "T4";
NET  "sys_clk_n"       LOC = "T3";
INST "refclk_ibuf"     DIFF_TERM = "TRUE";

#
# Transceiver instance placement.  This constraint selects the
# transceivers to be used, which also dictates the pinout for the
# transmit and receive differential pairs.  Please refer to the
# Virtex-5 GTX Transceiver User Guide (UG198) for more
# information.
#
# PCIe Lanes 0
INST "ep/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/GTD[0].GT_i" LOC = GTX_DUAL_X0Y1;

#
# PCI Express Block placement. This constraint selects the PCI Express
# Block to be used.
#

INST "ep/pcie_ep0/pcie_blk/pcie_ep"                       LOC = PCIE_X0Y0;

###############################################################################
# Physical Constraints
###############################################################################

#
# 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;


###############################################################################
# Timing Constraints
###############################################################################

#
# Ignore timing on asynchronous signals.
#

NET "sys_reset_n" TIG;

#
# Timing requirements and related constraints.
#

NET "sys_clk_c"                                      PERIOD = 10ns;

NET "ep/pcie_ep0/pcie_blk/SIO/.pcie_gt_wrapper_i/gt_refclk_out" TNM_NET = "MGTCLK";

TIMESPEC "TS_MGTCLK"  = PERIOD "MGTCLK" 100.00 MHz HIGH 50 %;

# LEDs

NET "led1"  LOC = "E10"  | IOSTANDARD = LVTTL;
NET "led2"  LOC = "F10"  | IOSTANDARD = LVTTL;
NET "led3"  LOC = "F20"  | IOSTANDARD = LVTTL;
NET "led4"  LOC = "G21"  | IOSTANDARD = LVTTL;

###############################################################################
# End
###############################################################################

Изменено пользователем Jack_of_Shadows

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sys_reset повесил на вечную 1, При загрузке наблюдаю как trn_reset все также мигает 3 раза. И картинка не меняется не на йоту.

 

На форуме тех поддержки xilinx предлагали поиграться настройками трансиверов (размахом выходного сигнала и эмфазой) - тоже не изменило ничего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sys_reset повесил на вечную 1, При загрузке наблюдаю как trn_reset все также мигает 3 раза. И картинка не меняется не на йоту.

 

На форуме тех поддержки xilinx предлагали поиграться настройками трансиверов (размахом выходного сигнала и эмфазой) - тоже не изменило ничего.

Как грузится плис - со флэши? В PC104 нет сигнала присутствия в слоте, может загрузка прошивки запаздывает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как грузится плис - со флэши? В PC104 нет сигнала присутствия в слоте, может загрузка прошивки запаздывает?

Странный ucf, в коментариях тактовая 250 МГц, а в таймингах 100 МГц. Прикрепил прошивку для 100 МГц

ST101.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ucf сгенерирован core-генератором, в настройках там точно 100 МГц стояло, и на плате точно 100 МГц идет. Сам не понял что у них с комментариями.

С вашей прошивкой ничего не изменилось - смотрю pci-устройства через pcitree в win хр.

Грузится с флеши, производители платы уверяют что загрузка занимает порядка 70 мс. И на этот случай всегда рекомендуют горячий старт, который тоже не помогает. К тому же я в начале говорил, процесс инициализации начинает идти, проходят успешно стадии detect и polling, а на configuration случается затык, в один прекрасный момент (всегда один и тот же, что значит дело не в случайных помехах) RX линия сбрасывается в режим простоя (или как там правильно перевести IDLE). И кроме того в некоторых местах во время инициализации видно по сигналу rx_status что возникают ошибки 8b/10b decode error - некое нарушение целостности сигнала. Однако опять же они возникают строго в одинаковых местах, что не похоже просто на плохой прием - ведь в других местах я, к примеру, всегда вижу как root complex отправляет link number, а плис через некоторое время отсылает его назад в качестве подтверждения (вот здесь я приводил осциллограммы проблемного момента, )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так, сорри, но я ввел вас в заблуждение.

Мне таки позволили расковырять рабочий PC, и я вставил плату с плисом туда (производитель для этого специальную переходную плату дает). Загрузилось сразу же - дефолтная прошивка с установленными в системе драйверами даже объявила о себе в диспетчере устройств, прошивка сгенерированная core generator вроде как тоже (по крайней мере она теперь висит в состоянии L0, как обнаружить ее в системе пока не допер. Все найденные для сканирования pci-шины проги (pcitree, pcidirect) под win7 не запустились).

 

Получается дело в рут комплексе - MSM945. Но это уже не совсем к этому топику относится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...