|
In digital designs, first-in first-out memory
queues (FIFOs) are ubiquitous constructs
required for data manipulation and buffering
– tasks that are often very challenging.
Are all clock domain crossings properly
timed and synchronized? How do I convert
my 16-bit data path to 64 bits? These elements
of a FIFO design are difficult and
time-consuming to implement, and are
often error-prone. The Xilinx® FIFO
Generator core solves these challenges and
provides an assortment of complex FIFO
designs through a convenient, configurable
graphical user interface (GUI), enabling
you to focus on your system requirements.
From application notes and reference
designs to IP cores, Xilinx has a long history
of developing FIFOs. With the introduction
of the FIFO Generator, almost any
imaginable FIFO configuration is provided
as a fully optimized, pre-engineered solution
delivered through Xilinx CORE
Generator™ software. The FIFO
Generator supports a suite of memory
types, including block RAM, distributed
RAM, shift registers, and the Virtex™-4
built-in FIFO. The core also supports
write and read interfaces with either a single
common clock or dual independent
clocks. These and other options are easily
customizable through the GUI. In this
article, we’ll highlight the benefits of the
FIFO Generator solution and how it can
help you quickly develop a FIFO that
exactly meets your needs.
Common and Independent Clock Domains
The FIFO Generator supports FIFOs both
with a single common clock and dual
independent clocks for write and read
operations. The common clock configuration
provides small, fast, low-latency
FIFOs supporting a variety of status flags,
and is ideally suited for single-clock databuffering
applications.
The independent clock configuration
provides even greater utility, solving
notoriously difficult and error-prone
FIFO designs at the touch of a button.
The FIFO Generator handles the synchronization
between clock domains,
placing no requirements on phase and
frequency. Not only does the FIFO
Generator core solve the complexities of
independent clock designs, but it also
provides a variety of additional capabilities
(including a full suite of status flags),
enabling you to customize the FIFO
Generator for your application.
The first page of the FIFO Generator
GUI is shown in Figure 1, and highlights
how you can configure the FIFO with a
single common clock or dual independent
clocks using various memory types. Figure
1 also includes the key features supported
in each configuration for the FIFO
Generator v2.1 release, available for free in
ISE™ 7.1i software with IP Update 1.
Virtex-4 Built-In FIFO Support
Included in the Virtex-4 architecture is a
built-in FIFO controller with every onchip
block RAM (see Peter Alfke’s article,
“FIFOs Made Easy,” in the First Quarter
2005 issue of the Xcell Journal). By utilizing
this new built-in FIFO, the FIFO
Generator provides easy access to these
high-performance independent clock
FIFOs, saving valuable FPGA fabric
resources while providing substantially
lower power consumption.
The FIFO Generator also expands on
the capabilities of built-in FIFOs by providing
FIFOs of arbitrary width and
depth, as well as providing additional status
flags. The concatenating of multiple
embedded FIFOs and additional logic for
status flags are handled automatically,
enabling very high-performance designs
to be supported with only minimal FPGA
resources. A functional diagram of the
built-in FIFO design is illustrated in
Figure 2.
Non-Symmetric Aspect Ratios/FWFT
Applications requiring data width conversion
almost always require two clocks to
operate at different frequencies. When the
frequencies are related, this task can be easy
to implement. However, if the two clock
rates have no relationship, this task can be
daunting. The FIFO Generator provides
automatic width conversion of the stored
data, while allowing any relationship
between the two clock domains. Figure 3
illustrates how a FIFO with an 8-bit write interface and 2-bit read interface operates,
providing a 4:1 write-to-read aspect ratio.
Although FIFOs with different bus
widths and independent clocks are complex
to design, the FIFO Generator makes
this design feature just as simple to create
and use as any other FIFO configuration.
The solution further combines this functionality
with other rich features, including
a full suite of status flags and first-word fall-through
(FWFT).
FWFT provides the ability to look ahead
to the next word available from
the FIFO without issuing a read
operation. When data is available
in the FIFO, the first word falls
through the FIFO and appears
automatically on the output bus.
FWFT is useful in applications
that require low latency access to
data and in applications that
require throttling based on the
contents of the data that is read.
FWFT support is new in the
FIFO Generator v2.1 release.
Memory Types
In addition to the built-in FIFO in Virtex-4 devices, the FIFO Generator supports a
suite of memory types including block
RAM, distributed RAM, and shift registers.
The FIFO Generator combines the
selected memory type in width and depth,
always generating an optimized solution.
Table 1 highlights some of the benefits of
each memory type.
Conclusion
The Xilinx FIFO Generator core is an all-in-one FIFO solution, providing complex
capabilities at the touch of a button. Most
traditional FIFO capabilities are already
included, as are special features such as
built-in FIFO support for Virtex-4
FPGAs, non-symmetric aspect ratios, and
FWFT. This core provides peace of mind
for system designers – we focus on the
FIFO design while you solve your own
design challenges. Xilinx will continue to
enhance the FIFO Generator for Xilinx
FPGA families, as well as adding highvalue
features that meet your next-generation
design requirements.
For more information about the FIFO
Generator, visit www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=FIFO_Generator. For more information
about the Virtex-4 built-in FIFO and its
benefits, visit www.xilinx.com/publications/xcellonline/xcell_52/xc_pdf/xc_v4fifo52.pdf.
We would love to hear about your
experience with the FIFO Generator, or if
you have suggestions for new features. To
provide feedback about your experience
or request new capabilities, e-mail
fifo_generator@xilinx.com.
Printable PDF version of this article with graphics. (7/11/05) 190 KB
|