3) FPGA Based Systems Design

advertisement
FPGA based system design





Programmable logic.
FPGA Introduction
FPGA Architecture
Advantages & History of FPGA
FPGA-Based System Design




Goals and Techniques
Hierarchical Design
Design Abstraction
Methodologies
Prepared By
AJIT SARAF
Programmable logic.
Simple Programmable Logic Device (SPLD)
 The SPLD was the original PLD and is still available
for small-scale applications.
 Generally, an SPLD can replace up to ten fixedfunction ICs and their interconnections, depending on
the type of functions and the specific SPLD.
 Most SPLDs are in one of two categories: PAL and
GAL.
 A PAL (programmable array logic) is a device that
can be programmed one time.
 It consists of a programmable array of AND gates and
a fixed array of OR gates, as shown in Figure.
Simple Programmable Logic Device (SPLD)
 A GAL (generic array logic) is a device that is
basically a PAL that can be reprogrammed many
times.
 It consists of a reprogrammable array of AND gates
and a fixed array of OR gates with programmable
outputs, as shown in Figure.
Block diagrams of SPLDs
Complex Programmable Logic Device (CPLD)
 Essentially, The CPLD is a device containing multiple
SPLDs and can replace many fixed-function ICs.
 Figure shows a basic CPLD block diagram with four
logic array blocks (LABs) and a programmable
interconnection array (PIA).
 Depending on the specific CPLD, there can be from
two to sixty-four LABs.
 Each logic array block is roughly equivalent to one
SPLD.
 Generally, CPLDs can be used to implement any of
the logic functions ,for example, decoders, encoders,
multiplexers, demultiplexers, and adders.
General block diagram of a CPLD
FPGA
 An FPGA is generally more complex and has a much
higher density than a CPLD.
 As mentioned, the SPLD and the CPLD are closely
related.
 FPGA, however, has a different internal structure
(architecture), as illustrated in Figure.
 The three basic elements in an FPGA are the logic
block, the programmable interconnections, and the
input/output (I/O) blocks.
 The logic blocks in an FPGA are not as complex as the
logic array blocks (LABs) in a CPLD, but generally
there are many more of them.
Basic structure of an FPGA
FPGA
 When the logic blocks are relatively simple, the FPGA
architecture is called fine-grained.
 When the logic blocks are larger and more complex,
the architecture is called coarse-grained.
 The I/O blocks are on the outer edges of the structure
and provide individually selectable input, output, or
bidirectional access to the outside world.
 The distributed programmable interconnection
matrix provides for interconnection of the logic
blocks and connection to inputs and outputs.
 Large FPGAs can have tens of thousands of logic
blocks in addition to memory and other resources.
FPGA
 A typical FPGA ball-grid array package is shown in
Figure.
 These types of packages can have over 1000 input and
output pins.
FPGA
 Field Programmable Gate Arrays (FPGA) provide
the next generation in the programmable logic devices.
 Field – Ability of the gate arrays to be programmed
for a specific function by the user instead of by the
manufacturer of the device.
 Array – To indicate a series of columns and rows of
gates that can be programmed by the end user.
 As compared to standard gate array, the FPGA are
larger devices.
 Basic cell structure for FPGA is some what
complicated than the basic cell structure of standard
gate array.
FPGA
 FPGA uses read/write memory cell to control the
state of each connection.
 Read/write memory cells are volatile. (they do not
retain their state when power is removed)
 When power is first applied to the FPGA, all of its
read/write memory must be initialized to a state
specified by a separate, external non volatile
memory.
 Memory typically is either a programmable readonly memory (PROM) chip attached directly to the
FPGA.
Architecture of FPGA
 Architecture differs from those of PALs and Actel
PLDs.
 It consist of a large number of programmable logic
blocks surrounded by programmable I/O block.
 The programmable logic blocks of FPGA are smaller
and less capable than a PLD.
 But FPGA chip contains a lot more logic blocks to
make it more capable.
 These logic blocks can be interconnected with
programmable inter connections.
Architecture of FPGA
 The programmable logic blocks in the Xilinx family
