# Transport Layer fis_max_dwords = 2048 fis_types = { "REG_H2D": 0x27, "REG_D2H": 0x34, "DMA_ACTIVATE_D2H": 0x39, "PIO_SETUP_D2H": 0x5F, "DATA": 0x46 } fis_reg_h2d_header_length = 5 fis_reg_h2d_header_fields = { "type": HeaderField(0 * 4, 0, 8), "pm_port": HeaderField(0 * 4, 8, 4), "c": HeaderField(0 * 4, 15, 1), "command": HeaderField(0 * 4, 16, 8), "features_lsb": HeaderField(0 * 4, 24, 8), "lba_lsb": HeaderField(1 * 4, 0, 24), "device": HeaderField(1 * 4, 24, 8), "lba_msb": HeaderField(2 * 4, 0, 24), "features_msb": HeaderField(2 * 4, 24, 8), "count": HeaderField(3 * 4, 0, 16), "icc": HeaderField(3 * 4, 16, 8), "control": HeaderField(3 * 4, 24, 8) } fis_reg_h2d_header = Header(fis_reg_h2d_header_fields, fis_reg_h2d_header_length, swap_field_bytes=False)
import math from copy import deepcopy import struct from litex.soc.interconnect.stream_packet import HeaderField, Header etherbone_magic = 0x4e6f etherbone_version = 1 etherbone_packet_header_length = 8 etherbone_packet_header_fields = { "magic": HeaderField(0, 0, 16), "version": HeaderField(2, 4, 4), "nr": HeaderField(2, 2, 1), "pr": HeaderField(2, 1, 1), "pf": HeaderField(2, 0, 1), "addr_size": HeaderField(3, 4, 4), "port_size": HeaderField(3, 0, 4) } etherbone_packet_header = Header(etherbone_packet_header_fields, etherbone_packet_header_length, swap_field_bytes=True) etherbone_record_header_length = 4 etherbone_record_header_fields = { "bca": HeaderField(0, 0, 1), "rca": HeaderField(0, 1, 1), "rff": HeaderField(0, 2, 1), "cyc": HeaderField(0, 4, 1), "wca": HeaderField(0, 5, 1), "wff": HeaderField(0, 6, 1), "byte_enable": HeaderField(1, 0, 8),
r = [self.source.connect(port.sink), port.source.connect(self.sink)] return r eth_mtu = 1532 eth_min_len = 46 eth_interpacket_gap = 12 eth_preamble = 0xd555555555555555 buffer_depth = 2**log2_int(eth_mtu, need_pow2=False) ethernet_type_ip = 0x800 ethernet_type_arp = 0x806 mac_header_length = 14 mac_header_fields = { "target_mac": HeaderField(0, 0, 48), "sender_mac": HeaderField(6, 0, 48), "ethernet_type": HeaderField(12, 0, 16) } mac_header = Header(mac_header_fields, mac_header_length, swap_field_bytes=True) arp_hwtype_ethernet = 0x0001 arp_proto_ip = 0x0800 arp_opcode_request = 0x0001 arp_opcode_reply = 0x0002 arp_header_length = 28 arp_header_fields = { "hwtype": HeaderField(0, 0, 16),
# This file is Copyright (c) 2015-2019 Florent Kermarrec <*****@*****.**> # This file is Copyright (c) 2017 Tim Ansell <*****@*****.**> # License: BSD import math import struct from litex.soc.interconnect.stream_packet import HeaderField, Header etherbone_magic = 0x4e6f etherbone_version = 1 etherbone_packet_header_length = 8 etherbone_packet_header_fields = { "magic": HeaderField(0, 0, 16), "version": HeaderField(2, 4, 4), "nr": HeaderField(2, 2, 1), # No Reads "pr": HeaderField(2, 1, 1), # Probe Reply "pf": HeaderField(2, 0, 1), # Probe Flag "addr_size": HeaderField(3, 4, 4), # 1=8bits, 2=16bits, 4=32bits, 8=64bits "port_size": HeaderField(3, 0, 4), # Same as above } etherbone_packet_header = Header(etherbone_packet_header_fields, etherbone_packet_header_length, swap_field_bytes=True) # When reading/writing to a FIFO, you don't increase # the address after each write. etherbone_record_header_length = 4 etherbone_record_header_fields = { "bca": HeaderField(0, 0, 1), # ReplyToCfgSpace - ??? (C)onfig (A)dress "rca": HeaderField(0, 1,