Skip to content
Snippets Groups Projects
Commit 3761c3df authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Corrected peripheral for reversed word order in dp_offload_tx_v3.vhd.

parent aa24e599
No related branches found
No related tags found
2 merge requests!100Removed text for XSub that is now written in Confluence Subband correlator...,!73Resolve L2SDP-240
......@@ -154,50 +154,68 @@ peripherals:
# MM port for sdp_beamformer_output.vhd / dp_offload_tx_v3.vhd
- slave_name: REG_DP_OFFLOAD_TX_HDR_DAT
slave_description: |
"The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets."
"The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets.
From tb_dp_offload_tx_v3.vhd simulation it follows that:
. the header fields are stored in reversed address order due to that the array in VHDL has
range (h downto 0) where the first header field (eth_destination_mac) is at index h.
. the RO fields are filled in by the logic, when the packet header is transmitted, however
the read value does not still represents the MM write value, not the transmitted value.
. dp_bsn with radix_width = 64 is stored as:
word byte
addr addr bits
0 0x0 [31:0] = dp_bsn[31:0]
1 0x4 [31:0] = dp_bsn[63:32]
. eth_dst_mac with radix_width = 48 is stored as:
word byte
addr addr bits
21 0x84 [31:0] = eth_dst_mac[31:0]
22 0x88 [15:0] = eth_dst_mac[47:32]
"
slave_type: REG
fields:
# eth field group
- - { field_name: eth_destination_mac, width: 32, access_mode: RW, address_offset: 0x0, radix_width: 48 }
- - { field_name: eth_source_mac, width: 32, access_mode: RO, address_offset: 0x8, radix_width: 48 }
- - { field_name: eth_type, width: 16, access_mode: RO, address_offset: 0x10 }
- - { field_name: eth_destination_mac, width: 32, access_mode: RW, address_offset: 0x84, radix_width: 48 }
- - { field_name: eth_source_mac, width: 32, access_mode: RO, address_offset: 0x7C, radix_width: 48 }
- - { field_name: eth_type, width: 16, access_mode: RO, address_offset: 0x78 }
# ip field group
- - { field_name: ip_version, width: 4, access_mode: RW, address_offset: 0x14 }
- - { field_name: ip_header_length, width: 4, access_mode: RW, address_offset: 0x18 }
- - { field_name: ip_services, width: 8, access_mode: RW, address_offset: 0x1C }
- - { field_name: ip_total_length, width: 16, access_mode: RW, address_offset: 0x20 }
- - { field_name: ip_identification, width: 16, access_mode: RW, address_offset: 0x24 }
- - { field_name: ip_flags, width: 3, access_mode: RW, address_offset: 0x28 }
- - { field_name: ip_fragment_offset, width: 13, access_mode: RW, address_offset: 0x2C }
- - { field_name: ip_time_to_live, width: 8, access_mode: RW, address_offset: 0x30 }
- - { field_name: ip_protocol, width: 8, access_mode: RW, address_offset: 0x34 }
- - { field_name: ip_header_checksum, width: 16, access_mode: RW, address_offset: 0x38 }
- - { field_name: ip_source_address, width: 32, access_mode: RW, address_offset: 0x3C }
- - { field_name: ip_destination_address, width: 32, access_mode: RW, address_offset: 0x40 }
- - { field_name: ip_version, width: 4, access_mode: RW, address_offset: 0x74 }
- - { field_name: ip_header_length, width: 4, access_mode: RW, address_offset: 0x70 }
- - { field_name: ip_services, width: 8, access_mode: RW, address_offset: 0x6C }
- - { field_name: ip_total_length, width: 16, access_mode: RW, address_offset: 0x68 }
- - { field_name: ip_identification, width: 16, access_mode: RW, address_offset: 0x64 }
- - { field_name: ip_flags, width: 3, access_mode: RW, address_offset: 0x60 }
- - { field_name: ip_fragment_offset, width: 13, access_mode: RW, address_offset: 0x5C }
- - { field_name: ip_time_to_live, width: 8, access_mode: RW, address_offset: 0x58 }
- - { field_name: ip_protocol, width: 8, access_mode: RW, address_offset: 0x54 }
- - { field_name: ip_header_checksum, width: 16, access_mode: RW, address_offset: 0x50 }
- - { field_name: ip_source_address, width: 32, access_mode: RW, address_offset: 0x4C }
- - { field_name: ip_destination_address, width: 32, access_mode: RW, address_offset: 0x48 }
# udp field group
- - { field_name: udp_source_port, width: 16, access_mode: RW, address_offset: 0x44 }
- - { field_name: udp_destination_port, width: 16, access_mode: RW, address_offset: 0x48 }
- - { field_name: udp_length, width: 16, access_mode: RW, address_offset: 0x4C }
- - { field_name: udp_checksum, width: 16, access_mode: RW, address_offset: 0x50 }
- - { field_name: udp_destination_port, width: 16, access_mode: RW, address_offset: 0x40 }
- - { field_name: udp_length, width: 16, access_mode: RW, address_offset: 0x3C }
- - { field_name: udp_checksum, width: 16, access_mode: RW, address_offset: 0x38 }
# application field group
- - { field_name: marker, width: 8, access_mode: RO, address_offset: 0x54 }
- - { field_name: version_id, width: 8, access_mode: RO, address_offset: 0x58 }
- - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x5C }
- - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x60 }
- - { field_name: source_info, width: 16, access_mode: RW, address_offset: 0x64 }
- - { field_name: marker, width: 8, access_mode: RO, address_offset: 0x34 }
- - { field_name: version_id, width: 8, access_mode: RO, address_offset: 0x30 }
- - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x2C }
- - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x28 }
- - { field_name: source_info, width: 16, access_mode: RW, address_offset: 0x24 }
- "source_info":
- { field_name: antenna_band_index, width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x64 }
- { field_name: nyquist_zone_index, width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x64 }
- { field_name: f_adc, width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x64 }
- { field_name: fsub_type, width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x64 }
- { field_name: payload_error, width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x64 }
- { field_name: repositioning_flag, width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x64 }
- { field_name: beamlet_width, width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x64 }
- { field_name: gn_index, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x64 }
- - { field_name: reserved, width: 32, access_mode: RW, address_offset: 0x68, radix_width: 40 }
- - { field_name: beamlet_scale, width: 16, access_mode: RW, address_offset: 0x70 }
- - { field_name: beamlet_index, width: 16, access_mode: RW, address_offset: 0x74 }
- - { field_name: nof_blocks_per_packet, width: 8, access_mode: RW, address_offset: 0x78 }
- - { field_name: nof_beamlets_per_block, width: 16, access_mode: RW, address_offset: 0x7C }
- - { field_name: block_period, width: 16, access_mode: RW, address_offset: 0x80 }
- - { field_name: BSN, width: 32, access_mode: RW, address_offset: 0x84, radix_width: 64 }
- { field_name: antenna_band_index, width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 }
- { field_name: nyquist_zone_index, width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 }
- { field_name: f_adc, width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 }
- { field_name: fsub_type, width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 }
- { field_name: payload_error, width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 }
- { field_name: repositioning_flag, width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 }
- { field_name: beamlet_width, width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 }
- { field_name: gn_index, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 }
- - { field_name: reserved, width: 32, access_mode: RW, address_offset: 0x1C, radix_width: 40 }
- - { field_name: beamlet_scale, width: 16, access_mode: RW, address_offset: 0x18 }
- - { field_name: beamlet_index, width: 16, access_mode: RW, address_offset: 0x14 }
- - { field_name: nof_blocks_per_packet, width: 8, access_mode: RW, address_offset: 0x10 }
- - { field_name: nof_beamlets_per_block, width: 16, access_mode: RW, address_offset: 0xC }
- - { field_name: block_period, width: 16, access_mode: RW, address_offset: 0x8 }
- - { field_name: BSN, width: 32, access_mode: RW, address_offset: 0x0, radix_width: 64 }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment