|
вопрос чайника: не получается послать UDP-пакет (использую S3eboard), ткните носом - где ошибка? |
|
|
|
Jul 4 2008, 21:35
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006

|
Хочу послать простой 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
pack.vhd ( 24.77 килобайт )
Кол-во скачиваний: 354
pack_test.vhd ( 1.81 килобайт )
Кол-во скачиваний: 336
pack.ucf.txt ( 1.21 килобайт )
Кол-во скачиваний: 290
|
|
|
|
|
Jul 6 2008, 18:31
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006

|
В продолжении темы. Простой пример посылки UDP-пакета. Сам я когда искал, ничего подобного не нашёл, так что, может, кому пригодится. В примере непрерывно генерируется ПСП (код Голда - такой же как у первого спутника GPS). Тактовая частоа 50 МГц. Далее это попадает в буфер и из содержимого буфера формируется UDP-пакет (основная задача посчитать CRC), который и передается. В приложении проект для ISE Web Pack 10.1. И схема реализованного цифрового устройства. Получена скорость 50 Мбит, думаю, это не предел.
Прикрепленные файлы
UDP.zip ( 274.75 килобайт )
Кол-во скачиваний: 341
|
|
|
|
|
Jul 8 2008, 07:21
|

Участник

Группа: Участник
Сообщений: 27
Регистрация: 26-01-08
Из: Гусь-Хрустальный - Владимир
Пользователь №: 34 452

|
В UDP возможны потери пакетов, скорости которые приведены это учитывают? А каким методом вы проверяли потери пакетов и какова была конфигурация сети?
Сообщение отредактировал per_aspera_ad_astra - Jul 8 2008, 07:22
--------------------
За беспокойство не беспокойтесь.
|
|
|
|
|
Jul 10 2008, 06:59
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006

|
Цитата(per_aspera_ad_astra @ Jul 8 2008, 11:21)  В UDP возможны потери пакетов, скорости которые приведены это учитывают? А каким методом вы проверяли потери пакетов и какова была конфигурация сети? Нет, приведенные скорости не учитывают потери пакетов. Потери пакетов никак не проверял. Конфигурация сети самая примитивная: плата и компьютер соединены напрямую, без хабов/свичей.
|
|
|
|
|
Aug 11 2008, 08:13
|
Группа: Новичок
Сообщений: 10
Регистрация: 22-04-08
Пользователь №: 36 987

|
Спасибо, направил на очень полезную инфу для новичка. Объясни, пожалуйста, что такое: 1. FSM 2. Задачу(подробнее о пакете и тд) для полного понимания взаимодействия программы. 3. Подробнее о принципе работы твоей программы pack.vhd с описанием переменных типа что и для чего какая (для новичка) и для чего ты в программе проверяешь значение COUNT1 до 145. 4. Как ты управляешь микрухой LAN83C185? (как конфигурируешь регистры и проводишь первую её инициализацию).
Заранее благодарен.
А вообще твоя инфа очень полезная для новичков...
|
|
|
|
|
Aug 11 2008, 09:33
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006

|
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
|
|
|
|
|
Aug 13 2008, 07:00
|
Группа: Новичок
Сообщений: 10
Регистрация: 22-04-08
Пользователь №: 36 987

|
Спасибо В процессе работы появляются все новые вопросы: -когда ты посылаешь в 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 и для чего он?
и ещё, здесь все пишуь про генерацию готового блока езернета, так вот может кто-нить подробнее опишет процедуру генерации в коре-генераторе
спасибо.
|
|
|
|
|
Aug 13 2008, 11:16
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(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 пакета
|
|
|
|
|
Aug 13 2008, 11:50
|
Группа: Новичок
Сообщений: 10
Регистрация: 22-04-08
Пользователь №: 36 987

|
XVR, Спасибо Нашел инфу по форматам кадров и все, разобрался. Остались вопросы: Цитата Как используется вывод txd4 и для чего он? Цитата и ещё, здесь все пишут про генерацию готового блока езернета, так вот может кто-нить подробнее опишет процедуру генерации в коре-генераторе П.С. Обязательно ли считать контрольную сумму Ethernet пакета (последние 4 байта)?
|
|
|
|
|
Aug 14 2008, 07:32
|
Группа: Новичок
Сообщений: 10
Регистрация: 22-04-08
Пользователь №: 36 987

|
Цитата(:-) @ Aug 14 2008, 09:11)  txd4 - в данном случае никак не использовался. Я в принципе понял что не использовался, но хотелось бы разобраться для чего он?
|
|
|
|
|
Aug 22 2008, 05:15
|
Группа: Новичок
Сообщений: 10
Регистрация: 22-04-08
Пользователь №: 36 987

|
Получилось передать простые данные по езернет. Теперь пытаюсь считать CRC на плис самостоятельно. По сему вопрос к :-): Во втором примере я заметил, что при вычислении ты пользовался генератором кода http://www.easics.com/webtools/crctool. Какой полином выбирал? Что делеал после, когда сгенерировал код? Опиши поподробней как вычислял(все по порядку) Спасибо И еще вопрос: как принять пакет от компа? Для этого ты уже настраивал LAN83C185? Или она и так принимает все пакеты, только надо выделять свой ИП-адрес и обрабатывать дальше данные?
|
|
|
|
|
Aug 31 2008, 19:31
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Timonnn @ Aug 22 2008, 09:15)  Получилось передать простые данные по езернет. Теперь пытаюсь считать CRC на плис самостоятельно. По сему вопрос к :-): Во втором примере я заметил, что при вычислении ты пользовался генератором кода http://www.easics.com/webtools/crctool. Какой полином выбирал? Что делеал после, когда сгенерировал код? Опиши поподробней как вычислял(все по порядку) Спасибо Модуль CRC из рабочего проекта [attachment=24355:attachment]
|
|
|
|
|
Jan 9 2009, 08:27
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806

|
Привет!  Сделал пример из udp.rar. Все класс , пакеты в Commview на компьютер прилетают. Все мое - ip, мас,checksum. Вот только данные какието не мои  . В примере кодирую : 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 значит кодирование. Что почитать?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|