of FPGA are called Configurable Logic Blocks
(CLBs).
 Xilinx architecture uses CLBs, I/O blocks (IOBs),
switching interconnect matrix and an external
memory chip to realize a logic function.
 It uses external memory to store the interconnection
information.
 Therefore, the device can be reprogrammed by simply
changing the configuration data stored in the memory.
Architecture of FPGA
 The low-end
interconnects:
FPGAs
support
three
kinds
of
 Direct
 General-purpose and
 Long-line interconnections.
 The direct interconnects connect CLBs to adjacent
CLBs for localized applications with minimum
propagation delay.
 The general-purpose interconnects connect CLBs to
other CLBs via the horizontal and vertical
interconnect lines and switching matrices.
Architecture of FPGA
 Finally. the long-line interconnects are reserved for
signals that must be distributed to many CLBs and/or
IOBs with minimum time delay distribution
problems..
Internal View OF FPGA
Segment of a Xilinx 2000 series logic cell architecture showing configurable logic blocks CLBs), I/O
blocks(lOBs), switching matrices and vertical and horizontal interconnect lines.
Difference
 Microprocessors
 Used in variety of environments.
 Rely on software to implement functions.
 Generally slower and more power-hungry than custom
chips.
 FPGAs
 Complementary to the role played by microprocessors.
 Not custom parts.
 So they aren’t as good at any particular function as a
dedicated chip designed for that application.
 Slower and burn more power than custom logic.
 Relatively expensive
Advantages of FPGAs
 No wait time from completing the design to obtaining
a working chip. (The design can be programmed into
the FPGA and tested immediately.)
 Excellent prototyping vehicles (jump from prototype
to product is much smaller and easier to negotiate)
 Same FPGA can be reused in several different
designs.
 Reducing inventory costs.
PLDs





Programmable logic devices.
Early 1970
Two level logic structure (Fixed And & variable OR)
Programmed by antifuses. (large voltages)
Glue logic (needed to connect together the major
components of the system)
 Not seen as the main components of the system.
 PLDs were usually not seen as the principal
components of the system in which they were used.
 As digital systems became more complex, more dense
programmable logic was needed, and the limitations of
PLD’s two-level logic became clear.
PLDs
 Two-level logic is useful for relatively small logic
functions.
 As levels of integration increases, it became too
inefficient.
FPGAs
 Multi-level logic of arbitrary depth.
 Used both programmable logic elements and
programmable interconnect.
History of the FPGA
 Ross Freeman
 His FPGA Consist of both programmable logic
elements and programmable interconnect structure.
 FPGA was also programmed using SRAM, not
antifuses.
 Antifuses: Switch is a device that, when electrically
programmed, forms a low resistance path
 SRAM: Switch is a pass transistor controlled by the
state of the SRAM bit
 Saving money and providing more manufacturing
options.
 FPGA can be reprogrammed while it was in-circuit.
History of the FPGA
 Xilinx and Altera uses SRAM-based
(Reconfigurable)
 Actel uses antifuses (not reconfigurable).
FPGAs.
Application Specific Integrated Circuits (ASICs)
 The main alternative to an FPGA is ASIC.
 An ASIC is basically an integrated circuit designed
specifically for a special purpose or application.
 Built only for one and only one customer.
 An example of an ASIC is an IC designed for a
specific line of cellular phones of a company, whereby
no other products can use it except the cell phones
belonging to that product line.
 ASIC must be fabricated on a manufacturing line, a
process that takes several months, before it can be
used or even tested.
Application Specific Integrated Circuits (ASICs)
 They are generally faster and lower power than FPGA
equivalents.
 When manufactured in large volumes, they are also
cheaper.
 FPGA uses more transistors for a given function than
ASICs.
Goals and Techniques
 The logical function to be performed is only one of the
goals that must be met by an FPGA or any digital
system design.
 Many other attributes must be satisfied for the project
to be successful.
 Performance: The logic must run at a required rate.
 Throughput
 Latency
 Clock rate
 Power/energy: The chip must often run within an
energy or power budget. (battery powered system)
Goals and Techniques
 Design time:
 FPGA are standard parts, have several advantages
