jenya7 0 January 25 Posted January 25 · Report post On 1/25/2023 at 11:49 AM, Ivanii said: А какая точность PTP этого бутерброда планируется? На сколько я понимаю для точности PTP выше 10 мкс требуется выделенная среда без коммутаторов и вланов. с другой стороны будет свич с PTP. в покупном коре обещают до наносекунд. Quote Share this post Link to post Share on other sites More sharing options...
Realking 0 January 25 Posted January 25 · Report post И самое главное, что если Вы используете внешний PHY чип, то он должен поддерживать IEEE 1588 Precision Time Protocol. Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 January 25 Posted January 25 (edited) · Report post On 1/25/2023 at 12:26 PM, Realking said: И самое главное, что если Вы используете внешний PHY чип, то он должен поддерживать IEEE 1588 Precision Time Protocol. я что то не видел чтоб сигналы PTP выводились на PHY. А ну ок, PTP можно сделать на уровне мака, будет менее точно. Edited January 25 by jenya7 Quote Share this post Link to post Share on other sites More sharing options...
new123 0 January 25 Posted January 25 (edited) · Report post 4 hours ago, gosha-z said: А udp_complete тогда что? щас гляну, как то упустил из вида ) 3 hours ago, jenya7 said: а как его вставить в проект? там куча зависимостей. все файлы из rtl и lib включать надо? я даже не знаю с какого бока начать отвечать ) там реализация полнценной сетевой карты, начиная от своего dma движка, заканчивая маком и своим драйвером. что из этого вставить? наверняка к циклону вы приделаете дма движок от альтеры. ну а так да, если сделать адаптер axi ==> avalon и обратно, то можно пробовать прикрутить процентов 40-60 исходников из директории rtl ) lib там тоже надо, там у них свои нужные реализации своих фифошек и тд 4 hours ago, gosha-z said: А udp_complete тогда что? ага спасибо. Давно я не обновлял репо ) vlan и другие всякие штуки до IP кстати до сих пор не поддерживает ни на одном уровне. Edited January 25 by new123 Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 January 25 Posted January 25 · Report post On 1/25/2023 at 2:35 PM, new123 said: я даже не знаю с какого бока начать отвечать ) там реализация полнценной сетевой карты, начиная от своего dma движка, заканчивая маком и своим драйвером. что из этого вставить? наверняка к циклону вы приделаете дма движок от альтеры. ну а так да, если сделать адаптер axi ==> avalon и обратно, то можно пробовать прикрутить процентов 40-60 исходников из директории rtl ) lib там тоже надо, там у них свои нужные реализации своих фифошек и тд а как связать модули? ну сперва я взял module eth_mac_1g_rgmii # ( // target ("SIM", "GENERIC", "XILINX", "ALTERA") parameter TARGET = "GENERIC", // IODDR style ("IODDR", "IODDR2") // Use IODDR for Virtex-4, Virtex-5, Virtex-6, 7 Series, Ultrascale // Use IODDR2 for Spartan-6 parameter IODDR_STYLE = "IODDR2", // Clock input style ("BUFG", "BUFR", "BUFIO", "BUFIO2") // Use BUFR for Virtex-6, 7-series // Use BUFG for Virtex-5, Spartan-6, Ultrascale parameter CLOCK_INPUT_STYLE = "BUFG", // Use 90 degree clock for RGMII transmit ("TRUE", "FALSE") parameter USE_CLK90 = "TRUE", parameter ENABLE_PADDING = 1, parameter MIN_FRAME_LENGTH = 64 ) ( input wire gtx_clk, input wire gtx_clk90, input wire gtx_rst, output wire rx_clk, output wire rx_rst, output wire tx_clk, output wire tx_rst, /* * AXI input */ input wire [7:0] tx_axis_tdata, input wire tx_axis_tvalid, output wire tx_axis_tready, input wire tx_axis_tlast, input wire tx_axis_tuser, /* * AXI output */ output wire [7:0] rx_axis_tdata, output wire rx_axis_tvalid, output wire rx_axis_tlast, output wire rx_axis_tuser, /* * RGMII interface */ input wire rgmii_rx_clk, input wire [3:0] rgmii_rxd, input wire rgmii_rx_ctl, output wire rgmii_tx_clk, output wire [3:0] rgmii_txd, output wire rgmii_tx_ctl, /* * Status */ output wire tx_error_underflow, output wire rx_error_bad_frame, output wire rx_error_bad_fcs, output wire [1:0] speed, /* * Configuration */ input wire [7:0] ifg_delay ); для связи с PHY. а следующий модуль? для посылки UDP? module udp_complete #( parameter ARP_CACHE_ADDR_WIDTH = 9, parameter ARP_REQUEST_RETRY_COUNT = 4, parameter ARP_REQUEST_RETRY_INTERVAL = 125000000*2, parameter ARP_REQUEST_TIMEOUT = 125000000*30, parameter UDP_CHECKSUM_GEN_ENABLE = 1, parameter UDP_CHECKSUM_PAYLOAD_FIFO_DEPTH = 2048, parameter UDP_CHECKSUM_HEADER_FIFO_DEPTH = 8 ) ( input wire clk, input wire rst, /* * Ethernet frame input */ input wire s_eth_hdr_valid, output wire s_eth_hdr_ready, input wire [47:0] s_eth_dest_mac, input wire [47:0] s_eth_src_mac, input wire [15:0] s_eth_type, input wire [7:0] s_eth_payload_axis_tdata, input wire s_eth_payload_axis_tvalid, output wire s_eth_payload_axis_tready, input wire s_eth_payload_axis_tlast, input wire s_eth_payload_axis_tuser, /* * Ethernet frame output */ output wire m_eth_hdr_valid, input wire m_eth_hdr_ready, output wire [47:0] m_eth_dest_mac, output wire [47:0] m_eth_src_mac, output wire [15:0] m_eth_type, output wire [7:0] m_eth_payload_axis_tdata, output wire m_eth_payload_axis_tvalid, input wire m_eth_payload_axis_tready, output wire m_eth_payload_axis_tlast, output wire m_eth_payload_axis_tuser, /* * IP input */ input wire s_ip_hdr_valid, output wire s_ip_hdr_ready, input wire [5:0] s_ip_dscp, input wire [1:0] s_ip_ecn, input wire [15:0] s_ip_length, input wire [7:0] s_ip_ttl, input wire [7:0] s_ip_protocol, input wire [31:0] s_ip_source_ip, input wire [31:0] s_ip_dest_ip, input wire [7:0] s_ip_payload_axis_tdata, input wire s_ip_payload_axis_tvalid, output wire s_ip_payload_axis_tready, input wire s_ip_payload_axis_tlast, input wire s_ip_payload_axis_tuser, /* * IP output */ output wire m_ip_hdr_valid, input wire m_ip_hdr_ready, output wire [47:0] m_ip_eth_dest_mac, output wire [47:0] m_ip_eth_src_mac, output wire [15:0] m_ip_eth_type, output wire [3:0] m_ip_version, output wire [3:0] m_ip_ihl, output wire [5:0] m_ip_dscp, output wire [1:0] m_ip_ecn, output wire [15:0] m_ip_length, output wire [15:0] m_ip_identification, output wire [2:0] m_ip_flags, output wire [12:0] m_ip_fragment_offset, output wire [7:0] m_ip_ttl, output wire [7:0] m_ip_protocol, output wire [15:0] m_ip_header_checksum, output wire [31:0] m_ip_source_ip, output wire [31:0] m_ip_dest_ip, output wire [7:0] m_ip_payload_axis_tdata, output wire m_ip_payload_axis_tvalid, input wire m_ip_payload_axis_tready, output wire m_ip_payload_axis_tlast, output wire m_ip_payload_axis_tuser, /* * UDP input */ input wire s_udp_hdr_valid, output wire s_udp_hdr_ready, input wire [5:0] s_udp_ip_dscp, input wire [1:0] s_udp_ip_ecn, input wire [7:0] s_udp_ip_ttl, input wire [31:0] s_udp_ip_source_ip, input wire [31:0] s_udp_ip_dest_ip, input wire [15:0] s_udp_source_port, input wire [15:0] s_udp_dest_port, input wire [15:0] s_udp_length, input wire [15:0] s_udp_checksum, input wire [7:0] s_udp_payload_axis_tdata, input wire s_udp_payload_axis_tvalid, output wire s_udp_payload_axis_tready, input wire s_udp_payload_axis_tlast, input wire s_udp_payload_axis_tuser, /* * UDP output */ output wire m_udp_hdr_valid, input wire m_udp_hdr_ready, output wire [47:0] m_udp_eth_dest_mac, output wire [47:0] m_udp_eth_src_mac, output wire [15:0] m_udp_eth_type, output wire [3:0] m_udp_ip_version, output wire [3:0] m_udp_ip_ihl, output wire [5:0] m_udp_ip_dscp, output wire [1:0] m_udp_ip_ecn, output wire [15:0] m_udp_ip_length, output wire [15:0] m_udp_ip_identification, output wire [2:0] m_udp_ip_flags, output wire [12:0] m_udp_ip_fragment_offset, output wire [7:0] m_udp_ip_ttl, output wire [7:0] m_udp_ip_protocol, output wire [15:0] m_udp_ip_header_checksum, output wire [31:0] m_udp_ip_source_ip, output wire [31:0] m_udp_ip_dest_ip, output wire [15:0] m_udp_source_port, output wire [15:0] m_udp_dest_port, output wire [15:0] m_udp_length, output wire [15:0] m_udp_checksum, output wire [7:0] m_udp_payload_axis_tdata, output wire m_udp_payload_axis_tvalid, input wire m_udp_payload_axis_tready, output wire m_udp_payload_axis_tlast, output wire m_udp_payload_axis_tuser, /* * Status */ output wire ip_rx_busy, output wire ip_tx_busy, output wire udp_rx_busy, output wire udp_tx_busy, output wire ip_rx_error_header_early_termination, output wire ip_rx_error_payload_early_termination, output wire ip_rx_error_invalid_header, output wire ip_rx_error_invalid_checksum, output wire ip_tx_error_payload_early_termination, output wire ip_tx_error_arp_failed, output wire udp_rx_error_header_early_termination, output wire udp_rx_error_payload_early_termination, output wire udp_tx_error_payload_early_termination, /* * Configuration */ input wire [47:0] local_mac, input wire [31:0] local_ip, input wire [31:0] gateway_ip, input wire [31:0] subnet_mask, input wire clear_arp_cache ); этот модуль напрямую не подключается по сигналам. нужно что то промежуточное? Quote Share this post Link to post Share on other sites More sharing options...
new123 0 January 25 Posted January 25 (edited) · Report post phy мы подразумеваем альтеровский? Тогда примерно так на RX: PHY rgmii ----> MAC rgmii, MAC rx axi -----> <обработчик пакетов> Тогда примерно так на TX: UDP out m_axi ----> MAX tx_axi, tx_rgmii ----> PHY rgmii это все глобально образно, понятно, что нужна более детальная проработка, там вон на UDP еще нужно подать IP заголовки и тд. адаптер avalon -> axi понадобится, если нужно задействовать pcie. у альтеры весь PHY на авалоне, а у Форенчича все на axi Edited January 25 by new123 Quote Share this post Link to post Share on other sites More sharing options...
gosha-z 1 January 25 Posted January 25 · Report post 5 hours ago, new123 said: vlan и другие всякие штуки до IP кстати до сих пор не поддерживает ни на одном уровне. А это, я так понимаю, в район его Корундума копать надо Quote Share this post Link to post Share on other sites More sharing options...
new123 0 January 26 Posted January 26 · Report post 14 hours ago, gosha-z said: А это, я так понимаю, в район его Корундума копать надо я пока сам докрутил. Но опять же, возможно мне надо более глубже его репо просмотреть, минут 15 по свежему побегал, пока не нашел Quote Share this post Link to post Share on other sites More sharing options...