Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: вопрос чайника: не получается послать UDP-пакет (использую S3eboard)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
:-)
Хочу послать простой UDP-пакет с помощью кита s3eboard. Сам пакет получил с помощью вот этой проги: http://www.fpga4fun.com/files/EthernetUDP.zip . Далее реализовал простейшый FSM. Исходники прикреплены (pack.vhd - основной файл. pack_test.vhd - тест. И в довесок pack.ucf (обозвал pack.ucf.txt - иначе он не прикреплялся)). Работу FSM проверил (выдавал данные не на phy-микросхему, а на светодиоды на ките).

Вопросы:

1) Где я ошибся? Как заставить это работать?

2) А как вообще грамотно отлаживать такие вещи? Т.е. можно ли после программирования ПЛИС, во время её работы отслеживать состояние внутренних сигналов ПЛИС? Как это сделать для указанного кита?

P.S. Использую WebPack 10.1

Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
:-)
Всем спасибо, разобрался сам. Не в том порядке выставлял биты в байте. Исправленный вариант в приложении.
:-)
В продолжении темы. Простой пример посылки UDP-пакета. Сам я когда искал, ничего подобного не нашёл, так что, может, кому пригодится.

В примере непрерывно генерируется ПСП (код Голда - такой же как у первого спутника GPS). Тактовая частоа 50 МГц. Далее это попадает в буфер и из содержимого буфера формируется UDP-пакет (основная задача посчитать CRC), который и передается.

В приложении проект для ISE Web Pack 10.1. И схема реализованного цифрового устройства.

Получена скорость 50 Мбит, думаю, это не предел.
per_aspera_ad_astra
В UDP возможны потери пакетов, скорости которые приведены это учитывают? А каким методом вы проверяли потери пакетов и какова была конфигурация сети?
:-)
Цитата(per_aspera_ad_astra @ Jul 8 2008, 11:21) *
В UDP возможны потери пакетов, скорости которые приведены это учитывают? А каким методом вы проверяли потери пакетов и какова была конфигурация сети?


Нет, приведенные скорости не учитывают потери пакетов. Потери пакетов никак не проверял. Конфигурация сети самая примитивная: плата и компьютер соединены напрямую, без хабов/свичей.
Timonnn
Спасибо, направил на очень полезную инфу для новичка.
Объясни, пожалуйста, что такое:
1. FSM
2. Задачу(подробнее о пакете и тд) для полного понимания взаимодействия программы.
3. Подробнее о принципе работы твоей программы pack.vhd с описанием переменных типа что и для чего какая (для новичка) и для чего ты в программе проверяешь значение COUNT1 до 145.
4. Как ты управляешь микрухой LAN83C185? (как конфигурируешь регистры и проводишь первую её инициализацию).


Заранее благодарен.


А вообще твоя инфа очень полезная для новичков...
:-)
1. FSM - finite state machine, т.е. конечный автомат. Используется для управления. Подробнее о них можно поискать на форуме или в Яндексе.

2. Задача, поставленная в проекте pack.vhd - передача простого UDP-пакета на компьютер.

3. STATE1 и NEXT_STATE1 - текущее состояние FSM и следующее состояние. COUNT1 и NEXT_COUNT - текущее и следующее состояние счётчика. Он также используется для управления FSM. txd, txen, txd4, mdc, mdio - для взаимодействия с микросхемой phy.

4. Никакой начальной инициализации я не проводил. Без всякой инициализации всё заработало.

Логика работы проста: происходит постоянная посылка UDP-пакета, затем пауза, затем снова посылка и т.д. Посылается UDP-пакет минимальной длины (кажется, 64 байта). Полезная часть пакета представляет собой числа от 0 до 17 (всего 18 байт). Пересылка пакета производится частями по 4 бита.

Для запуска на другой машине с другим MAC - адресом придётся изменять заголовок пакета. Нужно правильно указать MAC-адрес получателя (компа), ip-адрес получателя и изменять контрольные суммы UDP-пакета и Ethernet-пакета. Проще сформировать новый пакет с помощью вот этой проги: http://www.fpga4fun.com/files/EthernetUDP.zip.

Рекомендую ознакомиться вот с этим сайтом: http://www.fpga4fun.com/10BASE-T.html
Timonnn
Спасибо
В процессе работы появляются все новые вопросы:
-когда ты посылаешь в PHY по 4 бита то она сама далее формирует пакет?
-можно ли обойтись вообще без МАК-адресов?
-формировал пакет с помощью проги - в итоге не могу разобраться с некоторыми байтами

исх. данные
МАК отправителя: 001234567890 (это должна быть фиксированная длина?)
МАК получателя: 0010А47ВЕА80
ИП отправителя: 192.168.0.44
ИП получателя: 192.168.0.4
Порты отправителя и получателя: 1024 и 1024 соответственно
Длина полезных данных в УДП - 18 байт
В итоге выдало следующее:
55555555555555D50010A47BEA8000123456789008004500002EB3FE000080110540C0A8002CC0A8
000404000400001A2DE8000102030405060708090A0B0C0D0E0F1011B331881B

в моем понимании полного пакета:
8байт(преамбула)+6байт(МАК получ)+6байт(отпр)+2байта(???)+20байт(ИП заголовок)+8байт(УДП заголовок)+22байта(????)

Так вот байты с вопросами- я не разобрался
Как используется вывод txd4 и для чего он?


и ещё, здесь все пишуь про генерацию готового блока езернета, так вот может кто-нить подробнее опишет процедуру генерации в коре-генераторе

спасибо.
XVR
Цитата(Timonnn @ Aug 13 2008, 11:00) *
Спасибо
В процессе работы появляются все новые вопросы:
-когда ты посылаешь в PHY по 4 бита то она сама далее формирует пакет?


Да
Цитата
-можно ли обойтись вообще без МАК-адресов?
Да, передавай FFFFFFFFFFFF - broadcast адрес
Цитата
-формировал пакет с помощью проги - в итоге не могу разобраться с некоторыми байтами

исх. данные
МАК отправителя: 001234567890 (это должна быть фиксированная длина?)
Да

Цитата
МАК получателя: 0010А47ВЕА80
ИП отправителя: 192.168.0.44
ИП получателя: 192.168.0.4
Порты отправителя и получателя: 1024 и 1024 соответственно
Длина полезных данных в УДП - 18 байт
В итоге выдало следующее:
55555555555555D50010A47BEA8000123456789008004500002EB3FE000080110540C0A8002CC0A8
000404000400001A2DE8000102030405060708090A0B0C0D0E0F1011B331881B

в моем понимании полного пакета:
8байт(преамбула)+6байт(МАК получ)+6байт(отпр)+2байта(???)+20байт(ИП заголовок)+8байт(УДП заголовок)+22байта(????)

2байта(???) - Длинна Ethernet пакета (в сетевом формате - MSB)

22байта(????) - 18 байт данных UDP + 4 байта CRC32 Ethernet пакета
Timonnn
XVR, Спасибо

Нашел инфу по форматам кадров и все, разобрался.

Остались вопросы:

Цитата
Как используется вывод txd4 и для чего он?


Цитата
и ещё, здесь все пишут про генерацию готового блока езернета, так вот может кто-нить подробнее опишет процедуру генерации в коре-генераторе


П.С. Обязательно ли считать контрольную сумму Ethernet пакета (последние 4 байта)?
:-)
txd4 - в данном случае никак не использовался.

Контрольную сумму Ethernet-пакета считать обязательно!
Timonnn
Цитата(:-) @ Aug 14 2008, 09:11) *
txd4 - в данном случае никак не использовался.



Я в принципе понял что не использовался, но хотелось бы разобраться для чего он?
Timonnn
Получилось передать простые данные по езернет.
Теперь пытаюсь считать CRC на плис самостоятельно.
По сему вопрос к :-):
Во втором примере я заметил, что при вычислении ты пользовался генератором кода http://www.easics.com/webtools/crctool.
Какой полином выбирал? Что делеал после, когда сгенерировал код?
Опиши поподробней как вычислял(все по порядку)
Спасибо

