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

Обмен данными с компьютером

Хотелось бы продолжить данную тему.

 

Есть желание реализовать гарантированную доставку данных на базе fast Ethernet от внешнего устройства на базе FPGA на компьютер с максимально возможной скоростью.

 

В распоряжении имеется демо-плата (Spartan 3e starter kit). На ней соответственно имеется: FPGA Spartan 3e500, Ethernet phy LAN83C185, память DDR (32M x 16).

 

После ознакомления с данной темой возник ряд вопросов:

 

1) Реализовывать протокол UDP + IP, по-видимому смысла нет.

2) Соответственно стоит использовать пакеты Ethernet. На этом месте возникает первый вопрос: какой тип пакета использовать (Ethernet II, IEEE 802.3 или IEEE 802.2)? В голове сейчас некоторая каша, поэтому сильно не пинайте за, возможно, глупые вопросы.

3) На каком уровне обеспечивать гарантию доставки данных? Т.е. Например, я решил передавать голые кадры Ethernet II. Тогда, на сколько я понимаю, потребуется придумать некоторый свой заголовок, который будет, например, нести информацию о номере посланного пакета. На компьютере программа-сервер будет принимать пакеты и при обнаружении пропуска будет запрашивать внешнее устройство повторно передать потерянный пакет. Т.е. гарантия доставки выполняется приложением, принимающим данные? Либо есть какие-либо встроенные в операционную систему средства (продолжение вопроса в п.4)?

4) Как на компьютере принимать голые пакеты (под Windows и под Linux)? Использовать библиотеку pcap (winpcap/libpcap)? Или достаточно встроенных в операционную систему средств?

5) Стандарт IEEE 802.2 описывает LLC. После беглого пролистывания стандарта решил, что LLC type 3 как раз то, что я бы хотел реализовать: гарантированная доставка данных без установления соединения. Вопрос вот в чём: есть ли какая-то поддержка данного механизма в операционных системах (windows, Linux)? Т.е. есть ли встроенные в операционную систему средства, которые облегчили бы создание соединения, гарантирующего доставку данных?

6) На сколько я понимаю, реализация в лоб схемы ARQ (automatic repeat request: отправили пакет, дождались подтверждения, отправили следующий, либо если не дождались - повторно отправили текущий) приведет к получению мизерной скорости передачи данных. Как с этим бороться? Отправлять непрерывно пакеты, храня их буфере до получения подтверждения? Есть ли примеры реализации, доступные для просмотра в интернете? Есть ли другие алгоритмы?

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


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

Хотелось бы продолжить данную тему.

 

Есть желание реализовать гарантированную доставку данных на базе fast Ethernet от внешнего устройства на базе FPGA на компьютер с максимально возможной скоростью.

 

Для начала имеет смысл озвучить количественный эквивалент выражения "максимально возможная скорость". :-)

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


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

Для начала имеет смысл озвучить количественный эквивалент выражения "максимально возможная скорость". :-)

 

Не менее 80 мбит/с

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


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

Не менее 80 мбит/с

А... так речь всё-же о пропускной способности. А то первый пост был м... неоднозначным. :)

А чем так нравится ethtrnet? Или подразумевается большая (больше 3-х метров) удалённость девайса от компьютера? Я это к тому, что есть много микросхем USB интерфейса, где всё уже готово. Я сам достигал где-то 160-200 мбит/с с применением ez-usb от cypress-а.

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


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

Ethernet нравится тем, что, во-первых, имеются некоторые знания о нём, в отличие от USB, во-вторых, коллеги планируют его использовать. В-третьих, расстояние в перспективе, действительно, может составить более 3 м. И, в-четвертых, под Ethernet имеется указанная выше демо-плата.

 

Уточню исходный вопрос. На данный момент планирую использовать голые Ethernet фреймы (формат кадра - Ethernet II). Главная сложность продумать реализацию алгоритма гарантированной доставки данных.

 

Сам алгоритм описан в данном посте.

 

При освобождении Eth Gigabit MAC, данные из ОЗУ заталкиваются в MAC, и в служебном массивчике метятся как переданные (но пока еще без подтверждения о получении), после получения такого подтверждения для конкретного пакета, место, занимаемое в ОЗУ этим пакетом, считается свободным. Ну и в таком духе дальше принимать/передавать данные.

 

На сколько я понимаю, надо в дополнение продумать некоторый свой заголовок к каждому фрейму, чтобы обеспечить учёт переданных и подтвержденных данных.

 

Может быть, где-то есть примеры реализации похожих механизмов передачи данных?

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


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

Главная сложность продумать реализацию алгоритма гарантированной доставки данных.
'Гарантированная доставка данных' - это TCP или нечто аналогичное по сложности. Можно взять соотвествующий RFC (по TCP) и выкинуть из него все ненужное.

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


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

Уточню исходный вопрос. На данный момент планирую использовать голые Ethernet фреймы (формат кадра - Ethernet II). Главная сложность продумать реализацию алгоритма гарантированной доставки данных.

Если используете BASE 100-TX "точка в точку", без свитчей, в пределах 100м, то заморачиваться на предмет гарантированной доставки данных не следует вообще. Что же касается RAW-пакетов, то возникнут приличные софтовые проблемы на стороне PC. В то время как для UDP существуют готовые и многократно проверенные компоненты в С-Builder и Delfi. Советую UDP пакеты, которые отличаются от RAW только размером хидера,- это для FPGA не проблема. Зато на стороне PC получите громадный выигрыш от стандартного решения.

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


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

В данной ветке проскакивало упоминание о "Video Over IP Reference Design". Не могли бы добрые люди скинуть в закрома данный проект. Кит для него куплен. По опыту - тут получить проект быстрее, чем от Альтеры.

 

 

--------------------------------------------

Проект найден. Вопрос снят.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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