spartan3 0 16 января, 2018 Опубликовано 16 января, 2018 · Жалоба стоит задача отсылать/принимать IP пакеты используя FPGA Xilinx xaui 10G, в спецификации описан хедер Ethernet фрэйма: 55 55 55 55 55 55 55 d5 DESTINATION_ADDRESS(48 бит) SOURCE_ADDRESS(48 бит) LENGTH(16 бит) вопрос: порядок байт слева направа будет: 55 55 55 55 55 55 55 d5 DESTINATION_ADDRESS(47:0) SOURCE_ADDRESS(47:0) LENGTH(15:0) или 55 55 55 55 55 55 55 d5 DESTINATION_ADDRESS(7:0) DESTINATION_ADDRESS(15:8) DESTINATION_ADDRESS(23:16) и т.д.? и еще: в IP пакете хедер, порядок слева направа : байт 0 | байт 1 | байт 2 | байт 3 Version(4 бита) IHL(4 бита) DSCP(6 бит) ECN(2 бита) Total Length(16 бит) т.к. в сети биты в байте B(7:0) передаются B(0) первый, B(7) последний, можно предположить что хотя Version стоит впереди IHL, он будет передан после IHL так? спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба У меня в проекте для симуляции один из эзернет пакетов расписан так, может поможет: arr_pckt(IND_TCP_1)(0) <= "01" & X"000000000000001E"; arr_pckt(IND_TCP_1)(1) <= "01" & X"D555555555555578"; arr_pckt(IND_TCP_1)(2) <= "10" & X"52f401000000cccc"; -- | Source MAC HIGH | Dest MAC LOW | Dest MAC HIGH | arr_pckt(IND_TCP_1)(3) <= "10" & X"00450008c0a95e14"; -- | T. of S. | Vers| IHL| ETHER TYPE | Source MAC LOW | arr_pckt(IND_TCP_1)(4) <= "10" & X"0680004033192900"; -- | Protocol | Time Live| Fragment Off | Flags| Identification | Total Length | arr_pckt(IND_TCP_1)(5) <= "10" & X"a8c00501a8c0a55d"; -- | Dest Address HIGH | Source Address LOW | Source Address HIGH | Header Checksum | arr_pckt(IND_TCP_1)(6) <= "10" & X"9997bbbb8869a101"; -- |_Sequence_Number_HIGH|______Dest_Port______|______Source_Port____| Dest Address LOW | arr_pckt(IND_TCP_1)(7) <= "10" & X"185001100000dd0c"; -- |_L_HDR|_R_|_Flags____|_ACK_Number_LOW______|_ACK_Number_HIGH_____|_Sequence_Num ber_LOW_| arr_pckt(IND_TCP_1)(8) <= "10" & X"00390000a81970ff"; -- |..........| DATA=0x39| Указатель важности |_Cheksum_____________|_WINDOW______________| Cheksum = 0x19a8 arr_pckt(IND_TCP_1)(9) <= "10" & X"32D3872700000000"; -- 64 Byte arr_pckt(IND_TCP_1)(10) <= "01" & X"0000000000000087"; arr_pckt(IND_TCP_1)(11) <= "01" & X"000000000000001E"; здесь заданы: Dest MAC = cccc00000001 Source MAC = f452145ea9c0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spartan3 0 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба У меня в проекте для симуляции один из эзернет пакетов расписан так, может поможет: очень даже поможет, огромное спасибо, novartis очевидно слова тут выплевываются справа на лево, ip c0.a8.01.05(192.168.1.5) 192.168.1.161(192.168.1.161) ..только вопрос, а что за проект для симуляции? ему можно верить? и зачем в начале "10" и "01"? <= "10" & .. <= "01" & .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба стоит задача отсылать/принимать IP пакеты используя FPGA Xilinx xaui 10G, WireShark поставить и записать пакет из линии... Осциллом если будете смотреть в линии, то учтите, что трансивер на приеме автоматически выберет правильную полярность в линии. В самом начале идет код из 0 и 1 - 55. И как только нарушается эта последовательность кодом D5, так трансивер запоминает это и дальше в случае надобности ксорит все приходящие данные... Так что возможно будете наблюдать на приеме инверсные данные в линии. А после трансивера все будет нормально.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spartan3 0 17 января, 2018 Опубликовано 17 января, 2018 · Жалоба WireShark поставить и записать пакет из линии... Осциллом если будете смотреть в линии, то учтите, что трансивер на приеме автоматически выберет правильную полярность в линии. В самом начале идет код из 0 и 1 - 55. И как только нарушается эта последовательность кодом D5, так трансивер запоминает это и дальше в случае надобности ксорит все приходящие данные... Так что возможно будете наблюдать на приеме инверсные данные в линии. А после трансивера все будет нормально.. Действительно, как же я про WireShark не подумал, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 0 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба WireShark поставить и записать пакет из линии... Осциллом если будете смотреть в линии, то учтите, что трансивер на приеме автоматически выберет правильную полярность в линии. В самом начале идет код из 0 и 1 - 55. И как только нарушается эта последовательность кодом D5, так трансивер запоминает это и дальше в случае надобности ксорит все приходящие данные... Так что возможно будете наблюдать на приеме инверсные данные в линии. А после трансивера все будет нормально.. Возможно я не так понял - но сам трансивер полярность автоматически не меняет(конкретно это проверял на kintex 7) на плате была перепутана полярность и пока мы это не заметили, долго копались. И вообще там на сколько помню - идет скремблирование(8b/10b или 64/66 - в зависимости от скорости - если работаем до 10Gbps). Настройка полярности ведется руками через порт TX/RX polarity. Хотя может с xaui не так - я только sfp работал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 18 января, 2018 Опубликовано 18 января, 2018 · Жалоба Возможно я не так понял - но сам трансивер полярность автоматически не меняет(конкретно это проверял на kintex 7) на плате была перепутана полярность и пока мы это не заметили, долго копались. И вообще там на сколько помню - идет скремблирование(8b/10b или 64/66 - в зависимости от скорости - если работаем до 10Gbps). Настройка полярности ведется руками через порт TX/RX polarity. Хотя может с xaui не так - я только sfp работал меняет автоматически. Иначе на всех розетках были бы указания "+" и "-"... Мало того, новые трансиверы умеют понимать пары приема и передачи и автоматически их меняют... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться