Design Challenges: Avoiding the Pitfalls, winning the game - Xilinx
Design Challenges: Avoiding the Pitfalls, winning the game - Xilinx
Design Challenges: Avoiding the Pitfalls, winning the game - Xilinx
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
SYSTEM PERFORMANCE<br />
Never <strong>Design</strong> Ano<strong>the</strong>r FIFO<br />
The FIFO Generator IP core delivers fully optimized FIFO solutions for<br />
any configuration, freeing you to focus on your own design challenges.<br />
by Tom Fischaber<br />
Staff <strong>Design</strong> Engineer, IP Solutions Division<br />
<strong>Xilinx</strong>, Inc.<br />
tom.fischaber@xilinx.com<br />
James Ogden<br />
<strong>Design</strong> Engineer, IP Solutions Division<br />
<strong>Xilinx</strong>, Inc.<br />
james.ogden@xilinx.com<br />
In digital designs, first-in first-out memory<br />
queues (FIFOs) are ubiquitous constructs<br />
required for data manipulation and buffering<br />
– tasks that are often very challenging.<br />
Are all clock domain crossings properly<br />
timed and synchronized? How do I convert<br />
my 16-bit data path to 64 bits? These elements<br />
of a FIFO design are difficult and<br />
time-consuming to implement, and are<br />
often error-prone. The <strong>Xilinx</strong> ® FIFO<br />
Generator core solves <strong>the</strong>se challenges and<br />
provides an assortment of complex FIFO<br />
designs through a convenient, configurable<br />
graphical user interface (GUI), enabling<br />
you to focus on your system requirements.<br />
From application notes and reference<br />
designs to IP cores, <strong>Xilinx</strong> has a long history<br />
of developing FIFOs. With <strong>the</strong> introduction<br />
of <strong>the</strong> FIFO Generator, almost any<br />
imaginable FIFO configuration is provided<br />
as a fully optimized, pre-engineered solution<br />
delivered through <strong>Xilinx</strong> CORE<br />
Generator software. The FIFO<br />
Generator supports a suite of memory<br />
types, including block RAM, distributed<br />
RAM, shift registers, and <strong>the</strong> Virtex-4<br />
built-in FIFO. The core also supports<br />
write and read interfaces with ei<strong>the</strong>r a single<br />
common clock or dual independent<br />
clocks. These and o<strong>the</strong>r options are easily<br />
customizable through <strong>the</strong> GUI. In this<br />
article, we’ll highlight <strong>the</strong> benefits of <strong>the</strong><br />
FIFO Generator solution and how it can<br />
help you quickly develop a FIFO that<br />
exactly meets your needs.<br />
Common and Independent Clock Domains<br />
The FIFO Generator supports FIFOs both<br />
with a single common clock and dual<br />
independent clocks for write and read<br />
operations. The common clock configuration<br />
provides small, fast, low-latency<br />
FIFOs supporting a variety of status flags,<br />
and is ideally suited for single-clock databuffering<br />
applications.<br />
The independent clock configuration<br />
provides even greater utility, solving<br />
notoriously difficult and error-prone<br />
FIFO designs at <strong>the</strong> touch of a button.<br />
The FIFO Generator handles <strong>the</strong> synchronization<br />
between clock domains,<br />
placing no requirements on phase and<br />
frequency. Not only does <strong>the</strong> FIFO<br />
Generator core solve <strong>the</strong> complexities of<br />
independent clock designs, but it also<br />
provides a variety of additional capabilities<br />
(including a full suite of status flags),<br />
enabling you to customize <strong>the</strong> FIFO<br />
Generator for your application.<br />
The first page of <strong>the</strong> FIFO Generator<br />
GUI is shown in Figure 1, and highlights<br />
how you can configure <strong>the</strong> FIFO with a<br />
single common clock or dual independent<br />
clocks using various memory types. Figure<br />
1 also includes <strong>the</strong> key features supported<br />
in each configuration for <strong>the</strong> FIFO<br />
Generator v2.1 release, available for free in<br />
ISE 7.1i software with IP Update 1.<br />
Virtex-4 Built-In FIFO Support<br />
Included in <strong>the</strong> Virtex-4 architecture is a<br />
built-in FIFO controller with every onchip<br />
block RAM (see Peter Alfke’s article,<br />
“FIFOs Made Easy,” in <strong>the</strong> First Quarter<br />
2005 issue of <strong>the</strong> Xcell Journal). By utilizing<br />
this new built-in FIFO, <strong>the</strong> FIFO<br />
Generator provides easy access to <strong>the</strong>se<br />
high-performance independent clock<br />
FIFOs, saving valuable FPGA fabric<br />
resources while providing substantially<br />
lower power consumption.<br />
The FIFO Generator also expands on<br />
<strong>the</strong> capabilities of built-in FIFOs by providing<br />
FIFOs of arbitrary width and<br />
depth, as well as providing additional status<br />
flags. The concatenating of multiple<br />
embedded FIFOs and additional logic for<br />
status flags are handled automatically,<br />
enabling very high-performance designs<br />
to be supported with only minimal FPGA<br />
resources. A functional diagram of <strong>the</strong><br />
built-in FIFO design is illustrated in<br />
Figure 2.<br />
30 Xcell Journal Third Quarter 2005