DMA FIFO 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 DMA FIFO structure, where a first node is implemented on a programmable hardware element and a second node on a controller, enabling direct memory access and efficient data transfer between the two, with configurable attributes and status information.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If interrupts and register accesses are used for data transfer, then communication between controller and FPGA is established, but data transfer speed is slow and system performance is reduced

Engineering Contradiction:
Improvedata transfer speedVSAvoidsystem performance
Core Design Contradiction:
SpeedVSProductivity

Solution Approach 1:

A FIFO buffer is introduced as an intermediary data structure between the controller and FPGA. The buffer acts as a mediator that decouples the data production and consumption processes, allowing high-speed data transfer without requiring continuous controller intervention or slow register accesses. Data can be written to the FIFO by the FPGA at high speed and read by the controller at its own pace, eliminating the speed bottleneck.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces the traditional interrupt-driven and register-access-based communication mechanism with a more efficient FIFO-based direct memory access system. This substitution eliminates the need for frequent controller polling and interrupt handling, significantly improving data transfer speed and overall system performance.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Productivity

If traditional communication methods are used, then basic data exchange is possible, but continuous polling is required which increases complexity and reduces efficiency

Engineering Contradiction:
Improvedata transfer efficiencyVSAvoidcommunication control complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The FIFO buffer is designed with automatic full/empty status indication through status registers that update themselves based on read/write operations. This self-service mechanism eliminates the need for the controller to continuously poll the buffer status, as the status information is automatically maintained and can be queried efficiently when needed, reducing communication control complexity while maintaining high data transfer efficiency.

Inventive Principle:
Principle #25Self-service

3Quantity of substance

If register accesses are used for data transfer, then data can be exchanged, but the transfer speed is slow particularly for large amounts of data

Engineering Contradiction:
Improvedata volume transfer capacityVSAvoiddata transfer rate
Core Design Contradiction:
Quantity of substanceVSSpeed

Solution Approach 1:

The data transfer process is segmented into independent write and read operations on the FIFO buffer. The FPGA can continuously write data to the FIFO without waiting for the controller to read, and the controller can read at its own pace. This segmentation allows large volumes of data to be transferred efficiently by decoupling the transfer rate from the processing rate, significantly improving both data volume capacity and transfer speed compared to register-access methods.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS7945895B2Graphical programs with FIFO structure for controller/FPGA communications
Publication Date: 2011.05.17 NATIONAL INSTRUMENTS CORP
  • US7945895B2 patent drawing
  • US7945895B2 patent drawing
  • US7945895B2 patent drawing

AI summary

System and method for communicating between graphical programs executing on respective devices, e.g., a programmable hardware element (PHE) and a controller. The system includes a first node representing a first in, first out (FIFO) structure, and a second node providing a controller interface to the FIFO structure. A first portion of the FIFO is implemented on the PHE, and a second portion of the 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 is deployable to the PHE, where the second graphical program is deployable to the controller, and where the graphical programs communicate via the FIFO in cooperatively performing a specified task. The FIFO may implement a Direct Memory Access (DMA) FIFO, where at least part of a DMA controller is implemented on or coupled to the PHE.