20.06.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!