NSergeevich 0 20 марта, 2015 Опубликовано 20 марта, 2015 · Жалоба Всем привет. Есть ли у кого-нибудь опыт в реализации проекта 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 (и на выходе мака нету). Почему не проходят, как правильно отправить? Есть ли пример? Заранее спасибо за терпение) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 29 мая, 2015 Опубликовано 29 мая, 2015 · Жалоба Я разобрался с вопросами которые выше. Появился новый. Покажу две картинки. Первая иллюстрирует, что идет на вход 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-ая картинка: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artemius_tv 0 29 мая, 2015 Опубликовано 29 мая, 2015 · Жалоба Мой MAC устроен таким образом, что я на его вход подаю только DA,SA,L/T,DATA а на выходе все остальное он добавляет сам и далее все идет на PHY Data. Не помню, чтобы его можно было настраивать таким образом. Описание (ug138) сейчас посмотрел и тоже не нашел. Может покажете, как вы его так подключили. По-моему можно задать только свой MAC-адрес и только для проверки принятых пакетов, а не отправляемых. А еще хорошо бы в ChipScope и управляющие сигналы вывести, а не только данные, в XC6SLX100 памяти полно. Еше раз описание посмотрел, а вы сигнала emacclienttxack дожидаетесь (Figure 7-7)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tolik1 0 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба Я разобрался с вопросами которые выше. Появился новый. Покажу две картинки. Первая иллюстрирует, что идет на вход 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. все остальное тело пакета надо грузить через интерфейс данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trashy_2 1 1 июня, 2015 Опубликовано 1 июня, 2015 (изменено) · Жалоба Вы в хексе напишите, что вы получаете, вместе с приамбулами и т.д. А, то нет желания побитово декодировать. Всю посылку. От себя добавлю,когда парился с RGMII, ждал ETHERNET пакета. Мне приходили данные, я ничё понять не мог - заголовки и тело не соответствовали формату пакетов ethernet, пока не допёрло: ПРОЦ сначала шлёт ARP запрос на предмет "прозвонки" связи. И только после этого слал нужные мне данные. Ещё! Не забываем, что RGMII - даблрэйт. Первый нибл забираем по переднему фронту, а второй нибл по заднему. Изменено 1 июня, 2015 пользователем Trashy_2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
egorman44 0 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба К сожалению я затрудняюсь сказать что-либо глядя на Ваши картинки, но когда я с ним разбирался я взял за основу пример который генерится визардом (AddresSwap как то так этот модуль называется). я с одной стороны подключил Chip scope с другой комп с Wireshark. Mac в исполнении Xilinx формирует преамбулу, SFD и FCS. все остальное тело пакета надо грузить через интерфейс данных. очень верный способ, на мой взгляд. Плюс ко всему там тестбенч написан, который можете запустить даже в Isim и посмотреть что к чему. Так же есть дока официальная на корку UG138 "LogiCORE IP Tri-Mode Ethernet MAC v4.5" там все ответы на интересующие Вас вопросы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба Не успел написать. Я разобрался, в чем дело, на прошлой неделе. Но косяк еще не устранил, т.к. в программировании я оч. слаб. Там дело в том, что первые байты DA и SA уже прошли а handshaking приходит позже, соответственно эти первые байты на выходе обрезались. Теперь нужно сделать так, чтобы первый байт отправлялся до тех пор пока не придет handshaking и далее остальное. А по поводу модуля AddresSwap, надо глянуть. Глянул, не нашел. Есть только Multiply Adder и Adder Subtracter. Как написать простой код, чтобы первый байт отправлялся до тех пор пока не придет какой-либо внешний сигнал, а как только он приходит отправляются следующие байты? =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trashy_2 1 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба "LogiCORE IP Tri-Mode Ethernet MAC v4.5" А что бы эту корку юзать, надо денежку заносить куда то или она халявная? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба А что бы эту корку юзать, надо денежку заносить куда то или она халявная? webpack покупаешь и все в нем халява Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 2 июня, 2015 Опубликовано 2 июня, 2015 (изменено) · Жалоба Как на Verilog описать задержку первого байта до прихода emacclienttxack ? Изменено 2 июня, 2015 пользователем NSergeevich Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 2 июня, 2015 Опубликовано 2 июня, 2015 · Жалоба Может быть, кто-нибудь использовал конструкцию The wait statement в верилоге ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
egorman44 0 2 июня, 2015 Опубликовано 2 июня, 2015 · Жалоба Как на Verilog описать задержку первого байта до прихода emacclienttxack ? можно написать конечный автомат, который будет висеть в состояние до того момента как придет emacclienttxack, и находясь в новом состоянии будет выдавать новые данные на clientemactxd. Опять же настоятельно рекомендую посмотреть пример. В примере между MAC контроллером и модулем client_side вставлен FIFO, и соблюдение всех рукопожатий ложится на этот модуль, Вам же остается просто кидать данные в FIFO и следить чтобы он не переполнился, если вы работаете на передачу. Может быть, кто-нибудь использовал конструкцию The wait statement в верилоге ? Для верификации сколько хош :) UPD: я может чего не так понял , если вы пользуете ядро под номером 4.6 то в папке куда у вас сгенирировалась корка есть папка example_design в ней и смотрите пример Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 3 июня, 2015 Опубликовано 3 июня, 2015 · Жалоба можно написать конечный автомат, который будет висеть в состояние до того момента как придет emacclienttxack, и находясь в новом состоянии будет выдавать новые данные на clientemactxd. Опять же настоятельно рекомендую посмотреть пример. В примере между MAC контроллером и модулем client_side вставлен FIFO, и соблюдение всех рукопожатий ложится на этот модуль, Вам же остается просто кидать данные в FIFO и следить чтобы он не переполнился, если вы работаете на передачу. Для верификации сколько хош :) UPD: я может чего не так понял , если вы пользуете ядро под номером 4.6 то в папке куда у вас сгенирировалась корка есть папка example_design в ней и смотрите пример Где этот пример-то посмотреть? У меня в папке экземпл дезайна нету. И модуль дополнительный мне не нужен т.к. код осуществляющий передачу ethernet frame-а простой и не грамоздкий. Только нужно понять как этот конечный автомат правильно написать, чтобы первый байт отправлялся непрерывно пока не придет внешний emacclienttxack, а как пришел - все остальное Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
egorman44 0 3 июня, 2015 Опубликовано 3 июня, 2015 · Жалоба Только нужно понять как этот конечный автомат правильно написать, чтобы первый байт отправлялся непрерывно пока не придет внешний emacclienttxack, а как пришел - все остальное А чего тут такого сложного ? Берете карандаш ,листок , бумагу ... Рисуете состояния и правила перехода из них, затем плавно переносите на HDL. Тема fsm verilog/VHDL гуглится хорошо. Я же вроде бы писал : можно написать конечный автомат, который будет висеть в состояние до того момента как придет emacclienttxack, и находясь в новом состоянии будет выдавать новые данные на clientemactxd. Или Вам еще не доводилось описывать конечные автоматы ? Вы на каком языке собрались это делать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 3 июня, 2015 Опубликовано 3 июня, 2015 · Жалоба А чего тут такого сложного ? Берете карандаш ,листок , бумагу ... Рисуете состояния и правила перехода из них, затем плавно переносите на HDL. Тема fsm verilog/VHDL гуглится хорошо. Я же вроде бы писал : Или Вам еще не доводилось описывать конечные автоматы ? Вы на каком языке собрались это делать ? Verilog. Делал светофор на диодах =)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться