Spartan 3e Labview Fpga

19
Welcome to the National Instruments presentation of the Spartan-3E Starter Board as an academic learning platform. Understanding digital logic and FPGA concepts can be daunting for some undergraduate students, especially those not studying electrical engineering. To facilitate a long-term and engaging learning environment, there is a need for an intermediary hardware and software package that is cost-effective, easy to understand and to implement, and is adaptable with existing VHDL code.

Transcript of Spartan 3e Labview Fpga

Page 1: Spartan 3e Labview Fpga

Welcome to the National Instruments presentation of the Spartan-3E Starter Board as an

academic learning platform.

Understanding digital logic and FPGA concepts can be daunting for some undergraduate

students, especially those not studying electrical engineering. To facilitate a long-term and

engaging learning environment, there is a need for an intermediary hardware and software

package that is cost-effective, easy to understand and to implement, and is adaptable with

existing VHDL code.

Page 2: Spartan 3e Labview Fpga

Digital Design Fundamentals

The NAND gate is the fundamental building block for digital logic. It is a combination of

an AND gate coupled with a NOT gate at its output. The truth table above describes the

output behavior of implementing a NAND gate on two bitwise inputs.

Page 3: Spartan 3e Labview Fpga

Digital Design Fundamentals

NAND gates can be used in combination to implement logic that would traditionally be

implemented with AND, OR, and NOT gates. Using NAND gates for combination logic is

cost effective due to its logical completeness and inherent compactness.

The figure to the top left shows a basic combination logic. The figure to the bottom left

shows the same logic implemented using only NAND gates. Finally, the figure to the top

right shows an equivalent combination logic after logic optimizations are performed.

Page 4: Spartan 3e Labview Fpga

Single Bit Adders: Half Adder

To create even more complex combinational logic, truth tables can be used to describe implementation. For example, a half adder is a logic circuit that can perform an addition on two binary digits. The half adder produces a sum and a carry value which are both binary digits.

Although logically concise, the half-adder cannot carry bits in multi-bit addition operations which is considered a drawback.

[1] Wikipedia, http://en.wikipedia.org/wiki/Half_adder

Page 5: Spartan 3e Labview Fpga

Single Bit Adders: Full Adder

A full adder, solving many of the short comings of the half adder, is a logical circuit that

performs an addition operation on three binary digits. The full adder produces a sum and

carry value, which are both binary digits. It can work on its own or be combined with other

full adders. As shown, the truth table simplifies logic understanding.

[2] Wikipedia, http://en.wikipedia.org/wiki/Full_adder

Page 6: Spartan 3e Labview Fpga

Using FPGAs to Replace Discrete Logic

FPGA is short for “Field Programmable Gate Array.” The FPGA is a semiconductor with

unconnected logic gates at the time of manufacture. Users can define and re-define

functionality via software and this code is later downloaded to the chip for deployment.

The FPGA offers flexible deployment options to the user since debugging at the hardware

level can still be performed after code is downloaded.

[3] http://en.wikipedia.org/wiki/FPGA

Page 7: Spartan 3e Labview Fpga

FPGA Hardware Basics

An FPGA contains programmable logic components called "logic blocks", and

programmable interconnects. Logic blocks can be programmed to perform the function of

basic logic gates such as AND, and XOR, or more complex combinational functions such as

decoders or simple mathematical functions.

The architecture of the FPGAs vary from manufacturer to manufacturer, and often are

differentiated by the number of logic cells that are available.

Page 8: Spartan 3e Labview Fpga

The typical basic FPGA architecture consists of an array of configurable logic blocks. An

application circuit must be mapped into an FPGA with adequate resources. A classic FPGA

logic block consists of a 4-input lookup table (LUT), and a flip-flop. Many FPGA vendors

use LUTs to define the number of logic gates a FPGA can represent.

Page 9: Spartan 3e Labview Fpga

VHDL Software Basics

VHDL is short for “Very High Speed Integrated Circuit Hardware Description Language.”

VHDL is generally used to program FPGAs and ASICs. Over the years, it has become the

industry standard for these hardware platforms.

The main benefit of VHDL has been its ability to model and simulate hardware behavior

prior to its synthesis into real hardware gates and interconnects.

[4] http://en.wikipedia.org/wiki/Vhdl

Page 10: Spartan 3e Labview Fpga

VHDL Framework & Syntax

VHDL description of hardware is split into two sections, entities and hardware.

Entities define the inputs and outputs of the hardware logic. Function declarations in C and

C++ are similar in behavior.

Architecture describes the hardware logic behind the entity. Essentially, this is the hardware

implementation of the circuit. Function descriptions in C and C++ are similar in behavior.

Page 11: Spartan 3e Labview Fpga

VHDL Software Example: 1-Bit Adder

The example snippet here is the VHDL implementation of the half-adder mentioned earlier.

