реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> xilinx tri mode ethernet mac, Работа корки сгенерированной в xilinx-е
NSergeevich
сообщение Mar 20 2015, 08:03
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Всем привет. Есть ли у кого-нибудь опыт в реализации проекта xilinx tri mode ethernet mac ? На RGMII гигабитный PHY.
У меня появилось несколько вопросов:
1. RGMII - Reduce Gigabit Media Independent Interface. RGMII использует половину цепей, используемых в GMII интерфейсе. Всего 12 контактов, и среди них TXD и RXD по [3:0], т.е. по 4 цепи.
Но, генерируемая корка MAC-а (tri mode ethernet mac) в xilinxe при выборе RGMII интерфейса выдает TXD и RXD по [7:0], т.е. по 8 цепей, (как обычный GMII). Вопрос, я же не могу свой PHY с 4-мя цепями коннектить только на половину цепей, что выходит из мака? Что с этим делать?
2. Если я правильно разобрался, то на GTX_CLK (клок на phy) и на tx_axi_clk (клок на mac)(опять же все применимо к rgmii) нужно подавать 125mhz clk ?
3. Я пробую протащить пакеты через MAC. Подаю на вход [7:0] tx_axis_mac_tdata (Frame data to be transmitt) вместе с tx_axis_mac_tvalid (TX Data Valid), но пакеты не попадают на PHY (и на выходе мака нету). Почему не проходят, как правильно отправить? Есть ли пример?
Заранее спасибо за терпение)
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение May 29 2015, 14:23
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Я разобрался с вопросами которые выше.
Появился новый.
Покажу две картинки. Первая иллюстрирует, что идет на вход MAC, а вторая что появляется на выходе.
Как мы помним ethernet frame состоит из следующих частей: Preamble 7 byte, Start of Frame Delimiter (SFD) 1 byte, Destination Address 6 byte, Source Address 6 byte, Length/Type 2 byte, Data 0-1500 byte, Pad 0-46 byte, FCS 4 byte
Мой MAC устроен таким образом, что я на его вход подаю только DA,SA,L/T,DATA а на выходе все остальное он добавляет сам и далее все идет на PHY Data.
Но на выходе c MAC, как мы видим на 2-ой картинке он, действительно добавляет недостающие части фрейма, например Preamble и т.д. НО! Destination Address и Source Address вместо 6 byte адреса выдает только 1 byte тоесть неполный адрес.
Есть ли идеи почему он обрезает DA и SA ? Ведь, как я понимаю, на вход PHY должен приходить адрес полностью.

1-ая картинка:

Прикрепленное изображение


2-ая картинка:

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение May 29 2015, 16:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



Цитата(NSergeevich @ May 29 2015, 18:23) *
Мой MAC устроен таким образом, что я на его вход подаю только DA,SA,L/T,DATA а на выходе все остальное он добавляет сам и далее все идет на PHY Data.

Не помню, чтобы его можно было настраивать таким образом. Описание (ug138) сейчас посмотрел и тоже не нашел. Может покажете, как вы его так подключили.
По-моему можно задать только свой MAC-адрес и только для проверки принятых пакетов, а не отправляемых.

А еще хорошо бы в ChipScope и управляющие сигналы вывести, а не только данные, в XC6SLX100 памяти полно.

Еше раз описание посмотрел, а вы сигнала emacclienttxack дожидаетесь (Figure 7-7)?
Go to the top of the page
 
+Quote Post
tolik1
сообщение Jun 1 2015, 08:03
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Цитата(NSergeevich @ May 29 2015, 18:23) *
Я разобрался с вопросами которые выше.
Появился новый.
Покажу две картинки. Первая иллюстрирует, что идет на вход MAC, а вторая что появляется на выходе.
Как мы помним ethernet frame состоит из следующих частей: Preamble 7 byte, Start of Frame Delimiter (SFD) 1 byte, Destination Address 6 byte, Source Address 6 byte, Length/Type 2 byte, Data 0-1500 byte, Pad 0-46 byte, FCS 4 byte
Мой MAC устроен таким образом, что я на его вход подаю только DA,SA,L/T,DATA а на выходе все остальное он добавляет сам и далее все идет на PHY Data.
Но на выходе c MAC, как мы видим на 2-ой картинке он, действительно добавляет недостающие части фрейма, например Preamble и т.д. НО! Destination Address и Source Address вместо 6 byte адреса выдает только 1 byte тоесть неполный адрес.
Есть ли идеи почему он обрезает DA и SA ? Ведь, как я понимаю, на вход PHY должен приходить адрес полностью.

