реклама на сайте
подробности

 
 
7 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Ядро PCI Express Block Plus в Virtex 5
Kopart
сообщение Feb 29 2008, 09:14
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Есть кто уже работал с ядром Xilinx "PCI Express Block Plus" в Virtex 5 ?


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 29 2008, 09:34
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(NiOS @ Feb 29 2008, 12:14) *
Есть кто уже работал с ядром Xilinx "PCI Express Block Plus" в Virtex 5 ?

Работали с софтовой версией. Интерфейс такой же (local link), но в V-5 не надо следить за буфером принимаемых completion на материнке
Go to the top of the page
 
+Quote Post
Kopart
сообщение Feb 29 2008, 10:18
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(dmitry-tomsk @ Feb 29 2008, 12:34) *
Работали с софтовой версией. Интерфейс такой же (local link), но в V-5 не надо следить за буфером принимаемых completion на материнке

А интерфейс local link писали с нуля или дополняли интерфейс из example design?

+ Я Вам отправил личное сообщение


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 29 2008, 10:23
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(NiOS @ Feb 29 2008, 13:18) *
А интерфейс local link писали с нуля или дополняли интерфейс из example design?

Писали с нуля, пример там только для target. Не советую писать с нуля, много время потратите. Лучше взять готовый backend от nwlogic (ссылки есть на сайте xilinx)
Go to the top of the page
 
+Quote Post
Kopart
сообщение Feb 29 2008, 10:31
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(dmitry-tomsk @ Feb 29 2008, 13:23) *
Лучше взять готовый backend от nwlogic (ссылки есть на сайте xilinx)

Искал на тему backend на сайте, но эта информация не попадалась. Внутренний интерфейс их ядра так и называеnся в оригинале Local Link? И скорей всего это ядро платное?!


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 29 2008, 10:37
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(NiOS @ Feb 29 2008, 13:31) *
Искал на тему backend на сайте, но эта информация не попадалась. Внутренний интерфейс их ядра так и называеnся в оригинале Local Link? И скорей всего это ядро платное?!

Искать надо через pci-express block plus. Там на вкладке есть ref design. Если туда пойти, попросит зарегистрироваться, а потом даст ссылку на файлы от nwlogic (ядро платное, но сколько стоит не знаю).
Go to the top of the page
 
+Quote Post
Kopart
сообщение Feb 29 2008, 10:49
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(dmitry-tomsk @ Feb 29 2008, 13:37) *
Искать надо через pci-express block plus. Там на вкладке есть ref design. Если туда пойти, попросит зарегистрироваться, а потом даст ссылку на файлы от nwlogic (ядро платное, но сколько стоит не знаю).

Вы сами создавали интерфейс к Local link + User Interface?
C вами можно напрямую пообщаться (ICQ,Skype,..)?

Разбирался в Example design и заметил, что если они принимают пакет с TD=1, то и выходной пакет они передают тот же самый бит TD (что и в принятом). Но, если в принятом ЕДЗ ECRC можно игнорировать, то в Complition его надо генерить. А в коде TX нет генерации ECRC(TLP digest) - в этом случает TLP будет Malformed ?!


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 29 2008, 10:59
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(NiOS @ Feb 29 2008, 13:49) *
Вы сами создавали интерфейс к Local link + User Interface?
C вами можно напрямую пообщаться (ICQ,Skype,..)?

Разбирался в Example design и заметил, что если они принимают пакет с TD=1, то и выходной пакет они передают тот же самый бит TD (что и в принятом). Но, если в принятом ЕДЗ ECRC можно игнорировать, то в Complition его надо генерить. А в коде TX нет генерации ECRC(TLP digest) - в этом случает TLP будет Malformed ?!

Я делал свой мультипортовый scatter/gather DMA контроллер. TLP digest я вообще не использовал (ставил галку trim). В пакете и так есть контрольная сумма, достатчно для большинства приложений. ICQ не пользую
Go to the top of the page
 
+Quote Post
Kopart
сообщение Feb 29 2008, 11:26
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(dmitry-tomsk @ Feb 29 2008, 13:59) *
TLP digest я вообще не использовал (ставил галку trim). В пакете и так есть контрольная сумма, достатчно для большинства приложений.

Уточняли?! При этом ядро исправляет этот бит, если он присутсвует в исходящем пакете. К вопросу о качестве екзампл дизайна.
Пока мне нужен простейший target с двумя небольшими однонаправленными FIFO. Может у Вас есть что-то, что поможет их связать с ядром от ксайлинкса(через Local Link). Или подскажите подводные камни Local Link интерфейса от Xilinx/ У меня пока единственный вариант доделовать example design под мои задачи. А шишек при первом знакомстве с PCI express от Xilinx на их плате ML555 думаю будет и так не мало...

В nwlogic отправил запрос (с их сайта лишь). Посмотрим что пришлют. Хотя на их сайте нет явных упоминаний про интерфейс к ядру от Xilinx (у них оно свое есть). Но для моей текущей задаче их платное ядро будет излишеством wassat.gif
Цитата
ICQ не пользую

У Вас есть что-то на работе, чтобы можно было пообщаться в реалтайме?


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Feb 29 2008, 11:42
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(NiOS @ Feb 29 2008, 14:26) *
Уточняли?! При этом ядро исправляет этот бит, если он присутсвует в исходящем пакете. К вопросу о качестве екзампл дизайна.
Пока мне нужен простейший target с двумя небольшими однонаправленными FIFO. Может у Вас есть что-то, что поможет их связать с ядром от ксайлинкса(через Local Link). Или подскажите подводные камни Local Link интерфейса от Xilinx/ У меня пока единственный вариант доделовать example design под мои задачи. А шишек при первом знакомстве с PCI express от Xilinx на их плате ML555 думаю будет и так не мало...

В nwlogic отправил запрос (с их сайта лишь). Посмотрим что пришлют. Хотя на их сайте нет явных упоминаний про интерфейс к ядру от Xilinx (у них оно свое есть). Но для моей текущей задаче их платное ядро будет излишеством wassat.gif

У Вас есть что-то на работе, чтобы можно было пообщаться в реалтайме?


Для target всё довольно просто, example design подойдёт. Работает всё нормально (правда медленно, большая задержка в pcie, хотя если увеличить число линий должно быть быстрее). К фифо подключить тоже легко, надо выкинуть ramb и поставить селектор адреса для фифо и регистра флагов.
Go to the top of the page
 
+Quote Post
Kopart
сообщение Feb 29 2008, 12:24
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(dmitry-tomsk @ Feb 29 2008, 14:42) *
Для target всё довольно просто, example design подойдёт. Работает всё нормально (правда медленно, большая задержка в pcie, хотя если увеличить число линий должно быть быстрее). К фифо подключить тоже легко, надо выкинуть ramb и поставить селектор адреса для фифо и регистра флагов.

Сколько Mb/s по Вашему можно получить на х8, если оставить из примера обработку по 1 DW payload в обе стороны?

Вам удобней здесь общаться или можно также через e-mail? Просто, думаю, всплывут некоторые тонкости ядра от Xilinx. Вдруг Вы их уже проходили.


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
Kopart
сообщение Mar 4 2008, 10:22
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Кто работал и добился, чтобы сходились тайминги для хард-ядра x8 - подскажите "настройки" ISE (для Multi PAR).

В FAQ Xilinx советует только использовать мульти PAR - но это только уменьшает число ошибок. Но не убирает их полностью.


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Jun 24 2009, 12:55
Сообщение #13





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Цитата(NiOS @ Feb 29 2008, 15:24) *
Сколько Mb/s по Вашему можно получить на х8, если оставить из примера обработку по 1 DW payload в обе стороны?

Вам удобней здесь общаться или можно также через e-mail? Просто, думаю, всплывут некоторые тонкости ядра от Xilinx. Вдруг Вы их уже проходили.


большой скорости с нагрузкой TLP в 1 DW не добиться нужно переписывать под 1024 DW ... чем сейчас и занимаюсь.... буду рад пообщаться с теми кто занимается данным вопросом
Go to the top of the page
 
+Quote Post
Loki5000
сообщение Jun 25 2009, 08:47
Сообщение #14


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 6-09-05
Пользователь №: 8 276



Как вы моделировали ядро PCI Express Endpoint Block Plus?

У меня первый же простейший тест типа: записать-прочитать по последовательным
адресам не проходит. Completion пакет чтения на 7-ой итерации почему-то теряется.
Чем он отличается от 6-ти предыдущих ума не приложу.
Кто-нибудь с подобным сталкивался?
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Jun 25 2009, 11:28
Сообщение #15





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Цитата(Loki5000 @ Jun 25 2009, 12:47) *
Как вы моделировали ядро PCI Express Endpoint Block Plus?

У меня первый же простейший тест типа: записать-прочитать по последовательным
адресам не проходит. Completion пакет чтения на 7-ой итерации почему-то теряется.
Чем он отличается от 6-ти предыдущих ума не приложу.
Кто-нибудь с подобным сталкивался?



если вы выбрали sample_smoke_test0 то в первых 9 транзакциях будет производиться симуляция чтения пространства конфигурации.. затем запись в память с 32 и 64 битной адресацией 1DW. и запрос на чтение с ожиданием соответствующего Completion.

