DMANode#
- class FIREQ_SYSTEM.dma_node.DMANode(*args: Any, **kwargs: Any)[source]#
Bases:
_GenericNodeObject representing the DMA IP.
Configuration dictionary keys:
_name(str): Name of the DMA node instance._ll_handler(DMA): Low-level DMA driver handler.
- nodetype = 'dma'#
- wraps = ['DMA']#
- init_dma() None[source]#
Initialize the DMA transfer.
Will start the transfer in the receive channel and optionally set the input of the switch if the input of the DMA is a switch. This also means that, for implementation reasons, this function must be called before any data is being sent to the input of the switch. Failure to do so may lead to unaligned payloads and DMA errors.
- Raises:
RuntimeError – If the DMA is already transferring
- save_variables() None[source]#
Save the variables needed for the transfer.
This function must be called after the dma init_dma method and before the transfer_all method. After running this function, non-hw parameters in the dependency orchestrator can be changed.
- transfer_all(data_queue: Queue) bool[source]#
Transfer all available data from the DMA into the provided queue.
This function expects saved variables to be set. This is done by the save_variables method.
- Parameters:
data_queue (queue.Queue) – Queue in which to put
(source_name, data_array)tuples- Returns:
Trueif all transfers completed successfully,Falseon error or if no transfer was started- Return type:
bool