MemoryDevice example - slaclab/rogue GitHub Wiki

MemoryDevice

A MemoryDevice allows for efficient loading of large data blocks into FPGA registers/BRAM. Instantiation works like any other pyrogue.Device. A MemoryDevice has no Variables, and can only be loaded via a YAML config file.

Instantiation Example

pyrogue.MemoryDevice(
    name = 'Waveform',
    description = '',
    offset = 0, # Address offset relative to parent
    size = 4096, # Size of memory block in bytes
    base = pyrogue.UInt, # Data type at each location
    wordBitSize = 32, # Size of each word in bits
    stride = 4, # Address stride between each word
    verify = True, #Verify the contents after loading
)

YAML Example

Path:
  To:
    Waveform:
      0: 0x12345678, 0xAAAA5555 # Load these words into the Waveform RAM starting at word offset 0
      2: 0x00000000, 0x00000000 # Load these words starting at word offset 2
      4: 0, 1, 2, 3, 4, 5, 6, 7, 8 # Can put as many values as you want at each offset