Сообщение отредактировал demon_rt - Jun 25 2009, 12:12
Go to the top of the page
 
+Quote Post
Loki5000
сообщение Jun 26 2009, 10:15
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 6-09-05
Пользователь №: 8 276



Нет, я использую свой тест.
Текст теста в аттаче. (user_test0.txt)
Результат моделирования тоже. (sim_log.txt)

Дошел уже до разбора символов на Link Layer.
Пытаюсь понять, пакет завершения не выдается тестируемым Endpoint-ом
или drop-ается принимающим его Downstreам_Port-ом?

Изменения теста такие как:
- обращения по одному и тому же адресу,
- чтение без записи
- добавление пауз
и т.п.
ситуацию не меняют.

laughing.gif laughing.gif
Прикрепленные файлы
Прикрепленный файл  user_test0.txt ( 4.03 килобайт ) Кол-во скачиваний: 359
Прикрепленный файл  sim_log.txt ( 3.86 килобайт ) Кол-во скачиваний: 156
 
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Jun 26 2009, 15:27
Сообщение #17





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Цитата(Loki5000 @ Jun 26 2009, 14:15) *
Нет, я использую свой тест.
Текст теста в аттаче. (user_test0.txt)
Результат моделирования тоже. (sim_log.txt)

Дошел уже до разбора символов на Link Layer.
Пытаюсь понять, пакет завершения не выдается тестируемым Endpoint-ом
или drop-ается принимающим его Downstreам_Port-ом?

Изменения теста такие как:
- обращения по одному и тому же адресу,
- чтение без записи
- добавление пауз
и т.п.
ситуацию не меняют.

laughing.gif laughing.gif




всавил ваш тест в tests.vhd но ни каких транзакций кроме чтения пространства конфигурации не наблюдал... может вы еще внесли какие то изменения в проект симуляции. потому как стандартные тесты у меня работают нормально.
Go to the top of the page
 
+Quote Post
Loki5000
сообщение Jun 29 2009, 11:14
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 6-09-05
Пользователь №: 8 276



помимо этого, только выбор теста в 'pci_exp_usrapp_tx.vhd'
строка 115: test_selector => String'("pio_writeReadBack_test0")
заменить соответственно на: test_selector => String'("user_test0")

все, больше ничего... rolleyes.gif
Go to the top of the page
 
+Quote Post
Loki5000
сообщение Jun 29 2009, 16:11
Сообщение #19


Участник
*

Группа: Свой
Сообщений: 29
Регистрация: 6-09-05
Пользователь №: 8 276



Проблема решилась!

Я случайно использовал модель Endpoint Block версии 1.9
совместно с тестовым окружением от версии 1.11
Xilinx Core Generator не смотря на предупреждение о возможной перезаписи
сгенерированных ранее файлов создал вдобавок к 'pcie_endpoint_plus.vhd'
новый файл 'pcie_endpoint_v1_11.vhd'. А я упустил это из виду.
Новая версия отличается несколькими портами. Возможно, это как-то повлияло,
или причина кроется где-то в недрах Endpoint Block.

Теперь все работает! yeah.gif yeah.gif yeah.gif
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 13 2009, 09:42
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Здравствуйте.

Чтоб не открывать новую тему решил запостить сдесь (и так уже много чего полезного написано).
Вопрос есть один, касательно симуляции.
Доработал я pio_tests.v, а в частности pio_writeReadBack_test0. Файлик прицепил
Прикрепленный файл  mem64_tb_part.txt ( 7 килобайт ) Кол-во скачиваний: 251

В 2-х словах: сделал 2 записи по 10 и 6 dword-ов , и после этого сделал 2 чтения по 12 (с середины записанного региона) и 16 (весь записанный регион) dword-ов. Запись прошла на ура, и 1-е чтение тоже, а вот 2-е загнулось , хотя я в модельсиме видел как моя логика честно отгрузила положенное cranky.gif . Решил упростить задачу сделал чтение 4 (с середины записанного региона) dword-ов и 16 (весь записанные регион) dword-ов - первое чтение проходит, а на 2-е имеем ту же ситуацию - моя логика честно отгрузила положенное, а dsport загнулся на ожидании данных. Вот и интересует - чем 4 dword-а от 16 отличаются (оба больше 1 конечно; кстати и с 8-ю dword-ами тоже проходит чтение) ? Отчего такая разница ?? smile3046.gif
И есть есчё интересное поведение trn_tdst_rdy_n - при комбиинации для 2-х заходов чтения 12/16 корка выставляет этот сигнал для 1-го чтения, а для второго не ставит, и что самое интересное первое чтение проходит, а второе нет ? С чего бы это - там же буфер на 2 килобайта, я больше чем 16*2 dword-ов в своих комбинациях не вычитываю ohmy.gif ??
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Aug 14 2009, 04:27
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Kuzmi4 @ Aug 13 2009, 12:42) *
Здравствуйте.

Чтоб не открывать новую тему решил запостить сдесь (и так уже много чего полезного написано).
Вопрос есть один, касательно симуляции.
Доработал я pio_tests.v, а в частности pio_writeReadBack_test0. Файлик прицепил
Прикрепленный файл  mem64_tb_part.txt ( 7 килобайт ) Кол-во скачиваний: 251

В 2-х словах: сделал 2 записи по 10 и 6 dword-ов , и после этого сделал 2 чтения по 12 (с середины записанного региона) и 16 (весь записанный регион) dword-ов. Запись прошла на ура, и 1-е чтение тоже, а вот 2-е загнулось , хотя я в модельсиме видел как моя логика честно отгрузила положенное cranky.gif . Решил упростить задачу сделал чтение 4 (с середины записанного региона) dword-ов и 16 (весь записанные регион) dword-ов - первое чтение проходит, а на 2-е имеем ту же ситуацию - моя логика честно отгрузила положенное, а dsport загнулся на ожидании данных. Вот и интересует - чем 4 dword-а от 16 отличаются (оба больше 1 конечно; кстати и с 8-ю dword-ами тоже проходит чтение) ? Отчего такая разница ?? smile3046.gif
И есть есчё интересное поведение trn_tdst_rdy_n - при комбиинации для 2-х заходов чтения 12/16 корка выставляет этот сигнал для 1-го чтения, а для второго не ставит, и что самое интересное первое чтение проходит, а второе нет ? С чего бы это - там же буфер на 2 килобайта, я больше чем 16*2 dword-ов в своих комбинациях не вычитываю ohmy.gif ??

Я не спец по верилогу, но так понимаю Вы читаете и пишете память slave устройства пакетами по несколько DW? А как собираетесь сделать это на плате? В PCIE нет системного ПДП контроллера, надо делать мастер. И вообще, как показывает практика, моделирование PCIE - пустая затея, потом придётся половину контроллера переделывать из-за неверных предположений. Гораздо проще и надёжнее чипскопом на плате смотреть.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 14 2009, 07:04
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dmitry-tomsk - а про какой контроллер идёт речь ? И в смысле - как собираюсь делать это на плате - самый примитив - получаю несколько qword-ов по адресу такому то, и записываю их себе в память. Потом когда приходит реквест на чтениес этой памяти - генерию комплетишн с данными, вроде просто всё.. Моя мать позволяет в ответе до 128 байт иметь, пока мне хватит... Так а чём вопрос то ?
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Aug 14 2009, 12:24
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Kuzmi4 @ Aug 14 2009, 11:04) *
2 dmitry-tomsk - а про какой контроллер идёт речь ? И в смысле - как собираюсь делать это на плате - самый примитив - получаю несколько qword-ов по адресу такому то, и записываю их себе в память. Потом когда приходит реквест на чтениес этой памяти - генерию комплетишн с данными, вроде просто всё.. Моя мать позволяет в ответе до 128 байт иметь, пока мне хватит... Так а чём вопрос то ?

То, что MAX_PAYLOAD_SIZE и MAX_READ_SIZE материнки 128 байт (это минимум из возможного), не говорит о том, что Вы можете читать и писать по 128 байт. Только до 4 байта для 32-х битных процессоров и 8 - для 64-х разрядных. Читайте xapp859 как надо делать
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 14 2009, 16:34
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dmitry-tomsk - прочитал.. интересно.. Только не пойму где там написано про то что дял 32-х битных процессоров будем читать/писать по 4 байта , а для 64-х битных по 8 байт? В главе "Transaction Layer Packet Maximum Payload and Maximum Read Request Size" расказывается про 128 байт, и в сносках к ней на асусовскую мать тоже говорится про 128.
Вот разве что удручает так это разбиение пакетов:
Цитата
For large data transfers with small maximum
payload sizes, the TLP header information must be updated and transmitted in sequential
packets.
То есть на сколько я понял юзеровские пакеты по 4кб ко мне дойдут только в виде 128 байтных реквестов на write (то есть это железяка их сама побъёт без ючастия юзера) а чтение 4kb с моей стороны будет выглядеть как кучка комплетишнов по 128 байт каждый, которые эта же железяка соберёт и отправит юзеру наверх.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Aug 15 2009, 06:02
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Kuzmi4 @ Aug 14 2009, 19:34) *
2 dmitry-tomsk - прочитал.. интересно.. Только не пойму где там написано про то что дял 32-х битных процессоров будем читать/писать по 4 байта , а для 64-х битных по 8 байт? В главе "Transaction Layer Packet Maximum Payload and Maximum Read Request Size" расказывается про 128 байт, и в сносках к ней на асусовскую мать тоже говорится про 128.
Вот разве что удручает так это разбиение пакетов:
То есть на сколько я понял юзеровские пакеты по 4кб ко мне дойдут только в виде 128 байтных реквестов на write (то есть это железяка их сама побъёт без ючастия юзера) а чтение 4kb с моей стороны будет выглядеть как кучка комплетишнов по 128 байт каждый, которые эта же железяка соберёт и отправит юзеру наверх.

