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

MAC controller для Nexys 3 на Spartan 6

2 ТС: Споры дошли до такого уровня, когда Вам нужно народу поподробнее описать функционал своего устройства. А то тут Вас сейчас заставят поменять религию, а может оно Вам и не надо.

 

2 Все остальные: Уважаемые, давайте сначала поможем ТС запустить трансивер. А вдруг в остальном он сам разберется.

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


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

В железе можно сделать формирователь UDP пакетов, но не более... ну вернее сделать можно все, но стоит делать не более...

 

а если с вами это сделает кто-то еще на другом конце езернета че будет? Вы учитываете что на МАК уровне решаются конфликты и арбитраж сети?

то есть, если сформировать полный кадр для UDP протокола ( преамбулу, маки, ip header, udp пакет, CRC) и отправить на ноги трансивера, сетевая карта его просто не увидит?

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


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

то есть, если сформировать полный кадр для UDP протокола ( преамбулу, маки, ip header, udp пакет, CRC) и отправить на ноги трансивера, сетевая карта его просто не увидит?

Если правильно сформировать - обязательно увидит. Golikov A. наверное имеет ввиду если трансивер работает в режиме полудуплекс.

Изменено пользователем olegras

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


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

2 ТС: Споры дошли до такого уровня, когда Вам нужно народу поподробнее описать функционал своего устройства. А то тут Вас сейчас заставят поменять религию, а может оно Вам и не надо.

 

2 Все остальные: Уважаемые, давайте сначала поможем ТС запустить трансивер. А вдруг в остальном он сам разберется.

большое спасибо за понимание:-)

задача следующая: организовать обмен данными с компьютером. протокол UDP. приоритетом является скорость передачи, при чем с компьютера идут управляющие сигналы, реже чем данные с платы.

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


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

То есть:

Со стороны ПК - с фиксированных IP и МАС адресов ПК, по фиксированным UDP портам на устройство периодически поступают пакеты из фиксированного набора ("команд"). И только.

Со стороны устройства - с фиксированных IP и МАС адресов устройства, по фиксированным UDP портам на ПК непрерывно (почти непрерывно) поступают пакеты. И толко.

Так?

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


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

То есть:

Со стороны ПК - с фиксированных IP и МАС адресов ПК, по фиксированным UDP портам на устройство периодически поступают пакеты из фиксированного набора ("команд"). И только.

Со стороны устройства - с фиксированных IP и МАС адресов устройства, по фиксированным UDP портам на ПК непрерывно (почти непрерывно) поступают пакеты. И толко.

Так?

совершенно верно

 

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


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

Ну здесь действительно можно обойтись без процессора. Но дополнительно устройство должно (как минимум, при работе в реальных условиях):

- уметь отвечать на ARP ПК;

- если предполагается, что сеть может быть и полудуплекс - уметь выполнять процедуру разрешения коллизии (эта процедура описана не помно в каком RFC и хорошо ложится на конечный автомат);

- иметь возможность как-то вводить IP и МАС адреса сторон (например УАРТ + ГиперТерминал);

- обязательно учитывать необходимость IPG (минимальный интервал между пакетами);

- учитывать, что в сети (если она составная) может оказаться что размер Вашего пакета надо будет динамически уменьшать (об этом устройство узнает в пришедшем пакете ICMP);

- учитывать, что в сети UDP пакет может потеряться (и это законно).

Ну если с ходу - пока все. Потом можно будет прикрутить ICMP, чтобы с ПК пинговать (если надо).

Все это возможно реализовать в автомате.

Но сначала - трансивер. Или он у Вас уже заработал?

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


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

Но сначала - трансивер. Или он у Вас уже заработал?

собрал проект с процессором и Mac ядром, запустил hello world для начала, проект заработал, и заработали светодиоды на разъеме Ethernet,

они в свою очередь питаются от трансивера

думаю что трансивер жив, в следующий раз проверю наличие клоков

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


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

собрал проект с процессором и Mac ядром, запустил hello world для начала, проект заработал, и заработали светодиоды на разъеме Ethernet,

они в свою очередь питаются от трансивера

думаю что трансивер жив, в следующий раз проверю наличие клоков

В этом проекте ничего не передавая на трансивер, проверьте уровни на всех его управляющих ногах (кабель Ethernet отключите). Потом перевключите плату (без прошивки ПЛИС) и замерьте эти же ноги. Отпишитесь.

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


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

В этом проекте ничего не передавая на трансивер, проверьте уровни на всех его управляющих ногах (кабель Ethernet отключите). Потом перевключите плату (без прошивки ПЛИС) и замерьте эти же ноги. Отпишитесь.

Создал проект с процессором, вставил туда ядро MAC contr., запустил Hello world/. на RJ 45 заморгали светодиоды. Проверил питающие трансивера -- в норме согласно мануала, осцилографом посмотрел клоки rx tx. Тоже нормально 25 МГц. Сходу попробывал запустить пример для процессора с MAC ядром. Чтобы потом настроить передачу данных на компьютер и Chipscop ом снять сигналы с ног на трансивер. Пример "слету" запустить не получилось.

Далее думаю в буфер записать полный кадр и выдать на трансивер. В кадр вставить заданные адреса (MAC, IP, порт). Но для начала небходимо добиться работы трансивера (клоков) без процессора.

Изменено пользователем farbius

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


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

Хорошо. Видимо я не смог объяснить что от Вас требуется. Зайдем с другой стороны.

Вы не могли бы выложить свой код?

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


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

Хорошо. Видимо я не смог объяснить что от Вас требуется. Зайдем с другой стороны.

Вы не могли бы выложить свой код?

 

Код довольно прост. Создаю ROM на 1500 байт. В ячейки ROM записываю побайтно UDP пакет: 7 байт преамбула (10101010), 1 байт SFD (10101011), MAC компьютера (6 байт), MAC ПЛИС задаю сам (6 байт), и т.д. весь кадр:

post-77312-1400723351_thumb.png

 

Выводы с ПЛИС на трансивер следующие:

post-77312-1400723471_thumb.png

я задействовал 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 запросами.

 

 

 

 

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


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

у меня вопрос

где и в какой момент вы заполняете регистры физики, настраиваете ее на работу, запускаете процесс аутонегатенации, сбрасываете, и так далее?

 

вас не удивляет что в MII есть еще командная часть интерфейса, по которой идут данные не в сеть а в физику?

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


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

у меня вопрос

где и в какой момент вы заполняете регистры физики, настраиваете ее на работу, запускаете процесс аутонегатенации, сбрасываете, и так далее?

 

вас не удивляет что в MII есть еще командная часть интерфейса, по которой идут данные не в сеть а в физику?

 

Как я понял настройка происходит автоматически. Потому как больше никаких воздействий кроме вышеописанных я оказать не могу. Как я разобрался сигналы MDC(клок) и MDI для чтения контрольных регистров трансивера, никаких настроек ими не производится.

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


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

я задействовал reset, TXD[0:3], TXen, TXclk. Выводы COL, CRS и для контроля MDC, MDIO я не задействовал. Также я не трогал все выводы на прием, т.к. на начальном этапе пытаюсь освоить передачу.

Вот эту часть кода (включая .ucf) хотя бы можете выложить? Содержимое ROM и сторона ПК пока не нужны.

 

Изменено пользователем olegras

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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