1-ая картинка:

Прикрепленное изображение


2-ая картинка:

Прикрепленное изображение

К сожалению я затрудняюсь сказать что-либо глядя на Ваши картинки, но когда я с ним разбирался я взял за основу пример который генерится визардом (AddresSwap как то так этот модуль называется). я с одной стороны подключил Chip scope с другой комп с Wireshark. Mac в исполнении Xilinx формирует преамбулу, SFD и FCS. все остальное тело пакета надо грузить через интерфейс данных.
Go to the top of the page
 
+Quote Post
Trashy_2
сообщение Jun 1 2015, 08:31
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 254
Регистрация: 27-10-08
Пользователь №: 41 220



Вы в хексе напишите, что вы получаете, вместе с приамбулами и т.д. А, то нет желания побитово декодировать. Всю посылку.
От себя добавлю,когда парился с RGMII, ждал ETHERNET пакета. Мне приходили данные, я ничё понять не мог - заголовки и тело не соответствовали формату пакетов ethernet, пока не допёрло: ПРОЦ сначала шлёт ARP запрос на предмет "прозвонки" связи. И только после этого слал нужные мне данные.

Ещё! Не забываем, что RGMII - даблрэйт. Первый нибл забираем по переднему фронту, а второй нибл по заднему.

Сообщение отредактировал Trashy_2 - Jun 1 2015, 09:02


--------------------
Транзистор не сможет измерить широкое сердце героя!(ц)
Go to the top of the page
 
+Quote Post
egorman44
сообщение Jun 1 2015, 10:51
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 141
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507



Цитата(tolik1 @ Jun 1 2015, 11:03) *
К сожалению я затрудняюсь сказать что-либо глядя на Ваши картинки, но когда я с ним разбирался я взял за основу пример который генерится визардом (AddresSwap как то так этот модуль называется). я с одной стороны подключил Chip scope с другой комп с Wireshark. Mac в исполнении Xilinx формирует преамбулу, SFD и FCS. все остальное тело пакета надо грузить через интерфейс данных.
очень верный способ, на мой взгляд. Плюс ко всему там тестбенч написан, который можете запустить даже в Isim и посмотреть что к чему. Так же есть дока официальная на корку UG138 "LogiCORE IP Tri-Mode Ethernet MAC v4.5" там все ответы на интересующие Вас вопросы.
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение Jun 1 2015, 14:25
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Не успел написать. Я разобрался, в чем дело, на прошлой неделе. Но косяк еще не устранил, т.к. в программировании я оч. слаб.
Там дело в том, что первые байты DA и SA уже прошли а handshaking приходит позже, соответственно эти первые байты на выходе обрезались.
Теперь нужно сделать так, чтобы первый байт отправлялся до тех пор пока не придет handshaking и далее остальное.

А по поводу модуля AddresSwap, надо глянуть.

Глянул, не нашел. Есть только Multiply Adder и Adder Subtracter.

Как написать простой код, чтобы первый байт отправлялся до тех пор пока не придет какой-либо внешний сигнал, а как только он приходит отправляются следующие байты? =)
Go to the top of the page
 
+Quote Post
Trashy_2
сообщение Jun 1 2015, 15:08
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 254
Регистрация: 27-10-08
Пользователь №: 41 220



Цитата(egorman44 @ Jun 1 2015, 13:51) *
"LogiCORE IP Tri-Mode Ethernet MAC v4.5"


А что бы эту корку юзать, надо денежку заносить куда то или она халявная?


--------------------
Транзистор не сможет измерить широкое сердце героя!(ц)
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение Jun 1 2015, 16:15
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Цитата(Trashy_2 @ Jun 1 2015, 18:08) *
А что бы эту корку юзать, надо денежку заносить куда то или она халявная?