Ваше user application должна состоят из двух частей - мастера и слэйва. Слэйв принимает memory read/write request длина которых в принципе не может быть больше 1 или 2 DW, так как в процессорах нет команд чтения/записи больше 1 слова из памяти, а системный ДМА контроллер (ISA, EISA) не доступен для PCIE. Мастер может в писать в память хоста пакеты memory write request с MAX_PAYLOAD_SIZE байтами в нагрузку (ограничение со стороны материнок 128 байт, со стороны ядра 512 байт). Мастер может читать из памяти хоста пакеты через memory read request с размером запроса не более MAX_READ_SIZE байт. Хост вправе вернуть не один пакет MAX_READ_SIZE, а несколько, например, 1 и 127 байт, зависит от root complex. Посмотрите ещё xapp1052
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 18 2009, 07:23
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dmitry-tomsk - спасибо за просвещение a14.gif
В принципе нашёл почти всё прочто вы писали, только не ясно откуда вы взяли что
Цитата
в процессорах нет команд чтения/записи больше 1 слова из памяти, а системный ДМА контроллер (ISA, EISA) не доступен для PCIE.

В том же xapp1052 нашёл такое:
Цитата
The Power Edge 1900 contains the Intel E5000P chipset with maximum write payloads of 128 bytes and completion payloads of 64 bytes.

Это предложение вроде бы как раз указывает на то, что в write request-е для данного чипсета может быть 128 байт а не 4 или 8...
Или я что то не так понял ?
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Aug 18 2009, 08:37
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Kuzmi4 @ Aug 18 2009, 11:23) *
2 dmitry-tomsk - спасибо за просвещение a14.gif
В принципе нашёл почти всё прочто вы писали, только не ясно откуда вы взяли что

В том же xapp1052 нашёл такое:

Это предложение вроде бы как раз указывает на то, что в write request-е для данного чипсета может быть 128 байт а не 4 или 8...
Или я что то не так понял ?

Нашёл я в реководстве по написанию драйверов (драйверы самому приходится писать и это иногда полезно smile.gif
Вот Ваш мастер как раз и может генерить write request c 128 байтами в нагрузке, read request c 64 байтами. А вот на материнке такого мастера нет.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 18 2009, 12:30
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dmitry-tomsk - благодарствую.
Тут кстати подключил вчера чипскоп - и что меня удивило - непрерывные посылки broadcast from RootComplex vendor defined message - данные каждый раз разные, а ID-шки и адреса одниковые. Что на openSUSE 32бит что на WinXPSP2 32бит...
Не подскажете что оси постоянно пытаются в мой дизайн записать?
И есчё что интересно - дизайн с xapp1022 - нормально мапился в openSUSE как временный файл (или файл подкачки, не вспомню я счас эти тонкости), и можно было писать читать по 4 байта в реквесте, а мой дизайн мапится - мапится, только read реквестов я не вижу, а с write - только те что broadcast from RootComplex vendor defined message wacko.gif . Тут вот странно, ведь реквесты заходить должны всегда ? 07.gif То есть понятно что свой драйвер будет, этот финт ушами был для проверки что мне заходит с компа, но почему такая существенна разница на такой простой реализации??
И потому тут есть вопрос такой, скорее уточнение, потому как вроде ясно, но хотелось утчонить (из-за вышеупомянутого, что вводит в некоторое недоумение) у работавшего с этим чЮдом - на сколько я понял мне приходят запросы с юзер уровня - и на них я отвечаю, а всякие специфические запросы можно игнорить - в смысле не отвечать на них (в спецификации по крайней мере написано что можно) - то есть не чревато ли это чем то? smile3046.gif
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Aug 18 2009, 15:51
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Kuzmi4 @ Aug 18 2009, 16:30) *
2 dmitry-tomsk - благодарствую.
Тут кстати подключил вчера чипскоп - и что меня удивило - непрерывные посылки broadcast from RootComplex vendor defined message - данные каждый раз разные, а ID-шки и адреса одниковые. Что на openSUSE 32бит что на WinXPSP2 32бит...
Не подскажете что оси постоянно пытаются в мой дизайн записать?
И есчё что интересно - дизайн с xapp1022 - нормально мапился в openSUSE как временный файл (или файл подкачки, не вспомню я счас эти тонкости), и можно было писать читать по 4 байта в реквесте, а мой дизайн мапится - мапится, только read реквестов я не вижу, а с write - только те что broadcast from RootComplex vendor defined message wacko.gif . Тут вот странно, ведь реквесты заходить должны всегда ? 07.gif То есть понятно что свой драйвер будет, этот финт ушами был для проверки что мне заходит с компа, но почему такая существенна разница на такой простой реализации??
И потому тут есть вопрос такой, скорее уточнение, потому как вроде ясно, но хотелось утчонить (из-за вышеупомянутого, что вводит в некоторое недоумение) у работавшего с этим чЮдом - на сколько я понял мне приходят запросы с юзер уровня - и на них я отвечаю, а всякие специфические запросы можно игнорить - в смысле не отвечать на них (в спецификации по крайней мере написано что можно) - то есть не чревато ли это чем то? smile3046.gif

Ну про openSUSE это к специалистам по ней, а про специфичные запросы - на них точно можно не отвечать smile.gif Насчёт проверки на проектах xapp тоже ничего сказать не могу, когда я делал свой контроллер их ещё не было.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 18 2009, 15:55
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dmitry-tomsk - в обсчем есчё раз большое благодарствую... На днях посмотрим что там драйвер нам скажет... За одно и узнаем про DMA котроллер и PCIe в линухе smile.gif
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 4 2009, 09:44
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Цитата(NiOS @ Mar 4 2008, 13:22) *
Кто работал и добился, чтобы сходились тайминги для хард-ядра x8 - подскажите "настройки" ISE (для Multi PAR).

В FAQ Xilinx советует только использовать мульти PAR - но это только уменьшает число ошибок. Но не убирает их полностью.

Возникли такие же трудности - времянка вообсче плохая - и как раз ошибок много в этом самом эндпойнте. ИСЕ вообсче отказывается собирать дизайн на этапе мапа - не подскажете как вы выходили из положения ?? При чём на этапе синтеза мин период 5.9 нс , а на этапе мапа - слак у клока в ендпойнте 10 НС(8нс период) !!
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Sep 5 2009, 06:10
Сообщение #32





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Цитата(Kuzmi4 @ Sep 4 2009, 13:44) *
Возникли такие же трудности - времянка вообсче плохая - и как раз ошибок много в этом самом эндпойнте. ИСЕ вообсче отказывается собирать дизайн на этапе мапа - не подскажете как вы выходили из положения ?? При чём на этапе синтеза мин период 5.9 нс , а на этапе мапа - слак у клока в ендпойнте 10 НС(8нс период) !!



Да такая же проблема... не могу уложиться в тайменги. Причем на х1 и частоте 65 МГц все работает отлично. при переходе на х4 и частоту 125МГц тайменги укладываются, ядро временно работает (гонит счетчик), но через некоторое время "отваливается" по тому что на такой частоте нужно отслеживать Transaction Receiver Credits Available (как это делать я еще не разобрался). А на х4 и частоте 250МГц начинают появляться тайминг error.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 5 2009, 11:47
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 demon_rt - а не подскажете что есть Transaction Receiver Credits Available ?
На счёт времянок - когда просматривал xapp859 дизайн - там всё законвееризировано оказалось - где то даже встречал в каментах, что это сделано как раз для того чтобы времянки сошлись...
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Sep 6 2009, 06:04
Сообщение #34





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Transaction Receiver Credits Available это проверка на наличие свободного места в буферах приемника ядра. Является одним из методов борьбы с переполнением в режимах х4 и х8. Смотрите ug167. На счет тайменгов, удалось оптимизировать проект путем замены фи-фо на двухпортовую память и некоторой коррекции кода. Но столкнулся с такой проблемой. В режиме х4 передачи данных на хост (пишу в оперативную память в режиме DMA), Endpoint прогоняет порядка 70Гб со скоростью 800 Мб/с и предача останавливается...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 6 2009, 14:21
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 demon_rt - благодарствую laughing.gif
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 8 2009, 07:46
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 demon_rt - кстати, на счёт остановки - а как это выглядит ? Вы это уже побороли ??
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Sep 8 2009, 18:54
Сообщение #37





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Цитата(Kuzmi4 @ Sep 8 2009, 11:46) *
2 demon_rt - кстати, на счёт остановки - а как это выглядит ? Вы это уже побороли ??