И еще вопрос: как принять пакет от компа? Для этого ты уже настраивал LAN83C185? Или она и так принимает все пакеты, только надо выделять свой ИП-адрес и обрабатывать дальше данные?
XVR
Цитата(Timonnn @ Aug 22 2008, 09:15) *
Получилось передать простые данные по езернет.
Теперь пытаюсь считать CRC на плис самостоятельно.
По сему вопрос к :-):
Во втором примере я заметил, что при вычислении ты пользовался генератором кода http://www.easics.com/webtools/crctool.
Какой полином выбирал? Что делеал после, когда сгенерировал код?
Опиши поподробней как вычислял(все по порядку)
Спасибо
Модуль CRC из рабочего проекта Нажмите для просмотра прикрепленного файла
litv
Привет! rolleyes.gif Сделал пример из udp.rar. Все класс , пакеты в Commview на компьютер прилетают. Все мое - ip, мас,checksum.
Вот только данные какието не мои unsure.gif . В примере кодирую :
X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A",
X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A",
X"BC", X"DE",

А принимаются другие:
Received 962 bytes from 192.168.0.44:1024
44 32 0E 52 79 44 FA B4 45 56 47 A7 ED CD F2 A8 40 3A 91 37 83 D7 33 D8 0B CF A9 8B 71 BD 45 60 80 40 C7 60 71 BF E9 D2 D8 55 89 CB 76 3B BC 36 19 24 1B 4B 78 B8 14 9F 82 AE 7D 7C CC 71 B5 5B 1B B8 00 B3 67 68 2A EB A5 1C E2 51 4B 42 B6 B6 39 EC 87 E5 A2 1F 57 32 49 7F E1 F7 8D CB 0E 54 29 5F 8F 69 D9 FB E8 C7 C0 4A 2D 11 36 07 68 D1 23 8B 32 79 BF 32 9A 6B CD A9 DE 35 10 89 38 72 88 64 1C A4 F2 89 F5 68 8A AC 8F 4F DB 9B E5 50 80 75 22 6F 07 AE 67 B0 17 9F 53 16 E3 7A 8A C1 00 81 8E C0 E3 7F D3 A5 B0 AB 13 96 EC 77 78 6C 32 48 36 96 F1 70 29 3F 05 5C FA F9 98 E3 6A B6 37 70 01 66 CE D0 55 D7 4A 39 C4 A2 96 85 6D 6C 73 D9 0F CB 44 3E AE 64 92 FF C3 EF 1B 96 1C A8 52 BF 1E D3 B3 F7 D1 8F 80 94 5A 22 6C 0E D1 A2 47 16 64 F3 7E 65 34 D7 9B

Они все время повторяются с определенным сдвигом. Чем то закодированы? На сайте fpga4fun сразу правильные. В udp значит кодирование. Что почитать? cranky.gif
:-)
Цитата(litv @ Jan 9 2009, 11:27) *
Привет! rolleyes.gif Сделал пример из udp.rar. Все класс , пакеты в Commview на компьютер прилетают. Все мое - ip, мас,checksum.
Вот только данные какието не мои unsure.gif . В примере кодирую :
X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A",
X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A", X"AF", X"F0", X"0A",
X"BC", X"DE",

А принимаются другие:
Received 962 bytes from 192.168.0.44:1024
44 32 0E 52 79 44 FA B4 45 56 47 A7 ED CD F2 A8 40 3A 91 37 83 D7 33 D8 0B CF A9 8B 71 BD 45 60 80 40 C7 60 71 BF E9 D2 D8 55 89 CB 76 3B BC 36 19 24 1B 4B 78 B8 14 9F 82 AE 7D 7C CC 71 B5 5B 1B B8 00 B3 67 68 2A EB A5 1C E2 51 4B 42 B6 B6 39 EC 87 E5 A2 1F 57 32 49 7F E1 F7 8D CB 0E 54 29 5F 8F 69 D9 FB E8 C7 C0 4A 2D 11 36 07 68 D1 23 8B 32 79 BF 32 9A 6B CD A9 DE 35 10 89 38 72 88 64 1C A4 F2 89 F5 68 8A AC 8F 4F DB 9B E5 50 80 75 22 6F 07 AE 67 B0 17 9F 53 16 E3 7A 8A C1 00 81 8E C0 E3 7F D3 A5 B0 AB 13 96 EC 77 78 6C 32 48 36 96 F1 70 29 3F 05 5C FA F9 98 E3 6A B6 37 70 01 66 CE D0 55 D7 4A 39 C4 A2 96 85 6D 6C 73 D9 0F CB 44 3E AE 64 92 FF C3 EF 1B 96 1C A8 52 BF 1E D3 B3 F7 D1 8F 80 94 5A 22 6C 0E D1 A2 47 16 64 F3 7E 65 34 D7 9B

