Цитата(Aprox @ Oct 28 2008, 18:53)

В этом случае следует отказаться от готовых компонентов и GUI в программе. Можно попробовать библиотеку драйверов WinCap. Я с ней работал на прием пакетов в составе снифера WireShark. Если отключить всякое графическое обновление в снифере, то он без пропусков принимает пакеты 1.5К, следующие с интервалом 7..8 мкс(микросекунд!). Если включить обновление графики в окне, то через примерно десяток пакетов, появляются паузы 1мс(миллисекунда). Это винды отбирают на GUI. В библиотеке есть возможность и отсылать пакеты,- я пробовал с Raw пакетами. Получилось. Но максимальную скорость отправки пакетов не проверял. Мне кажется, если на прием неплохо работает, то и на передачу есть неплохие шансы. Главное, отключить виндовое GUI.
Во, вот это мне уже нравится. В действительности GUI мне и не нужен. А можно по подробнее про WinCap? Интервал между пакетами сильно зависит от величины канала? По сути мне гигабит не нужен, думаю вообще 10М должно хватить. Драйвер работает со встроенными сетевухами или есть какие то ограничения? Вообще, спасибо за инфу, буду разбираться...
Цитата(AlexandrY @ Oct 28 2008, 20:28)

Да легко вы сделаете этот "realtime"
На компе тупо шлете в сокет сколько влезает.
А в своем контроллере дайте Ethernet MAC подсистеме команду PAUSE на заданное время пока не готовы принять следующий пакет. По истечении времени комп сразу же прецизионно вышлет че у него там в буфере. От виндов это не зависит.
Естественно при этом, что ваш MAC должен поддерживать выдачу команд Pause.
И смотрите чтоб сетевая карта компа позволяла управлять параметрами Flow Control.
Т.е. управление потоком есть на физическом уровне Ethernet-а и голову ломать не надо.
А реальные realtime приложения на Ethernet-e борятся с коллизиями на линии которых в вашем случае видимо не будет.
Да, действительно больше на линии сидеть никто не будет. Насчет Pause подумаю, я ещё правда не выбрал контроллер, так что приму на заметку, спасибо. Вообще в протоколах Ethernet тока начал разбираться, так что не ругайте, можно ли обойти физикой и маком и не организовывать стек? Валяется у меня платка на CS8900A хочу подрубить ее к Spartan 3, FPGA просто тупо будет выцеплять данные которые будут приходить с компа. По идее должно быть все как можно прощще, так вообще возможно?
Цитата(uriy @ Oct 28 2008, 20:34)

Вы действительно не видите больше способа для синхронизации как слать пакеты с жестко определенными задержками? Не подойдет ли вам такой вариант - снабжать пакеты временными метками и порядковыми номерами и соотвественно собирать в небольшой буфер в вашем устройстве и анализировать.
Ну изначально я так и думал, снабжать пакеты временными метками, точнее порядковыми номерами, ну а потом отсылать по таймеру. Поэтому от компа мне и не требуется четкой синхронности посыла, главное чтобы задержек больше 1 мсек не было.
Цитата(Rst7 @ Oct 28 2008, 23:42)

Смысл иметь двое несинхронных часов? В компе и в железяке? Не лучше ли одни просто в железке?
А вот на фреймы pause я бы не закладывался.
Сегодня работает, а завтра попадется свич с неправильным бутстрепом и не будет он обрабатывать флоуконтрол. И начнутся танцы с бубном при луне. Лучше организовать свой флоуконтрол через тот же UDP.
Ну в компе таймера как такового нету, там стоит плата на которую поступают кадры с частотой 1 Кгц, плата кидает данные прямо в память, потом данные обрабатываются (около 100мкс) и отправляются в устройство.