Нет еще не поборол. Обрыв транзакций происходит в различные моменты времени, что не похоже на переполнение буферов. После обрыва в конфигурационном пространстве порта PCI Express на хосте в Secondary Status Register появляется Signaled Target Abort и Fatal Error. Причем линк ап не падает в момент обрыва транзакции, но дальнейшая передача невозможна. Причину возникновения данных ошибок я еще не понял.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 16 2009, 12:42
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Вопросик есчё один есть , не знаю как бы получше его решить.
СОсбно вся проблема заключается в том , что нужно считать адрес для 64-битного адресного пространства (задал через BAR0/BAR1). Считываем через Configuration (CFG) interface - это понятно.. Но как считать, когда уже конфиг произошёл (собсно вопрос именно в определении времени когда комп уже сконфигурил мне бары) и в барах уже корректный адрес ?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 29 2009, 16:17
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Здравствуйте.

А никто не пробовал работать с 64-битными барами ? 1111493779.gif
Вопрос собственно почему возник - имеем 64-битный бар, он выбран естественно для того чтобы иметь 64-битный адрес на входе, а не делать всякие ре-органайзеры когда нужно много куда то писать. Смотрим в спецификацию для PCI Express версии 1.1 на страницу 62, видим Figure 2-13: Request Header Format for 64-bit Addressing of Memory , и радуемся. laughing.gif
Вот пока требуемый объём был не больше 4 ГБ - мать стартовала, но при адресации к этому 64-битному бару хедер был странный - не по спецификации - Fmt == 01/11 (тут вроде норма) а вот адрес - на 32 бита, а потом сразу данные (это при записи, при чтении - там указание от rrem - что валидные только верхние 32 - как раз где 32-бита адреса).. cranky.gif
Захотелось поставить больше 4ГБ - одни матери тупо повисают при старте (c 945/965 чипсет), та что поновей - постоянно перезагружается (мать GA-P55). На последней матери стоит 860 Core i7 с него напрямую выходит PCI-Express на разъём - на него и поцепили нашу ПП с Virtex5, чтоб избавить себя от всяких чипсетов/мостов по пути к процессору. ОС - Linux (Suse 11.1) PCI Express Endpoint корка - 1.11 (ISE 11.2).

Это я где то проглядел/недочитал или как это понимать вообсче вот такое поведение ??

И есчё - не подскажете кто пробовал - на виндовсе при запросе памяти меньше 4ГБ - входной хедер соответствует тому, что в спецификации для 64-битной адресации ?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 19 2009, 08:45
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Обновлю информацию, может кому будет полезно в будущем:
1) при запросе памяти меньше 4ГБ - входной хедер по размеру соответствует 32-х битному(там 32б верхние адреса отпадают, написано в спецификации).
2) Тестирование на запрос памяти > 4ГБ проводилось так же на других десктоповых машинах - всё то же. В конце концов добрался до HP ML370 - на нём не висло и не ресетилось, биос просто забил при конфигурации на эту область и пошёл себе дальше... Вот такая поддержка спецификации laughing.gif в обсчем и целом
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Nov 19 2009, 16:36
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Kuzmi4 @ Nov 19 2009, 12:45) *
Обновлю информацию, может кому будет полезно в будущем:
1) при запросе памяти меньше 4ГБ - входной хедер по размеру соответствует 32-х битному(там 32б верхние адреса отпадают, написано в спецификации).
2) Тестирование на запрос памяти > 4ГБ проводилось так же на других десктоповых машинах - всё то же. В конце концов добрался до HP ML370 - на нём не висло и не ресетилось, биос просто забил при конфигурации на эту область и пошёл себе дальше... Вот такая поддержка спецификации laughing.gif в обсчем и целом

Вот интересно, а зачем понадобилось делать такой объём памяти в BAR? Это регистровый файл в Вашем устройстве такой большой?
Даже для ДМА контроллера пакеты с поддержкой 64 битного адреса нужны ли вообще для ПЛИС? Длина пакета на слово больше, хотя бы теоретически это уменшить пропускную способность. Выделить кусок непрерывной памяти больше нескольких мегабайт под windows уже будет проблемой, а для SGDMA нужен такой огромный объём памяти под дескрипторы, что ПЛИС придётся хранить их во внешней памяти. Для x1 два буфера по 1 МБайт ping-pong давали практически теоретический максимум, не пробовал на x4 или x8, может там и мало будет, но никак не ГБ.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 23 2009, 10:11
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dmitry-tomsk - нам там очень понравились форматы для TLP пакетов, очень они подходили под нашу задумку - ничего дополнительного городить не нужно было в плиске - всё б уже готовое с матери приходило б ( в смысле длинна пакета есть, адрес в 64битном формате, сами данные ну и всё такое - красота, бери только и пиши laughing.gif ). Пакеты то по 4КБ прихордят по стандарту (реально даже меньше).
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 3 2009, 12:44
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



И снова здравствуйте.

В принципе, думал что знаю PCI Express Block Plus, но тут получилась интересная ситуация. Хотелось бы получить консультацию профи, потому как мне не ясно на данный момент отчего там чЮдеса творятся.

Есть 2 прожекта - оба минимальные доработки примера от Xilinx.
В первом архиве используется прямая адресация + обращение к барам - изменения по сравнению с примером существенные.
Во втором архиве - заменён только контроллер памяти из примера - тестовая прога(всмысле драйвер) пишет всегда 1DW, так что rd/wr_byte_enable не нужны, совсем примтивный арбитраж.
Вроде бы на мой взгляд оба проекта практически идентичны, однако при работе с драйвером под SUSE 11.1 в первой реализации по 0x80 адресу в BAR0 появляются нули (они там островками - видна даже периодичность), а вот во второй реализации никаких нулей где бы то ни было в BAR0/1 не наблюдается. cranky.gif На симуляции - оба примера присылают одинаковые данные для адреса 0x80 и выше в BAR0 07.gif

Прикрепленный файл  pcie_ep_original_adopter_arch01.rar ( 585.57 килобайт ) Кол-во скачиваний: 178

Прикрепленный файл  pcie_ep_original_adopter_arch02.rar ( 582.53 килобайт ) Кол-во скачиваний: 173
Go to the top of the page
 
+Quote Post
serebr
сообщение Dec 3 2009, 13:31
Сообщение #44


Частый гость
**

Группа: Свой
Сообщений: 191
Регистрация: 10-01-05
Из: San Francisco Bay, Silicon Valley
Пользователь №: 1 869



Цитата(Kuzmi4 @ Nov 19 2009, 14:45) *
Обновлю информацию, может кому будет полезно в будущем:
1) при запросе памяти меньше 4ГБ - входной хедер по размеру соответствует 32-х битному(там 32б верхние адреса отпадают, написано в спецификации).

Насколько я понял спецификацию, при обращении к любому адресату, находящемуся в младших 4 Гбайт адресного пространства, инициатор обязан всегда использовать 32-битную адресацию, т.е. 3 DW header. Т.е. независимо от того, как на End Point был объявлен BAR0/1 (2 по 32 или 1 по 64 бит), если система посадила End Point в младшие 4 Гбайт, то от PCIe свитча будут всегда приходить запросы, имеющие 3 DW header (32 бит адресация).

P.S. Тоже самое относится и к встроенному мастеру на End Point: если адрес получателя "сидит" в младших 4 Гбайт, то инициатор мастера обязан использовать 3 DW header, если выше 4 Гбайт - 4 DW. Оно и понятно примерно, зачем так сделано: откуда мастеру End Point'а знать, как был заявлен другой End Point, к которому ему надо обратиться. А так всё просто - шлём короткий или длинный header и плюём на то, что другому End Point'у хотелось - 32 или 64 бит адресного пространства.

Сообщение отредактировал serebr - Dec 3 2009, 13:38
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 3 2009, 14:59
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Последние новости с полей 1111493779.gif
в архивах прожекты отличающиеся только адресацией на чтение. Как можно понять один даёт на тестовой железяке "нули", а другой нет. Вся разница заключается в том что в дизайне без "нулей" (изначальный который) адрес для чтения был на 12 бит (байтовая адресация), при чём при подаче на "контроллер" памяти адрес сводился к двордовому (2 нижние бита адреса отрезались). Изменение заключается в том, что я убрал это "обрезание" и формирую read адрес изначально в двордовом представлении.
Понять пока глубокую суть этого не могу wacko.gif
Помогите постигнуть дзен smile.gif

Прикрепленный файл  prj_v03_NoZ.rar ( 582.42 килобайт ) Кол-во скачиваний: 145

Прикрепленный файл  prj_v04_Z.rar ( 582.72 килобайт ) Кол-во скачиваний: 157
Go to the top of the page
 
+Quote Post
serebr
сообщение Dec 4 2009, 04:00
Сообщение #46


Частый гость
**

Группа: Свой
Сообщений: 191
Регистрация: 10-01-05
Из: San Francisco Bay, Silicon Valley
Пользователь №: 1 869