in design time.
 Can be used as prototype.
 Can be programmed quickly.
 Can be used as parts in the final design
 Design cost:
 Depends on design time.
 Also depends on required support tools.
 FPGA tools are often less expensive than custom
VLSI tools.
Goals and Techniques
 Manufacturing cost:
 Cost of replacing the system many times.
 FPGA are more expensive than ASICs.
 FPGA are standard parts help to reduce their cost.
Design challenges
 Multiple level of abstraction:
 FPGA design requires refining an idea through
many levels of detail.
 Designer can expand architecture which performs
the required function into a logic design.
 Multiple and conflicting costs:
 Expense of a particular piece of software needed to
design some piece.
 Depends on performance.
 Depends on power consumption.
Design challenges
 Short design time:
 Fast design (reducing cost & increasing revenue)
 Late design (not making any money at all)
Requirements and specifications
 Requirements:
 What the system is to do.
 Specifications:
 More formal description of the function e.g.
simulator program
 Non-functional requirements:
 Performance
 Power consumption
 cost
Hierarchical Design
 Standard method for dealing with complex degital
designs.
 Commonly used in programming.
 A procedure is written not as a huge list of primitive
statements but as calls to simpler procedures.
 Each procedure breaks down the task into smaller
operations until each step is refined into a procedure
simple enough to be written directly.
 This technique is known as divide-and-conquer.
 The procedure’s complexity is conquered by
recursively breaking it down into manageable pieces.
Hierarchical Design
 A full adder which is the top level module being
composed of three lower level modules that are; half
adder and OR gate.
 Design hierarchy simplifies the design procedure and
manageability in case of complex designs.
Component types
cout
a
Full sum
adder
b
cin
 Chip designers divide and conquer by breaking the chip
into a hierarchy of components.
 Component consist of a body and a number of pins
 Full adder has pins a, b, cin, cout and sum.
 If we consider this full adder the definition of a type,
we can make many instances of this type.
Component types
 Repeating commonly used components is very useful.
 E.g. in building an n-bit adder from n full adders, we
typically give each component instance a name.
 Since all components of the same type have the same
pins, we refer to the pins on a particular component by
giving the component instance name and pin name
together.
 Separating the instance and pin names by a dot is
common practice.
 If we have 2 full adders, add1 and add2, we can refer
to add1.sum and add2.sum as distinct terminals.
Nets and Components
p1
net2
a
b
cxnet
i1
Sand(x)
b1(w)
Large(bx)
o1
o2
c
o1net
net1
p2
p3
A hierarchical logic design
o2net
p4
Nets and Components
 The electrical connections which make up in either of
two equivalent ways: a net list or a component list.
 A net list gives, for each net, the terminals connected
to that net.
 A component list gives, for each component, the net
attached to each pin.
Net list
p1
net2
cxnet
a
b
i1
Sand(x)
b1(w)
Large(bx)
c
o1net
net1
p2





o1
o2
net2: large.p1, b1.a;
net1: large.p2, b1.c;
cxnet: b1.b, sand.i1;
o1net: large.p3, sand.o1;
o2net: sand.o2, large.p4
p3
o2net
p4
Component list
p1
net2
cxnet
a
b
i1
Sand(x)
b1(w)
Large(bx)
o1
o2
c
o1net
net1
p2
p3
 large: p1: net2, p2: net1, p3: o1net, p4: o2net;
 b1: a: net2, b: cxnet, c: net1;
 sand: i1: cxnet, o1: o1net, o2: o2net;
o2net
p4
Hierarchical Design
 We can always transform one form of connectivity
description into the other form.
 Depends upon application, any format can be used.
 Some are best performed net-by-net and others
component-by-component.
 Any file which describes electrical connectivity is
usually called a netlist file, even if it is in component
list format.
Component hierarchies
component
Large(bx)
Component pointed
to is an element in
the component which
points to it.
b1(w)
Sand(x)
A component hierarchy
 We may refer to either large/bw or large/sand.
