DMA FIFO Node for Controller FPGA Data Transfer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing systems for communication between computer systems and programmable hardware elements, such as FPGAs, face inefficiencies due to reliance on interrupts and slow register accesses, particularly when transferring large amounts of data.

Innovation Solution

A system and method utilizing a direct memory access (DMA) FIFO node in graphical programs to facilitate communication between a controller and a programmable hardware element, allowing for efficient data transfer through a DMA FIFO structure implemented on both the hardware element and the controller, with configurable attributes and status monitoring.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If interrupts and register accesses are used for communication between controller and programmable hardware element, then communication can be established, but data transfer speed is slow and efficiency is reduced

Engineering Contradiction:
Improvedata transfer speedVSAvoidcommunication efficiency
Core Design Contradiction:
SpeedVSProductivity

Solution Approach 1:

A DMA FIFO structure is introduced as an intermediary buffer between the controller and programmable hardware element. This FIFO queue allows data to be transferred in batches without requiring synchronous interrupt handling for each data item, significantly improving transfer speed and communication efficiency while maintaining data integrity between the two components.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If traditional communication methods are used, then system complexity is kept simple, but large amounts of data cannot be transferred efficiently

Engineering Contradiction:
Improvedata transfer volumeVSAvoidcommunication structure complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The communication interface is segmented into a FIFO queue structure that separates the data buffer from the control logic. This allows large volumes of data to be transferred by processing them in sequential batches through the FIFO, rather than requiring complex simultaneous handling mechanisms, thus enabling high data volume transfer with manageable structural complexity.

Inventive Principle:
Principle #1Segmentation

3Productivity

If register accesses are used for each data item, then data can be transferred, but the process is time-consuming and reduces overall system productivity

Engineering Contradiction:
Improveoverall system productivityVSAvoiddata transfer time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

Data is pre-loaded into the FIFO buffer before being transferred to the programmable hardware element. This preliminary action allows the controller to prepare data batches in advance and transfer them as complete units rather than item-by-item through slow register accesses, significantly reducing data transfer time and improving overall system productivity.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7606950B2Graphical programs with direct memory access FIFO for controller/FPGA communications
Publication Date: 2009.10.20 NATIONAL INSTRUMENTS CORP
  • US7606950B2 patent drawing
  • US7606950B2 patent drawing
  • US7606950B2 patent drawing

AI summary

A system and method for communicating between graphical programs executing on respective devices, e.g., a programmable hardware element and a controller. The system includes a first node representing a direct memory access structure, e.g., a first in, first out data structure (DMA FIFO), and a second node providing a controller interface to the DMA FIFO. A first portion of the DMA FIFO is implemented on the programmable hardware element, and a second portion of the DMA FIFO is implemented in memory of the controller. The first and second nodes are operable to be included respectively in first and second graphical programs, where the first graphical program, including the first node, is deployable to the programmable hardware element, where the second graphical program, including the second node, is deployable to the controller, and where the first and second graphical programs communicate via the DMA FIFO in cooperatively performing a specified task.