40- and 100-Gbps Ethernet MAC and PHY MegaCore Function User Guide

ID 683114
Date 6/15/2022
Public
Document Table of Contents

3.2.2.5.2. 100GbE IP Core Without Adapters

The following figures illustrate the transmission of a short packet when preamble pass-through is turned off and when it is turned on.

Figure 19. Short Packet Example Without PreambleIllustrates the transmission of a short packet for the 100GbE IP core when preamble pass-through is turned off.

Bus Representation of a Short TX Packet Without Preamble

This example shows the Verilog HDL code that represents the simple packet illustrated in the preceding figure. Note that bit din_end[13] corresponding to the “Last data” in the figure, is asserted.



wire [6*8-1:0] dst_addr = 48’hffff ffff ffff;
wire [6*8-1:0] src_addr = 48’h0007 edff 1234;
wire [2*8-1:0] len = 16’d64;

din = {64’h0, dst_addr, src_addr, len, “hello”, 40’h0};
din_start = 5’b01000;
din_end = 40’b00000000_00000000_00000000_00100000_00000000;
Figure 20. Short TX Packet Example With Preamble Illustrates the transmission of a short packet for the 100GbE IP core when preamble pass-through is turned on.

Bus Representation of a Short TX Packet With Preamble

This example shows the Verilog HDL code that represents the simple packet illustrated in the preceding figure. Note that bit din_end[5] corresponding to the “Last data” in the figure, is asserted.


wire [8*8-1:0] preamble = 64’hXX55_5555_55D5; 
wire [6*8-1:0] dst_addr = 48’hffff ffff ffff;
wire [6*8-1:0] src_addr = 48’h0007 edff 1234;
wire [2*8-1:0] len = 16’d64;

din = {64’h0, preamble, dst_addr, src_addr, len, “hello”, 40’h0};
din_start = 5’b01000;
din_end = 40’b00000000_00000000_00000000_00000000_00100000;
Figure 21. Sample 100GbE IP Core TX Bus ActivityIllustrates the deassertion of the din_ack signal. The data beginning with 0x0202 is not immediately accepted. The din bus must be held until din_ack returns to one. At this point normal data flow resumes.

The TX logic supports packets of less than the usual length. However, no more than two start-of-packets can occur in the same clock cycle.

For example, din_start might be set to 5’b11000, indicating the start of a new packet in two successive words. In this case, din_end_pos could equal 40’h0101000000, indicating two packets of eight bytes. Each 8‑byte packet is padded with zeros to create a 64-byte packet.