Xcell Journal Online
  Xcell Journal Archives
   
  Writing for Xcell
  Advertising in Xcell
  FREE Subscription
   
  Partner Yellow Pages
  Reference Pages
  Contact Us

    

Home : Documentation : Xcell Journal Online : Article
Never Design Another FIFO



by Tom Fischaber, Staff Design Engineer, IP Solutions Division, Xilinx, Inc.
tom.fischaber@xilinx.com and
James Ogden, Design Engineer, IP Solutions Division, Xilinx, Inc.
james.ogden@xilinx.com (7/11/05)


The FIFO Generator IP core delivers fully optimized FIFO solutions for any configuration, freeing you to focus on your own design challenges.
article link to PDF
Article PDF 190 KB


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. PDF logo (7/11/05) 190 KB

 
Jobs Events Webcasts News Investors Feedback Legal Privacy Trademarks Sitemap
© 1994-2008 Xilinx, Inc. All Rights Reserved.