FFT MegaCore Function March 2001 User Guide Version 1.02 101 Innovation Drive San Jose, CA 95134 (408) 544-7000 http://www.altera.com A-UG-FFT-1.02 FFT MegaCore Function User Guide Altera, ACEX, APEX, APEX 20K, FLEX, FLEX 10KE, MAX+PLUS II, MegaCore, MegaWizard, OpenCore, and Quartus are trademarks and/or service marks of Altera Corporation in the United States and other countries. Altera Corporation acknowledges the trademarks of other organizations for their respective products or services mentioned in this document, including the following: Verilog is a registered trademark of Cadence Design Systems, Incorporated. Java is a trademark of Sun Microsystems Inc. ModelSim is a trademark of Model Technologies. MATLAB is a registered trademark of the MathWorks. Microsoft is a registered trademark and Windows is a trademark of Microsoft Corporation. Altera products are protected under numerous U.S. and foreign patents and pending applications, maskwork rights, and copyrights. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera’s standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera Corporation. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Copyright 2001 Altera Corporation. All rights reserved. ii Altera Corporation About this User Guide User Guide This user guide provides comprehensive information about the Altera® FFT MegaCore® function. Table 1 shows the user guide revision history. Table 1. Revision History Revision How to Find Information Description 1.0 Jan 19th 2001 First release. 1.01 Jan 24th 2001 MegaWizard screen shots updated. 1.02 Mar 23rd 2001 JRE Runtime Environment information removed. ■ ■ ■ ■ Altera Corporation Date The Adobe Acrobat Find feature allows you to search the contents of a PDF file. Click on the binoculars icon in the top toolbar to open the Find dialog box. Bookmarks serve as an additional table of contents. Thumbnail icons, which provide miniature previews of each page, provide a link to the pages. Numerous links, shown in green text, allow you to jump to related information. iii About this User Guide FFT MegaCore Function User Guide How to Contact Altera For the most up-to-date information about Altera products, go to the Altera world-wide web site at http://www.altera.com. For additional information about Altera products, consult the sources shown in Table 2. Table 2. How to Contact Altera Information Type Access USA & Canada All Other Locations Altera Literature Services Electronic mail lit_req@altera.com (1) lit_req@altera.com (1) Non-technical customer service Telephone hotline (800) SOS-EPLD (408) 544-7000 (7:30 a.m. to 5:30 p.m. Pacific Time) Fax (408) 544-7606 (408) 544-7606 Telephone hotline (800) 800-EPLD (6:00 a.m. to 6:00 p.m. Pacific Time) (408) 544-7000 (1) (7:30 a.m. to 5:30 p.m. Pacific Time) Fax (408) 544-6401 (408) 544-6401 (1) Technical support General product information Electronic mail telecom@altera.com telecom@altera.com FTP site ftp.altera.com ftp.altera.com Telephone (408) 544-7104 (408) 544-7104 (1) World-wide web site http://www.altera.com http://www.altera.com Note: (1) iv You can also contact your local Altera sales office or sales representative. Altera Corporation FFT MegaCore Function User Guide Typographic Conventions About this User Guide The FFT MegaCore Function User Guide uses the typographic conventions shown in Table 3. Table 3. Conventions Visual Cue Meaning Bold Type with Initial Capital Letters Command names, dialog box titles, checkbox options, and dialog box options are shown in bold, initial capital letters. Example: Save As dialog box. bold type External timing parameters, directory names, project names, disk drive names, filenames, filename extensions, and software utility names are shown in bold type. Examples: fMAX, \maxplus2 directory, d: drive, chiptrip.gdf file. Bold italic type Book titles are shown in bold italic type with initial capital letters. Example: 1999 Device Data Book. Italic Type with Initial Capital Letters Document titles are shown in italic type with initial capital letters. Example: AN 75 (High-Speed Board Design). Italic type Internal timing parameters and variables are shown in italic type. Examples: tPIA, n + 1. Variable names are enclosed in angle brackets (< >) and shown in italic type. Example: <file name>, <project name>.pof file. Initial Capital Letters Keyboard keys and menu names are shown with initial capital letters. Examples: Delete key, the Options menu. “Subheading Title” References to sections within a document and titles of Quartus and MAX+PLUS II Help topics are shown in quotation marks. Example: “Configuring a FLEX 10K or FLEX 8000 Device with the BitBlaster™ Download Cable.” Courier type Signal and port names are shown in lowercase Courier type. Examples: data1, tdi, input. Active-low signals are denoted by suffix _n, e.g., reset_n. Anything that must be typed exactly as it appears is shown in Courier type. For example: c:\max2work\tutorial\chiptrip.gdf. Also, sections of an actual file, such as a Report File, references to parts of files (e.g., the AHDL keyword SUBDESIGN), as well as logic function names (e.g., TRI) are shown in Courier. 1., 2., 3., and a., b., c.,... Numbered steps are used in a list of items when the sequence of the items is important, such as the steps listed in a procedure. ■ Bullets are used in a list of items when the sequence of the items is not important. The checkmark indicates a procedure that consists of one step only. The hand points to information that requires special attention. The angled arrow indicates you should press the Enter key. The feet direct you to more information on a particular topic. Altera Corporation v Notes: Contents User Guide About this User Guide ............................................................................................................................... iii How to Find Information .............................................................................................................. iii How to Contact Altera .................................................................................................................. iv Typographic Conventions ............................................................................................................. v Specifications ................................................................................................................................................9 Features .............................................................................................................................................9 General Description .........................................................................................................................9 Functional Description ..................................................................................................................11 Transforms ..............................................................................................................................14 Reference Designs ..................................................................................................................14 Timing Diagrams ...................................................................................................................16 MegaWizard Plug-In Manager ....................................................................................................18 Performance ....................................................................................................................................18 Getting Started ............................................................................................................................................21 Downloading & Installing the Function ....................................................................................21 Obtaining MegaCore Functions ...........................................................................................22 Installing the MegaCore Files ...............................................................................................22 Generating a Custom FFT Function ............................................................................................22 AHDL Reference Designs .............................................................................................................26 Using the MATLAB Utilities ........................................................................................................26 FFTVECA Utility ....................................................................................................................27 FFTTBLA Utility .....................................................................................................................29 Using the Command Line Utilities ..............................................................................................29 FFTVECA Utility ....................................................................................................................29 FFTTBLA Utility .....................................................................................................................31 Compiling & Simulating ...............................................................................................................31 In the Quartus Software ........................................................................................................32 In the MAX+PLUS II Software .............................................................................................32 Performing Synthesis, Compilation & Post-Routing Simulation ............................................32 In the Quartus Software ........................................................................................................33 In the MAX+PLUS II Software .............................................................................................34 Configuring a Device .....................................................................................................................34 Altera Corporation vii Notes: Specifications 1 Features ■ ■ ■ ■ ■ ■ ■ ■ ■ General Description Uses radix 4 and mixed radix 4 and 2 implementations Block floating-point techniques—maintain the maximum dynamic range of the data during processing. Interfaces to on-chip or off-chip memory System clock frequency > 100 MHz Easy-to-use MegaWizard® Plug-In MATLAB and command line simulation utilities Two reference designs Optimized for the APEX™ 20K, ACEX™ 1K, and FLEX® 10KE device architectures Fast Fourier transform (FFT) and inverse FFT (IFFT) implementations The Altera® FFT MegaCore® function is a parameterizeable core for high performance applications that implements complex input and output transforms for FFT and IFFT. The core uses an in-place mixed radix 4 and 2 decimation in frequency architecture, and implements any transform length that is a power of 2. Partitioning between radix 4 and radix 2 passes is implemented automatically by the core’s control unit. When the desired FFT length is not a power of 4, the processor automatically switches between radix 4 and radix 2 processing to achieve the required transform length. The core can use a combination of on-chip (internal) or off-chip (external) memories, but it does not include memory for data, intermediate storage, twiddle ROM, or any interfaces required to load and unload data memory. When using off-chip memory, the core requires two banks of data RAM for storage of the input data, output data, and intermediate processing values. Two reference designs are provided as examples of how to implement both types of memory interfaces. The core takes advantage of the dual port memory on APEX 20K, ACEX 1K, and FLEX 10KE devices, when internal memory is selected. Other devices can be used (FLEX 10K, and FLEX 6000), but you must implement the core’s memory requirements externally. The core automatically generates all addresses for the data RAM and twiddle ROM accesses, and implements a block floating point system for maximum accuracy. Altera Corporation 9 Specifications User Guide Specifications FFT MegaCore Function User Guide The core reads in data in normal sequence. After processing, the final result is in digit-reversed format for a pure radix 4 FFT, or both digit and bit reversed format for a mixed radix 4 and radix 2 FFT. The reference designs include code to return data in normal order. You can specify the core’s block floating point exponent width, the transform length, and the precision—the data precision and the twiddle precision are set independently. 10 Altera Corporation FFT MegaCore Function User Guide Table 1 shows the core’s parameters. 1 Specifications Functional Description Specifications Table 1. Parameters Parameter Range Description datawidth 8 to 24 bits The precision of the input data and output data. It is also the precision of the intermediate values during processing of the FFT. twiddlewidth 8 to 24 bits The precision of the twiddle factors. addresswidth (1) The address width. floatwidth 3 to 8 To implement block floating point, the exponent is held in a floatwidth wide word. On each pass of a radix 4 FFT, the word length increases by 2 bits. floatwidth must be increased for an IFFT, to accomodate the division by points (in the IFFT the normalization is performed in the exponent, which avoids loss of numerical precision in the fixed point output). points 24 to 220 The transform length. interface ‘internal’ or ‘external’ When interface is set to ‘internal’ the core is set up to use internal memory for the data RAM banks and the twiddle ROM. When interface is set to ‘external’, the core is set up to use external memory for the data RAM banks and the twiddle ROM, and inserts additional pipelining stages on its interfaces, which can be placed in the I/O cells of the device, allowing higher device performance. (2), (3) transform FFT or IFFT Selects an FFT or an IFFT core. Notes: (1) (2) (3) Automatically selected by the MegaWizard Plug-In and is equal to log2(points). The core expects access delay to the twiddle ROM. When using internal twiddle ROM, you must add another delay stage to the input and the output of the twiddle ROM, which equalizes the overall access delay to the twiddle ROM. The data RAM and twiddle ROM are synchronous. You can make external asynchronous ROM appear synchronous by registering the address and the data as they go to and from the memory (in addition to any delays automatically added to the core by the interface parameter). For the data RAM, this is more difficult, as any write enable pulse generally requires a set-up and hold time for the data and address inputs to the RAM. However, there are several commercial synchronous RAMs available that can be used, e.g. Micron MT58L256L32D or Cypress CY7C1335. Altera Corporation 11 Specifications FFT MegaCore Function User Guide Table 2 shows the input signals. Table 2. Input Signals Signal Name Description sysclk The system clock. All memory accesses and processing are at the system clock rate. reset reset is an asynchronous, active high signal and must be asserted before the first FFT operation. go When high, go starts the FFT processing anew block of data. go must be kept high until done goes high, otherwise the current FFT operation is aborted. realdatain[datawidth..1] imagdatain[datawidth..1] These buses are for the real and imaginary components of the data and intermediate values stored in the memory bank. realtwid[twiddlewidth..1] imagtwid[twiddlewidth..1] These buses are for the real and imaginary components of the twiddle factors. Table 3 shows the output signals. Table 3. Output Signals (Part 1 of 2) Signal Name Description realdataout[datawidth..1] imagdataout[datawidth..1] These buses are the real and imaginary components of the butterfly results that are written to the data memory. readaddress[addresswidth..1] readaddress[] contains the read address for the data memory. writeaddress[addresswidth..1] writeaddress[] contains the write address for the data memory. twidaddress[addresswidth..1] twidaddress[] contains the read address for the twiddle memories. exponent[(floatwidth+1)..1] exponent[] gives the final scaling factor of the FFT data in twos complement form, compared to a floating point transform. For example, if the exponent is –6, you must multiply the core output by 26 for the values to be correct. Alternately, you can use exponent[] to control an output multiplexer of a FFT system design, to perform the multiplication. done When high, the core has completed processing the last FFT. You can now read out of the data memory. writeenable (1) writeenable enables the synchronous memory. You can only write data to the synchronous RAM when writeenable is low. writeenable should be connected to the write enable of the data RAM. 12 Altera Corporation FFT MegaCore Function User Guide Specifications 1 Table 3. Output Signals (Part 2 of 2) direction (2) Description You must derive the memory write enable from the direction signal such that the left bank is enabled when direction is high, and the write bank is enabled when it is low. The core does not stop at anytime during processing, so the direction signal is the only write enable control for the left and write memory banks, until done is asserted when you must stop writing to the memories. Notes: (1) (2) Only used when interface is internal. Only used when interface is external. Altera Corporation 13 Specifications Signal Name Specifications FFT MegaCore Function User Guide Transforms The core computes the forward transform as given in equation 1, and inverse transforms as given in equation 2. points – 1 F(k) = Σf(n)e –j2πnk/points (1) n=0 where k = 0, ..., points – 1 points – 1 f(n) = (1/points) ΣF(k)e j2πnk/points (2) k=0 where n = 0, ..., points – 1 Reference Designs The core is provided with two reference designs, which show you how the variations produced by the MegaWizard Plug-In are connected in a design. Reference design A shows you how to connect the core to internal dual-ported RAM and twiddle ROM; reference design B shows you how to connect to external data RAM and twiddle ROM. Both reference designs contain logic that implements bit reversed and digit reversed addressing. Reference design A (aukfft_fftchipa) shows you how to connect the example variation, example_ffta, which uses internal memory. Figure 1 shows reference design A. Most of the connection glue logic is implemented in subcomponents. The aukfft_twidrom subcomponent instantiates reduced ROMs, and logic to recover the full data set. The aukfft_ram_dp subcomponent implements the data RAM, and includes an interface for direct connection to the core’s user interface. The glue logic that is required to arbitrate between the user interface and the core is also implemented in this subcomponent. 14 Altera Corporation FFT MegaCore Function User Guide Specifications Figure 1. Reference Design A aukfft_twidrom aukfft_ram_dp writeenable fftwriteenable read twreal realtwid readaddress fftreadaddress write twimag imagtwid writeaddress twidaddress fftwriteaddress writeaddress realdataout fftrealdataout readaddress imagdataout fftimagdataout realdatain fftrealdatain imagdatain fftimagdatain writereal User Interface writeimag readreal readimag go exponent User Interface done Reference design B (aukfft_fftchipb) shows you how to connect the example variation, example_fftb, which uses external memory. Figure 2 shows reference design B. Most of the connection glue logic is implemented in subcomponents. aukfft_xlrbufferif, implements the control logic that decodes the RAM bank that the core is reading from and writing to. Also, the glue logic that is required to arbitrate between the user interface and the core is implemented in this subcomponent. All of the memories are in the top level and have been labeled as external, which allows the external design to be simulated. When you compile for use with external memory, the required input and output signals must be added to the design interface, and the memory instance removed from the design. If you want to use a mixture of internal and external memory, e.g., external data RAM and internal twiddle ROM, use reference design B as a basis for your design and take the interface signals for the required external memory to the top-level interface. If reference design B is compiled without any modifications, all the memories are implemented as internal memories, but this is less efficient than using reference design A. Altera Corporation 15 Specifications address 1 example_ffta Specifications FFT MegaCore Function User Guide Figure 2. Reference Design B User Interface aukfft_fftchipb Left External RAM Data Bank aukfft_xlrbufferif Right External RAM Data Bank example_fftb aukfft_xtwidromif External Twiddle ROM Timing Diagrams Figure 3 shows the FFT core signals. The resolution of the diagram is such that the inclusion of sysclk is not practical. This is also true of the address and data buses where activity is shown rather than explicit edges. It is assumed that the incoming data has been written to the left memory bank. exponent varies as data is being processed, because the core is trying to maintain maximum dynamic range using block floating-point techniques. 16 Altera Corporation FFT MegaCore Function User Guide Specifications Figure 3. FFT Core Signals 1 reset Specifications go done writeenable readaddress writeaddress realdatain, imagdatain realdataout, imagdataout realtwid, imagtwid twidaddress exponent The twiddle ROM is read from continuously while processing and the core is designed to work with synchronous memories. The read address/control is registered as it enters the synchronous memory and the data is registered on its way out, which results in a two clock cycle delay (see Figure 4). Figure 4. Read Data Delay (Internal Memory) sysclk readaddress[10:0] addr 0 addr 1 addr 2 addr 3 addr 4 addr 5 addr 6 addr 7 realdatain[7:0] data 0 data 1 data 2 data 3 data 4 data 5 imagdatain[7:0] data 0 data 1 data 2 data 3 data 4 data 5 When using external memory, the read address/control is registered on its way out and the returning data is registered on its way in, this is performed by the interface logic. This is in addition to the synchronous external memory (see Figure 5). Figure 5. Read Data Delay (External Memory) sysclk readaddress[10:0] addr 4 addr 5 addr 6 addr 7 realdatain[7:0] data 0 data 1 data 2 data 3 imagdatain[7:0] data 0 data 1 data 2 data 3 Altera Corporation addr 0 addr 1 addr 2 addr 3 17 Specifications MegaWizard Plug-In Manager FFT MegaCore Function User Guide The FFT MegaCore function has an interactive wizard-driven interface that allows you to create custom FFT functions easily. You can launch the MegaWizard Plug-In Manager from within the Quartus or MAX+PLUS II software, or you can run it from the command line. The wizard allows you to input your choice of parameters, verifies that all choices are valid, and generates a custom MegaCore function in VHDL, AHDL, or Verilog HDL, which you can integrate into your system design. When you finish going through the wizard it generates: ■ ■ ■ Performance One of the following files (depending on your selection), which are used to instantiate an instance of the function in your design: – An AHDL Text Design File (.tdf) – A VHDL Design File (.vhd) – Verilog Design File (.v) Symbol Files (.bsf for the Quartus software, .sym for the MAX+PLUS II software) used to instantiate the function into a schematic design Two memory initialization files (.hex), which contain the twiddle ROM values The datawidth and twiddlewidth parameters have the biggest impact on size and performance—the logic and memory resources required by the core are essentially linear to each precision. All other parameters have little effect on the required logic resources, however points has a linear effect on the required memory resources. The number of LEs (approximately) used by the core is given by: 10 × datawidth × twiddlewidth The amount of RAM (in bits) required is given by: 2 × datawidth × points The amount of twiddle ROM (in bits) required is given by: twiddlewidth × points/2 The performance of the core is dependent on: ■ ■ the clock rate of the system the number of clocks cycles required to calculate the FFT The number of clock cycles is given by: ‘number of passes’ × ‘number of clock cycles per pass’ 18 Altera Corporation FFT MegaCore Function User Guide Specifications where: 1 ‘number of clock cycles per pass’ = 14 + points + ceiling(log2twiddlewidth) For example, points = 1024, twiddlewidth = 16, ‘number of passes’ = 5, ‘clock cycles per pass’ = 1042, and ‘number of clock cycles’ = 5210. With a 100 MHz system clock the core needs 52 µs to calculate the FFT. Altera Corporation 19 Specifications ‘number of passes’ = ceiling(log2points/2) Specifications FFT MegaCore Function User Guide Tables 4 and 5 shows examples of the performance and size of the core, for the reference design A, with different devices. Table 4. Performance and Size for APEX 20KE Devices Note (1) FFT or IFFT Device float width FFT EP20K60E-1 5 data twiddle width width 8 8 points Size (2) 64 1,232 Memory (3) 2 fMAX (MHz) Transform Time (µs) 126 2 IFFT EP20K60E-1 5 8 8 64 1,257 2 149 2 FFT EP20K60E-1 5 8 8 512 1,325 5 150 17 IFFT EP20K60E-1 5 8 8 512 1,330 5 139 19 FFT EP20K200E-1 5 8 8 4,096 1,390 40 112 220 IFFT EP20K200E-1 5 8 8 4,096 1,394 40 116 212 FFT EP20K1500E-1 5 8 8 16,384 1,518 160 69 1663 IFFT EP20K1500E-1 5 8 8 16,384 1,523 160 73 1572 FFT EP20K100E-1 5 16 16 64 3,022 4 98 1 IFFT EP20K100E-1 5 16 16 64 3,027 4 98 1 FFT EP20K100E-1 5 16 16 512 3,116 10 96 27 IFFT EP20K100E-1 5 16 16 512 3,121 10 101 26 FFT EP20K100E-1 5 16 16 1,024 3,126 20 100 52 IFFT EP20K100E-1 5 16 16 1,024 3,131 20 96 54 FFT EP20K400E-1 5 16 16 4,096 3,198 80 94 262 IFFT EP20K400E-1 5 16 16 4,096 3,202 80 86 287 FFT EP20K1500E-1 5 16 16 8,192 3,271 160 64 897 IFFT EP20K1500E-1 5 16 16 8,192 3,276 160 58 990 4 FFT EP20K160E-1 5 24 24 64 5,339 6 70 IFFT EP20K160E-1 5 24 24 64 5,344 6 75 3 FFT EP20K160E-1 5 24 24 512 5,433 15 75 35 IFFT EP20K160E-1 5 24 24 512 5,438 15 70 37 FFT EP20K600E-1 5 24 24 4,096 5,531 120 82 300 IFFT EP20K600E-1 5 24 24 4,096 5,535 120 76 324 Notes: (1) (2) (3) 20 The Quartus software (version 2000.09) compiler settings were: auto device select, any package, any pin count, fastest speed grade, full compilation, smart compilation, advanced power fit fitter, optimize I/O timing, and optimize internal timing. LEs: logic elements ESBs: embedded system blocks Altera Corporation FFT MegaCore Function User Guide Specifications 1 Table 5. Performance and Size for FLEX 10KE Devices Note (1) Device float width FFT EPF10K30E-1 5 data twiddle width width 8 8 points Size (2) 64 1,165 fMAX (MHz) Transform Time 2 135 2 Memory (3) IFFT EPF10K30E-1 5 8 8 64 1,170 2 135 2 FFT EPF10K30E-1 5 8 8 512 1,231 3 120 22 IFFT EPF10K30E-1 5 8 8 512 1,237 3 129 20 FFT EPF10K200S-1 5 8 8 4,096 1,299 20 IFFT EPF10K200S-1 5 8 8 4,096 1,302 20 74 333 FFT EPF10K100E-1 5 16 16 64 2,984 4 94 1 IFFT EPF10K100E-1 5 16 16 64 2,989 4 87 1 FFT EPF10K100E-1 5 16 16 512 3,050 6 95 27 IFFT EPF10K100E-1 5 16 16 512 3,056 6 94 28 FFT EPF10K100E-1 5 16 16 1,024 3,050 10 90 57 IFFT EPF10K100E-1 5 16 16 1,024 3,061 10 89 58 FFT EPF10K200S-1 5 16 16 2,048 3,066 20 61 372 IFFT EPF10K200S-1 5 16 16 2,048 3,089 20 64 355 FFT EPF10K130E-1 5 24 24 64 5,757 6 62 4 IFFT EPF10K130E-1 5 24 24 64 5,762 6 64 4 FFT EPF10K130E-1 5 24 24 512 5,823 9 58 45 IFFT EPF10K130E-1 5 24 24 512 5,829 9 62 42 FFT EPF10K130E-1 5 24 24 1,024 5,833 15 58 89 IFFT EPF10K130E-1 5 24 24 1,024 5,838 15 58 89 Notes: (1) (2) (3) The MAX+PLUS II software (version 9.6) settings were: Filter Settings (Processing menu) use Quartus fitter and Advanced Try Harder; Global Project Timing Requirements (Assign menu) 150 MHz fMAX; Global Project Logic Synthesis (Assign menu) fast and optimize speed 10. LCs: logic cells EABs: embedded array blocks Altera Corporation 21 Specifications FFT or IFFT Notes: Getting Started User Guide 1. Downloading and installing the FFT MegaCore function. 2. Generating a custom MegaCore function. 3. Implementing your system using AHDL, VHDL, or Verilog HDL. 4. Compiling your design. 5. Simulating your design to confirm the operation of your system. 6. Licensing the FFT MegaCore function and configuring the devices. The instructions assume that: ■ ■ ■ ■ Downloading & Installing the Function Altera Corporation You are using a PC. You are familiar with either the Quartus™ or MAX+PLUS® II software. Quartus version 2000.09 (or higher) is installed in the default location (c:\quartus), or MAX+PLUS II version 10 (or higher) is installed in the default location (c:\maxplus2). You are using the OpenCore feature to test-drive the FFT MegaCore function or you have licensed the function. Before you can start using Altera MegaCore functions, you must obtain the MegaCore files and install them on your PC. The following instructions describe this process. 21 2 Getting Started This section describes how to obtain the FFT MegaCore® function, explains how to install it on your PC, and walks you through the process of implementing the function in a design. You can test-drive MegaCore functions using the Altera OpenCore™ feature to simulate the functions within your custom logic. When you are ready to generate programming or configuration files, you should license the function through the Altera web site or through your local Altera sales representative. This walkthrough involves the following steps: Getting Started FFT MegaCore Function User Guide Obtaining MegaCore Functions If you have Internet access, you can download the FFT MegaCore function from the Altera web site at http://www.altera.com. Follow the instructions below to obtain the FFT MegaCore function via the Internet. If you do not have Internet access, you can obtain the FFT MegaCore function from your local Altera representative. 1. Point your web browser at http://www.altera.com/IPmegastore. 2. In the IP MegaSearch keyword field type FFT. 3. Click the appropriate link for your desired MegaCore function. 4. Click the link for the download icon. 5. Follow the online instructions to download the function and save it to your hard disk. Installing the MegaCore Files For Windows, follow the instructions below: Generating a Custom FFT Function 22 1. Click Run (Start menu). 2. Type <path name>\<file name>, where <path name> is the location of the downloaded MegaCore function and <file name> is the filename of the function. Click OK. 3. The MegaCore Installer dialog box appears. Follow the online instructions to finish installation. 4. After you have finished installing the MegaCore files, you must specify the MegaCore function’s library folder (\FFT v1.0.2\lib) as a user library in the Quartus and MAX+PLUS II software. Search for ‘User Libraries’ in Quartus or MAX+PLUS II Help for instructions on how to add a library. This section describes the design flow using the Altera FFT MegaCore function and the Quartus or MAX+PLUS II development system. Altera provides a MegaWizard® Plug-In Manager with the FFT MegaCore function. The MegaWizard Plug-In Manager, which you can use within the Quartus or MAX+PLUS II software or as a stand-alone application, lets you create or modify design files to meet the needs of your application. You can then instantiate the custom megafunction in your design file. Altera Corporation FFT MegaCore Function User Guide GettingGetting Started You can use the Altera OpenCore feature to compile and simulate the MegaCore functions in the Quartus or MAX+PLUS II software, allowing you to evaluate the functions before deciding to license them. If you are using the MAX+PLUS II software, use version 9.3 or higher when designing with this MegaCore function. The function relies on library files that exist only in these versions of software. To create a custom version of the FFT MegaCore function, follow these steps: Start the MegaWizard Plug-In Manager by choosing the MegaWizard Plug-In Manager command (Tools menu in the Quartus software, File menu in any MAX+PLUS II application), or by starting the stand-alone version of the MegaWizard Plug-In Manager by typing the command megawiz at a command line. The MegaWizard Plug-In Manager dialog box is displayed. Altera Corporation Refer to the Quartus or MAX+PLUS II Help for more information on how to use the MegaWizard Plug-In Manager. 2. Specify that you want to create a new custom megafunction and click Next. 3. Select FFT v1.0.2 in the DSP folder (see Figure 1). 23 Getting Started 1. 2 Getting Started FFT MegaCore Function User Guide Figure 1. Selecting the Megafunction 24 4. Choose the language for the output file(s)—either AHDL, VHDL, or Verilog HDL—and specify a name for the output file, <custom name>. Click Next. 5. Select the parameter values that you require. See Table 1 on page 11 for a description of the parameters. The MegaWizard Plug-In only allows you to select legal combinations of parameters, and warns you of any invalid configurations. Select either the internal or the external memory interface radio button (see Figure 2). Click Next. Altera Corporation FFT MegaCore Function User Guide GettingGetting Started Figure 2. Selecting the Parameters 2 Getting Started 6. The final screen lists the main design files that the wizard creates (see Figure 3). The wizard creates two additional files <custom name>_inst and <custom name>_bb. Click Finish. Figure 3. Summary of Files Generated When you have created your custom megafunction, you should connect it to memory and provide an interface for reading and writing data. The reference designs show you how to achieve this, for memories that are either internal or external. Altera Corporation 25 Getting Started FFT MegaCore Function User Guide AHDL Reference Designs The FFT MegaCore function is supplied with two AHDL reference designs—A (aukfft_fftchipa.tdf), which shows you how to connect to internal dual-ported RAM and twiddle ROM; and B (aukfft_fftchipb.tdf), which shows you how to connect to external data RAM and twiddle ROM. You can use the reference designs to simulate the functionality of the core in your system. The reference designs are: ■ ■ ■ Supplied as source code Synthesizable Intended to be used as a basis for your design Both reference designs determine the final destination data bank at compile time, and attach the reference design’s read interface automatically. To use the reference design with your MegaWizard generated files, perform the following steps: Using the MATLAB Utilities 1. Open the relevant reference design in a text editor. 2. Change the name of any components with the prefix example_ffta or example_fftb to <custom name>. Change example_ffta_twidsin.hex or example_fftb_twidsin.hex to <custom name>_twidsin.hex. Change example_ffta_twidcos.hex or example_fftb_twidcos.hex to <custom name>_twidcos.hex. 3. Change the reference design’s paramenters to match your wizard generated parameters. 4. Save the reference design in your project folder. Altera provides two MATLAB utilities to test the FFT MegaCore function. These utilities (FFTVECA.m and FFTTBLA.m) work with reference design A. For more information on MATLAB, refer to the Math Works website at http://www.mathworks.com. Before you use the MATLAB utilities, you must generate twiddle ROM data for the reference design. 26 Altera Corporation GettingGetting Started FFT MegaCore Function User Guide Altera recommends you create a working folder <project> into which you copy the reference design A from the fft\reference_design folder (aukfft_fftchipa.tdf, example_ffta.bsf, example_ffta.cmp, example_ffta.inc, example_ffta.tdf, example_ffta_twidsin.hex, example_ffta_twidcos.hex, aukfft_twidrom.tdf, and aukfft_ram_dp.tdf). You are now ready to use the MATLAB utilities. 2 FFTVECA Utility 1. Open the MATLAB software. At the command prompt change the folder to \fft\matlab. 2. Create an input vector <vec> in MATLAB, with completely random data, by typing the following command: >> maxvalue = 2^(datawidth) – 1; >> rr = rand(1,points); % create a random vector >> rr = rr - .5;% make positive and negative % vector components >> ss = rand(1,points); >> ss = ss - .5; >> vec = floor (rr*maxvalue + i*ss*maxvalue); % vector has real and imaginary components, % scale to maximum value. where points and datawidth are the same values as in reference design A (default values: points = 512, datawidth = 8, floatwidth = 5). 3. Call the utility, which creates a file aukfft_fftchipa.vec in the \fft\matlab folder, by typing the parameters and values as shown: FFTVECA (<vec>, points, datawidth, floatwidth) e.g. FFTVECA (vec, 512, 8, 5) Altera Corporation 27 Getting Started FFTVECA.m creates a vector simulation file (.vec) from a MATLAB input vector. To create the .vec file perform the following steps: Getting Started FFT MegaCore Function User Guide In the Quartus Software 1. Set-up a new project with the copy of reference design A as the design. 2. Click Start Compilation (Processing Menu) to compile your design. 3. Click Simulation Mode (Processing menu). Choose Simulator Settings (Processing menu) and select the Time/Vectors tab. In the Source of Vector Stimuli box, select aukfft_fftchipa.vec. Click OK. 4. Click Run Simulation (Processing menu) to begin simulation. 5. Close the Report window. Click Open (File menu). In the Files of Type box select waveform vector files, and open aukfft_fftchipa-sim.vwf (this is in the <project>\db folder). Change all signals to hexadecimal and save this file as a vector table output file, aukfft_fftchipa.tbl, in the \fft\matlab folder. In the MAX+PLUS II Software 28 1. Click Open (File menu) and select reference design A, <project>\aukfft_fftchipa.tdf. 2. Click Project (File menu) and select Set Project to Current File. 3. Open the MAX+PLUS II compiler. 4. Click Start to compile your design. 5. Open the MAX+PLUS II Simulator. 6. In the MAX+PLUS II software select Inputs/Outputs (File menu) and select aukfft_fftchipa.vec. 7. Run the MAX+PLUS II Simulator, by clicking Start to begin the simulation. 8. Run the MAX+PLUS II Simulator, by clicking Start to begin the simulation. Select Create Table File (File menu). Save this file as aukfft_fftchipa.tbl, in the \fft\matlab folder. Altera Corporation GettingGetting Started FFT MegaCore Function User Guide FFTTBLA Utility The FFTTBLA utility is used to extract the result of the FFT into a MATLAB vector. Call the FFTTBLA.m utility as shown: Y = FFTTBLA (points, datawidth); You can now use MATLAB to analyze the results. For example, type in the following command: 2 Y(90) If you do not have MATLAB, Altera provide command line utilities (for Windows only) (fftveca.exe and fftbla.exe) that work with reference design A. The command line utilities have the same functionality as the MATLAB utilities of the same name, and you can use them to generate waveforms for test cases. Reference design A’s default parameters are: points = 512, datawidth = 8, floatwidth = 5, and twiddlewidth = 8, which you can change. Altera recommends you create a working folder <project> into which copy the reference design A from the fft\reference_design folder. You are now ready to use the command line utilities. FFTVECA Utility FFTVECA.exe creates a vector simulation file (.vec). To create the .vec file perform the following steps: 1. Open a command prompt window. Change the folder to fft\bin. 2. Call the utility, which creates a file aukfft_fftchipa.vec in the \fft\bin folder, by typing the parameters and values as shown: fftveca points datawidth floatwidth waveform amplitude frequency phase The first three parameters are the same as the core parameters and ■ ■ ■ ■ Altera Corporation waveform = cosine, cisoid, rand, or impulse amplitude is given by 0 < amplitude < 2 (datawidth – 1), as a float frequency is given by – points/2 ≤ frequency ≤ points/2, as a float phase can be – 0.5 ≤ phase ≤ 0.5, as a float 29 Getting Started Using the Command Line Utilities Getting Started FFT MegaCore Function User Guide Cosine is generated from round (amplitude × cos(2π(n × frequency/points + phase))), where n = 0,..., points – 1. Cisoid is generated from round (amplitude × cos(2π(n × frequency/points + phase)) + √(–1) × sin(2π(n × frequency/points + phase)))), where n = 0,..., points – 1. Impulse is generated from amplitude × (cos(2π × phase) + √(–1) × sin(2π × phase)) in array location zero. All other locations are set to zero. Rand is generated from amplitude × uniform(n), where n = 0,..., points – 1, and uniform(n) is a uniform random number in the range {–1,..., +1} In the Quartus Software 30 1. Set-up a new project with the copy of reference design A as the design. 2. Click Start Compilation (Processing Menu) to compile your design. 3. Click Simulation Mode (Processing menu). Choose Simulator Settings (Processing menu) and select the Time/Vectors tab. In the Source of Vector Stimuli box, select aukfft_fftchipa.vec. Click OK. 4. Click Run Simulation (Processing menu) to begin simulation. 5. Close the Report window. Click Open (File menu). In the Files of Type box select waveform vector files, and open aukfft_fftchipa-sim.vwf (this is in the <project>\db folder). Change all signals to hexadecimal and save this file as a vector table output file, aukfft_fftchipa.tbl, in the \fft\bin folder. Altera Corporation FFT MegaCore Function User Guide GettingGetting Started In the MAX+PLUS II Software Click Open (File menu) and select reference design A, <project>\aukfft_fftchipa.tdf. 2. Click Project (File menu) and select Set Project to Current File. 3. Open the MAX+PLUS II compiler. 4. Click Start to compile your design. 5. Open the MAX+PLUS II Simulator. 6. In the MAX+PLUS II software select Inputs/Outputs (File menu) and select aukfft_fftchipa.vec. 7. Run the MAX+PLUS II Simulator, by clicking Start to begin the simulation. 8. Run the MAX+PLUS II Simulator, by clicking Start to begin the simulation. Select Create Table File (File menu). Save this file as aukfft_fftchipa.tbl, in the \fft\bin folder. 2 Getting Started 1. FFTTBLA Utility The FFTTBLA utility is used to extract the FFT results from the file aukfft_fftchipa.tbl into the file aukfft_fftout.txt. Call the FFTTBLA.exe utility as shown: FFTTBLA (points, datawidth); The file aukfft_fftout.txt contains the real and imaginary outputs of the FFT in the following format: real[0] imag[0] real[1] imag[1] .. real[points – 1] imag[points – 1] The exponent is not extracted. This file can be read by the application of your choice for further analysis or visualization, e.g., Microsoft Excel to compute and chart the magnitude and phase. Compiling & Simulating The following steps explain how to compile and simulate your design in the Quartus and the MAX+PLUS II software. Altera Corporation 31 Getting Started FFT MegaCore Function User Guide In the Quartus Software 1. Click Start Compilation (Processing Menu) to compile your design. 2. Click Simulation Mode (Processing menu). Choose Simulator Settings (Processing menu) and select the Time/Vectors tab. In the Source of Vector Stimuli box, select <custom name>.vec, where <custom name> is the name you specified in the MegaWizard Plug-In. 3. Click Run Simulation (Processing menu) to begin simulation. In the MAX+PLUS II Software 1. Click Open (File menu) and select the MegaWizard generated file <custom name>.tdf, .v or, .vhd, where <custom name> is the name you specified in the MegaWizard Plug-In. 2. Click Project (File menu) and select Set Project to Current File. 3. Open the MAX+PLUS II compiler. 4. Click Start to compile your design. 5. Open the MAX+PLUS II Simulator. 6. In the MAX+PLUS II software select Inputs/Outputs (File menu) and select <custom name>.vec. 7. Run the MAX+PLUS II Simulator, by clicking Start to begin the simulation. 8. Click the Open SCF button to view the design’s waveform. After you have verified that your design is functionally correct, you are ready to perform system verification. Performing Synthesis, Compilation & Post-Routing Simulation 32 The Quartus and MAX+PLUS II software work seamlessly with tools from all EDA vendors, including Cadence, Exemplar Logic, Mentor Graphics, Synopsys, Synplicity, and Viewlogic. After you have licensed the MegaCore function, you can generate EDIF, VHDL, Verilog HDL, and Standard Delay Output Files from the Quartus or MAX+PLUS II software and use them with your existing EDA tools to perform functional modeling and post-route simulation of your design. Altera Corporation GettingGetting Started FFT MegaCore Function User Guide The following sections describe the design flow to compile and simulate your custom MegaCore design with a third-party EDA tool. To synthesize your design in a third-party EDA tool and perform post-route simulation, perform the following steps: 1. Create your custom design instantiating a FFT MegaCore function. 2. Synthesize the design using your third-party EDA tool. Your EDA tool should treat the MegaCore instantiation as a black box by either setting attributes or ignoring the instantiation. 3. After compilation, generate a hierarchical netlist file in your thirdparty EDA tool. 4. Open your netlist file in the Quartus or MAX+PLUS II software. In the Quartus Software Altera Corporation 1. Select Compile mode (Processing Menu). 2. Specify the compiler settings in the Compiler Settings dialog box (Processing menu) or use the Compiler Settings wizard. 3. Specify the user libraries for the project and the order in which the compiler searches the libraries. 4. Specify the input settings for the project. Choose EDA Tool Settings (Project menu). Select Custom EDIF in the Design entry/synthesis tool list. Click Settings. In the EDA Tool Input Settings dialog box, make sure that the relevant tool name or option is selected in the Design Entry/Synthesis Tool list. 5. Depending on the type of output file you want, specify Verilog HDL output settings or VHDL output settings in the General Settings dialog box (Project Menu). Use the 1993 VHDL language option. 6. Compile your design. The Quartus compiler synthesizes and performs place-and-route on your design, and generates output and programming files. 7. Import your Quartus-generated output files (.edo, .vho, .vo, or .sdo) into your third-party EDA tool for post-route, device-level, and system-level simulation. 33 2 Getting Started For more information on setting compiler options in your third-party EDA tool, refer to the MAX+PLUS II ACCESS Interfaces Guidelines. Getting Started FFT MegaCore Function User Guide In the MAX+PLUS II Software Configuring a Device 34 1. Set your EDIF file as the current project. 2. Choose EDIF Netlist Reader Settings (Interfaces menu). 3. In the EDIF Netlist Reader Settings dialog box, select the vendor for your EDIF netlist file in the Vendor drop-down list box and click OK. 4. Make logic option and/or place-and-route assignments for your custom logic using the commands in the Assign menu. 5. In the MAX+PLUS II compiler, make sure Functional SNF Extractor (Processing menu) is turned off. 6. Turn on the Verilog Netlist Writer or VHDL Netlist Writer command (Interfaces menu), depending on the type of output file you want to use in your third-party simulator. Use the 1993 VHDL language option. 7. Compile your design. The MAX+PLUS II compiler synthesizes and performs place-and-route on your design, and generates output and programming files. 8. Import your MAX+PLUS II-generated output files (.edo, .vho, .vo, or .sdo) into your third-party EDA tool for post-route, device-level, and system-level simulation. After you have compiled and analyzed your design, you are ready to configure your targeted Altera device. If you are evaluating the MegaCore function with the OpenCore feature, you must license the function before you can generate configuration files. Altera Corporation