Пока нет времени детально разобраться с приведенными логами.
Первое что приходит в голову - несоблюдение правила 4KB границ адресных диапазонов при формировании запроса (пункт 2.2.7 спецификации). Вторая возможная причина - нарушение границы адресного диапазона для правила Read Completion Boundary (RCB, пункт 2.3.1.1).
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 4 2009, 09:19
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 serebr - а не могли бы вы учтонить(пример всмысле)? Потому как в принципе понимаю о чём речь, только не могу понять как это может быть привязано к изменению.
(прицепил выше не логи а полностью прожекты)
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 4 2009, 16:10
Сообщение #48


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



тоже как-то не хватает времени посмотреть проекты, но упоминание об усечении адреса и 1 dw посылках наводит на следующую мысль: даже если посылается 1 dw, но по байтовому адресу, то придёт 2 dw в payload data, и в first last dw byte enables будут не 1, а 0 и 1 со сдвигом в зависимости от исходного адреса. Адрес в пакете будет усечённый. Пустые байты скорее всего будут заполнены нулями, хотя это зависит от мастера, я в своём их не обнулял.
Может поможет!
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 11 2009, 12:41
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Новости с полей:
после того как в отправке Completition Header-е поле Lower Address стал наполнять байтовым адресом вырезанным из получаемого (нижние 2 бита меняю согласно спецификации как и раньше) и изменил процедуру отправки прерывания (стало MSI, как по UG) - всё заработало без сбоев.
В обсчем как обычно - нужно внимательно читать ДШ и не пропускать мелочи laughing.gif
Go to the top of the page
 
+Quote Post
serebr
сообщение Dec 11 2009, 12:48
Сообщение #50


Частый гость
**

Группа: Свой
Сообщений: 191
Регистрация: 10-01-05
Из: San Francisco Bay, Silicon Valley
Пользователь №: 1 869



Цитата(Kuzmi4 @ Dec 11 2009, 18:41) *
Новости с полей:
после того как в отправке Completition Header-е поле Lower Address стал наполнять байтовым адресом вырезанным из получаемого (нижние 2 бита меняю согласно спецификации как и раньше) и изменил процедуру отправки прерывания (стало MSI, как по UG) - всё заработало без сбоев.
В обсчем как обычно - нужно внимательно читать ДШ и не пропускать мелочи laughing.gif

Поздравляю! Мне всё это ещё предстоит пройти, но своим путём, т.к. делать надо не на Xilinx'е, а на Lattic'e.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jan 6 2010, 09:05
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



И снова здравствуйте laughing.gif

Имею неприятную специфику работы этого самого PCI Express Block Plus:
Дата-трансферы без прерываний бегают нормально rolleyes.gif
Отсылка прерывания по контрольным точкам (то есть редко) тоже работала нормально с трансферами.
А вот если сделать эти дата-трансферы пачками, упорядочить (запись перед трансфером управляющей информации трансфера-запись/чтение,адрес,длинна), прерывания после обработки трансферов(то есть довольно часто) - тогда возникает этот самый неприятный момент - прога на PC виснет. Проверялось как на Р55 платформе так и (да простят меня Одмины ) на ML370. И была замечена интересная специфика - на серверной платформе зависания начинались после гораздо меньшего числа трансферов чем на Р55 (грубо говоря если на Р55 работало полдня без вопросов, то на серверной после ~100-300 трансферов висли) 07.gif
В результате исследования со стороны корки выяснилось что пред-момент зависона выглядит так: получаю трансфер обрабатываю, отсылаю прерывание,получаю подтверждение от корки, что запрос прерывания от меня воспринят и дальше - тишина, входящих запросов от PC нет.. На стороне PC удалось увидеть пару раз (логи ядра в линухе), что виснем как раз на ожидании прерывания... PCIE анализера нет, чтоб посмотреть ушёл ли пакет в мать или нет, но реально видно что корка работает и рапортует в нормальном режиме и это беспокоит.

Никто не сталкивался с таким чЮдесным функционированием ?? 1111493779.gif
Как вариант - может я там галочки какие пропустил ? smile3046.gif
Скриншоты конфигурирования и автомат отсылки прерывания прилагаю (на PC разрешено 1 прерывание, отсылаю 1 прерывание). Потому что нахожусь в каком то тупике - неясно где поломалось...
Прикрепленный файл  interrupt_block.v ( 2.98 килобайт ) Кол-во скачиваний: 339

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение


Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение


Прикрепленное изображение
Go to the top of the page
 
+Quote Post
jojo
сообщение Jan 11 2010, 11:12
Сообщение #52


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



Всё слежу за новостями борьбы с PCI Express, так всё меньше хочется делать свою обёртку.

Вы не пробовали ядро PLDA для Virtex-5? Там и тестбенч есть, и обёртка вокруг ядра Endpoint Block Plus.
Ядро можно получить после короткой переписки по e-mail. Затем уговорить ядро работать стандартным образом.
Go to the top of the page
 
+Quote Post
serebr
сообщение Jan 11 2010, 11:17
Сообщение #53


Частый гость
**

Группа: Свой
Сообщений: 191
Регистрация: 10-01-05
Из: San Francisco Bay, Silicon Valley
Пользователь №: 1 869



Цитата(jojo @ Jan 11 2010, 17:12) *
Всё слежу за новостями борьбы с PCI Express, так всё меньше хочется делать свою обёртку.

Вы не пробовали ядро PLDA для Virtex-5? Там и тестбенч есть, и обёртка вокруг ядра Endpoint Block Plus.
Ядро можно получить после короткой переписки по e-mail. Затем уговорить ядро работать стандартным образом.

Вот бы уговорить работать ядро PCIe от PLDA для Lattice! Само ядро имеется, а с таблеткой для него - труба.
Go to the top of the page
 
+Quote Post
jojo
сообщение Jan 11 2010, 16:05
Сообщение #54


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



Предполагаю, что ядро PLDA по способу лечения не отличается от IP-ядер Lattice.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jan 12 2010, 09:50
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Цитата(jojo @ Jan 11 2010, 13:12) *
Всё слежу за новостями борьбы с PCI Express, так всё меньше хочется делать свою обёртку.

Вы не пробовали ядро PLDA для Virtex-5? Там и тестбенч есть, и обёртка вокруг ядра Endpoint Block Plus.
Ядро можно получить после короткой переписки по e-mail. Затем уговорить ядро работать стандартным образом.

С того, что я знаю - ядру от PLDA требуется внешняя физика. Потому не подходит если юзать с трансиверами в виртексе. Или я где то ошибся ?
Go to the top of the page
 
+Quote Post
jojo
сообщение Jan 12 2010, 16:52
Сообщение #56


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



В Virtex-5 встроенные трансиверы, кроме краевого разъёма PCI Express и самой ПЛИС ничего не нужно.

Ядро PLDA (точнее одно из ядер) является обёрткой вокруг Endpoint block plus. Endpoint block IP параметризуем в Xilinx Coregen, ядро PLDA параметризуем в визарде PLDA. Затем всё сводим под крышей одного проекта в ISE.
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Aug 22 2010, 19:15
Сообщение #57





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



У меня такая проблема: устройство на базе Endpoint Block Plus
v1.9 не на всех PC работает в режиме х8. Перепробовал кучу машин с различными мостами. В некоторых материнках, устройство сразу работает на х8, в других при первом включении на х1, а после перезагрузки(помогает кнопка ресет), переходит на х8, в третьих только на х1, и никакая перезагрузка не помогает, не смотря на то, что на материнке написано х8 и в биосе тоже все нормально. Неужели Endpoint Block Plus такой привередливый к типу чипсетов?????
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 4 2011, 16:57
Сообщение #58


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(demon_rt @ Aug 22 2010, 23:15) *
У меня такая проблема: устройство на базе Endpoint Block Plus
v1.9 не на всех PC работает в режиме х8. Перепробовал кучу машин с различными мостами. В некоторых материнках, устройство сразу работает на х8, в других при первом включении на х1, а после перезагрузки(помогает кнопка ресет), переходит на х8, в третьих только на х1, и никакая перезагрузка не помогает, не смотря на то, что на материнке написано х8 и в биосе тоже все нормально. Неужели Endpoint Block Plus такой привередливый к типу чипсетов?????

Тема привередливости к чипсетам меня тоже интересует.
demon_rt,что Вам удалось за год на эту тему выяснить?
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 8 2011, 10:37
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 4 2011, 19:57) *
Тема привередливости к чипсетам меня тоже интересует.
demon_rt,что Вам удалось за год на эту тему выяснить?


PCI Express платы на основе Xilinx Virtex 5 выпускаем давно. С такими проблемами не сталкивался.
Проверьте:
1. Скорость загрузки ПЛИС - нужна параллельная загрузка.
2. Выводы PCI Express подключены через конденсаторы. Проверьте их, может там попались разные конденсаторы.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 8 2011, 10:49
Сообщение #60


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 8 2011, 14:37) *
PCI Express платы на основе Xilinx Virtex 5 выпускаем давно.

