Company Events Academic NI Developer Zone Support Solutions Products & Services Contact NI MyNI

Understanding Arbitration Options (FPGA Module)

LabVIEW FPGA Module 8.2 Help
August 2006

NI Part Number:
371599B-01

»View Product Info

The following arbitration options are available with the FPGA Module:

An arbiter performs the following general steps during arbitration.

  1. Waits for one or more requestors. If multiple requestors request access, the arbiter determines which requestor becomes the accessor.
    Note  The order in which an arbiter grants access to multiple requestors is non-deterministic.
  2. Passes data from the accessor to the resource interface.
  3. Begins resource execution.
  4. Waits for the resource to complete execution.
  5. Passes data back to the accessor.
  6. Prepares the resource for another execution.
  7. Waits for the next requestor.

Arbitration can use a significant amount of space on the FPGA. If you can decrease the number of requestors of a resource interface to one in the entire FPGA VI hierarchy, use the Arbitrate if Multiple Requestors Only arbitration option. The single requestor requires no arbitration. If you have two requestors, LabVIEW generates arbitration circuits, even if Arbitrate if Multiple Requestors Only is selected.

Always Arbitrate

A resource interface with the Always Arbitrate option always uses an arbiter, even if only one requestor requests access. The Always Arbitrate arbiter is a fair round robin arbiter that ensures sequential access to a shared resource. The arbiter does not allow a requestor to become an accessor again until all other waiting requestors have become accessors. Consequently, jitter occurs if you have more than one simultaneous requestor.

Use the Always Arbitrate option if you need single requestor channels synchronized with multiple requestor channels. Refer to Timing with Arbitration Enabled for information about synchronized channels.

Arbitrate if Multiple Requestors Only

A resource interface with the Arbitrate if Multiple Requestors Only option does not use an arbiter if the FPGA VI contains only one requestor. If the resource interface has multiple requestors, LabVIEW generates arbitration circuits even if the requests are not simultaneous. You can save time and space in FPGA VIs if you use the Arbitrate if Multiple Requestors Only arbitration option if the shared resource contains only one requestor in the entire FPGA VI hierarchy.

Use the Arbitrate if Multiple Requestors Only option in the following situations:

  • You have a large FPGA VI and need to save space.
  • You have only one accessor for a resource interface in the entire FPGA VI hierarchy.
  • You do not need single requestor channels synchronized with multiple requestor channels. Refer to Timing with Arbitration Enabled for information about synchronized channels.
  • You use a FIFO Read or FIFO Write function in a single-cycle Timed Loop.
  • You use a Memory Read or Memory Write function in a single-cycle Timed Loop.
  • You have digital outputs in a single-cycle Timed Loop.

Never Arbitrate

If you select the Never Arbitrate option for a resource interface, LabVIEW does not add arbitration components, which saves significant space on the FPGA. In addition to saving space, the Never Arbitrate option allows some of the FPGA I/O and FIFO Operations functions to execute in a single clock cycle. To use the Never Arbitrate option, you must guarantee sequential access to the resource interface in the data flow of the FPGA VI, as shown in the following figure.

In the figure above, the Flat Sequence structure ensures that the two FIFO Write functions do not execute simultaneously, so resource contention does not occur. In such situations, Never Arbitrate is an appropriate option. However, if you select the Never Arbitrate option and make simultaneous requests, the behavior of the FPGA VI is undefined and data corruption is possible.

If you include FIFOs or memory items in a single-cycle Timed Loop, you can use the Never Arbitrate option only if one object requests access to the resource interface. Use a Case structure to design the FPGA VI so that the VI includes only one object that requests access to a resource interface. If multiple objects request access, the Code Generation Errors window returns an error.


Resources


 

Your Feedback! poor Poor  |  Excellent excellent   Yes No
 Document Quality? 
 Answered Your Question? 
Add Comments 1 2 3 4 5 submit