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.1. 40GbE 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 16. Short Packet Example Without Preamble Illustrates the transmission of a short packet 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 previous figure. Note that bit din_end[5] in the second cycle, 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;

\\First cycle:
din = {64'h0, dst_addr, src_addr[47:32]};
din_start = 2'b01;
din_end = 16'b00000000_00000000;

\\Second cycle:
din = {src_addr[31:0], len, "hello", 40'h0};
din_start = 2'b00;
din_end = 16'b00000000_00100000;

Figure 17. Short Packet Example With Preamble Illustrates the transmission of a short packet when preamble pass-through is turned on. In this example, the preamble starts in the MSB; however, this need not be the case.

Bus Representation of a Short TX Packet With Preamble

This example shows the Verilog HDL code that represents the simple packet illustrated in the previous figure. Note that bit din_end[5] in the second cycle, 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;

\\First cycle:
din = {preamble, dst_addr, src_addr[47:32]};
din_start = 2'b10;
din_end = 16'b00000000_00000000;

\\Second cycle:
din = {src_addr[31:0], len, "hello", 40'h0};
din_start = 2'b00;
din_end = 16'b00000000_00100000;

Figure 18. Sample 40GbE IP Core TX Bus ActivityIllustrates the deassertion of the din_ack signal. The data beginning with 0xe6e7 is not immediately accepted. The din bus must be held until din_ack returns to one. At this point normal data flow resumes.