Example #1
0

# 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)
Example #2
0
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),
Example #3
0
        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),
Example #4
0
# 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,