File: rfdc_info_pkg.sv

package info (click to toggle)
uhd 4.9.0.0%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 184,180 kB
  • sloc: cpp: 262,887; python: 112,011; ansic: 102,670; vhdl: 57,031; tcl: 19,924; xml: 8,581; makefile: 3,028; sh: 2,812; pascal: 230; javascript: 120; csh: 94; asm: 20; perl: 11
file content (91 lines) | stat: -rw-r--r-- 2,711 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//
// Copyright 2025 Ettus Research, A National Instruments Brand
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//
// Module: rfdc_info_pkg
//
// Description:
//
//  Typedefs for RFDC information memory which are used by the device specific
//  RFDC memory content packages.
//

package rfdc_info_pkg;

  typedef enum logic [1:0] {
    ENABLED  = 2'b00,
    DISABLED = 2'b11
  } block_mode_t;

  typedef struct packed {
    logic        is_adc;
    logic        db;
    logic [1:0]  channel;
    logic [1:0]  reserved2;
    logic [1:0]  tile;
    logic [1:0]  block;
    block_mode_t block_mode;
  } rfdc_memory_entry_t;

  // Empty entry constant
  localparam rfdc_memory_entry_t EMPTY_ENTRY = '{
    is_adc: 0,
    db: 0,
    channel: 0,
    reserved2: 0,
    tile: 0,
    block: 0,
    block_mode: DISABLED
  };

  // current RFSoC has 8 DACs and 8 ADCs
  localparam int NUM_ENTRIES = 16;

endpackage

//XmlParse xml_on
//<regmap name="RFDC_REGS_REGMAP" generatesv="false">
//  <group name="RFDC_REGS">
//    <enumeratedtype name="RFDC_BLOCK_INFO_ENUM" showhex="true">
//      <value name="ENABLED" integer="0"/>
//      <value name="DISABLED" integer="3"/>
//    </enumeratedtype>
//    <regtype name="RFDC_INFO_MEMTYPE" size="32" writable="false">
//      <info>
//        This register provides information for one ADC/DAC within the RFSoC and its RFDC
//        configuration. There is further information on the RFNoC index of this channel.
//        The register is defined as a SystemVerilog typedef and consumed by MPM using the RFDC
//        Python register interface.
//      </info>
//      <bitfield name="BLOCK_MODE" range="1..0" type="RFDC_BLOCK_INFO_ENUM">
//        <info>The state of this ADC/DAC.</info>
//      </bitfield>
//      <bitfield name="BLOCK" range="3..2">
//        <info>Index of the ADC/DAC within the FPGA tile.</info>
//      </bitfield>
//      <bitfield name="TILE" range="5..4">
//        <info>
//          Zero based tile offset of the FPGA.
//          For DAC index i equals to FPGA tile 228+i.
//          For ADC index i equals to FPGA tile 224+i.
//        </info>
//      </bitfield>
//      <bitfield name="RESERVED2" range="7..6">
//        <info>
//          Reserved for later use.
//        </info>
//      </bitfield>
//      <bitfield name="CHANNEL" range="9..8">
//        <info>Index of the RFNoC channel per DB.</info>
//      </bitfield>
//      <bitfield name="DB" range="10">
//        <info>DB index.</info>
//      </bitfield>
//      <bitfield name="IS_ADC" range="11">
//        <info>If the converter is an ADC this bit is set. Otherwise it is an DAC.</info>
//      </bitfield>
//    </regtype>
//  </group>
//</regmap>
//XmlParse xml_off