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

 
 
> PCI в ПЛИС, не работает пакетная передача данных
Katrisha
сообщение May 3 2012, 18:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 19-06-08
Пользователь №: 38 430



Здравствуйте.
мне необходимо реализовать интерфейс PCI в ПЛИС. Все вроде как работает, но очень медленно. Передается только по одному слову. Не подскажете ли, в чем может быть причина, что PCI не читает более одного слова за одну передачу?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Katrisha
сообщение May 4 2012, 14:29
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 19-06-08
Пользователь №: 38 430



Цитата(eugen_pcad_ru @ May 3 2012, 22:22) *
1 Почитайте про интерфейс (хотя бы в википедии), там указаны предельные скорости
2 "Прикрутите" готовое ядро к своему проекту
3 Объясните программисту, как написать программу быстрого обмена (или сами напишитеsm.gif)

P.S.: Иногда большие скорости и не нужны. Может имеющегося достаточно?sm.gif
P.P.S.: Да, и есть еще настройки биоса.
P.P.P.S.: Причина медленного обмена может быть в медленном драйвере. Драйвер обрабатывает массивы?


Согласно википедии sm.gif при частоте 33.33 МГц - пиковая проходная способность 133Мбайт/с.
Данной скорости было бы за глаза и за уши, но имеющейся, к сожалению не хватает (
Мне необходимо за 40мс передать 367500 слов (необходимо передать данные кадра по пиксельно, 700х525 пикселей) - это значительно медленнее, чем возможно, но пока только передается за это время примерно шестая - седьмая часть.
(Вообще устройство должно принимать RGB сигнал, и еще по другому интерфейсу общаться с другими устройствами, принимая/отдавая служебные команды. Все это должно быть передано по PCI на ПК)

Не совсем понятно, что нужно сделать с ядром. sm.gif

Драйвер сначала был написан мной с помощью Windriver, потом когда это не заработало как надо программисты написали с помощью Numega. И там и там одинаковая скорость обмена получалась.
Внутри драйвера использованы функции для передачи блоков, но как то оно все равно работает по одному слову.

А про настройки биоса можно поподроблнее? sm.gif
Вроде все осмотрено но не найдено ничего подходящего.

Цитата(Boris_TS @ May 3 2012, 22:26) *
Опишите более подробно:
1. Какой именно PCI вы реализовываете (точную ревизию стандарта, разрядность, частота, напряжение питания) ?
2. Вид транзакций, которые вызываются вопросы ?
3. Каким образом инициируется транзакция (кто Master, кто Target) ?
4. В куда вставлено Ваше устройство (с чем оно обменивается данными) ?


1. PCI 2.2, разрядность 32, частота 33.33 МГц, напряжение 3.3В
2. Чтение/запись в память.
3. Мое устройство не может быть мастером. Все инициирует ПК.
4. Мое устройство вставлено в ПК )
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение May 4 2012, 15:35
Сообщение #3


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Katrisha @ May 4 2012, 18:29) *
Согласно википедии sm.gif при частоте 33.33 МГц - пиковая проходная способность 133Мбайт/с.

Да, есть такое дело... но подобная скорость достижима только в режиме Bus Master, да еще и при работе крупными пакетиками...

Цитата(Katrisha @ May 4 2012, 18:29) *
1. PCI 2.2, разрядность 32, частота 33.33 МГц, напряжение 3.3В
2. Чтение/запись в память.
3. Мое устройство не может быть мастером. Все инициирует ПК.
4. Мое устройство вставлено в ПК )

Нужно еще одно уточнение: какой у Вас используется PC ?
Но общая суть проблемы мне ясна - сам с подобным мучился.
Как я понял, суть проблемы приблизительно следующая:
1. Дам 90%, что Вы используете PC с PCI-E... а PCI находится после PCI-E->PCI Bridge
2. В этом случае необходимо учесть особенности работы PCI-E. А вот тут есть одна неприятная особенность.
PCI-E - очень похож на full duplex Ethernet; соответственно, на низком уровне, каналы TX и RX практически никак не связаны, поэтому допускается огромная (по меркам PCI) задержка на ответ: пока к Target дойдёт пакетик, пока Target его переварит, пока обратно прийдёт пакетик... - куча времени проходит.
3. С другой стороны у Вас явно используется non-prefetchable BAR (и это, почти наверняка, правильно для Вашего случая), что не позволяет PCI-E->PCI Bridge зачитать наперёд данные (а вдруг они изменятся - prefetch же не просто так выключен)... Процессор, по каким-то причинам, не может сделать блочное чтение. Поэтому его одиночные операции чтения и доходят до Вашего устройства в неизменном виде...