webpack покупаешь и все в нем халява
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение Jun 2 2015, 10:09
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Как на Verilog описать задержку первого байта до прихода emacclienttxack ?


Прикрепленное изображение


Сообщение отредактировал NSergeevich - Jun 2 2015, 12:22
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение Jun 2 2015, 12:21
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Может быть, кто-нибудь использовал конструкцию The wait statement в верилоге ?
Go to the top of the page
 
+Quote Post
egorman44
сообщение Jun 2 2015, 13:48
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 141
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507



Цитата(NSergeevich @ Jun 2 2015, 13:09) *
Как на Verilog описать задержку первого байта до прихода emacclienttxack ?


Прикрепленное изображение


можно написать конечный автомат, который будет висеть в состояние до того момента как придет emacclienttxack, и находясь в новом состоянии будет выдавать новые данные на clientemactxd. Опять же настоятельно рекомендую посмотреть пример. В примере между MAC контроллером и модулем client_side вставлен FIFO, и соблюдение всех рукопожатий ложится на этот модуль, Вам же остается просто кидать данные в FIFO и следить чтобы он не переполнился, если вы работаете на передачу.

Цитата(NSergeevich @ Jun 2 2015, 15:21) *
Может быть, кто-нибудь использовал конструкцию The wait statement в верилоге ?


Для верификации сколько хош sm.gif

UPD: я может чего не так понял , если вы пользуете ядро под номером 4.6 то в папке куда у вас сгенирировалась корка есть папка example_design в ней и смотрите пример
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение Jun 3 2015, 06:56
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Цитата(egorman44 @ Jun 2 2015, 16:48) *
можно написать конечный автомат, который будет висеть в состояние до того момента как придет emacclienttxack, и находясь в новом состоянии будет выдавать новые данные на clientemactxd. Опять же настоятельно рекомендую посмотреть пример. В примере между MAC контроллером и модулем client_side вставлен FIFO, и соблюдение всех рукопожатий ложится на этот модуль, Вам же остается просто кидать данные в FIFO и следить чтобы он не переполнился, если вы работаете на передачу.



Для верификации сколько хош sm.gif

UPD: я может чего не так понял , если вы пользуете ядро под номером 4.6 то в папке куда у вас сгенирировалась корка есть папка example_design в ней и смотрите пример



Где этот пример-то посмотреть? У меня в папке экземпл дезайна нету.
И модуль дополнительный мне не нужен т.к. код осуществляющий передачу ethernet frame-а простой и не грамоздкий. Только нужно понять как этот конечный автомат правильно написать, чтобы первый байт отправлялся непрерывно пока не придет внешний emacclienttxack, а как пришел - все остальное
Go to the top of the page
 
+Quote Post
egorman44
сообщение Jun 3 2015, 11:12
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 141
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507



Цитата(NSergeevich @ Jun 3 2015, 09:56) *
Только нужно понять как этот конечный автомат правильно написать, чтобы первый байт отправлялся непрерывно пока не придет внешний emacclienttxack, а как пришел - все остальное

А чего тут такого сложного ? Берете карандаш ,листок , бумагу ... Рисуете состояния и правила перехода из них, затем плавно переносите на HDL. Тема fsm verilog/VHDL гуглится хорошо. Я же вроде бы писал :
Цитата(egorman44 @ Jun 2 2015, 16:48) *
можно написать конечный автомат, который будет висеть в состояние до того момента как придет emacclienttxack, и находясь в новом состоянии будет выдавать новые данные на clientemactxd.


Или Вам еще не доводилось описывать конечные автоматы ? Вы на каком языке собрались это делать ?
Go to the top of the page
 
+Quote Post
NSergeevich
сообщение Jun 3 2015, 11:37
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 21-01-15
Пользователь №: 84 716



Цитата(egorman44 @ Jun 3 2015, 14:12) *
А чего тут такого сложного ? Берете карандаш ,листок , бумагу ... Рисуете состояния и правила перехода из них, затем плавно переносите на HDL. Тема fsm verilog/VHDL гуглится хорошо. Я же вроде бы писал :


Или Вам еще не доводилось описывать конечные автоматы ? Вы на каком языке собрались это делать ?



Verilog. Делал светофор на диодах =))
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 09:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016