Pull to refresh

Comments 28

Хорошая статья! Ждем еще! :)
Пытаюсь сам на ПЛИС программировать. Всегда неудачно. Даже VGA не смог завести :(

А всё потому, что вы говорите запретное слово «программировать» применительно к ПЛИС. :)
При данных измерениях принято что 1 Мбайт это 1024 кбайт, а 1 кбайт это 1024 байта.


забыли сказать, что 1 байт при измерении считается = 8 бит.
Однажды у нас на работе разгорелась большая дискуссия — а сколько же битов в байте. Мнения были разные.
Не все так однозначно… при последовательной передаче в USB и PCIe по дифференциальным парам применяется так называемое «8b/10b encoding». Это позволяет в среднем избавиться от постоянной составляющей в сигнале. Так что обычно байт передается за 10 бит. И значит, что скорость передачи полезной информации немного меньше, чем физическая скорость передачи.
Наверное имелись ввиду приставки «киби» и «миби». Кстати, если позанудствовать окончательно, то в случае «в 1кб 1024 байта» приставку «к» надо писать с заглавной буквы
Да, с точки зрения современной бюрократии так и надо. Но я старомоден.
Собственно говоря, иногда я даже думаю что в километре 1024 метра.
:-)
UFO landed and left these words here
Забавно. Перепиленый чип или откуда такое?
UFO landed and left these words here
UFO landed and left these words here
Интересно, сколько стоило сделать такое фото?
UFO landed and left these words here

Да всего 2000$… всего-то машина новая :)

UFO landed and left these words here
110 кбайт внутренней памяти для современных ПЛИС — совсем небольшое количество. Для вашего кристалла — меньше 4% от доступной.
Да, Вы правы. Но обычно память нужна и для других задач. И для надёжной буферизации всё таки нужно больше. А вот насколько больше — требуется отдельное исследование.
Дмитрий, спасибо, что рассказываете о своих разработках и достижениях.

Что требовалось от Операционной Системы, чтобы это всё заработало (приходилось ли драйвер писать/модифицировать для этого)? Как это сейчас видится в системе? Как два /dev/ устройства? Как данные попадают в юзерспейс?

Для сообщения о том, что дескриптор был обработан, используется прерывание или поллинг?

Задержки возникают из-за работы других устройств. Величина задержки может быть разной, это может быть 5 – 10 мкс, а может и больше.

Вы в Чипскопе видели, что обмен по PCIe встает на 10 мкс? Или 10 мкс это суммарное время простоя за измеряемую одну минуту? Какие еще PCIe устройства подключены были к CPU? Пробовали ли их отключать?
Разумеется драйверы для наших устройств мы пишем. Часть из них опубликована на GutHub.
Обмен данными идёт в режиме Scatter-gather, конечно используется прерывание. Причём особых требований к времени обработки прерывания нет. Задержку в 10 мкс я видел на осциллографе, на контрольную точку были выведены внутренние сигналы из ПЛИС. В данных тестах в системе только обычные устройства — видеоадаптер, диск. Отключать не пробовал.
Однако доступные ПЛИС имеют HARDWARE контроллер только для PCIe v3.0 x8; Реализации SOFT IP Core есть, но очень дорогие. Но выход есть.
ПЛИС Virtex 7 VX330T имеет два контроллера PCI Express v3.0 x8; Очевидным решением является размещение коммутатора, который имеет на стороне разъёма x16 и две шины x8 которые подключены к ПЛИС.

Каким образом происходит конкурирование устройства в таком режиме? Ведь когда LTSSM = Configuration, Endpoint должен сообщить свою шину шины, а как я понимаю, ширина шины у HARDWARE контроллера может быть не больше 8?
Особой конкуренции нет. Компьютер видит два независимых устройства с шиной x8; Инициализация происходит независимо друг от друга. Драйвер тоже видит два устройства, но работает только с одним. А вот DMA контроллер производит обмен с использованием двух устройств.
Спасибо! Отличная статья! А как насчет области применения, например, в обработке больших данных? Планируется ли реализовать в этой связке 10/40 Gigabit Ethernet?
По пропускной способности это 100G Ethernet, Если заказчика найдём, то сделаем.
Sign up to leave a comment.

Articles