You are on page 1of 12

A field-programmable gate array (FPGA) is an integrated circuit designed to be

configured by a customer or a designer after manufacturing hence "fieldprogrammable".


Field Programmable Gate Arrays (FPGAs) are semiconductor devices that are
based around a matrix of configurable logic blocks (CLBs) connected via
programmable interconnects. FPGAs can be reprogrammed to desired application
or functionality requirements after manufacturing.
FPGAs are programmable semiconductor devices that are based around a
matrix of Configurable Logic Blocks (CLBs) connected through programmable
interconnects. As opposed to Application Specific Integrated Circuits (ASICs),
where the device is custom built for the particular design, FPGAs can be
programmed to the desired application or functionality requirements. Although
One-Time Programmable (OTP) FPGAs are available, the dominant type are
SRAM-based which can be reprogrammed as the design evolves.
FPGAs allow designers to change their designs very late in the design cycle
even after the end product has been manufactured and deployed in the field. In
addition, Xilinx FPGAs allow for field upgrades to be completed remotely,
eliminating the costs associated with re-designing or manually updating
electronic systems.

FPGA Block Structure


Xilinx FPGAs

Xilinx offers the broadest lineup of FPGAs providing advance features, low-power, highperformance, and high value for any FPGA design. Below is an overview of Xilinx leading
FPGA families.
Features

Artix-7

Kintex-7

Virtex-7

Spartan
-6

Virtex-6

Logic Cells

215,000

480,000

2,000,000

150,000

760,000

BlockRAM

13Mb

34Mb

68Mb

4.8Mb

38Mb

DSP Slices

740

1,920

3,600

180

2,016

DSP
Performance
(symmetric
FIR)

930GMACS

2,845GMACS 5,335GMACS 140GMACS

2,419GMAC
S

Transceiver
Count

16

32

96

72

Transceiver
Speed

6.6Gb/s

12.5Gb/s

28.05Gb/s

3.2Gb/s

11.18Gb/s

Total
Transceiver
211Gb/s
Bandwidth (full
duplex)

800Gb/s

2,784Gb/s

50Gb/s

536Gb/s

Memory
Interface
(DDR3)

1,066Mb/s

1,866Mb/s

1,866Mb/s

800Mb/s

1,066Mb/s

PCI Express
Interface

x4 Gen2

Gen2x8

Gen3x8

Gen1x1

Gen2x8

Analog Mixed
Signal
(AMS)/XADC

Yes

Yes

Yes

Yes

Configuration
AES

Yes

Yes

Yes

Yes

Yes

I/O Pins

500

500

1,200

576

1,200

I/O Voltage

1.2V, 1.35V, 1.2V, 1.35V,


1.5V, 1.8V, 1.5V, 1.8V,
2.5V, 3.3V 2.5V, 3.3V

1.2V, 1.35V,
1.5V, 1.8V,
2.5V, 3.3V

1.2V, 1.5V,
1.2V, 1.5V,
1.8V, 2.5V,
1.8V, 2.5V
3.3V

Yes

EasyPath
Cost Reduction Solution

Yes

Yes

>>View all FPGAs from Xilinx


FPGA Applications

Due to their programmable nature, FPGAs are an ideal fit for many different markets. As the
industry leader, Xilinx provides comprehensive solutions consisting of FPGA devices,
advanced software, and configurable, ready-to-use IP cores for market and applications such
as:
By Market

By Technology

Aerospace and Defense

Industrial

Audio

Automotive

Medical

Security

Broadcast

Wireless Communications

Video and Imaging

Consumer Electronics

Wired Communications

High Performance Computing

FPGA Solutions and Services

The design environment and supporting resources are a critical components of the FPGA
design environment, as they allow for completing your design quickly and accurately. Xilinx
offers the industry's most comprehensive solution, consisting of:
Resource

Description

Boards and Kits Xilinx development kits provide out-of-the box design solutions
that help evaluate and architect your design. Xilinx also offers
Targeted Design Platforms which comprise fully integrated and
tested hardware, software and IP, and application framework
along with the appropriate design environment.
Documentation Hundreds of application notes, data sheets and reference
designs are available to provide you with the technical support
you need to start your design.
Intellectual
Property

Xilinx and its partners offer hundreds of free and for-purchase


intellectual property (IP), verified and guaranteed to meet timing
parameters, thus speeding up your design cycle and allowing
you to focus on the value add components of the design instead
of standards conformance.

Software and
Design Tools