The entity section of the code defines inputs A and B and the outputs S and C.

The architecture section describes the behavior of the inputs and outputs in relation to each

other. In this code, A XOR (exclusive or) B value is assigned to the output S and A AND B

value is assigned to the output C. With this architecture, a simple 1-bit adder is

implemented with a small amount of code.

Page 12: Spartan 3e Labview Fpga

FPGA Implementation

The figure shows the simplified diagrammatic flow of data in the FPGA. The inputs A and

B are defined in the left I/O cells, the digital gates are implemented on the hardware level,

and the data is carried to the outputs S and C through the interconnects.

Page 13: Spartan 3e Labview Fpga

LabVIEW FPGA Module

The LabVIEW FPGA module is the National Instruments software for developing FPGA

Logic and Real-Time Hardware. With LabVIEW FPGA, several different hardware

platforms can be configured and programmed including:

• Spartan-3E Starter Board

• Plug-In Reconfigurable I/O (RIO) Boards by National Instruments

• CompactRIO Modular Reconfigurable I/O System by National Instruments

• Compact Vision System by National Instruments

The LabVIEW FPGA Module provides an easy-to-use solution to programming a multitude

of platforms. In a project based learning environment, the ease of LabVIEW FPGA module

will allow students to understand the essentials of FPGA programming quickly and

interactively.

Page 14: Spartan 3e Labview Fpga

LabVIEW FPGA Tool Chain

LabVIEW FPGA integrates intuitive graphical programming techniques into the FPGA

realm through a two-step translation process.

The user develops VIs in a LabVIEW graphical programming environment. During

program compilation, the LabVIEW FPGA module translates the LabVIEW code into

VHDL code. The VHDL code is subsequently converted to a bitstream representation by

the Xilinx onboard compiler and downloaded onto the FPGA target.

Throughout this entire process, LabVIEW FPGA allows for a real-time debugging

interaction with the user.

Page 15: Spartan 3e Labview Fpga

LabVIEW- A Natural Entity Architecture Pairing

LabVIEW provides a natural transition to and from VHDL code.

The front panel and connector pane of LabVIEW provides the same functionality as the

entity of VHDL code. Within the front panel, users can define inputs and outputs, and the

connector pane defines the datatypes of these parameters.

Similarly, the block diagram provides the same functionality as the architecture of VHDL

code. Within the block diagram, users describe the implementation of the code.

Page 16: Spartan 3e Labview Fpga

Building Higher Level Logic

The LabVIEW FPGA module makes modular programming very easy to develop and

implement.

For example, the user can develop JK Flip Flops using NAND gates in the block diagram.

A single JK Flip Flop can be built into a LabVIEW sub-function, called a “SubVI”, with a

few clicks of the mouse then combined and interchanged with other SubVIs to develop

more complex integrated logic circuits such as the 74LSxxx.

Users new to modular programming will find LabVIEW’s implementation to be intuitive

and quick. Rather than spending much time learning modular programming techniques,

users will be able to concentrate on fundamental FPGA concepts.

Page 17: Spartan 3e Labview Fpga

LabVIEW FPGA- More than Logic Generation

LabVIEW’s graphical interface offers much more than mere logic generation. Users can

follow data flow during debugging, they can probe and see the data change as it moves

through segments of code, and they can stop and pause program execution. In addition, the

digital logic they would regularly need are in the user palettes for immediate

implementation.

The front panel provides graphical aids to immediately notify the user of hardware behavior

with tools such as LEDs, switches, knobs, gauges, and much more. Whereas hardware

behavior would be difficult to predict in VHDL code until actual compilation on the

hardware, with LabVIEW FPGA, users can save time by emulating their code in LabVIEW

prior to downloading.

Page 18: Spartan 3e Labview Fpga

LabVIEW FPGA – G Programming Language

LabVIEW FPGA is a “G” or Graphical Programming Language, therefore LabVIEW is

inherently capable of parallel code execution. With the LabVIEW FPGA option, single

cycle loops can be used to guarantee that the included code will run within a single cycle of

the FPGA clock.

LabVIEW FPGA allows users to program not only simple FPGA boards, but also high

performance hardware from NI. LabVIEW FPGA assists greatly in projects that require

hardware level execution, seamless integration, and fast time-to-application.

Page 19: Spartan 3e Labview Fpga

Benefits

Using the parallel nature of graphical programming and the truly parallel

implementation on the FPGA, users can separate code into different code segments

which can run in parallel and achieve faster application execution. As users develop

code, they can start thinking about logical pieces to break the code into different

segments for faster execution.

LabVIEW FPGA also provides a natural introduction to VHDL programming with

the entity/architecture pairing.

FPGA hardware is extremely reliable and customizable, allowing users to quickly

change the behavior of their hardware via software.

The flexibility of FPGA hardware combined with the ease of LabVIEW FPGA,

allows users to quickly learn and develop FPGA applications.