Какие реальные скорости получаете для передач "Память ПК->Буферная память на PCIe х 1 плате" ( System Memory Read ) в зависимости от чипсета матери?

Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 8 2011, 13:13
Сообщение #61


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 8 2011, 13:49) *
Какие реальные скорости получаете для передач "Память ПК->Буферная память на PCIe х 1 плате" ( System Memory Read ) в зависимости от чипсета матери?


Для реализации x1 у нас используется PEX8311. Насколько я помню, на вывод удалось достичь 150 МБайт/с.

Для x8 и чипсет P55 - 1050 МБайт/с. Если найду переходник, то измерю скорость Virtex 5 в режиме x1
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 8 2011, 13:46
Сообщение #62


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 8 2011, 17:13) *
Для реализации x1 у нас используется PEX8311. Насколько я помню, на вывод удалось достичь 150 МБайт/с.

Этот показатель как-то зависил от матери?
Цитата(dsmv @ Aug 8 2011, 17:13) *
Для x8 и чипсет P55 - 1050 МБайт/с. Если найду переходник, то измерю скорость Virtex 5 в режиме x1

Заранее благодарю.

Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 8 2011, 15:42
Сообщение #63


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Вот результаты измерения.
Компьютер - Intel I7 2.8 ГГц, системная плата GIGABYTE GA-P55-UD6

Модуль AMBPEX5 установлен через переходник x1

Ввод данных (из устройства в компьютер):
1. системная память (непрерывная) 128 МБайт - 219 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 218 Мбайт/с

Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 201 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 201 Мбайт/с

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

Ввод данных (из устройства в компьютер):
1. системная память (непрерывная) 128 МБайт - 639 Мбайт/с
2. пользовательская память (разрывная) 1024 Мбайт - 1534 Мбайт/с

Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 1080 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 1080 Мбайт/с

Модуль AMBPEX1 - используется контроллер PEX8311

Ввод данных (из устройства в компьютер):
1. системная память (непрерывная) 128 МБайт - 177 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 160 Мбайт/с

Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 185 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 120 Мбайт/с


Для режима x1 скорости от компьютера практически не зависят. Хотя я это давно не проверял.
Для режима x8 - от компьютера сильно зависят. На большинстве компьютеров нашей фирмы, скорость ввода в режиме x8 - 1300 - 1400 Мбайт/с. У меня - около 1500.

Это, кстати, не предел. В новом контроллере частота внутренней шины увеличена до 266 МГц. По предварительным измерениям скорость увеличена до 1600 Мбайт/с.


Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 8 2011, 15:58
Сообщение #64


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 8 2011, 19:42) *
Вот результаты измерения.
Компьютер - Intel I7 2.8 ГГц, системная плата GIGABYTE GA-P55-UD6

Модуль AMBPEX5 установлен через переходник x1

Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 201 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 201 Мбайт/с

Модуль AMBPEX1 - используется контроллер PEX8311

Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 185 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 120 Мбайт/с

Для режима x1 скорости от компьютера практически не зависят. Хотя я это давно не проверял.

Огромное Вам спасибо.
Скажите, при выводе данных из компьютера в устройство в чём разница между понятиями "системная память (непрерывная)" и "пользовательская память (разрывная)"?
И почему на AMBPEX5 через переходник x1 скорости вывода в обоих этих случаях равны, а на PEX8311 сильно отличаются?
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 8 2011, 16:08
Сообщение #65


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 8 2011, 18:58) *
Огромное Вам спасибо.
Скажите, при выводе данных из компьютера в устройство в чём разница между понятиями "системная память (непрерывная)" и "пользовательская память (разрывная)"?
И почему на AMBPEX5 через переходник x1 скорости вывода в обоих этих случаях равны, а на PEX8311 сильно отличаются?


Системная память выделяется в ядре Windows и является непрерывной по физическим адресам.
Пользовательская память выделяется на 3 кольце и является фрагментированной. На физическом уровне состоит из страниц по 4 кбайта.

В моём контроллере дескрипторы объедены в блок дескрипторов.

Посмотрите мои доклады: http://ds-dev.ru/projects/ds-dma/wiki/%D0%...%86%D0%B8%D0%B8

Там же есть исходный код нового контроллера.

Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 8 2011, 17:45
Сообщение #66


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 8 2011, 19:42) *
Вот результаты измерения.
Компьютер - Intel I7 2.8 ГГц, системная плата GIGABYTE GA-P55-UD6

Модуль AMBPEX5 установлен через переходник x1
Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 201 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 201 Мбайт/с

В моём контроллере дескрипторы объедены в блок дескрипторов.
Посмотрите мои доклады: http://ds-dev.ru/projects/ds-dma/wiki/%D0%...%86%D0%B8%D0%B8
Там же есть исходный код нового контроллера.

А если Ваш код контроллера, который в Virtex 5 давал 201 Мбайт/с разместить в Спартан-6 используя его аппаратное ядро PCIe x 1, то можно ли ожидать получение таких же скоростей 200 Мбайт/с ?
Или в Virtex 5 есть нечто, чего нет в Спартан-6 из-за чего такие скорости на Спартане-6 не получить?
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 9 2011, 04:22
Сообщение #67


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 8 2011, 20:45) *
А если Ваш код контроллера, который в Virtex 5 давал 201 Мбайт/с разместить в Спартан-6 используя его аппаратное ядро PCIe x 1, то можно ли ожидать получение таких же скоростей 200 Мбайт/с ?
Или в Virtex 5 есть нечто, чего нет в Спартан-6 из-за чего такие скорости на Спартане-6 не получить?


Я собираюсь сделать реализацию контрроллера для Virtex 6 и Spartan 6. Но в будущем. Я думаю, что для Spartan 6 скорость 200 Мбайт/с получится. Если хотите, подключайтесь к проекту. Сделаем реализацию для Spartan 6.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 9 2011, 04:29
Сообщение #68


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



dsmv, а пробовали ли Вы Ваше ядро на PCIe GEN2?
Удалось ли получить увеличенные скорости по сравнению с GEN1?
Кстати, есть ли сейчас матери со слотами PCIe x1 GEN2?
Будет ли встроенное Spartan 6 ядро PCIe x1 работать на PCIe x1 GEN2 с увеличенной скоростью?
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 9 2011, 04:53
Сообщение #69


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 9 2011, 07:29) *
dsmv, а пробовали ли Вы Ваше ядро на PCIe GEN2?
Удалось ли получить увеличенные скорости по сравнению с GEN1?
Кстати, есть ли сейчас матери со слотами PCIe x1 GEN2?
Будет ли встроенное Spartan 6 ядро PCIe x1 работать на PCIe x1 GEN2 с увеличенной скоростью?


В моём компьютере PCI Express 2.0; Но Virtex 5 (и Spartan6) поддерживают только PCIE v1.1; Так что увеличения скорости при установке в слот PCIE v2.0 нет.
Virtex 6 поддерживает PCIE v2.0 и я собираюсь сделать такую реализацию.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 9 2011, 05:09
Сообщение #70


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 9 2011, 08:53) *
В моём компьютере PCI Express 2.0

И даже PCIe x 1 слоты PCI Express 2.0? Если так, то назовите пожалуйста эту мать.
Цитата(dsmv @ Aug 9 2011, 08:53) *
Virtex 6 поддерживает PCIE v2.0 и я собираюсь сделать такую реализацию.

Наверное на Artix-7 подешевле будет.

Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 9 2011, 06:17
Сообщение #71


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 9 2011, 08:09) *
И даже PCIe x 1 слоты PCI Express 2.0? Если так, то назовите пожалуйста эту мать.

Наверное на Artix-7 подешевле будет.


Я уже называл: GA-P55-UD6 http://www.gigabyte.ru/products/mb/specs/ga-p55-ud6_10.html

PCIe x1 - это PCI Express v1.1; Но он расположен крайне неудобно и я его практически не использую.

Использую два слота:
PCIE_x8_1 - PCI Express v2.0 x8
PCIE_x4_1 - PCI Express v1.1 x4

Для реализации x1 они ведут себя одинаково.
Кстати, есть большая разница для реализации PCI Express x4;
Модуль AMBPEX8 установленный в PCIE_x8_1 показывает скорость приёма 510 Мбайт/с, а при установке в PCIE_x4_1 - 710 Мбайт/с.
А вот для выдачи данных - наоборот, скорость в PCIE_x8_1 больше чем в PCIE_x4_1; ( 560 и 410 Мбайт/с )
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 9 2011, 07:42
Сообщение #72


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 9 2011, 10:17) *
Я уже называл: GA-P55-UD6 http://www.gigabyte.ru/products/mb/specs/ga-p55-ud6_10.html
А вот для выдачи данных - наоборот, скорость в PCIE_x8_1 больше чем в PCIE_x4_1; ( 560 и 410 Мбайт/с )

Не возникают ли провалы в скорости если начинают работать другие устройства, использующие DMA Bus Master, например если выводимые в плату данные будут поступать из гигабитной сети или с HDD?

Не пробовали ли чипсет x58, возможно там результаты будут повыше?
Как-то расстраивает 410 Мбайт/с на вывод на PCIE_x4_1...
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 9 2011, 09:39
Сообщение #73


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 9 2011, 10:42) *
Не возникают ли провалы в скорости если начинают работать другие устройства, использующие DMA Bus Master, например если выводимые в плату данные будут поступать из гигабитной сети или с HDD?