Они все время повторяются с определенным сдвигом. Чем то закодированы? На сайте fpga4fun сразу правильные. В udp значит кодирование. Что почитать? cranky.gif



Увидеть бы код, который вы в итоге используете. А то понять ничего невозможно...
litv
Цитата(:-) @ Jan 9 2009, 12:56) *
Увидеть бы код, который вы в итоге используете. А то понять ничего невозможно...

Так код - Вы же выложили - udp.zip (6 июля здесь же) biggrin.gif .
Просто мак адреса и контрольную сумму вписал свои.
Они кстати читаются правильно. А вот данные - нет.
Т.е. по примеру udp.zip должны читаться данные из файла memd.vhd (udp_payload).
:-)
Цитата(litv @ Jan 9 2009, 13:50) *
Так код - Вы же выложили - udp.zip (6 июля здесь же) biggrin.gif .
Просто мак адреса и контрольную сумму вписал свои.
Они кстати читаются правильно. А вот данные - нет.
Т.е. по примеру udp.zip должны читаться данные из файла memd.vhd (udp_payload).


Если изменяли только мак-адрес и контрольную сумму, то так и должно работать wink.gif

Я же написал, что там постоянно генерируется код Голда, который и передаётся (модуль prs.vhd). Начальная инициализация памяти не влияет на то, что передаётся. Если хотите передать свои данные, то измените модуль prs.vhd, чтобы он выдавал ваши данные.
litv
Цитата(:-) @ Jan 9 2009, 14:02) *
Если изменяли только мак-адрес и контрольную сумму, то так и должно работать ;)

Я же написал, что там постоянно генерируется код Голда, который и передаётся (модуль prs.vhd). Начальная инициализация памяти не влияет на то, что передаётся. Если хотите передать свои данные, то измените модуль prs.vhd, чтобы он выдавал ваши данные.


Спасибо за помощь biggrin.gif
alex28041986
Здравствуйте! Я новичок в этом деле... начал разбираться в этом примере и мне не совсем понятно: в файле prs есть код:
Код
entity prs is
    Port ( CLK : in  STD_LOGIC;
           RESET : in  STD_LOGIC;
           DOUT : out  STD_LOGIC);


Как понять куда данные из выхода "DOUT" идут?
lastpoint
Здравствуйте. Зашил в ПЛИС этот проект, подключил свой MAC, IP - работает. НО при попытки изменить отправляемые данные приводят к тому, что ПК не видит ничего. значение не имеет отправляется ли константа или какая-либо последовательность чисел. В чем может быть проблема? Проект в архиве прилагается Нажмите для просмотра прикрепленного файла
litv
CRC для новых данных кто будет рассчитывать?

http://www.fpga4fun.com/10BASE-T2.html
lastpoint
Спасибо, a14.gif как-то криво рассчитал, и не заметил. Все заработало, как швейцарские часыsm.gif
lastpoint
Доброго времени суток. Вопрос в следующем. До этого момента принимал данные программой Wireshark - пакеты исправно приходят Нажмите для просмотра прикрепленного файла (посылается 970 байт X"01") .
Теперь встал вопрос о приеме своей программой. Попробовал принимать программой со страницы http://www.fpga4fun.com/10BASE-T0.html , к сожалению, без успешно. Пробовал организовать прием UdpClient :
UdpClient recivingudpClient = new UdpClient(1024);
IPEndPoint RmoteIPEnd = null;
try
{
byte[] reciverBytes = recivingudpClient.Receive(ref RmoteIPEnd);
s="\n";
for (int i=0;i<reciverBytes.Length;i++)
s+= reciverBytes[i].ToString("X2");
recivingudpClient.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Но, данные не принимаются. программа не видит их в никакую. Вот, собственно, и вопрос: как принять данные с ПЛИС и корректно их обработать?
lastpoint
использовал http://www.codeproject.com/Articles/4217/P...ons-Ported-to-a - получилось принимать данные, но до сих пор мучает вопрос: почему не вышло принимать данные при помощи стандартных средств visual studio, неужели все так плохо в windows и .net с ней же? 05.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.