MMIO write is too slow

The quick fix is to use the underlying numpy array to write the data - instances the MMIO class as a .array which provides direct access to the registers. If I’m doing this I generally take a slice of the array containing the registers I want to update frequently and then I can just directly assign it.

input_registers = mmio.array[0x100:0x200] # address 0x400 to 0x800
input_registers[:] = input_data

This will be substantially faster than calling write for each entry separately

For even better performance you will want to use a DMA engine to pull the data directly out of the DDR memory. There’s some documentation on this at on our readthedocs page.

Peter

3 Likes