Не пробовали ли чипсет x58, возможно там результаты будут повыше?
Как-то расстраивает 410 Мбайт/с на вывод на PCIE_x4_1...


Серьёзных исследований не проводили. На первый взгляд - скорость не падает. Пропускная способность памяти и chipseta на порядок выше, что PCI Express x8.

Ну так можно установить в слот x8 и получить 500 Мбайт/с. А если сделать реализацию x8 - то все 1080 Мбайт/с.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 9 2011, 09:48
Сообщение #74


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 9 2011, 13:39) *
Кстати, есть большая разница для реализации PCI Express x4;

А вот для выдачи данных - наоборот, скорость в PCIE_x8_1 больше чем в PCIE_x4_1; ( 560 и 410 Мбайт/с )

Ну так можно установить в слот x8 и получить 500 Мбайт/с. А если сделать реализацию x8 - то все 1080 Мбайт/с.

Поясните пожалуйста, правильно ли я Вас понял, что реализация PCI Express x4 (т.е Virtex 5 работающий как бы в режиме PCI Express x4 ) в слоте PCIE_x4_1 на вывод даст скорость 4100 Мбайт/с, а в слоте PCIE_x8_1 на вывод даст скорость 560 Мбайт/с?
Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 9 2011, 10:01
Сообщение #75


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(FLTI @ Aug 9 2011, 12:48) *
Поясните пожалуйста, правильно ли я Вас понял, что реализация PCI Express x4 (т.е Virtex 5 работающий как бы в режиме PCI Express x4 ) в слоте PCIE_x4_1 на вывод даст скорость 4100 Мбайт/с, а в слоте PCIE_x8_1 на вывод даст скорость 560 Мбайт/с?


Нет. Неправильно.
Есть модуль AMBPEX8. Там реализован PCI Express x4 на ПЛИС Virtex 4 FX20. В слоте PCIE x4 скорость выдачи около 400 Мбайт/с. В слоте PCIE x8 скорость выдачи 560 Мбайт/с.
Я думаю, что реализация на Spartan 6 PCI Express x4 даст похожие цифры.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Aug 9 2011, 10:49
Сообщение #76


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832



Цитата(dsmv @ Aug 9 2011, 13:39) *
Серьёзных исследований не проводили. На первый взгляд - скорость не падает.

Стоило бы проверить.
Где-то на этом форуме видел тему, что кто-то жаловался на падение скорости подобного рода контроллера, как потом выяснилось, из-за большой активности других устройств на PCIe .
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Aug 28 2011, 16:27
Сообщение #77





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Цитата(dsmv @ Aug 8 2011, 19:42) *
Модуль AMBPEX5 в режиме x8


Вывод данных ( из компьютера в устройство )
1. системная память (непрерывная) 128 МБайт - 1080 Мбайт/с
2. пользовательская память (разрывная) 128 Мбайт - 1080 Мбайт/с


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

Go to the top of the page
 
+Quote Post
dsmv
сообщение Aug 30 2011, 10:34
Сообщение #78


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Цитата(demon_rt @ Aug 28 2011, 19:27) *
При записи из компьютера в устройство 128Байт данных, на шине RX PCI Express Block Plus приходят 16 TLP длинной 1DW со сдвигом данных.


Это какая-то странная ситуация. Пришлите отправляемый запрос, надо на него посмотреть.
Go to the top of the page
 
+Quote Post
demon_rt
сообщение Oct 27 2011, 18:25
Сообщение #79





Группа: Участник
Сообщений: 13
Регистрация: 20-01-09
Пользователь №: 43 665



Такой вопрос, кто нить сталкивался с изохронным режимом (приложение А спецификации) работы PCI Express.
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 15 2011, 11:54
Сообщение #80


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



Читая форум, прихожу к мысли что с проблемами на этапе установки соединения столкнулся один я.
Есть две платы 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 тоже очень не хочется, начальство имеет планы на использование конкретно его в будущих разработках. Буду рад любым подсказкам и наводкам
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 15 2011, 12:59
Сообщение #81


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Jack_of_Shadows @ Dec 15 2011, 15:54) *
Читая форум, прихожу к мысли что с проблемами на этапе установки соединения столкнулся один я.
Есть две платы 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 делаем, вот не хотелось бы тоже наколоться.
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 16 2011, 07:54
Сообщение #82


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



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

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

От прошивки бы и проги не отказался sm.gif Хотя в данный момент они вряд ли помогут с проблемами на нижнем уровне. Кстати, если вы имеете отношение к Томскому "Интенсис" и их SGDMA, то я качал демонстрационную версию модуля, однако у нас плисы разные (у меня XC5VFX30T), и я так и не смог адаптировать ucf под свою плату (сыпались какие-то ошибки с GTP/GTX трансиверами).
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 16 2011, 11:44
Сообщение #83


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Jack_of_Shadows @ Dec 16 2011, 11:54) *
Процессорная плата - MSM945 от Digital-Logic (ныне Kontron).
Плата с плисом - SMT101 от Sundance (они кстати предоставляют тестовую прошивку под PCIe, но она так же не работает как и пример от корки, что лишний раз намекает что проблемы либо в связи, либо в root complex). (как я заметил вы ищете примеры разводки, но, к несчастью, от Sundance мне удалось получить только схему)

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

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


Спасибо!
Мне кажется дело со сбросом. На отладочных китах сброс не используется, вместо него кнопка для ручного сброса. Попробуйте его вообще отключить в прошивке. Адаптировать sgdma помогу, самому интересно, шлите ucf файл.
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 16 2011, 12:20
Сообщение #84


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



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


Код
###############################################################################
# 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 - Dec 16 2011, 12:24
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 16 2011, 13:01
Сообщение #85


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



OK, в понедельник займусь
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 16 2011, 13:25
Сообщение #86


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



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

На форуме тех поддержки xilinx предлагали поиграться настройками трансиверов (размахом выходного сигнала и эмфазой) - тоже не изменило ничего.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 16 2011, 18:47
Сообщение #87


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Jack_of_Shadows @ Dec 16 2011, 16:25) *
sys_reset повесил на вечную 1, При загрузке наблюдаю как trn_reset все также мигает 3 раза. И картинка не меняется не на йоту.

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

Как грузится плис - со флэши? В PC104 нет сигнала присутствия в слоте, может загрузка прошивки запаздывает?
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 18 2011, 20:22
Сообщение #88


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(dmitry-tomsk @ Dec 16 2011, 21:47) *
Как грузится плис - со флэши? В PC104 нет сигнала присутствия в слоте, может загрузка прошивки запаздывает?

