FLTI 0 9 июня, 2005 Опубликовано 9 июня, 2005 · Жалоба Имеется плата с ПЛИС на борту. К выходу ПЛИС подключен ЦАП. Внутри ПЛИС есть внутренняя память , которую можно использовать как FIFO. В ПЛИС требуется залить контроллер PCI Bus Master , который мог бы пересылать данные из памяти на материнской плате, через ПЛИС в ЦАП через DMA. Вопрос: Какую максимальную скорость пересылок можно достичь в PCI Bus Master? Хотелось бы 40-50Мб/с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 9 июня, 2005 Опубликовано 9 июня, 2005 · Жалоба Теоретический предел 128 мб/сек. Практически, на плате быстрого АЦП, мы промеряли скорость и получили 90-100 мб/с - там вроде стоит басмастерный чип от PLX Tech. В Вашем случае скорость может быть ограничена 1. IP ядром, которое будет залито, 2. скоростью драйвера, который настраивает и инициализирует передачу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FLTI 0 9 июня, 2005 Опубликовано 9 июня, 2005 · Жалоба При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы. А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС в ЦАП. В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК. А ведь чтение всегда происходит медленнее, чем запись. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Genn 0 10 июня, 2005 Опубликовано 10 июня, 2005 · Жалоба При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы. А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС в ЦАП. В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК. А ведь чтение всегда происходит медленнее, чем запись. <{POST_SNAPBACK}> Желаемую скорость Вы получите, однако не забудьте поставить буфер между контроллером PCI и ЦАПом, т.к. для ЦАПа нужен непрерывный равномерный поток данных, а PCI работает с пакетами. Данные в буфер закачиваются по мере его опустошения (чтения). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FLTI 0 10 июня, 2005 Опубликовано 10 июня, 2005 · Жалоба Внутри ПЛИС есть внутренняя память , которая как раз и будет использоваться как FIFO в качестве буфера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 10 июня, 2005 Опубликовано 10 июня, 2005 · Жалоба При пересылках из АЦП в память ПК через PCI шину транзитом через ПЛИС – здесь все понятно и Вы правы. А я спрашиваю об обратной пересылке ИЗ памяти ПК через PCI шину транзитом через ПЛИС в ЦАП. В этом случае ведь PCI контроллер на плате будет являться Мастером на PCI шине и будет читать данные из памяти ПК. А ведь чтение всегда происходит медленнее, чем запись. <{POST_SNAPBACK}> Для PCI шины транзакции записи и чтения равноправны (единственное отличие - после gервого такта, в котором передается команда и адрес, добавляется idle такт, если происходит изменение направления передачи данных). Если Ваше устройство не успевает принимать данные, то оно должно вставлять такты ожидания - но это проблема не шины, а Вашего железа. Если Вас беспокоит, сможет ли отдать современная DDR память поток 128 Мб/с, то думаю, что да, там теоретический предел несколько Гб/с. Возможно, будут несколько тактов задержки в начале передачи из-за задержки первой выборки из памяти. Конкретных экспериментальных данных у меня нет и могу только предполагать. Если одновременно будет работать другое busmaster устройство (например винчестер), то пропускная способность PCI будет делиться. Тут возможны варианты. Если скорость чтения для Вас критична, то единственный выход - поставить локальную память на устройство. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tosha 0 22 июня, 2005 Опубликовано 22 июня, 2005 · Жалоба У меня в устройстве получается что чтение и запись в режиме DMA оказываются не равноправны. Т.е. поток данных непрерывно пишется или читается, скорость небольшая ~10Мб/с чтение + 10Мб/с запись. При этом запись происходит нормально, т.е. данные не теряются если активно использовать другие устройства, например перекачка данных по сети на винт, там тоже данные пишутся по ДМА. А при чтении случаются долгие задержки гранта или таргет аборты, так что внутренний буфер опустошается и происходит потеря данных. Из-за ограничения количества внутренней памяти буфер не увеличить :( Буфер 1кб. Может быть в этом виновата встроенная на материнку видюха. Хотя у нас чтение почти не используется, так что это не страшно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 22 июня, 2005 Опубликовано 22 июня, 2005 · Жалоба Как показывает практика, требуемую скорость передачи данных (40-50 МБ/с) вы получите без чересчур больших проблем. К примеру, одна из наших плат показывает пропускную способность по PCI в районе 45 МБ/с при работе в двух направлениях и заложенной длине пакетов не более 16. Увеличить эту длину при необходимости - не проблема. Конечно, необходимо будет предусмотреть буферизацию данных в устройстве, чтобы не вносить дополнительных вынужденных задержек. Разница между операциями записи и чтения по эффективности для пакетных транзакций (а только о таких в данном случае и может идти речь) незначительна в сравнении с одиночными пересылками. Во-первых, дополнительные такты могут потребоваться только в самом начале пакетной операции - все последующие, кроме первой, фазы передачи данных в пределах пакета обычно проходят без дополнительных задержек (1 такт на слово). Во-вторых, при приличном потоке данных (а 40-50 МБ/с - это вполне приличный поток) с весьма высокой степенью вероятности пакетные транзакции данного устройства в течение длительных промежутков времени не будут перемежаться транзакциями других устройств на шине (из них нас здесь волнуют, в первую очередь, операции чтения из памяти), т.е., во второй и последующих пакетных транзакциях даже первая фаза передачи данных будет проходить без дополнительной задержки. Это возможно благодаря тому, что сколько-нибудь приличный современный Host Bridge обычно сконфигурирован на работу в режиме опережающего чтения, и дополнительное задержка видна устройствам на PCI только в тот момент, когда резко меняется адрес чтения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться