Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Делаем WOL

Делаем WOL 12 года 7 мес. назад #951

  • NtX
  • NtX аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 23
  • Спасибо получено: 1
Есть у меня старое железо. Я на нем когда-то а-ля сервак делал. Но у него одна беда - не умеет он по сети включаться. Вернее уметь вроде как должен, но это не работает. Менять что-то в нем бессмысленно и посему давно зародилась мысль сделать включение самому. Про Ethernet кратенькая статья уже была. Я ее и взял за основу.

Что такое WOL (Wake-on-LAN)? Это функция включения компа по сети. Когда сетевая карта получает, так называемый, MagicPacket она выдает команду на старт компа. Пакет этот состоит из 6 байт со значением FFh и далее повторяется MAC адрес (6 байт) сетевой карты 6 раз. Этот пакет обычно рассылается используя протокол UDP. Кучу инфы можно нарыть в той же википедии - суть я описал.

По сути, что нам нужно от будущего устройства:
- подключиться по сети и дать понять роутеру что мы работаем;
- принимать и анализировать данные по сети;
- при идентификации MagicPacket выдавать импульс, который может управлять транзистором замыкающим контакты PWR на материнке (т.е. как бы нажимает кнопку Power на компе) давая команду компьютерному БП на запуск.

Задачу я разбил на 2 части:
- схема интерфейса физического уровня;
- управляющая схема.

Схема интерфейса физического уровня должна уметь принять/отправить данные по сети, т.е. именно на нее возлагается задача модулирования/демодулирование сигнала по Manchester. Другие же схемы с этой схемой работают в нормальном виде - с помощью обычных 8разрядных байт.

Управляющая схема должна выполнять 2 задачи:
- формировать режим Autonegotiation что бы роутер понимал что на порту кто-то висит;
- принимать поток данных от схемы физ.уровня и искать в ней характерный пакет MagicPacket. Может быть правильнее было бы принимать весь пакет UPD и анализировать его, но в ПЛИСину от марсохода вряд ли влезет.
После идентификации MagicPacket мы должны выдать сигнал на запуск компа. При этом целесообразно сделать защиту - комп запускать только тогда, когда он не запущен (иначе его можно выключить). Для этого на ПЛИСину можно завести сигнал от любого 5В-вого разъема через пару-тройку диодов или резистивного делителя.

[[[
Тут, кстати, вопрос возник по ходу: для Autonegotiation на 10МБит/с я через каждые 16мс формирую логическую 1 длинной 100нс. Эта единица должны быть прямо сплошным уровнем в сети или после наложения модуляции в сети появится так же переменный сигнал, только сдвинутый по фазе на полтакта относительно того, когда я данные в сеть вообще не шлю (эквивалентно подаче логического 0)?
]]]

Вот и подошли к главному. На данный момент я написал оба модуля и моделированием отлавливаю свои глюки. Для того что бы все это проверить, по идее, надо бы грамотно подключиться к сети: должен быть разделительный трансформатор, фильтр и какой-то операционник, короче некая схема подключения к сети. Взять и бросить два сигнала на прием и передачу прямо с ПЛИСа на линию - не знаю будет или нет работать, по идее не должно)
Может в этом плане кто-то подсобить - проверить работоспособность моего проекта? У меня отладочных средств для этого никаких нет.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Делаем WOL 12 года 7 мес. назад #954

Очень хорошая задача для "марсохода". Для меня непонятно, как реализовать приемную часть.
Я думаю, лучше всего на LVDS, у меня такой чип есть , на досуге постараюсь по экспериментировать - о результатах
отпишусь.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Делаем WOL 12 года 7 мес. назад #955

  • NtX
  • NtX аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 23
  • Спасибо получено: 1
Над приемной частью я весь день голову ломал. Но там все просто по сути - счетчик и пара триггеров (остальные навороты - как всегда обвязочно-контрольная логика). По крайней мере два таких соединенных модуля у меня работают нормально при моделировании после разводки в ПЛИСе. Вот только есть нюанс старта сборки пакета - у меня пакет начинает собираться после приема первой 1 (старт-бита) и потом будет байты с линии собирать пока ему управляющий модуль не скажет, что пора на прием переходить (хотя для данной задачи это не столько принципиально - главное что бы собирающий данные модуль периодически сбрасывался).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от NtX.

Re: Делаем WOL 12 года 7 мес. назад #956

  • NtX
  • NtX аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 23
  • Спасибо получено: 1

umarsohod пишет: на досуге постараюсь по экспериментировать - о результатах отпишусь

Если я свой приемопередатчик выложу - можете посмотреть его работу?

Глюки вроде все отловил, на данный момент обеспечивается:
- независимость схемы от частоты (задается как параметр);
- корректный прием при отклонении частоты передатчика на +/-25% от номинального значения частоты, заданной в параметре «значение тактовой частоты»;
- потоковую отправку данных, т.е. корректно передадутся не только 1 байт, но и пакет из любой длины байтов;
- полнодуплексный режим приемо-передачи.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.137 секунд
Работает на Kunena форум