VHDL Beginners Book
VHDL Beginners Book
Edition
January 2002
ABSTRACT
Whether you design with discrete logic, base all of your designs on
microcontrollers, or simply want to learn how to use the latest and most
advanced programmable logic software, you will find this book an
interesting insight into a different way to design.
The book details the history of programmable logic, where and how to
use them, how to install the free, full functioning design software (Xilinx
WebPACK ISE included with this book) and then guides you through
your first of many designs. There are also sections on VHDL and
schematic capture design entry and finally a data bank of useful
applications examples.
We hope you find the book practical, informative and above all easy to
use.
Chapter 5
This chapter discusses the Synthesis and
Implementing
FPGAs
implementation process for FPGAs. The design
targets a Spartan IIE FPGA.
Chapter 1 INTRODUCTION
1.1 The History of Programmable Logic
1.2 Complex Programmable Logic
Devices (CPLDs)
1.2.1 Why Use a CPLD?
1.3 Field Programmable Gate Arrays
(FPGAs)
1.4 The Basic Design Process
1.5 Intellectual Property (IP) Cores
1.6 Design Verification
GLOSSARY OF TERMS
INTRODUCTION
The following chapter gives an overview of how and where
programmable logic devices are used. It gives a brief history of the
programmable logic devices and goes on to describe the different ways
of designing with PLDs.
By the late 70’s, standard logic devices were the rage and printed
circuit boards were loaded with them. Then someone asked the
question: “What if we gave the designer the ability to implement
different interconnections in a bigger device?” This would allow the
designer to integrate many standard logic devices into one part. In
order to give the ultimate in design flexibility Ron Cline from Signetics
(which was later purchased by Philips and then eventually Xilinx!)
came up with the idea of two programmable planes. The two
programmable planes provided any combination of ‘AND’ and ‘OR’
gates and sharing of AND terms across multiple OR’s.
This architecture was very flexible, but at the time due to wafer
geometry's of 10um the input to output delay or propagation delay
(Tpd) was high which made the devices relatively slow.
There are also costs associated with inventory and reliability. PLDs
can reduce inventory costs by replacing standard discrete logic
devices. Standard logic has a predefined function and in a typical
design lots of different types have to be purchased and stocked. If the
design is changed then there may be excess stock of superfluous
devices. This issue can be alleviated by using PLDs i.e. you only need
to stock one device and if your design changes you simply reprogram.
By utilising one device instead of many your board reliability will
increase by only picking and placing one device instead of many.
Reliability can also be increased by using the ultra low power
CoolRunner CPLDs i.e. lower heat dissipation and lower power
operation leads to decreased Failures In Time (FIT).
performance and cost! The new Spartan IIE will provide up to 300k
gates at a price point that enables Application Specific Standard
Product (ASSP) replacement. For example a Reed Solomon IP Core
implemented in a Spartan II XC2S100 FPGA has an effective cost of
$9.95 whereas the equivalent ASSP would cost around $20.
Design Integration
By using Xilinx CoolRunner devices (our family of ultra low power parts)
in a design customers can benefit from low power consumption and
reduced thermal emissions. This in turn leads to the reduction of the
use of heat sinks (another cost saving) and a higher reliability end
product.
Step one: After selecting a specific schematic capture tool and device
library, the designer begins building his circuit by loading the desired
gates from the selected library. He can use any combination of gates
that he needs. A specific vendor and device family library must be
chosen at this time (e.g. Xilinx XCR3256XL) but he doesn’t have to
know what device within that family he will ultimately use with respect
to package and speed.
Step two: Connect the gates together using nets or wires. The
designer has complete control of connecting the gates in whatever
configuration is required for his application.
Step three: The input and output buffers are added and labelled.
These will define the I/O package pins for the device.
In the example below, the netlist reflects the actual syntax for the
circuit in the schematic. There is one line for each of the components
and one line for each of the nets. Note that the computer assigns
names to components (G1 to G4) and the nets (N1 to N8). When we
implement this design, it will have input package pins A, B, C, D and
output pins Q, R, S.
If you have the design netlist, you have all you need to determine what
the circuit does.
The typical schematic page contains about 200 gates included the
logic contained with soft macros. Therefore, it would require 50
schematic pages to create a 10,000 gate design! Each page needs to
go through all the steps mentioned previously: adding components,
interconnecting the gates, adding I/Os and generating a netlist! This is
rather time-consuming, especially if you want to design a 20k, 50k or
larger design.
And of course, there is. It’s called High Level Design (HLD),
Behavioural or Hardware Description Language (HDL). For our
purposes, these three terms are essentially the same thing.
There are two major flavours of HDL: VHDL and Verilog. Although it’s
not really important for you to know, VHDL is an acronym for “VHSIC
High-level Design Language”. And yes, VHSIC is another acronym
“Very High Speed Integrated Circuit”.
Obviously, you would want to modify the work already done for the
smaller multiplier. For the schematic approach, this would entail
making 3 copies of the 30 pages, then figuring out where to edit the 90
pages so that they addressed the larger bus widths. This would
probably require 4 hours of graphical editing. For the HDL
specification, it would be a matter of changing the bus references:
change 15 to 31 in line 2 and 31 to 63 in line 3 (4 seconds)!
entity MULT is
port(A,B:in std_logic(15 downto 0);
Y:out std_logic(31 downto 0));
end MULT;
entity MULT is
port(A,B:in std_logic(31 downto 0);
Y:out std_logic(63 downto 0));
end MULT;
So HDL is ideal for design re-use, you can share you ‘library’ of parts
with other designers at your company therefore saving and avoid
duplication of effort.
I think you can see now why HDL is the way to design logic circuits!
To recap, the advantages of high level design & synthesis are many. It
is much simpler and faster to specify your design using HLD. And
much easier to make changes to the design by the designer or
another engineer because of the self-documenting nature of the
language. The designer is relieved from the tedium of selecting and
interconnecting at the gate level. He merely selects the library and
optimisation criteria (e.g. speed, area) and the synthesis tool will
determine the results. The designer can thereby try different design
alternatives and select the best one for the application. In fact, there
is no real practical alternative for designs exceeding 10,000 gates.
• Faster Time-to-Market
• Simplifies the development process
• Minimal Design Risk
• Reduces software compile time
• Reduced verification time
• Predictable performance/functionality
You need to provide the design information (via the netlist after
schematic capture or synthesis) and the specific input pattern or Test
Vectors that you want checked. The simulator will take this
information and determine the outputs of the circuit.
i. Functional Simulation
If there are any problems, the designer goes back to the schematic or
HDL file, makes the changes, re-generates the netlist and then reruns
the simulation. Designers typically spent 50% of the development
time going through this loop until the design works as required.
iii. Fitting
For CPLDs, the design step is called Fitting to “Fit” the design to the
target device. In the diagram above, a section of the design is fit to the
CPLD. CPLDs are a fixed architecture so the software needs to pick
the gates and interconnect paths that match the circuit. This is usually
a fast process.
For FPGAs, the Place and Route programs are run after Compile.
“Place” is the process of selecting specific modules or logic blocks in
the FPGAs where design gates will reside. “Route” as the name
implies, is the physical routing of the interconnect between the logic
blocks.
Most vendors provide automatic place and route tools so the user does
not have to worry about the intricate details of the device architecture.
Some vendors have tools that allow expert users to manually place
and/or route the most critical parts of their designs and achieve better
In addition, the user at this point can use the detailed layout
information after reformatting, and go back to his simulator of choice
with detailed timing information. This process is called Back-
Annotation and has the advantage of providing the accurate timing as
well as the zeros and ones operation of his design.
In both cases, the timing reflects delays of the logic blocks as well as
the interconnect.
v. Downloading or Programming
At this point in the design flow, the device is now working but we’re not
done yet. We need to do a System Debug - verify that our device
works in the actual board. This is truly the moment of truth because
any major problems here means the engineer has made a assumption
on the device specification that is incorrect or has not considered
some aspect of the signal required to/from the programmable logic
device. If so, he will then collect data on the problem and go back to
the drawing (or behavioural) board!
This means we have the first WebFITTER , you can fit your design in
real time at our web site. Simply take your existing design to our
You may then like to download your personal copy, which can be
downloaded in modules, so you can decide which parts you need.
Modules include the design environment (Project Navigator), XST
(Xilinx Synthesis tool), ModelSim Xilinx Edition Starter which is a 3rd
party simulator, chip viewer and eventually ECS schematic capture &
VSS.
XILINX SOLUTION
Chapter 2 describes the products and services offered by Xilinx to ensure
PLD designs enable time to market advantage, design flexibility and
system future proofing. The Xilinx portfolio includes both CPLD & FPGA
devices, design software, design services & support, and Cores.
2.1 Introduction
2.2 Devices
It's an era where Xilinx leads the way, strengthened by our strategic
alliances with IBM, Wind River Systems, Conexant, RocketChips, The
MathWorks, and other technology leaders.
The Xilinx Virtex™ series was the first line of FPGAs to offer one million
system gates. Introduced in 1998, the Virtex product line fundamentally
redefined programmable logic by expanding the traditional capabilities of
field programmable gate arrays (FPGAs) to include a powerful set of
features that address board level problems for high performance system
designs.
The latest devices in the Virtex-E series, unveiled in 1999, offer more
than three million system gates. The Virtex-EM devices, introduced in
2000 and the first FPGAs to be manufactured using an advanced copper
process, offer additional on chip memory for network switch applications.
Xilinx Spartan™ FPGAs are ideal for low-cost, high volume applications
and are targeted as replacements for fixed-logic gate arrays and for
application specific standard products (ASSP) products such as bus
interface chip sets. The are four members of the family Spartan IIE
(1.8V), Spartan II (2.5V), Spartan XL (3.3V) and Spartan (5V) devices.
The Spartan-IIE (1.8V core) family offers some of the most advanced
FPGA technologies available today, including programmable support for
multiple I/O standards (including LVDS, LVPECL & HSTL), on-chip block
RAM and digital delay lock loops for both chip-level and board-level clock
management. In addition, the Spartan-IIE devices provide superior value
by eliminating the need for many simple ASSPs such as phase lock
loops, FIFOs, I/O translators and system bus drivers that in the past
have been necessary to complete a system design.
The Spartan-IIE family leverages the basic feature set of the Virtex-E
architecture in order to offer outstanding value. The basic CLB structure
contains distributed RAM and performs basic logic functions.
The four DLLs are used for clock management and can perform clock de-
skew, clock multiplication, and clock division. Clock de-skew can be
done on an external (board level) or internal (chip level) basis.
The block memory blocks are 4K bits each and can be configured from 1
to 16 bits wide. Each of the two independent ports can be configured for
width independently.
The Spartan-IIE IOB features inputs and outputs that support 19 I/O
signalling standards, including LVDS, BLVDS, LVPECL, LVCMOS,
HSTL, SSTL, and GTL. These high-speed inputs and outputs are
capable of supporting various state-of-the-art memory and bus interfaces.
The three IOB registers function either as edge-triggered D-type flip-flops
or as level sensitive latches. Each IOB has a clock signal (CLK) shared
by the three registers and independent clock enable (CE) signals for
each register.
In addition to the CLK and CE control signals, the three registers share a
Set/Reset (SR). For each register, this signal can be independently
configured as a synchronous Set, a synchronous Reset, an
asynchronous Preset, or an asynchronous Clear.
Some of the I/O standards require VCCO and/or VREF voltages. These
voltages externally are connected to device pins that serve groups of
IOBs, called banks. Consequently, restrictions exist about which I/O
standards can be combined within a given bank. Eight I/O banks result
from separating each edge of the FPGA into two banks. Each bank has
multiple VCCO pins, all of which must be connected to the same
voltage. This voltage is determined by the output standards in use.
Logic Cells
The basic building block of the Spartan-IIE CLB is the logic cell (LC). An
LC includes a four-input function generator, carry logic, and a storage
element. The output from the function generator in each LC drives both
the CLB output and the D input of the flip-flop. Each Spartan-IIE CLB
contains four LCs, organised in two similar slices. In addition to the four
basic LCs, the Spartan-IIE CLB contains logic that combines function
generators to provide functions of five or six inputs. Consequently, when
estimating the number of system gates provided by a given device, each
CLB counts as 4.5 LCs.
Block RAM
Delay-Locked Loop
Associated with each global clock input buffer is a fully digital Delay-
Locked Loop (DLL) that can eliminate skew between the clock input pad
and internal clock input pins throughout the device. Each DLL can drive
two global clock networks. The DLL monitors the input clock and the
distributed clock, and automatically adjusts a clock delay element.
Additional delay is introduced such that clock edges reach internal flip-
flops exactly one clock period after they arrive at the input. This closed-
loop system effectively eliminates clock-distribution delay by ensuring
that clock edges arrive at internal flip-flops in synchronism with clock
edges arriving at the input.
Configuration
Configuration is the process by which the FPGA is programmed with the
configuration file generated by the Xilinx development system. Spartan-
IIE devices support both serial configuration, using the master/slave
serial and JTAG modes, as well as byte-wide configuration employing
the slave parallel mode.
Xilinx CPLDs
Product Features:
Selection Considerations:
Number of I/O pins - How many inputs and outputs does your design
need?
Low Power - is your end product battery or solar powered? Does your
design require the lowest power devices possible? Do you have heat
dissipation concerns?
XC9500 5V Family
The XC9500 devices, in conjunction with our fitter software, give you the
maximum in routeability and flexibility while maintaining high
performance. The architecture is feature rich, including individual p-term
output enables, three global clocks, and more p-terms per output than
any other CPLD. The proven ability of the architecture to adapt to design
changes while maintaining pin assignments (pin-locking) has been
demonstrated in countless real-world customer designs since the
introduction of the XC9500 family. This assured
pin-locking means you can take full advantage of in-system-
programmability and you can easily change at any time, even in the
field.
Performance
• 5 ns pin-to-pin speed
• 222 MHz system frequency
Powerful Architecture
Highest Reliability
Advanced Technology
The XC9500XV 2.5V CPLD family from Xilinx is based upon an advanced
architecture that combines system flexibility and low cost to allow for
faster time-to-market and lower manufacturing and support costs.
Designed to operate with an internal core voltage of 2.5V, the XC9500XV
offers 30% lower power consumption than 3.3V CPLDs, resulting in
lower heat dissipation and increased long-term device reliability. The
XC9500XV silicon plus the powerful WebPOWERED software offers a
valuable logic solution that can't be beat when it comes to cost and
ease-of-use.
The CoolRunner™ CPLDs combine very low power with high speed, high
density, and high I/O counts in a single device. The CoolRunner 3.3-volt
family range in density from 32 to 512 macrocells. CoolRunner CPLDs
feature Fast Zero Power technology, allowing the devices to draw
virtually no power in standby mode, making them ideal for the fast
growing market for battery operated portable electronic equipment such
as:
• Laptop PCs
• Telephone handsets
• Personal digital assistants
• Electronic games
• Web tablets
These CPLDs also use far less dynamic power during actual operation
compared to conventional CPLDs, an important feature for high
performance, heat sensitive equipment such as telecom switches, video
conferencing systems, simulators, high end testers and emulators.
Figure 2.17 Sense Amplifier vs. CMOS CPLDs
XPLA3 Architecture
XPLA3 Architecture
The figure below illustrates the logic block architecture. Each logic block
contains a PLA array that generates control terms, each macrocell for
use as asynchronous clocks, resets, presets and output enables. The
other P-terms serve as additional single inputs into each macrocell.
There are eight foldback NAND P-terms that are available for ease of
fitting and pin locking. Sixteen product terms are coupled with the
associated programmable OR gate into the VFM (Variable Function
Multiplexer). The VFM increases logic optimization by implementing any
two input logic function before entering the macrocell.
FoldBack NANDs
Macrocell Architecture
3-stated and the input signal will be fed into the ZIA via the I/O feedback
path. The logic implemented in the buried macrocell can be fed back to
the ZIA via the macrocell feedback path.
If the macrocell is configured as an input, there is a path to the register
to provide a fast input setup time.
I/O Cell
The figure overleaf shows the XPLA3 timing model which has three main
timing parameters, including T PD , T SU , and T CO . In other
architectures, the user may be able to fit the design into the CPLD, but
may not be sure whether system timing requirements can be met until
after the design has been fit into the device. This is because the timing
models of other architectures are very complex and include such things
as timing dependencies on the number of parallel expanders borrowed,
sharable expanders, varying number of X and Y routing channels used,
etc. In the XPLA3 architecture, the user knows up front whether the
design will meet system timing requirements. This is due to the
simplicity of the timing model.
XPLA3 devices have slew rate control for each macrocell output pin. The
user has the option to enable the slew rate control to reduce EMI. The
nominal delay for using this option is 2.0 ns.
CoolRunner II
Xilinx CoolRunner™-II CPLDs deliver the high speed and ease of use
associated with the XC9500/XL/XV CPLD family with the extremely low
power versatility of the XPLA3™ family in a single CPLD. This means
that the exact same parts can be used for high-speed data
communications,
computing systems and leading edge portable products, with the added
benefit of In System Programming (ISP). Low power consumption and
high-speed operation are combined into a single family that is easy to
use and cost effective. Xilinx patented Fast Zero Power™ (FZP)
architecture inherently delivers extremely low power performance with
out the need for any special design measures. Clocking techniques and
other power saving features extend the users’ power budget. The design
features are supported
starting with Xilinx ISE 4.1i, WebFITTER, and ISE Web-PACK.
The table show in figure 2.25 overleaf shows the CoolRunner-II CPLD
package offering with corresponding I/O count. All packages are surface
mount, with over half of them being ball-grid technologies. The ultra tiny
packages permit maximum functional capacity in the smallest possible
area. The CMOS technology used in CoolRunner-II CPLDs generates
minimal heat, allowing the use of tiny packages during high-speed
operation. There are at least two densities present in each package with
three in the VQ100 (100-pin 1.0mm QFP) and TQ144 (144-pin 1.4mm
QFP), and in the FT256 (256-ball 1.0mm spacing FLBGA). The FT256 is
particularly important for slim dimensioned portable products with mid- to
high-density logic requirements.
The table also details the distribution of advanced features across the
CoolRunner-II CPLD family. The family has uniform basic features with
advanced features included in densities where they are most useful. For
example, it is very unlikely that four I/O banks are needed on 32 and 64
macrocell parts, but very likely they are for 384 and 512 macrocell parts.
The I/O banks are groupings of I/O pins using any one of a subset of
compatible voltage standards that share the same V CCIO level. The
clock division capability is less efficient on small parts, but more useful
and likely to
Logic Array within each FB. This extremely robust building block delivers
the industry’s highest pin-out retention, under very broad design
conditions. The architecture will be explained by expanding the detail as
we discuss the underlying Function Blocks, logic and interconnect.
The PLA is different - and better. First, any product term can be
attached to any OR gate inside the FB macrocell(s). Second, any logic
function can have as many p-terms as needed attached to it within the
FB, to an upper limit of 56. Third, product terms can be re-used at
multiple macrocell OR functions so that within a FB, a particular logical
product need only be created once, but can be re-used up to 16
times within the FB. Naturally, this works well with the fitting software,
which identifies product terms that can be shared.
CoolRunner II Macrocell
I/O Block
Output Banking
CPLDs are widely used as voltage interface translators. To that end, the
output pins are grouped in large banks. The smallest parts are not
banked, so all signals will have the same output swing for 32 and 64
macrocell parts. The medium parts (128 and 256 macrocell) support two
output banks. With two, the outputs will switch to one of two selected
output voltage levels, unless both banks are set to the same voltage. The
larger parts (384 and 512 macrocell) support four output banks split
evenly. They can support groupings of one, two, three or four separate
output voltage levels. This kind of flexibility permits easy interfacing to
3.3V, 2.5V, 1.8V, and 1.5V in a single part.
DataGATE
has a residual current component being drawn. This residual current can
be several hundred milliamps, making them unusable in portable
systems. CoolRunner-II CPLDs use standard CMOS methods to create
the CPLD architecture and deliver the corresponding low current
consumption, without doing any special tricks.
Figure 2.30 shows how DataGATE basically works. One I/O pin drives
the DataGATE Assertion Rail. It can have any desired logic function on
it. It can be as simple as mapping an input pin to the DataGATE function
or as complex as a counter or state machine output driving the
DataGATE I/O pin through a macrocell. When the DataGATE rail is
asserted low, any pass transistor switch attached to it is blocked. Note
that each pin has the ability to attach to the AIM through a DataGATE
pass transistor, and thus be blocked. A latch automatically captures the
state of the pin when it becomes blocked. The DataGATE Assertion Rail
threads throughout all possible I/Os, so each can participate if chosen.
Note that one macrocell is singled out to drive the rail, and that
macrocell is exposed to the outside world through a pin, for inspection. If
DataGATE is not needed, this pin is an ordinary I/O.
Division
DualEDGE
Each macrocell has the ability to double its input clock switching
frequency. Figure 2.28 shows the macrocell flip-flop with the DualEDGE
option (doubled clock) at each macro-cell. The source to double can be
a control term clock, a product term clock or one of the available global
clocks. The ability to switch on both clock edges is vital for a number of
synchronous memory interface applications as well as certain double
data rate I/O applications.
CoolCLOCK
appreciable power drain, the clock power can be reduced by driving the
net at half frequency, then doubling the clock rate using
DualEDGE triggering at the macrocells.
Design Security
Engineered for Maximum Speed, Xilinx design tools give you the speed
you need. With version 3.3i solutions, Xilinx place and route times are as
fast as 2 minutes for our 200,000 gate, XC2S200 Spartan™-II device,
and 30 minutes for our 1 million gate, system level XCV1000E Virtex™-E
device. That makes Xilinx development systems the fastest in the
industry.
And with the push of a button, our timing-driven tools are creating
designs that support I/O speeds in excess of 800 Mbps, and internal
clock frequencies in excess of 300 MHz. It's quick!
• Faster Time-to-Market
• Simplifies the development process
• Minimal Design Risk
• Reduces software compile time
• Reduced verification time
• Predictable performance/functionality
Cores are similar to vendor-provided soft macros in that they simplify the
design specification step by removing the designer from gate-level details
of commonly used functions. Cores differ from soft macros in that they
are generally much larger system-level functions such as, PCI bus
interface, DSP filter, PCMCIA interface, etc. They are extensively tested
(and hence rarely free of charge) to offload the designer from having to
verify the core functions himself. The Xilinx website has a comprehensive
data base of Xilinx (LogiCORE ) and 3rd Party (AllianceCORE ) verified
& tested cores, these can be found by interrogating the on-line search
facility called the ‘IP Center’.
www.xilinx.com/ipcenter
The CORE Generator tool form Xilinx delivers highly optimised cores
that are compatible with standard design methodologies for Xilinx
FPGAs. This easy-to-use tool generates flexible, high performance cores
with a high degree of predictability and allows customers to download
future core offerings from the Xilinx web site. The CORE Generator tool
is provided as part of the Xilinx Foundation iSE software offering.
Each of these web based sections are briefly described on the following
pages.
www.xilinx.com/esp
Access and upgrade hardware from your desktop anywhere in the world
with Internet Reconfigurable Logic (IRL ). The mission of the Xilinx
Online program is to enable, identify and promote any Xilinx
programmable system that is connected to a network that can be fixed,
upgraded, or otherwise modified after the system has been deployed in
the field. The design technology for creating Xilinx Online applications is
called Internet Reconfigurable Logic or IRL™. IRL consists of robust PLD
technology, your network connectivity and software design tools. Put
these individual pieces together and network-based hardware
upgradeability becomes a reality.
Flexibility
With System ACE CF, you can use one design to serve multiple
applications, drastically reducing time to market. For example, rather
than design several similar boards to accommodate different broadcast
standards, you can design one board with multiple configurations stored
in one System ACE CF memory module. Each board can be
"customised" to different standards simply to setting as default the
appropriate configuration stored in the ACE memory module.
You can also store multiple configurations of one design in a single
System ACE CF. For example, during prototyping you can store
operational, test, and debug configurations in the ACE memory module
and select different configurations to prove your design.
Density
Centralisation
2.5.11 Computers
Xilinx offers superior system level solutions to meet the needs for today's
demanding computer applications. Xilinx and its partners deliver building
blocks and expertise to meet the spectrum of needs that include fast
time-to-market, portability, high performance processing and throughput,
and most importantly low cost. Spartan FPGAs helps meet the rigid
cost constraints by offering an entire family of devices (up to 40,000
programmable system gates) that are all priced under $10.00 eliminating
the necessity of designing a custom IC. Xilinx delivers system level
solutions for applications including:
Xilinx and its partners provide the building blocks and expertise for many
communications applications. The core solutions and consulting
services we provide help customers accelerate time to market, keep
pace with industry standards, and address the industry's demands for
high performance and low power solutions. Xilinx FPGAs have been used
to implement system level building blocks for a variety of applications,
including:
www.xilinx.com/support/education-home.htm
http://xup.msu.edu//
http://www.xilinx.com/support/searchtd.htm
http://university.xilinx.com/univ/xsefaq1.htm
www.xilinx.com/ipcenter
For more information on Xilinx Products and Services please look in the
Xilinx Data Source CDROM in the back of the book or visit our
website:
www.xilinx.com
www.support.xilinx.com
3.1 Introduction
The individual WebPACK ISE modules give the user the ability to tailor
the design environment to the chosen programmable logic devices to be
implemented and the preferred design flow.
In general, the design flow for FPGAs and CPLDs is the same. The
designer can choose whether to enter the design in schematic form or
HDL such as VHDL or ABEL. The design can also comprise of a mixture
of schematic diagram with embedded HDL symbols. There is also a
facility to create state machines in a diagrammatic form and let the
software tools generate optimised code from a state diagram.
The diagram 3.1 overleaf gives an indication of the design flow. The
various modules show the requirements for the device targeted.
Idea
Testbench Simulation
HDL MXE
Bencher
Synthesis
Design Entry (XST)
CoolRunner Spartan
XC9500 Virtex
Fitter Implemen
CPLD Fitter t
FPGA
Chip-
Viewer
Program
iMPACT
When the design is complete and the designer is happy with the
simulation results, the design is targeted at the required device.
This module comprises of the schematic library primitives for the XC9500
and CoolRunner CPLDs as well as all supported FPGAs.
Modeltech Xilinx Edition (MXE) is the module for both functional and
timing simulation. The necessary libraries are already pre-compiled into
MXE and pre-written scripts seamlessly compile the design to be tested
and its testbench.
The programmer module also includes a PROM file formatter. The use of
an external PROM is a popular method of storing FPGA configuration
data. The PROM file formatter takes in the bitstream generated by the
implementation phase and provides an MCS or HEX formatted file used by
PROM programmers.
The ChipViewer module can be used to examine the fitting and pin out of
all XC9500 and CoolRunner family CPLDs.
Device Support
Virtex-II Up to XC2V250
Virtex-E Up to XCV300E
Spartan-IIE Up to XC2S300E
Spartan-II Up to XC2S200
CoolRunner-II All
CoolRunner All
XC9500 Families All
WebPACK Live – WebPACK ISE is run from the CD with a minimal set of
files loaded onto your hard drive. This method of operation has a 7-day
grace period before CD registration is required. Designers can continue
to run the software from the CD beyond this point if so desired by
obtaining a CD Key. The CD Key is free and available to new and
registered WebPACK users.
The Typical Installation - The desired files are installed to you hard drive.
This requires the user to obtain a CD Key. The CD Key is free and
available to new and registered WebPACK users.
4. After selecting which installation method you require you will see the
following window:
www.xilinx.com/sxpresso/webpack.htm
stage. You will need to create and enter a memorable user name and
password.
Your CD Key number will then be sent to you via email (please ensure
that you have carefully entered your correct email address when entering
your details).
Your key number will look something like this:
2504-xxxx-xxxx
To proceed with the installation enter your key number into the
InstallShield Wizard CD Key window and select the ‘next’ button.
5. Select the WebPACK modules you wish to install from the following:
Design Entry, ECS Library, Chip Viewer, CPLD Fitter, FPGA Fitter
(Spartan and/or Virtex device support), CPLD Fitter, iMPACT Programmer
(CPLD and/or FPGA), HDL Bencher, State CAD & ModelSim XE.
The following table gives the minimum install options for each required
flow:
HDL Entry Schematic Simulation State
Machines
FPGA Design Entry fpga schem lib hdl_bencher statecad
Spartan Fitter mxe_simulator
Virtex Fitter
FPGA Prog.
XC9500 Design Entry cpld schem lib hdl_bencher statecad
9500 Fitter mxe_simulator
CPLD Prog.
CoolRunner Design Entry cpld schem lib hdl_bencher statecad
CPLD Fitter mxe_simulator
CPLD Prog.
If you have enough disk space it is recommended that you install all
modules available.
Licenses
The HDL bencher and the MXE simlulator have associated licenses.
HDL Bencher will give limited performance until the application has been
registered. The registration process is automated. When using the
bencher for the first time at the export HDL stage, a window will pop up
asking for registration information (Name, address etc.) The application
creates a host ID which is used to create a password. A password will be
emailed back on application.
An upgrade can also be requested via email. The address is given when
using the bencher.
When starting a project the default location of the project will be:
c:\Xilinx_WebPACK\bin\nt
Create a unique directory on your hard drive for working on projects e.g.
c:\designs. If you need to reinstall WebPACK ISE for future releases it is
recommended that the entire WebPACK ISE directory structure is
deleted.
The external option for design entry refers to a third party design tool
output netlist. In this case an EDIF netlist file is generated externally and
is implemented by the WebFITTER.
Summary
In this chapter the functions of all the WebPACK ISE modules have been
explained along with installation of the modules you require.
You can decide which modules are necessary for your intended design
and install only relevant modules. The next section will take you through
your first PLD design using the powerful features of the WebPACK ISE
software. The example design is a simple traffic light controller which
uses a VHDL counter and a state machine. The design entry process is
identical for FPGAs and CPLDs.
This section is a step by step approach to your first simple design. The
following pages are intended to demonstrate the basic PLD design entry
and implementation process.
CPLD Users
This design entry section also applies to CPLDs. Any additional CPLD
specific information is included in italic font.
Click the Finish button to complete the new source file template.
Notice a file called counter.vhd has been added to the project in the
sources window of the project navigator.
As the project builds you will notice how WebPACK ISE manages
hierarchy and associated files in the sources window.
Double clicking on any file name in the sources window will allow that file
to be edited in the main text editor.
Click and drag the Counter template from the VHDL -> Synthesis
Templates folder and drop it into the counter.vhd architecture between
the begin and end statements. An alternative method is to place your
cursor between the begin and end statements in counter.vhd, select
Counter in the VHDL > Synthesis Templates folder and the click the
The counter module should now look like figure 4.2.5 overleaf.
The library declarations are needed to tell the compiler which packages
are required.
The entity declares all the ports associated with the design. Count (3
down to 0) means that count is a 4-bit logic vector. This design has 2
inputs clock and reset, and 1 output, a 4-bit bus called ‘count’
The actual functional description of the design appears after the ‘begin’
statement in the Architecture.
The area still within the Architecture but before the begin statement is
where declarations reside. There will be examples of both component
declarations and signal declarations later in this chapter.
Save the counter module.
The counter module of the design can now be simulated.
With counter.vhd highlighted in the sources window, the process window
will give all the available operations for that particular module. A VHDL file
can be synthesised then implemented through to a bitstream. Normally a
design consists of several lower level modules wired together by a top
level file. This design currently only has one module which can be
simulated.
Click Next.
The testbench is going to simulate the Counter module so, when asked
which source you want to associate the source with, select counter and
click Next. Review the information and click Finish.
The HDL bencher tool reads in the design. The Initialise Timing box sets
the frequency of the system clock, set up requirements and output
delays.
Note: The blue cells are for entering input stimulus and the yellow cells
are for entering expected response. When entering a stimulus, clicking
the left mouse button on the cell will cycle through available values for
that. Open a pattern text field and button by double clicking on a signals
cell or single clicking on a bus cell, from this pattern window you can
enter a value in the text field or click on the pattern button to open a
pattern wizard.
Now that the testbench is created you can now simulate the design.
Select counter_tb.tbw in the ISE source window. In the Process window
expand Modelsim Simulator by clicking and then right-click Simulate
Behavioural VHDL Model.
Select Properties.
In the ‘Simulation run time’ field type –all, hit OK.
By default MXE will only run for 1us. The –all property runs MXE until the
end of the testbench.
Maximise the Wave window and from the Zoom menu select Zoom
Full:
Note: Taking a snapshot of your project saves the current state of your
project in a subdirectory with the same name as the Snapshot name so
you can go back to it in the future. You can view project snapshots by
selecting the Sources window Snapshot tab in the Project Navigator.
If the design was to have only one module (one level of hierarchy), the
implementation phase would be the next step. This design, however, has
a further module to represent a more typical VHDL design.
For the traffic light design, the counter will act as a timer that determines
the transitions of a state machine.
The state machine will run through 4 states, each state controlling a
combination of the three lights.
To invoke the state machine editor select New Source from the Project
Menu.
Highlight State Diagram and give it the name stat_mac and click Next,
then finish.
The results window should read ‘Compiled Perfectly’. Close the dialog box
and the generated HDL browser window.
Save and Close StateCad.
The state machine can now be added to the WebPACK ISE project.
In the Project Navigator go to the Project Menu and select Add Source.
In the Add Existing Sources box find STAT_MAC.vhd.
Click on Open and declare it as a VHDL Module.
In the Project Navigator go to the Project Menu and select Add Source.
In the Add Existing Sources box find stat_cad.dia.
The State Diagram will be added to the top of the Sources window.
Double Clicking on this file will open up the state diagram in StateCad.
From the Project Menu select New Source and create a VHDL Module
called top.
Click on next and fill out the ‘Define VHDL Source’ dialog box as shown
below in figure 4.5.3:
Save top.vhd and notice how the Sources window automatically manages
the hierarchy of the whole design with counter.vhd and stat_mac.vhd
becoming sub-modules of top.vhd.
Accept the timing in the Initialise Timing dialog box and click OK.
This section discusses the method of connecting VHDL modules via the
ECS schematic tool.
If you have worked through the previous session you will first need to
revert to the screen shown in Figure 4.6.1 below (two modules with no top
level file). This is achieved by:
At the bottom of Sources window select the Snapshot View Tab.
Highlight Snap2 (two modules), then in the Project menu select Replace
with Snapshot. This action will take you back to the stage in the flow
with only the counter.vhd and the stat_mac.vhd files.
WebPACK ISE will ask if you would like to take another snapshot of the
design in its current state.
Select Yes and create a third snapshot called vhdl top.
The Sources window module view should look like the following figure:
From the Project Menu select New Source > Schematic and give it
the name top_sch.
Create another symbol this time for the state machine by highlighting
stat_mac.vhd and double clicking on Create Schematic Symbol.
Add the counter and state machine by clicking on the new library in the
Categories window in the top right of the ECS page, then selecting
counter. Move the cursor over the sheet and drop the counter symbol by
clicking where it should be placed.
Move the cursor back into the Categories window and place the
stat_mac symbol on the sheet.
Zoom in using the button so your window looks like the following:
Note: To add a hanging wire click on the symbol pin to start the wire,
once at each vertex and then double-click at the location you want the
wire to terminate.
Wire up the counter and state machine as shown below in figure 4.6.4:
Select the Add Net Names tool from the Drawing Toolbar. Type
clock (notice that the text appears in the window in the top left of the
ECS page) and then place the net name on the end of the clock wire.
I/O Markers
Select the Add I/O Marker tool from the Drawing Toolbar.
With the Input type selected, click and drag around all the inputs that
you want to add input markers to.
Repeat for the outputs but select Output type.
Your completed schematic should look like the following figure, 4.6.7:
Accept the timing in the Initialise Timing dialog box and click OK.
IMPLEMENTING FPGAs
5.1 Introduction
After the design has been successfully simulated the synthesis stage
converts the text based design into an NGC netlist file. The netlist is a
non-readable file that describes the actual circuit to be implemented at a
very low level.
The first step is translate. The translate step checks the design and
ensures the netlist is consistent with the chosen architecture. Translate
also checks the user constraints file (UCF) for any inconsistencies. In
effect, this stage prepares the synthesised design for use within an
FPGA.
The Map stage distributes the design to the resources in the FPGA.
Obviously, if the design is too big for the chosen device the map process
will not be able to complete its job.
Map also uses the UCF file to understand timing and may sometimes
decide to actually add further logic (replication) in order to meet the given
timing requirements. Map has the ability to ‘shuffle’ the design around
look up tables to create the best possible implementation for the design.
This whole process is automatic and requires little user input.
The Place And Route (PAR) stage works with the allocated configurable
logic blocks (CLBs) and chooses the best location for each block. For a
fast logic path it makes sense to place relevant CLBs next to each other
purely to minimise the path length. The routing resources are then
allocated to each connection, again using careful selection of the best
possible routing types. E.g. if a signal is needed for many areas of the
design the Place and Route tool would use a ‘longline’ to span the chip
with minimal delay or skew.
Finally a program called ‘bitgen’ takes the output of Place and Route and
creates a programming bitstream. Whilst developing a design it may not
be necessary to create a bit file on every implementation as the designer
may just need to ensure a particular portion of the design passes any
timing verification.
5.2 Synthesis
The XST synthesis tool will only attempt to synthesis the file highlighted
in the sources window. In the traffic light design top.vhd (for VHDL
designs) or top_sch (for schematic designs) instantiates two lower level
blocks, stat_mac and counter.
The synthesis tool recognises all the lower level blocks used in the top
level code and synthesises them all together to create a single
bitstream.
The design should be OK because both the HDL Bencher and MXE have
already checked for syntax errors. (It is useful, when writing code, to
periodically check your design for any mistakes using this feature).
A window appears allowing the user to influence the way in which the
design is interpreted.
The help feature will explain each of the options in each tab.
Click on the HDL options Tab.
The Finite State Machine (FSM) encoding algorithm option looks for
state machines and determines the best method of optimising.
For FPGAs state machines are usually ‘one hot’ encoded. This is due to
the abundance of flip-flops in FPGA architectures. A ‘one hot’ encoded
state machine will use one flip-flop per state. Although this may seem
wasteful, the next state logic is reduced and the design is likely to run
much faster. Leave the setting on ‘auto’ to achieve this fast one hot
encoding.
In the Xilinx Specific Options tab ensure the ‘Add IO Buffers’ box is
ticked. The IO buffers will be attached to all the port names in the top
level entity of the design.
The first section of the report just summarises the synthesis settings.
Each entity in the design is then compiled and analysed.
The next section in the report gives the synthesis details and documents
how the design has been interpreted.
It can be seen that the state machine is one hot encoded as each state
name (red, amber, redamb and green) has been assigned its own 1 bit
register. When synthesis chooses to use primitive macros it is known as
inference. As registered outputs were selected in the state machine,
three further registers have been inferred.
The final results section shows the resources used within the FPGA.
In the Process window expand the Design Entry Utilities section then
expand the User Constraints sub section.
There is one global net in the design, this is the clock. Translate
detected the clock assigned it to the global tab.
Double click in the location field for amber_light. Then, in the location
dialogue box, type G16. (If a non-Ball Grid package is used, such as a
PQ208, the syntax is slightly different. The correct syntax for each
package can be found in the online datasheet).
Repeat for the other outputs, the Clock and Reset input.
amber_light G16
Clock T9
green_light G15
red_light H16
Reset H13
In the Select Group box select lights and hit the Clock to Pad button.
In the clock to pad dialogue box set the time requirement to 15ns relative
to the clock. (There is only one clock but in some designs there may be
more).
The implementation steps are now visible. The green tick next to
translate indicates this step has completed once before.
A right Click on each step allows the user to edit the properties for that
particular step. The properties for all the steps can be edited by right
clicking on Implement Design. There is a tab for each step.
When there is a green tick next to Translate, Map and Place and
Route the design has completed the implementation stage. For a ‘post
route’ timing report manually run the Generate Post-Route Static
Timing section.
ii. Map Report – Confirms the resources used within the device. A
detailed map report can be chosen in the Properties for map. The
detailed map report describes trimmed and merged logic. It will also
describe exactly where each portion of the design is located in the
actual device.
iii. Post-Map Static Timing Report - Shows the logic delays only (no
routing) covered by the timing constraints. This design has two timing
constraints, the clock period and the ‘clock to out’ time of the three
lights. If the logic only delays don’t meet the timing constraints the
additional delay added by routing will only add to the problem.
If there was no routing delay these traffic lights would run at 216 MHz!!
iv. Place and Route Report – Gives a step by step progress report.
The place and route tool must be aware of timing requirements. It will list
the given constraints and report how comfortably the design fell within or
how much it failed the constraints.
vi. Pad Report – Displays the final pin out of the design with information
regarding the drive strength and signalling standard.
vii. Post Place and Route Static Timing Report – Adds the routing
delays. It can now be seen that the max frequency of the clock has
dropped to 135MHz.
WebPACK has additional tools for complex timing analysis and floor
planning. Neither of these tools are covered in this introductory booklet.
Select Properties and in the Simulation Run Time field type ‘all’.
MXE opens but this time a different script file is implemented and the
post route VHDL file (time_sim.vhd) is compiled. Time_sim.vhd is a very
low level VHDL file generated by the Implementation tools. It references
the resources within the FPGA and takes timing information from a
separate file.
Use the Zoom features and Cursors to measure the added timing
delays.
5.6 Configuration
This operation creates a .bit file which can be used by the iMPACT
programmer to configure a device.
plugged in to the computer and the flying leads are connected properly
to the device and power supply.
Right click in the top half of the iMPACT window and select Add Xilinx
Device. Browse to the location of the project (c:\designs\traffic) and
change the file type to .bit.
Summary
The next chapter details a similar process but this time a CoolRunner
CPLD is targeted rather than a Spartan-IIE FPGA. FPGA users may
wish to skip the next chapter.
IMPLEMENTING CPLDs
6.1 Introduction
After the design has been successfully simulated the synthesis stage
converts the text based HDL design into an NGC netlist file. The netlist
is a non-readable file that describes the actual circuit to be implemented
at a very low level.
Obviously, if the design is too big for the chosen device the fitter will not
be able to complete its job.
The fitter also uses the UCF file to understand timing and may
sometimes decide to change the actual design.
For example, sometimes the Fitter will change the D-Type flip-flops in
the design to Toggle Type or T-Type registers. It all depends on how well
the design converts into product terms.
The fitter creates a JED file which is used to program the device either
on the board via a Parallel cable or using programming equipment.
A Spartan-IIE FPGA was chosen at the start of this tutorial it must now
be changed to an XPLA3 CPLD. The project can be changed at any
time to any device BUT, when a device family, type, package of speed
grade is changed, the design must be re-synthesised.
6.2 Synthesis
The XST synthesis tool will only attempt to synthesise the file
highlighted in the sources window. In the traffic light design top.vhd (for
VHDL designs) or top_sch (for schematic designs) instantiates two
lower level blocks, stat_mac and counter.
The synthesis tool recognises all the lower level blocks used in the top
level code and synthesises them all together to create a single netlist.
You can now check your design by double clicking on Check Syntax.
Ensure any errors in your code are corrected before you continue. If the
syntax check is OK a tick will appear (as shown in figure 6.2.1).
The design should be OK because both the Bencher and MXE have
already checked for syntax errors. (It is useful, when writing code, to
periodically check your design for any mistakes using this feature).
A window appears allowing the user to influence the way in which the
design is interpreted.
The Help feature will explain each of the options in each tab.
In the Xilinx Specific Options tab ensure the ‘Add IO Buffers’ box is
ticked. The IO buffers will be attached to all the port names in the top
level entity of the design.
In the Process window expand the Design Entry Utilities section then
expand the User Constraints sub section.
The constraints for the design are entered in the text editor.
The PERIOD constraint attached to the clock informs the fitter that the
logic delay between synchronous points (flip-flops) can be a maximum of
10ns.
The LOC constraint tells the fitter which pins on the device are to be
used for a particular signal.
Save the Constraints file session. Select Reset so that the changes in
the UCF will be read.
Note: A green tick means that the design ran through without any
warnings. A yellow exclamation may mean that there is a warning in one
of the reports. A common warning, that can be safely ignored in CPLD
designs, is that an “fpga_don’t_touch” attribute has been applied to an
instance. If the design procedure outlined in this example has been
followed, there should be no errors or warnings.
The next section lists the longest set up time, cycle time (logic delay
between synchronous points as constrained by the PERIOD constraint)
and clock to out time.
The set up and clock to out times don’t strictly effect the performance of
the design. These parameter limitations are dependent on the upstream
and downstream devices on the board.
The cycle time is the maximum period of the internal system clock. The
report shows this design has a minimum cycle time of 7.1ns or 140.8
MHz. This delay is created within the state machine.
The next section shows all the inputs and outputs of the design and their
timing relationship with the system clock. It can be seen that the three
lights will have a 4.5ns delay with respect to the clock input.
The clock to set up section details the internal nets from and to a
synchronous point. The maximum delay in this section dictates the
maximum system frequency.
The last section details all the path delays adding up the internal timing
parameters shown at the top of the report.
A_0_, B_0_, C_0_ and D_0_ are T-Type flip-flops used to implement the
state machine.
(One drawback of using GUI’s to generate code is the designer has little
control over the internal net names).
MXE opens but this time a different script file is implemented and the
post route VHDL file (time_sim.vhd) is compiled. Time_sim.vhd is a very
low level VHDL file generated by the Implementation tools. It references
the resources within the CPLD and takes timing information from a
separate file.
Use the Zoom features and Cursors to measure the added timing
delays.
6.6 Programming
A DLC5 Parallel JTAG cable is required to configure the device from the
iMPACT Programmer. Ensure the cable is plugged in to the computer
and the flying leads are connected properly to the device and power
supply.
The design will now download in to the device. Well done, you have now
successfully programmed your first CoolRunner CPLD!
Summary
Microcontrollers don’t make the world go round, but they most certainly
help us get around in the world. You can find microcontrollers in
automobiles, microwave ovens, automatic teller machines, VCRs, point
of sale terminals, robotic devices, wireless telephones, home security
systems, and satellites, just to name a very few applications.
Although there are faster and more powerful microcontrollers in the field,
eight-bit microcontrollers own much of the market because of their low
cost and low power characteristics. The typical operational speed is
around 20 MHz, but some microcontroller cores divide clock frequency
internally and use multiple clock cycles per instruction (operations often
include fetch-and-execute instruction cycles). Thus, with a clock division
of two and with each instruction taking up to three cycles, the actual
speed of a 20 MHz microcontroller is divided by six. This works out to an
operational speed of only 3.33MHz.
Also, Xilinx offers free software and low cost hardware design tools to
support CPLD integration with microcontrollers. The Xilinx CPLD design
process is quite similar to that used on microcontrollers, so designers
can quickly learn how to partition their designs across a CPLD and
microcontroller to maximum advantage.
At the low cost end, the motor rotor rotates through 7.5 degrees per
step, or 48 steps per revolution. The more accurate, higher cost versions
have a basic resolution of 1.8 degrees per step. Furthermore, it is
possible to half-step these motors to achieve a resolution of 0.9 degrees
per step. Stepper motors tend to have a much lower torque than other
motors, which is advantageous in precise positional control.
tested on the board. The PLD can also be used as a “gateway” to test
the rest of the board functionality. After the board level test is completed,
the PLD can then be programmed with the final code in-system via the
JTAG port.
A 9 5 6
These binary bits represent voltage levels applied to each of the coil
driver circuits. The steps are:
1010 5V 0V 5V 0V
1001 5V 0V 0V 5V
0101 0V 5V 0V 5V
0110 0V 5V 5V 0V
If you send this pattern repeatedly, then the motor shaft rotates. The
assembly language program in Figure 3 continually rotates the stepper
motor shaft. By altering the value of R0 in the delay loop, this will give
fine control over speed; altering the value of R1 will give coarse variations
in speed.
The phase equations (PH1 to PH4) are written with a colon and equal
sign (:=) to indicate a registered implementation of the combinatorial
equation. Each phase equation is either enabled (EN), indicating that the
motor is rotating, or disabled (!EN), indicating that the current active
phase remains on and the motor is locked. The value of the direction
input (DIR) determines which product term is used to sequence
clockwise or counter-clockwise. The asynchronous equations (for
example, ph1.AR=!rst) initialise the circuit.
Our next example (Figure 5 and 6) is more complex, because now the
motor is connected to a PC-based system via an RS-232 serial
connection. This implementation has a closed loop system controlling
rotation, speed, and direction. There is also the addition of a safety-
critical emergency stop, which has the highest level of system interrupt.
This means that if the emergency stop is activated, it will override any
other process or interrupt and will immediately stop the motor from
rotating.
• Interrupt control
The microcontroller:
• Computes stop point and sets a value into the pulse count
comparison register.
7.2.6 Conclusion
Extract from the Xilinx Xcell journal, Issue 39, Spring 2001.
http://www.xilinx.com/xcell/xcell.htm
Springboard Kit
Exemplar/ModelSim Tutorial CPLDs
Tutorial for CPLDs
Workstation Flow for Tutorial CPLDs
Xilinx CoolRunner
CPLDs
OrCAD/ModelSim Tutorial CPLDs
Tutorial for CPLDs
Understanding the XAPP375 CoolRunner II
CoolRunner-II Timing
Model
Understanding the XAPP376 CoolRunner II
CoolRunner-II Logic
Engine
Configuration- The internally stored file that controls the FPGA so that
it performs the desired logic function. Also: The act of loading an FPGA
with that file.
GAL- Generic Array Logic. Lattice name for a variation on PALs Gate
Smallest logic element with several inputs and one output. AND gate
output is High when all inputs are High. OR
gate output is High when at least one input is High. A 2-input NAND gate
is used as the measurement unit for gate array complexity.
Gate Array- ASIC where transistors are pre-defined, and only the
interconnect pattern is customised for the individual application.
IOB or I/O- Input/Output Block. Logic block with features specialised for
interfacing with the pc-board.
JTAG- Joint Test Action Group. Older name for IEEE 1149.1
boundary scan, a method to test pc-boards and also ICs.
Logic Cell- Metric for FPGA density. One logic cell is one 4-input look-
up table plus one flip-flop.
TBUFs- Buffers with a 3-state option, where the output can be made
inactive. Used for multiplexing different data sources onto a common
bus. The pull-down-only option can use the bus as a wired AND function.