Странный ucf, в коментариях тактовая 250 МГц, а в таймингах 100 МГц. Прикрепил прошивку для 100 МГц
Прикрепленные файлы
Прикрепленный файл  ST101.rar ( 228.11 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 19 2011, 08:03
Сообщение #89


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



ucf сгенерирован core-генератором, в настройках там точно 100 МГц стояло, и на плате точно 100 МГц идет. Сам не понял что у них с комментариями.
С вашей прошивкой ничего не изменилось - смотрю pci-устройства через pcitree в win хр.
Грузится с флеши, производители платы уверяют что загрузка занимает порядка 70 мс. И на этот случай всегда рекомендуют горячий старт, который тоже не помогает. К тому же я в начале говорил, процесс инициализации начинает идти, проходят успешно стадии detect и polling, а на configuration случается затык, в один прекрасный момент (всегда один и тот же, что значит дело не в случайных помехах) RX линия сбрасывается в режим простоя (или как там правильно перевести IDLE). И кроме того в некоторых местах во время инициализации видно по сигналу rx_status что возникают ошибки 8b/10b decode error - некое нарушение целостности сигнала. Однако опять же они возникают строго в одинаковых местах, что не похоже просто на плохой прием - ведь в других местах я, к примеру, всегда вижу как root complex отправляет link number, а плис через некоторое время отсылает его назад в качестве подтверждения (вот здесь я приводил осциллограммы проблемного момента, )
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 19 2011, 12:11
Сообщение #90


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



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

Получается дело в рут комплексе - MSM945. Но это уже не совсем к этому топику относится
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 19 2011, 13:00
Сообщение #91


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



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

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

Попробуйте bios покопать, power save и прочее.
Корегенераторная прошивка ставится как memory controller.
Попробуйте мою прошивку, надо только jungo поставить сначала.
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 20 2011, 12:20
Сообщение #92


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



Появились еще вопросы к знатокам PCI Express Block Plus:

Если я создаю прошивку скажем PCIe x2, однако на плате физически только одна из этих линий соединена с процессором, возможно ли чтобы прошивка с процессором правильно договорились о ширине шины и сами переключились на х1 ? Подсознательно понимаю что такое должно быть возможно, однако на практике работы не вижу.

В виртексе каждый GTX трансивер имеет тактовый вход. Но если вдруг мне понадобилось использовать определенный трансивер, но тактовый сигнал брать с другого (из-за ошибочной разводки платы), ISE выдает ошибку что-то вроде
"When using a GTP/GTX with a REFCLK coming from anIBUFDS element near another GTP/GTX, each GTP in between the source and destination must be instantiated in the correct manner (See AR 33473). If you don't instantiate these other GTP tiles the software tools will route the REFCLK correctly, but the design may not work in hardware."
В указанном AR мало чего понял. Если кто сталкивался, подскажите от чего оттолкнуться
Go to the top of the page
 
+Quote Post
Andrew Su
сообщение Dec 22 2011, 14:37
Сообщение #93


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



[quote name='Jack_of_Shadows' date='Dec 20 2011, 14:20' post='1007945']
Появились еще вопросы к знатокам PCI Express Block Plus:

Если я создаю прошивку скажем PCIe x2, однако на плате физически только одна из этих линий соединена с процессором, возможно ли чтобы прошивка с процессором правильно договорились о ширине шины и сами переключились на х1 ? Подсознательно понимаю что такое должно быть возможно, однако на практике работы не вижу.

Добрый день.
Реально сталкивался с ситуацией, когда устройство на базе PCI Express Block Plus х4 в некоторых материнках в слотах х16 работает как х4, а в некоторых, как х1.
Проверить как опознал ХОСТ устройство можно с помощью программки pci32.exe. Архив в прикрепленном файле.
Запуск программы из командной строки pci32.exe > pcicfg.txt запишет информацию обо всех найденных pci и pcie устройствах в файл pcicfg.txt.
Удачи.
Прикрепленные файлы
Прикрепленный файл  pci32.zip ( 266.87 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 26 2011, 06:58
Сообщение #94


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



Andrew Su, спасибо за програмку, но дело у меня в другом. На данном этапе наконец полностью понял суть проблемы: единственный корректный х1 линк от процессора подается на второй порт в одном из сдвоенных трансиверов виртекса. Если я пытаюсь назначить в корке х1 линк на этот порт, ise ругается что это можно делать только на первый из портов трансивера. Вообще единственное что я могу присвоить моему правильному порту, это нечетный номер в соединении (1, 3 и т. д.). Однако как написано в мануале, если я создал в виртексе шину скажем на 4 линии, то он может ее самостоятельно обрубить до х1 только в том случае, если рабочей будет нулевая линия в этой шине (а не просто одна из линий). На форуме xilinx проскакивала информация о том, что в сдвоенных трансиверах можно инвертировать их номера (нулевой станет первым, первый станет нулевым) поменяв их назначение в одном из файлов корки (pcie_gt_wrapper), однако пока не смог понять как. Так получается, что для моих неудачно выбранных покупных плат это единственный вариант заработать - повесить нулевую линию шины pcie на первый трансивер в сдвоенном блоке.

Прошу прощения за сбивчивое объяснение. Как и раньше буду рад подсказкам, хотя проблема и достаточно редкая.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 26 2011, 13:02
Сообщение #95


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Jack_of_Shadows @ Dec 26 2011, 10:58) *
Andrew Su, спасибо за програмку, но дело у меня в другом. На данном этапе наконец полностью понял суть проблемы: единственный корректный х1 линк от процессора подается на второй порт в одном из сдвоенных трансиверов виртекса. Если я пытаюсь назначить в корке х1 линк на этот порт, ise ругается что это можно делать только на первый из портов трансивера. Вообще единственное что я могу присвоить моему правильному порту, это нечетный номер в соединении (1, 3 и т. д.). Однако как написано в мануале, если я создал в виртексе шину скажем на 4 линии, то он может ее самостоятельно обрубить до х1 только в том случае, если рабочей будет нулевая линия в этой шине (а не просто одна из линий). На форуме xilinx проскакивала информация о том, что в сдвоенных трансиверах можно инвертировать их номера (нулевой станет первым, первый станет нулевым) поменяв их назначение в одном из файлов корки (pcie_gt_wrapper), однако пока не смог понять как. Так получается, что для моих неудачно выбранных покупных плат это единственный вариант заработать - повесить нулевую линию шины pcie на первый трансивер в сдвоенном блоке.

Прошу прощения за сбивчивое объяснение. Как и раньше буду рад подсказкам, хотя проблема и достаточно редкая.


Странное что-то. Два канала GTP обозначаются одним констрейнтом, а канал выбирается по распиновке клока и данных самим исе. У Вас что ucf был неправильный?
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 26 2011, 14:27
Сообщение #96


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



Констрейнт для сдвоенного GTP один и клок на него один. А вот данные строго определены - на нулевой трансивер четные линии шины, на первый нечетные. Вот по этому поводу рисунок из мануала:


Прикрепленное изображение


Да и как канал может быть выбран по распиновке данных, если данные самим ise разрешается вешать только на нулевые трансиверы (в остальных случаях вылазит ошибка).

Сообщение отредактировал Jack_of_Shadows - Dec 26 2011, 14:29
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 26 2011, 17:37
Сообщение #97


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Jack_of_Shadows @ Dec 26 2011, 17:27) *
Констрейнт для сдвоенного GTP один и клок на него один. А вот данные строго определены - на нулевой трансивер четные линии шины, на первый нечетные. Вот по этому поводу рисунок из мануала:


Прикрепленное изображение


Да и как канал может быть выбран по распиновке данных, если данные самим ise разрешается вешать только на нулевые трансиверы (в остальных случаях вылазит ошибка).

Действительно, странно выбрана распиновка плис. В таблице 5-3 вообще сказано, что для FX30T можно использовать только трансивер X0Y3 для PCIEx1. В Вашем ucf пины указаны только для тактовой, как на схеме подключены пины rx tx пары?
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 27 2011, 07:08
Сообщение #98


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



По поводу таблицы с поддерживаемыми трансиверами, в пункте перед ней "Relocating the Endpoint Block Plus Core" сказано, что они являются рекомендуемыми ввиду их максимальной близости к физическому блоку PCI Express, переход к другим трансиверам возможен, однако в этом случае xilinx не предоставляет техническую поддержку sm.gif (в итоге максимальная частота проекта получалась в районе 239 МГц, и он отлично работал при 100 МГц опоры в обычном PC. Предполагаю, что с X0Y3 он бы и на 250 МГц завелся, однако в моей плате этот GTP занят SATA интерфейсом).

Вообще на моей плате распиновка такова:

Единственная возможная для использования x1 линия:
X0Y2, RX - MGTRXP1_112 (M1) & MGTRXN1_112 (L1), TX - MGTTXP1_112 (N2) & MGTTXN1_112 (M2)

Возможные тактовые линии:
X0Y1, T4 & T3 (идут через драйверную микросхему с PEx16_x8_x4_Clkp/n)
X0Y0, AB4 & AB3 (идут напрямую с PEx1_3Clkp/n).

Я понимаю что нет ничего хорошего в том, что данные подключены к одному GTP, а клоки к другому, но уж что имею. Линии которые предполагались к использованию как основные, со стороны процессора подключены к шине PEG (PCI Express Graphics, заточена исключительно под работу с видеокартами, не может масштабироваться на меньше чем х16). Пока моя основная идея возможного костыля в такой ситуации это делать шину х4, захватывая оба нужных трансивера, и заставить ее завестись как х1. И здесь пока я упираюсь в ограничения приведенной мною выше таблицы.
Go to the top of the page
 
+Quote Post
Jack_of_Shadows
сообщение Dec 27 2011, 09:23
Сообщение #99


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513



И снова спасибо всем кто пытался помочь, наконец-то добился связи своих двух плат. В итоге заработал вариант, который я описал в предыдущем посте. Трансиверы в сдвоенном GTX_DUAL блоке удалось поменять местами с помощью правки соответствующего файла корки - pcie_gtx_wrapper.v, путем изменения в списке подключения всех 0 и 1 местами (например .RXN0(GT_RXN[i+0]), и .RXN1(GT_RXN[i+1]), на .RXN1(GT_RXN[i+0]), и .RXN0(GT_RXN[i+1]),)
Go to the top of the page
 
+Quote Post
Lixlex
сообщение Mar 19 2013, 12:12
Сообщение #100


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 8-11-11
Из: Рязань
Пользователь №: 68 183



Здравствуйте. Я пытаюсь разобраться с кодом PIO от Xilinx, который присутствует в корке PCIe. В этом примере вся память разбита на области по 2 Кб(всего 4 области). С компа обращаюсь к этой памяти через прогу RW-Everything.
из даташита на эту корку вычитал следующее:
Each space is implemented with a 2 KB memory. If the corresponding BAR is
configured to a wider aperture, accesses beyond the 2 KB limit wrap around and
overlap the 2 KB memory space.
Попробовал записать произвольные значения в память начиная с адреса, содержащегося в BAR. Действительно, как сказано в даташите, значения повторяются каждые 2 Кб. Но не как не пойму каким образом обращаться к остальным областям? В исходниках выбор области осуществляется исходя из значения двухбитового префикса адреса, который поступает в блок PIO_RX_ENGINE по шине AXI. Но как его задавать я так и не понял.
Может каждая область должна привязываться к своему BARу? При конфигурировании корки я активировал только один BAR
Go to the top of the page
 
+Quote Post

7 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.02695 секунд с 7
ELECTRONIX ©2004-2016