An integrated suite of software tools provide a seamless start-toend design flow from design entry to configuration
(programming the FPGA). Optional add-on software tools are
available for your advanced designs to enable features such as
custom floorplanning and unique in-chip verification using
ChipScope Pro software.

Training

Xilinx hands-on training programs provide you the foundational


knowledge necessary to begin designing right away. These
programs target both engineers new to FPGA technology and
experienced engineers developing complex connectivity, digital
signal processing, or embedded solutions.

Titanium
Dedicated
Engineering

Integrates skilled Xilinx FPGA experts with your team to meet


tight deadlines and deliver results. Our experienced engineers
provide design expertise to help resolve complex issues, get
projects to market faster, and lower production costs.

A field-programmable gate array (FPGA) is an integrated circuit (IC) that can be


programmed in the field after manufacture. FPGAs are similar in principle to, but
have vastly wider potential application than, programmable read-only memory
(PROM) chips. FPGAs are used by engineers in the design of specialized ICs that
can later be produced hard-wired in large quantities for distribution to computer
manufacturers and end users. Ultimately, FPGAs might allow computer users to
tailor microprocessors to meet their own individual needs
Altera FPGAs are ideal for a wide variety of applications, from high-volume
applications to state-of-the-art products. Each series of FPGA includes different
features, such as embedded memory, digital signal processing (DSP) blocks,
high-speed transceivers, or high-speed I/O pins, to cover a broad range of end
products.

So what exactly is an FPGA? You may have heard the term thrown around, or maybe you
have no idea what I'm talking about. Either way, FPGAs (Field Programmable Gate Arrays)
are amazing devices that now allow the average person to create their very own digital
circuits. The cost has come down enough that you don't have to be a huge company to get
your hands dirty.
You can think of an FPGA as a blank slate. By itself an FPGA does nothing. It is up to you
(the designer) to create a configuration file, often called a bit file, for the FPGA. Once loaded
the FPGA will behave like the digital circuit you designed!
One of the reasons FPGAs are so awesome is that unlike an ASIC (Application Specific
Integrated Circuit) the circuit design is not set and you can reconfigure an FPGA as many
times as you like! Creating an ASIC also costs potentially millions of dollars and takes weeks
or months to create. That's not exactly hobbyist friendly.
FPGA vs Microcontroller

When I first learned about FPGAs, all I really knew about before was microcontrollers. So
first it is important to understand that they are very different devices. With a microcontroller,
like an Arduino, the chip is already designed for you. You simply write some software,
usually in C or C++, and compile it to a hex file that you load onto the microcontroller. The
microcontroller stores the program in flash memory and will store it until it is erased or
replaced. With microcontrollers you have control over the software.
FPGAs are different. You are the one designing the circuit. There is no processor to run
software on, at least until you design one! You can configure an FPGA to be something as
simple as an and gate, or something as complex as a multi-core processor. To create your
design, you write some HDL (Hardware Description Language). The two most popular HDLs
are Verilog and VHDL. You then synthesize your HDL into a bit file which you can use to
configure the FPGA. A slight downside to FPGAs is that they store their configuration in

RAM, not flash, meaning that once they lose power they lose their configuration. They must
be configured every time power is applied.
That is not as bad as it seems as there are flash chips you can use that will automatically
configure the stored bit file on power up. There are also some development boards which
don't require a programmer at all and will configure the FPGA at startup.
With FPGAs you have control over the hardware.
The Possibilities

With a typical microprocessor, you have dedicated pins for specific features. For example
there will be only two pins on some microprocessors that are used as a serial port. If you want
more than one serial port, or you want to use some other pins, your only solution besides
getting a different chip is to use software to emulate a serial port. That works fine except you
are wasting valuable processor time with the very basic task of sending out bits. If you want
to emulate more than one port then you end up using all your processor time.
With an FPGA you are able to create the actual circuit, so it is up to you to decide what pins
the serial port connects to. That also means you can create as many serial ports as you want.
The only limitations you really have are the number of physical I/O pins and the size of the
FPGA.
Just like microcontrollers that have a set amount of memory for your program, FPGAs can
only emulate a circuit so large.
One of the very interesting things about FPGAs is that while you are designing the hardware,
you can design the hardware to be a processor that you then can write software for! In fact,
companies that design digital circuits, like Intel or nVidia, often use FPGAs to prototype their
chips before creating them.

http://in.mathworks.com/solutions/fpgadesign/solutions.html

FPGA and ASIC Design with HDL Coder and HDL