Component hierarchies
 Each component is used as a black box
 To understand how the system works,
 We only have to know each component’s inputoutput behavior.
 Not how that behavior is implemented inside the
box.
 To design each black box, we build it out of smaller,
simpler black boxes.
 Internals of each type define its behavior in terms of the
components used to build it.
 If we know the behavior of our primitive components,
such as transistors, we can conclude the behavior of any
hierarchically described component.
Component hierarchies
 People can much more easily understand a 1,00,00,000
gate hierarchical design than the same design expressed
directly as a million gates wired together.
 The hierarchical design helps you organize your
thinking
 The hierarchy organizes the function of a large
number of transistors into a particular, easy to
summarize function.
 Hierarchical design also makes it easier to reuse pieces
of chips, either by modifying an old design to perform
added functions or by using one component for a new
purpose.
Design Abstraction
 Critical to hardware system design.
 Abstraction defines how much detail about the design
is specified in a particular description
 Hardware designers use multiple levels of design
abstraction to manage the design process and ensure
that they meet major design goals, such as speed and
power consumption.
 The simplest example of a design abstraction is the
logic gate.
 We choose the design abstraction that is best suited to
the design task.
Level of Abstraction
 Different styles are adopted for writing VHDL code.
 Abstraction defines how much detail about the design
is specified in a particular description.
 Four levels are:
 Layout level
 Logic level
 Register Transfer level
 Behavioral level
Layout Level
 This is the lowest level and describes the CMOS
layout level design on silicon.
Logic Level
 Design has information about
 Function
 Architecture
 Technology
 Detailed timings
 Layout information and analog effects are ignored.
Register Transfer Level
 Using HDL every register in the design and the logic
in between is defined.
 Design contains:
 Architecture information
 No details of technology
 No specification of absolute timing delays
Behavioral Level
 Describing function of a design using HDL without
specifying the architecture of registers.
 Contains timing information required to represent a
function
FPGA Abstraction
 Behavior:
 A detailed executable description of what the chip
should do, but not how it should do it.
 E.g. C program may be used as behavioral description.
 Program does not bother about clock cycle by clock
cycle behavior of the chip.
 Register-transfer:
 The system’s time behavior is fully specified
 We know the allowed input and output values on every
clock cycle but the logic is not specified as gates.
 The system is specified as Boolean functions stored in
abstract memory elements.
FPGA Abstraction
 Logic:
 The system is designed in terms of Boolean logic
gates, latches, and flip-flops.
 Configuration:
 The logic must be place into logic elements around
the FPGA and the proper connections must be made
between those logic elements.
 Placement and routing perform these important steps.
Top-down vs. bottom-up design
 Design always requires working down from the top of
the abstraction hierarchy and up from the least abstract
description.
 Top-down design adds functional detail.
 Create lower levels of abstraction from upper
levels.
 But top down design decisions are made with
limited information.
 Best speed, area and power requirements.
 Cannot accurately judge those costs until we have
an initial design.
Top-down vs. bottom-up design
 Bottom-up design spreads cost information back to
higher levels of abstraction.
 Experience will help to judge costs before
completion of the implementation.
 Good design needs cycle of top-down
design
followed by bottom-up redesign.
FPGA Abstraction
Methodologies
 Complex problems can be tackled using
methodologies.
 Lessons we learn on one system to help us design the
next system.
 Built up over several decades of experience.
 Provides us with a set of guidelines for
 What to do?
 When to do?
 How to know when we are done.
Hardware description languages
 Modern digital designers rely on HDLs to describe
digital systems.
 Schematics are rarely used to describe logic.
 Block diagrams are often drawn at higher levels of the
system hierarchy but usually as documentation, not as
design input.
 HDLs are tied to simulators that understand the
semantics of hardware.
 They are also tied to synthesis tools that generate logic
implementations.
Methodologies goals
 Correct functionality
 The chip must work.
 Satisfaction of performance and power goals
 Aspect of making the chip work.
 Catching bugs early
 Latter a bug is caught, the more expensive it is to fix.
 Good methodologies check pieces of the design.
 Good documentation
 To check when mistakes were made
 To ensure that things were done properly.
Download