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

Cкорость пересылок PCI Bus Master.

Имеется плата с ПЛИС на борту.

К выходу ПЛИС подключен ЦАП.

Внутри ПЛИС есть внутренняя память , которую можно использовать как FIFO.

В ПЛИС требуется залить контроллер PCI Bus Master , который мог бы пересылать данные из памяти на материнской плате, через ПЛИС в ЦАП через DMA.

 

Вопрос:

Какую максимальную скорость пересылок можно достичь в PCI Bus Master?

Хотелось бы 40-50Мб/с.

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


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

Теоретический предел 128 мб/сек. Практически, на плате быстрого АЦП, мы промеряли скорость и получили 90-100 мб/с - там вроде стоит басмастерный чип от PLX Tech. В Вашем случае скорость может быть ограничена

1. IP ядром, которое будет залито,

2. скоростью драйвера, который настраивает и инициализирует передачу

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


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

При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы.

А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС в ЦАП.

 

В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК.

А ведь чтение всегда происходит медленнее, чем запись.

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


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

При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы.

А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС  в ЦАП.

 

В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК.

А ведь чтение всегда происходит медленнее, чем запись.

 

Желаемую скорость Вы получите, однако не забудьте поставить буфер между контроллером PCI и ЦАПом, т.к. для ЦАПа нужен непрерывный равномерный поток данных, а PCI работает с пакетами. Данные в буфер закачиваются по мере его опустошения (чтения).

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


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

Внутри ПЛИС есть внутренняя память , которая как раз и будет использоваться как FIFO в качестве буфера.

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


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

При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы.

А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС  в ЦАП.

 

В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК.

А ведь чтение всегда происходит медленнее, чем запись.

 

Для PCI шины транзакции записи и чтения равноправны (единственное отличие - после gервого такта, в котором передается команда и адрес, добавляется idle такт, если происходит изменение направления передачи данных). Если Ваше устройство не успевает принимать данные, то оно должно вставлять такты ожидания - но это проблема не шины, а Вашего железа.

 

Если Вас беспокоит, сможет ли отдать современная DDR память поток 128 Мб/с, то думаю, что да, там теоретический предел несколько Гб/с. Возможно, будут несколько тактов задержки в начале передачи из-за задержки первой выборки из памяти. Конкретных экспериментальных данных у меня нет и могу только предполагать.

 

Если одновременно будет работать другое busmaster устройство (например винчестер), то пропускная способность PCI будет делиться. Тут возможны варианты.

 

Если скорость чтения для Вас критична, то единственный выход - поставить локальную память на устройство.

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


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

У меня в устройстве получается что чтение и запись в режиме DMA оказываются не равноправны. Т.е. поток данных непрерывно пишется или читается, скорость небольшая ~10Мб/с чтение + 10Мб/с запись.

При этом запись происходит нормально, т.е. данные не теряются если активно использовать другие устройства, например перекачка данных по сети на винт, там тоже данные пишутся по ДМА.

 

А при чтении случаются долгие задержки гранта или таргет аборты, так что внутренний буфер опустошается и происходит потеря данных. Из-за ограничения количества внутренней памяти буфер не увеличить :( Буфер 1кб. Может быть в этом виновата встроенная на материнку видюха.

 

Хотя у нас чтение почти не используется, так что это не страшно :)

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


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

Как показывает практика, требуемую скорость передачи данных (40-50 МБ/с) вы получите без чересчур больших проблем. К примеру, одна из наших плат показывает пропускную способность по PCI в районе 45 МБ/с при работе в двух направлениях и заложенной длине пакетов не более 16. Увеличить эту длину при необходимости - не проблема. Конечно, необходимо будет предусмотреть буферизацию данных в устройстве, чтобы не вносить дополнительных вынужденных задержек.

 

Разница между операциями записи и чтения по эффективности для пакетных транзакций (а только о таких в данном случае и может идти речь) незначительна в сравнении с одиночными пересылками. Во-первых, дополнительные такты могут потребоваться только в самом начале пакетной операции - все последующие, кроме первой, фазы передачи данных в пределах пакета обычно проходят без дополнительных задержек (1 такт на слово). Во-вторых, при приличном потоке данных (а 40-50 МБ/с - это вполне приличный поток) с весьма высокой степенью вероятности пакетные транзакции данного устройства в течение длительных промежутков времени не будут перемежаться транзакциями других устройств на шине (из них нас здесь волнуют, в первую очередь, операции чтения из памяти), т.е., во второй и последующих пакетных транзакциях даже первая фаза передачи данных будет проходить без дополнительной задержки. Это возможно благодаря тому, что сколько-нибудь приличный современный Host Bridge обычно сконфигурирован на работу в режиме опережающего чтения, и дополнительное задержка видна устройствам на PCI только в тот момент, когда резко меняется адрес чтения.

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


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

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

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

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

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

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

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

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

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

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