Verifier
For FPGA and ASIC designs, you can use HDL Coder and HDL Verifier to specify and
explore functional behavior, generate HDL code for implementation, and continuously test
and verify your design through cosimulation with HDL simulators or FPGA-in-the-loop.

http://in.mathworks.com/images/responsive/supporting/solutions/fpgadesign/fpga-asic-design.svg

Generate HDL Code from MATLAB and Simulink

You can generate synthesizable HDL code for FPGA and ASIC implementations in a few
steps:

Model your algorithm, including finite-state machines and datapath


elements, using MATLAB and Simulink.

Optimize models to meet speed-area-power objectives for FPGA or ASIC


design using methods such as resource sharing (folding) and distributed
pipelining.

Generate HDL code using HDL Coder.

Prototype on FPGAs and automate HDL verification using HDL Verifier.

Generate HDL Code from MATLAB

Using HDL Coder, you can automatically convert MATLAB code from floating point to fixed
point and generate synthesizable VHDL and Verilog code. With this capability, you can
model your algorithm at a high level using MATLAB constructs and System objects while
utilizing options for optimizing generated HDL code. You can use the library of ready-to-use
logic elements, such as counters and timers, which are written in MATLAB.

35:08

Targeting MATLAB Algorithms to FPGAs

MATLAB to FPGA using HDL Coder (Blog)

Generate HDL Code from Simulink

You can use HDL Coder to generate VHDL and Verilog code from Simulink and Stateflow.
With Simulink, you can model your algorithm using a library of more than 200 blocks. This
library provides complex functions, such as the Viterbi decoder, FFT, CIC filters, and FIR
filters, for modeling signal processing and communications systems and generating HDL
code. You can use HDL Coder for IP core generation targeting Altera and Xilinx FPGAs and
SoC FPGAs.

1:55

HDL Coder Overview


Prototype on FPGAs

Using HDL Coder, you can program FPGAs, including devices from Altera, Xilinx, and
other FPGA vendors. This capability helps you quickly prototype your design on FPGA
hardware. The Workflow Advisor in HDL Coder integrates with Xilinx ISE and Altera
Quartus II design suites to automatically program your FPGAs from within MATLAB and
Simulink.
You can use HDL Coder to prototype your algorithm on a variety of Xilinx and Altera FPGA
development boards. Additionally, you can use target-independent HDL code to program
FPGA devices from vendors like Microsemi or Lattice Semiconductor.

57:15

Using HDL Coder and HDL Verifier for FPGA and ASIC Designs

Automate HDL Verification

You can reuse your MATLAB and Simulink test bench to verify your HDL code using co
simulation and FPGA-in-the-loop functionality provided by HDL Verifier.
When used with HDL Verifier, HDL Coder automatically generates co simulation and FPGAin-the-loop models to accelerate the workflow for FPGA or ASIC design verification. This
approach eliminates the need to manually transfer test vectors and helps identify errors earlier
in the ASIC design process.

1:50

HDL Verifier Overview

Harris Accelerates Verification of Signal Processing FPGAs (User story)

youtube
https://www.youtube.com/watch?v=8POZhFHxBLs
www.eecg.toronto.edu/EECG/RESEARCH/FPGA.html

Table of Contents:
1. Field Programmable Gate Array (FPGA)
2. Configurable Logic Blocks
3. I/O Block & Routing Matrix
4. Clock Distribution

FPGA Design
Todays FPGA design teams require innovative solutions that foster team productivity and enable
rapid deployment at every stage of design development - from Design Entry to Place and Route.
Aldec offers the industrys most comprehensive, all-in-one platform for FPGA design development to
meet the increasing demands of the FPGA development process:

Design: The FPGA design process must be able to incorporate different entry methods (graphical and
textual) to provide users the flexibility to design their device from various starting points (HDL, Block
Diagram, and Finite State Machine). Every stage in the design process utilizes more than several
EDA tools, which must be able to be integrated into a single platform to mitigate complexity for the
user. The entire design process must then have Project Management tools to allow team-based
design development which can utilize revision control tools.

Debug: Debugging tools must be able to support mixed language designs, and provide increased
observability of circuit behavior at each stage of the development process.This allows designers the
ability to cross-probe between signals in the RTL design and simulation results ensuring proper
functionality. Debug tools must also be able to quickly locate any sources of unexpected behavior, and
be able to report them to the user in timely manner.

Document: All aspects of the development process must be able to be documented for later review,

reuse, and/or archiving. This improves communication between multi-team design environments
which can have several sources for a single project.