Jump to content
    

Мне надо реализовать транспортный протокол UDP, TCP и PTP1588 на Cyclone 5 5CEFA9217I7.

В связи с этим возникло два вопроса

1. Этот IP подойдёт?

2. Какой транспортный леер купить?

Edited by jenya7

Share this post


Link to post
Share on other sites

Не открывается ссылка под санкциями ) Но там смотрю обычный Ethernet MAC.

Если под словом "реализовать", имеется ввиду генерация пакетов udp, tcp, то у интела вроде не было таких корок. Все приходится делать самому. Особенно весь tcp стэк

Share this post


Link to post
Share on other sites

On 1/24/2023 at 10:32 AM, new123 said:

Не открывается ссылка под санкциями ) Но там смотрю обычный Ethernet MAC.

Если под словом "реализовать", имеется ввиду генерация пакетов udp, tcp, то у интела вроде не было таких корок. Все приходится делать самому. Особенно весь tcp стэк

Quote

Overview

The Triple-Speed Ethernet Intel® FPGA IP core consists of a 10/100/1000 Mbps Ethernet media access control (MAC) and physical coding sublayer (PCS) Intellectual Property (IP). This IP function enables Intel® FPGAs to interface to an external Ethernet PHY device, which interfaces to the Ethernet network.

This IP is offered in MAC-only mode or in MAC+PHY mode. In the MAC only mode, the IP uses an external PHY chip to do signaling. The two supported interfaces to the external PHYs are: GMII (8-bit interface at 125 MHz SDR) and RGMII (4-bit interface at 125 MHz DDR).

In the MAC+PHY mode, the PHY is realized using on-chip transceivers or LVDS I/O with dynamic phase alignment (DPA) logic that can operate up to 1.25 Gbps. SGMII or 1000Base-X protocol is used in this case. The usage of LVDS I/Os enables very scalable multiport gigabit Ethernet (GbE) system designs while saving the serial transceivers for higher performance protocols.

Features

  • Complete 10/100/1000 Mbps Ethernet IP with all the necessary IP modules
  • 10/100/1000 Mbps MAC, PCS, and PMA
  • Flexible IP options
  • MAC only, PCS only, MAC + PCS, MAC + PCS + PMA, PCS + PMA
  • Many options for various applications and sizes as small as 900 logic elements (small-MAC)
  • Standard-based statistics counters supporting simple network management protocol (SNMP) Management Information Base (MIB and MIB-II) and Remote Network Monitoring (RMON)
  • Parameterizable FIFO or FIFO-less MAC options
  • IEEE 1588 v2 high accuracy and high precision time stamping option in hardware IP
  • 1-step and 2-step time sync
  • Supports IEEE 1588 v2 PTP packet encapsulation in IPv4, IPv6, and Ethernet
  • Real time of day clock generator (ToD) IP in design example
  • Many external Ethernet interface options for various Intel® FPGA families
  • MII (10/100 Mbps), GMII, RGMII, and SGMII (10/100/1000 Mbps), 1000BASE-X, and TBI (1 Gbps)
  • Management data I/O (MDIO) for external PHY device management

image.thumb.png.2c19ae7bc7d64930638a693e5653a9fc.png

 

это описание.

а что ни у кого нет TCP стека купить?

 

я вижу что Triple-Speed Ethernet Intel FPGA IP есть в библиотеке. я его подключил и получил топ