Я нашел следующие пути решения этой проблемы:
1. Переход на Bus Master режим. Т.к. BM реализуете именно Вы, то достаточно реализовать только те Mem Read/Write команды которые Вам необходимы (т.е. 0111 - Memory Write и, может быть, 0110 - Memory Read, если она необходима). PC RAM прекрасно кэшируется, поэтому блочные операции работают весьма быстро. Правда с BM Mem Write есть одна мелкая заморочка: прерывание к CPU может обогнать данные, которые были отправлены в ОЗУ, лечится I/O Read'ом CPU->Ваше устройство (как описано в PCI спецификации), либо использованием MSI, но вот за MSI не уверен, поэтому это необходимо уточнить.
2. Мелкое ускорение: CPU может генерировать сдвоенные операции чтения, если использовать MMX инструкции.
3. Крохотное ускорение: можно поддержать Fast Back-to-Back (5 лет назад мне это удалось сделать в убогоньком Spartan-2, поэтому в современных ПЛИС не должно вызывать особых проблем).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Katrisha   PCI в ПЛИС   May 3 2012, 18:08
- - eugen_pcad_ru   1 Почитайте про интерфейс (хотя бы в википедии), т...   May 3 2012, 18:22
- - Boris_TS   Опишите более подробно: 1. Какой именно PCI вы реа...   May 3 2012, 18:26
- - vitan   Еще дешевый способ - попробовать использовать DMA....   May 4 2012, 17:35
- - Katrisha   На разных РС пробовалось, везде одно и тоже, где т...   May 4 2012, 18:03
|- - Boris_TS   Цитата(Katrisha @ May 4 2012, 22:03) На р...   May 4 2012, 18:55
|- - XVR   Цитата(Katrisha @ May 4 2012, 22:03) Хоте...   May 7 2012, 07:47
- - Katrisha   Цитата(XVR @ May 7 2012, 11:47) Не умеет ...   May 7 2012, 08:12
|- - Джеймс   Цитата(Katrisha @ May 7 2012, 12:12) если...   May 7 2012, 13:09
- - nckkm   скажу по своему опыту (правда было давно). при исп...   May 7 2012, 17:20
- - Katrisha   Сигнал STOP не появляется. За frame передается оди...   May 8 2012, 12:11
|- - nckkm   Цитата(Katrisha @ May 8 2012, 15:11) Сигн...   May 8 2012, 13:04
- - Katrisha   У меня memory space. Что конкретно в конфигурации ...   May 8 2012, 13:14
|- - nckkm   Цитата(Katrisha @ May 8 2012, 16:14) У ме...   May 8 2012, 17:51
- - Katrisha   Это можно будет попробовать, только, боюсь, linux ...   May 9 2012, 05:45
|- - Victor®   Цитата(Katrisha @ May 9 2012, 08:45) Это ...   May 9 2012, 06:04
- - Katrisha   Сейчас у меня стоит HWDirect. Может писать/читать ...   May 9 2012, 06:10
- - Katrisha   А если реализовывать мастер, то как узнать адрес п...   Jul 31 2012, 14:09
|- - Flood   Цитата(Katrisha @ Jul 31 2012, 18:09) А е...   Jul 31 2012, 18:50
- - Kuzmi4   2 Katrisha Если хотите мастера на PCIE - нужен физ...   Jul 31 2012, 14:56
|- - Kuzmi4   Цитата(Kuzmi4 @ Jul 31 2012, 17:56) ..На ...   Aug 2 2012, 15:28
- - Katrisha   А в WinDriver-е нужно где-то указать что хочешь DM...   Aug 2 2012, 14:03
- - Flood   Цитата(Katrisha @ Aug 2 2012, 18:03) А в ...   Aug 2 2012, 16:41


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

 


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


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