olegras 0 May 20, 2014 Posted May 20, 2014 · Report post 2 ТС: Споры дошли до такого уровня, когда Вам нужно народу поподробнее описать функционал своего устройства. А то тут Вас сейчас заставят поменять религию, а может оно Вам и не надо. 2 Все остальные: Уважаемые, давайте сначала поможем ТС запустить трансивер. А вдруг в остальном он сам разберется. Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 20, 2014 Posted May 20, 2014 · Report post В железе можно сделать формирователь UDP пакетов, но не более... ну вернее сделать можно все, но стоит делать не более... а если с вами это сделает кто-то еще на другом конце езернета че будет? Вы учитываете что на МАК уровне решаются конфликты и арбитраж сети? то есть, если сформировать полный кадр для UDP протокола ( преамбулу, маки, ip header, udp пакет, CRC) и отправить на ноги трансивера, сетевая карта его просто не увидит? Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 May 20, 2014 Posted May 20, 2014 (edited) · Report post то есть, если сформировать полный кадр для UDP протокола ( преамбулу, маки, ip header, udp пакет, CRC) и отправить на ноги трансивера, сетевая карта его просто не увидит? Если правильно сформировать - обязательно увидит. Golikov A. наверное имеет ввиду если трансивер работает в режиме полудуплекс. Edited May 20, 2014 by olegras Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 20, 2014 Posted May 20, 2014 · Report post 2 ТС: Споры дошли до такого уровня, когда Вам нужно народу поподробнее описать функционал своего устройства. А то тут Вас сейчас заставят поменять религию, а может оно Вам и не надо. 2 Все остальные: Уважаемые, давайте сначала поможем ТС запустить трансивер. А вдруг в остальном он сам разберется. большое спасибо за понимание:-) задача следующая: организовать обмен данными с компьютером. протокол UDP. приоритетом является скорость передачи, при чем с компьютера идут управляющие сигналы, реже чем данные с платы. Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 May 20, 2014 Posted May 20, 2014 · Report post То есть: Со стороны ПК - с фиксированных IP и МАС адресов ПК, по фиксированным UDP портам на устройство периодически поступают пакеты из фиксированного набора ("команд"). И только. Со стороны устройства - с фиксированных IP и МАС адресов устройства, по фиксированным UDP портам на ПК непрерывно (почти непрерывно) поступают пакеты. И толко. Так? Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 20, 2014 Posted May 20, 2014 · Report post То есть: Со стороны ПК - с фиксированных IP и МАС адресов ПК, по фиксированным UDP портам на устройство периодически поступают пакеты из фиксированного набора ("команд"). И только. Со стороны устройства - с фиксированных IP и МАС адресов устройства, по фиксированным UDP портам на ПК непрерывно (почти непрерывно) поступают пакеты. И толко. Так? совершенно верно Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 May 20, 2014 Posted May 20, 2014 · Report post Ну здесь действительно можно обойтись без процессора. Но дополнительно устройство должно (как минимум, при работе в реальных условиях): - уметь отвечать на ARP ПК; - если предполагается, что сеть может быть и полудуплекс - уметь выполнять процедуру разрешения коллизии (эта процедура описана не помно в каком RFC и хорошо ложится на конечный автомат); - иметь возможность как-то вводить IP и МАС адреса сторон (например УАРТ + ГиперТерминал); - обязательно учитывать необходимость IPG (минимальный интервал между пакетами); - учитывать, что в сети (если она составная) может оказаться что размер Вашего пакета надо будет динамически уменьшать (об этом устройство узнает в пришедшем пакете ICMP); - учитывать, что в сети UDP пакет может потеряться (и это законно). Ну если с ходу - пока все. Потом можно будет прикрутить ICMP, чтобы с ПК пинговать (если надо). Все это возможно реализовать в автомате. Но сначала - трансивер. Или он у Вас уже заработал? Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 20, 2014 Posted May 20, 2014 · Report post Но сначала - трансивер. Или он у Вас уже заработал? собрал проект с процессором и Mac ядром, запустил hello world для начала, проект заработал, и заработали светодиоды на разъеме Ethernet, они в свою очередь питаются от трансивера думаю что трансивер жив, в следующий раз проверю наличие клоков Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 May 20, 2014 Posted May 20, 2014 · Report post собрал проект с процессором и Mac ядром, запустил hello world для начала, проект заработал, и заработали светодиоды на разъеме Ethernet, они в свою очередь питаются от трансивера думаю что трансивер жив, в следующий раз проверю наличие клоков В этом проекте ничего не передавая на трансивер, проверьте уровни на всех его управляющих ногах (кабель Ethernet отключите). Потом перевключите плату (без прошивки ПЛИС) и замерьте эти же ноги. Отпишитесь. Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 21, 2014 Posted May 21, 2014 (edited) · Report post В этом проекте ничего не передавая на трансивер, проверьте уровни на всех его управляющих ногах (кабель Ethernet отключите). Потом перевключите плату (без прошивки ПЛИС) и замерьте эти же ноги. Отпишитесь. Создал проект с процессором, вставил туда ядро MAC contr., запустил Hello world/. на RJ 45 заморгали светодиоды. Проверил питающие трансивера -- в норме согласно мануала, осцилографом посмотрел клоки rx tx. Тоже нормально 25 МГц. Сходу попробывал запустить пример для процессора с MAC ядром. Чтобы потом настроить передачу данных на компьютер и Chipscop ом снять сигналы с ног на трансивер. Пример "слету" запустить не получилось. Далее думаю в буфер записать полный кадр и выдать на трансивер. В кадр вставить заданные адреса (MAC, IP, порт). Но для начала небходимо добиться работы трансивера (клоков) без процессора. Edited May 21, 2014 by farbius Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 May 22, 2014 Posted May 22, 2014 · Report post Хорошо. Видимо я не смог объяснить что от Вас требуется. Зайдем с другой стороны. Вы не могли бы выложить свой код? Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 22, 2014 Posted May 22, 2014 · Report post Хорошо. Видимо я не смог объяснить что от Вас требуется. Зайдем с другой стороны. Вы не могли бы выложить свой код? Код довольно прост. Создаю ROM на 1500 байт. В ячейки ROM записываю побайтно UDP пакет: 7 байт преамбула (10101010), 1 байт SFD (10101011), MAC компьютера (6 байт), MAC ПЛИС задаю сам (6 байт), и т.д. весь кадр: Выводы с ПЛИС на трансивер следующие: я задействовал reset, TXD[0:3], TXen, TXclk. Выводы COL, CRS и для контроля MDC, MDIO я не задействовал. Также я не трогал все выводы на прием, т.к. на начальном этапе пытаюсь освоить передачу. Далее на PC есть приложение для установления соединения и приема UDP пакетов, плюс WIreshark. ВЫходные данные ROM я по 4 бита подаю на TXD[0:3], со скоростью TXclk (то есть клок беру из трансивера) Это все я пытался сделать сначала в надежде освоить передачу "слету". Однако не получилось: трансивер не запустился, TXclk отсутствовал. Не судите строго: прекрасно понимаю что такая попытка обречена на провал, но с чего то начать надо было :laughing: К тому же такой путь подсказал человек, у кого есть реализация подобного проекта. Теперь вот что думаю сделать: 1. При запущеном процессоре chipscop'ом сниму все сигналы на трансивер. 2. Подготовлю проект для передачи данных как и раньше считывая с ROM, где задействую все пины на трансивер. 3. Вопрос с контрольными суммами в пакете. По идее wireshark должен увидеть данный пакет (как писали выше в ветке), даже с неправильно рассчитанными суммами. Если такой путь также утопия, с удовольствием выслушаю критику. :rolleyes: Замечу дополнительно: все адреса (MAC, IP, порты) я заранее задаю, таким образом пытаюсь избежать работы с ARP запросами. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 May 22, 2014 Posted May 22, 2014 · Report post у меня вопрос где и в какой момент вы заполняете регистры физики, настраиваете ее на работу, запускаете процесс аутонегатенации, сбрасываете, и так далее? вас не удивляет что в MII есть еще командная часть интерфейса, по которой идут данные не в сеть а в физику? Quote Share this post Link to post Share on other sites More sharing options...
Aleksei_Rostov 0 May 22, 2014 Posted May 22, 2014 · Report post у меня вопрос где и в какой момент вы заполняете регистры физики, настраиваете ее на работу, запускаете процесс аутонегатенации, сбрасываете, и так далее? вас не удивляет что в MII есть еще командная часть интерфейса, по которой идут данные не в сеть а в физику? Как я понял настройка происходит автоматически. Потому как больше никаких воздействий кроме вышеописанных я оказать не могу. Как я разобрался сигналы MDC(клок) и MDI для чтения контрольных регистров трансивера, никаких настроек ими не производится. Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 May 22, 2014 Posted May 22, 2014 (edited) · Report post я задействовал reset, TXD[0:3], TXen, TXclk. Выводы COL, CRS и для контроля MDC, MDIO я не задействовал. Также я не трогал все выводы на прием, т.к. на начальном этапе пытаюсь освоить передачу. Вот эту часть кода (включая .ucf) хотя бы можете выложить? Содержимое ROM и сторона ПК пока не нужны. Edited May 22, 2014 by olegras Quote Share this post Link to post Share on other sites More sharing options...