entity ETH is
	port (
		clk           : in  std_logic                     := '0';             -- control_port_clock_connection.clk
		reset         : in  std_logic                     := '0';             -- reset_connection.reset
		reg_addr      : in  std_logic_vector(7 downto 0)  := (others => '0'); -- control_port.address
		reg_data_out  : out std_logic_vector(31 downto 0);                    -- .readdata
		reg_rd        : in  std_logic                     := '0';             -- .read
		reg_data_in   : in  std_logic_vector(31 downto 0) := (others => '0'); -- .writedata
		reg_wr        : in  std_logic                     := '0';             -- .write
		reg_busy      : out std_logic;                                        -- .waitrequest
		tx_clk        : in  std_logic                     := '0';             -- pcs_mac_tx_clock_connection.clk
		rx_clk        : in  std_logic                     := '0';             -- pcs_mac_rx_clock_connection.clk
		set_10        : in  std_logic                     := '0';             -- mac_status_connection.set_10
		set_1000      : in  std_logic                     := '0';             -- .set_1000
		eth_mode      : out std_logic;                                        -- .eth_mode
		ena_10        : out std_logic;                                        -- .ena_10
		rgmii_in      : in  std_logic_vector(3 downto 0)  := (others => '0'); -- mac_rgmii_connection.rgmii_in
		rgmii_out     : out std_logic_vector(3 downto 0);                     -- .rgmii_out
		rx_control    : in  std_logic                     := '0';             -- .rx_control
		tx_control    : out std_logic;                                        -- .tx_control
		ff_rx_clk     : in  std_logic                     := '0';             -- receive_clock_connection.clk
		ff_tx_clk     : in  std_logic                     := '0';             -- transmit_clock_connection.clk
		ff_rx_data    : out std_logic_vector(7 downto 0);                     -- receive.data
		ff_rx_eop     : out std_logic;                                        -- .endofpacket
		rx_err        : out std_logic_vector(5 downto 0);                     -- .error
		ff_rx_rdy     : in  std_logic                     := '0';             -- .ready
		ff_rx_sop     : out std_logic;                                        -- .startofpacket
		ff_rx_dval    : out std_logic;                                        -- .valid
		ff_tx_data    : in  std_logic_vector(7 downto 0)  := (others => '0'); -- transmit.data
		ff_tx_eop     : in  std_logic                     := '0';             -- .endofpacket
		ff_tx_err     : in  std_logic                     := '0';             -- .error
		ff_tx_rdy     : out std_logic;                                        -- .ready
		ff_tx_sop     : in  std_logic                     := '0';             -- .startofpacket
		ff_tx_wren    : in  std_logic                     := '0';             -- .valid
		magic_wakeup  : out std_logic;                                        -- mac_misc_connection.magic_wakeup
		magic_sleep_n : in  std_logic                     := '0';             -- .magic_sleep_n
		ff_tx_crc_fwd : in  std_logic                     := '0';             -- .ff_tx_crc_fwd
		ff_tx_septy   : out std_logic;                                        -- .ff_tx_septy
		tx_ff_uflow   : out std_logic;                                        -- .tx_ff_uflow
		ff_tx_a_full  : out std_logic;                                        -- .ff_tx_a_full
		ff_tx_a_empty : out std_logic;                                        -- .ff_tx_a_empty
		rx_err_stat   : out std_logic_vector(17 downto 0);                    -- .rx_err_stat
		rx_frm_type   : out std_logic_vector(3 downto 0);                     -- .rx_frm_type
		ff_rx_dsav    : out std_logic;                                        -- .ff_rx_dsav
		ff_rx_a_full  : out std_logic;                                        -- .ff_rx_a_full
		ff_rx_a_empty : out std_logic                                         -- .ff_rx_a_empty
	);
end entity ETH;

 

для подключения к PHY

 

image.thumb.png.5d2acf9510a229e38a7a6afedb5d1b63.png

 

остальные сигналы надо подключать к транспортному лееру?

странно что я не вижу сигналов PTP 1588 хотя заявлено что в коре есть полная поддержка протокола.

 

то есть по сути нужен LWIP но для FPGA.

Edited by jenya7

Share this post


Link to post
Share on other sites

On 1/24/2023 at 4:47 PM, sorok-odin said:

выглядит неплохо. а что скажете насчёт их родного? он наверно к их мак кору хорошо подойдёт.

 

image.png

Share this post


Link to post
Share on other sites

Ничего не скажу, при попытке купить comblock нам отказали из-за санкций. Может, вам повезет больше. Если что, у них и mac свой есть для легкой стыковки с TCP/IP.

Share this post


Link to post
Share on other sites

On 1/24/2023 at 10:22 PM, gosha-z said:

Ээээ, а чем дядька Форенкич плох?

стрёмно как то. а если проблемы какие? поддержки нет если что. кроме того я пишу в VHDL, исходники я могу вставить в проект и на верилоге, не впервой, но примеры он даёт на верилоге. и у него нет PTP 1588.

Edited by jenya7

Share this post


Link to post
Share on other sites

Использовать Triple speed ethernet корку от интела, поднять Nios-II и на нем стек уже реализовать. Делал на операционке uCos-II. Но было уже очень давно.

Share this post


Link to post
Share on other sites

On 1/25/2023 at 9:43 AM, Realking said:

Использовать Triple speed ethernet корку от интела, поднять Nios-II и на нем стек уже реализовать. Делал на операционке uCos-II? Но было уже очень давно.

я не очень понимаю работу с  Nios-II. это же CPU. на нём на С надо писать? и как он сопрягается с MAC IP?

Edited by jenya7

Share this post


Link to post
Share on other sites

11 hours ago, gosha-z said:

Ээээ, а чем дядька Форенкич плох?

активно его юзаю, но там вроде нет tcp стэка. И udp нет. реализован только полноценный ethernet

еще он больше под xil с их axi

Edited by new123

Share this post


Link to post
Share on other sites

17 minutes ago, gosha-z said:

А udp_complete тогда что?

и либа PTP)

Share this post


Link to post
Share on other sites

On 1/25/2023 at 10:14 AM, new123 said:

активно его юзаю, но там вроде нет tcp стэка. И udp нет. реализован только полноценный ethernet

еще он больше под xil с их axi

 

а как его вставить в проект? там куча зависимостей. все файлы из rtl и lib включать надо?

Share this post


Link to post
Share on other sites

В 24.01.2023 в 11:26, jenya7 сказал:

реализовать транспортный протокол UDP, TCP и PTP1588

А какая точность PTP этого бутерброда планируется? На сколько я понимаю для точности PTP выше 10 мкс требуется выделенная среда без коммутаторов и вланов.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...