FFT MegaCore Function

Similar documents
Table 1 shows the issues that affect the FIR Compiler, v6.1. Table 1. FIR Compiler, v6.1 Issues.

24K FFT for 3GPP LTE RACH Detection

Table 1 shows the issues that affect the FIR Compiler v7.1.

DDR & DDR2 SDRAM Controller Compiler

DSP Builder. DSP Builder v6.1 Issues. Error When Directory Pathname is a Network UNC Path

DDR & DDR2 SDRAM Controller Compiler

RapidIO Physical Layer MegaCore Function

DSP Development Kit, Stratix II Edition

DDR & DDR2 SDRAM Controller Compiler

POS-PHY Level 4 MegaCore Function

RapidIO MegaCore Function

Video and Image Processing Suite

UTOPIA Level 2 Slave MegaCore Function

RLDRAM II Controller MegaCore Function

SONET/SDH Compiler. Introduction. SONET/SDH Compiler v2.3.0 Issues

RapidIO MegaCore Function

FFT MegaCore Function User Guide

FFT/IFFT Block Floating Point Scaling

Simulating the PCI MegaCore Function Behavioral Models

RapidIO MegaCore Function

Simulating the PCI MegaCore Function Behavioral Models

Cyclone II FPGA Family

PCI Express Compiler. System Requirements. New Features & Enhancements

DDR & DDR2 SDRAM Controller

DDR & DDR2 SDRAM Controller

Simulating the ASMI Block in Your Design

Enhanced Configuration Devices

FPGAs Provide Reconfigurable DSP Solutions

Design Guidelines for Using DSP Blocks

Introduction. Design Hierarchy. FPGA Compiler II BLIS & the Quartus II LogicLock Design Flow

DSP Builder Release Notes

Simulating the Reed-Solomon Model

Nios II Embedded Design Suite 7.1 Release Notes

Using the Serial FlashLoader With the Quartus II Software

Design Guidelines for Using DSP Blocks

Using MAX II & MAX 3000A Devices as a Microcontroller I/O Expander

AN 464: DFT/IDFT Reference Design

Excalibur Solutions DPRAM Reference Design

Nios II Embedded Design Suite 6.1 Release Notes

FFT MegaCore Function User Guide

Matrices in MAX II & MAX 3000A Devices

Using MAX 3000A Devices as a Microcontroller I/O Expander

CORDIC Reference Design. Introduction. Background

Simulating Visual IP Models with the NC-Verilog, Verilog-XL, VCS, or ModelSim (UNIX) Simulators

Toolflow for ARM-Based Embedded Processor PLDs

Error Correction Code (ALTECC_ENCODER and ALTECC_DECODER) Megafunctions User Guide

Stratix FPGA Family. Table 1 shows these issues and which Stratix devices each issue affects. Table 1. Stratix Family Issues (Part 1 of 2)

DDR and DDR2 SDRAM Controller Compiler User Guide

AIRbus Interface. Features Fixed width (8-, 16-, or 32-bit) data transfers (dependent on the width. Functional Description. General Arrangement

Enhanced Configuration Devices

White Paper Configuring the MicroBlaster Passive Serial Software Driver

White Paper. Floating-Point FFT Processor (IEEE 754 Single Precision) Radix 2 Core. Introduction. Parameters & Ports

FPGA Design Security Solution Using MAX II Devices

ZBT SRAM Controller Reference Design

Arria II GX FPGA Development Board

E3 Mapper MegaCore Function (E3MAP)

Implementing LED Drivers in MAX Devices

POS-PHY Level 4 POS-PHY Level 3 Bridge Reference Design

Using ModelSim to Simulate Logic Circuits in VHDL Designs. 1 Introduction. For Quartus II 13.0

FFT MegaCore Function User Guide

100G Interlaken MegaCore Function User Guide

Implementing LED Drivers in MAX and MAX II Devices. Introduction. Commercial LED Driver Chips

December 2002, ver. 1.3 Application Note 191. Six individual interrupts Six-bit priority scheme Five-bit priority scheme plus one individual interrupt

White Paper AHB to Avalon & Avalon to AHB Bridges

Logic Optimization Techniques for Multiplexers

For Quartus II Software. This Quick Start Guide will show you how to set up a Quartus

PCI Express Multi-Channel DMA Interface

AN 547: Putting the MAX II CPLD in Hibernation Mode to Achieve Zero Standby Current

Active Serial Memory Interface

Making Qsys Components. 1 Introduction. For Quartus II 13.0

Using VCS with the Quartus II Software

Benefits of Embedded RAM in FLEX 10K Devices

MAX 10 User Flash Memory User Guide

Floating Point Inverse (ALTFP_INV) Megafunction User Guide

Simulating Nios II Embedded Processor Designs

Stratix II vs. Virtex-4 Performance Comparison

Estimating Nios Resource Usage & Performance

Using Verplex Conformal LEC for Formal Verification of Design Functionality

Legacy SDRAM Controller with Avalon Interface

Nios DMA. General Description. Functional Description

Video Input Daughter Card Reference Manual

EFEC20 IP Core. Features

T3 Framer MegaCore Function (T3FRM)

Using the Nios Development Board Configuration Controller Reference Designs

Errata Sheet for Cyclone IV Devices

AN423: Configuring the MicroBlaster Passive Serial Software Driver

Introduction. Synchronous vs. Asynchronous Memory. Converting Memory from Asynchronous to Synchronous for Stratix & Stratix GX Designs

Nios Embedded Processor UART Peripheral

Low Latency 40G Ethernet Example Design User Guide

10. Introduction to UniPHY IP

ByteBlaster II Parallel Port Download Cable

Nios Soft Core Embedded Processor

Stratix II FPGA Family

AN 549: Managing Designs with Multiple FPGAs

Nios Soft Core. Nios Timer Peripheral. Altera Corporation 101 Innovation Drive San Jose, CA (408)

Design Verification Using the SignalTap II Embedded

Introduction to Simulation of VHDL Designs Using ModelSim Graphical Waveform Editor. 1 Introduction. For Quartus Prime 16.1

Simple Excalibur System

Avalon Streaming Interface Specification

Using Library Modules in VHDL Designs

Transcription:

FFT MegaCore Function March 2007, MegaCore Version 6.1 Errata Sheet This document addresses known errata and documentation issues for the FFT MegaCore function version 6.1. Errata are functional defects or errors, which may cause the FFT MegaCore function to deviate from published specifications. Documentation issues include errors, unclear descriptions, or omissions from current published specifications or product documents. Table 1 shows the issues that affect the FFT MegaCore function v6.1. Table 1. FFT MegaCore function v6.1 Issues Issue Page Variable Streaming FFT Outputs Invalid Data 1 Incorrect Inverse Functionality for Variable Streaming FFT 2 Simulation Errors Synopsys VCS 6 Simulation Errors Incorrect Results 6 Simulation Errors MATLAB Model Mismatch 7 Gate-Level Simulations 8 f For the most up-to-date errata for this release, refer the errata sheet on the Altera website: www.altera.com/literature/es/es_fft_61.pdf FFT MegaCore Function v6.1 Issues This section describes the FFT MegaCore function v6.1 issues. Variable Streaming FFT Outputs Invalid Data The variable streaming architecture of the FFT may produce invalid data when the clock enable is taken high, after it is taken low without taking valid and ready low simultaneously. This issue affects the variable streaming architecture FFT. Altera Corporation 1 ES-FFT001-1.2

The design compiles, but can give wrong results. When the clock enable is taken low, the input signals ready and valid must also be taken low. This situation can be achieved by ANDing these input signals with the global clock enable. Alternatively, you can just take ready and valid low, and tie the global clock enable high. This combination also disables the MegaCore function, and can lead to an improved f MAX. Solution status This issue will be fixed in the next release of the FFT MegaCore function. Incorrect Inverse Functionality for Variable Streaming FFT The variable streaming FFT architecture allows you to change the functionality from FFT or inverse FFT, by changing the value of the inverse signal (0 for FFT; 1 for IFFT). The inverse signal should have the same timing characteristics as sink_sop. When sink_sop is asserted and sink_valid and sink_ready are asserted, the value of the inverse port is sampled by the FFT. When inverse is toggled while fftpts remains constant, you will see incorrect output results. If inverse is kept constant, correct inverse functionality is observed. This issue affects all configurations. The design compiles but gives incorrect results. For applications that require dynamic inverse functionality (changing from FFT to IFFT functionality between blocks), you must provide a wrapper to the FFT that implements the inverse functionality. You must change the size of the following signals to suit your configuration. The size of the signals must be the same as the equivalent signals in the toplevel design file, <project name>.vhd. fftpts : in std_logic_vector (10 downto 0); 2 Altera Corporation

sink_real : in std_logic_vector (15 downto 0); sink_imag : in std_logic_vector (15 downto 0); source_real : out std_logic_vector (28 downto 0); source_imag : out std_logic_vector (28 downto 0) library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity inverse_workaround is port ( clk : in std_logic; reset_n : in std_logic; fftpts : in std_logic_vector (10 downto 0); inverse : in std_logic; sink_valid : in std_logic; sink_sop : in std_logic; sink_eop : in std_logic; sink_real : in std_logic_vector (15 downto 0); sink_imag : in std_logic_vector (15 downto 0); sink_error : in std_logic_vector (1 downto 0); source_ready : in std_logic; sink_ready : out std_logic; source_error : out std_logic_vector (1 downto 0); source_sop : out std_logic; source_eop : out std_logic; source_valid : out std_logic; source_real : out std_logic_vector (28 downto 0); source_imag : out std_logic_vector (28 downto 0) ); end entity inverse_workaround; architecture rtl of inverse_workaround is -- this value is calcuted as ceil(latency/max_fftpts) -- where MAX_FFTPTS = maximum transform size that will be used. -- LATENCY = the latency through the core for MAX_FFTPTS -- this can be established through a simulation for the chosen MAX_FFTPTS -- as the time from sink_eop assertion to the corresponding source_sop -- assertion on the output of the FFT. constant MAX_ADDR_c : natural := 1; -- signals to flag updates to the inverse port on the input and output -- of the FFT signal inverse_d : std_logic_vector(max_addr_c downto 0); signal in_inverse : std_logic; signal in_inverse_reg : std_logic; signal out_inverse : std_logic; -- signals to read the output ports Altera Corporation 3

signal sink_ready_s : std_logic; signal source_eop_s : std_logic; signal source_valid_s : std_logic; -- input data after applying the inverse operation signal sink_real_inv : std_logic_vector (sink_real'length - 1 downto 0); signal sink_imag_inv : std_logic_vector (sink_imag'length - 1 downto 0); signal source_real_inv : std_logic_vector (source_real'length - 1 downto 0); signal source_imag_inv : std_logic_vector (source_imag'length - 1 downto 0); -- Megacore FFT component declaration component fft is port ( clk : in std_logic; reset_n : in std_logic; fftpts : in std_logic_vector (10 downto 0); inverse : in std_logic; sink_valid : in std_logic; sink_sop : in std_logic; sink_eop : in std_logic; sink_real : in std_logic_vector (sink_real'length - 1 downto 0); sink_imag : in std_logic_vector (sink_imag'length - 1 downto 0); sink_error : in std_logic_vector (1 downto 0); source_ready : in std_logic; sink_ready : out std_logic; source_error : out std_logic_vector (1 downto 0); source_sop : out std_logic; source_eop : out std_logic; source_valid : out std_logic; source_real : out std_logic_vector (source_real'length - 1 downto 0); source_imag : out std_logic_vector (source_imag'length - 1 downto 0)); end component fft; begin -- update output ports. sink_ready <= sink_ready_s; source_valid <= source_valid_s; source_eop <= source_eop_s; -- if IFFT, swap real/imaginary on input sink_real_inv <= sink_real when in_inverse = '0' else sink_imag; sink_imag_inv <= sink_imag when in_inverse = '0' else sink_real; -- if IFFT, swap real/imaginary on output source_real <= source_real_inv when out_inverse = '0' else source_imag_inv; source_imag <= source_imag_inv when out_inverse = '0' else 4 Altera Corporation

source_real_inv; -- FFT top level fft_inst : fft port map ( clk => clk, reset_n => reset_n, fftpts => fftpts, inverse => '0', sink_valid => sink_valid, sink_sop => sink_sop, sink_eop => sink_eop, sink_real => sink_real_inv, sink_imag => sink_imag_inv, sink_error => sink_error, source_ready => source_ready, sink_ready => sink_ready_s, source_error => source_error, source_sop => source_sop, source_eop => source_eop_s, source_valid => source_valid_s, source_real => source_real_inv, source_imag => source_imag_inv); -- Updates the inverse on the top level inverse port in_inverse <= inverse or in_inverse_reg; in_inv_p : process (clk, reset_n) begin if reset_n = '0' then inverse_d <= (others => '0'); in_inverse_reg <= '0'; elsif rising_edge(clk) then if sink_sop = '1' and sink_valid = '1' and sink_ready_s = '1' then inverse_d <= inverse_d(max_addr_c - 1 downto 0) & inverse; in_inverse_reg <= inverse; if sink_eop = '1' and sink_valid = '1' and sink_ready_s = '1' then in_inverse_reg <= inverse; end process in_inv_p; -- updates the inverse flag on the output of the fft. out_inv_p : process (clk, reset_n) begin if reset_n = '0' then out_inverse <= '0'; elsif rising_edge(clk) then if source_eop_s = '1' and source_valid_s = '1' and source_ready = '1' then out_inverse <= inverse_d(max_addr_c); Altera Corporation 5

end process out_inv_p; end architecture rtl; Solution status This issue will be fixed in the next release of the FFT MegaCore function. Simulation Errors Synopsys VCS When you use NativeLink to perform an RTL simulation using the generated Verilog HDL testbench in the VCS simulator, you see the following error: Error: VCS: Error-[V2KS] Verilog 2000 IEEE 1364-2000 syntax used. Please compile with +v2k Error: VCS: to support this construct Error: VCS: operator '**'. This issue affects all Verilog HDL configurations. There is no design impact; the design compiles correctly. In the Verilog HDL testbench <variation name>_tb.v, replace the power of operator '**' with the calculated value. Alternatively, compile with the +v2k option in the VCS simulator. Solution Status This issue will be fixed in a future version of the FFT MegaCore function. Simulation Errors Incorrect Results When the input is defined as N bit wide, the permissible input range is from 2 N 1 + 1 to 2 N 1 1. If the input contains the value 2 N 1, the HDL output is incorrect, and does not match the MATLAB simulation result. 6 Altera Corporation

This issue affects all configurations. The design compiles but gives incorrect results. If you expect your input signal to contain the value 2 N 1, you should add a block in front of the FFT, which maps the value 2 N 1 to 2 N 1 +1. Solution Status This issue will be fixed in a future version of the FFT MegaCore function. Simulation Errors MATLAB Model Mismatch For one particular FFT parameter combination, the HDL output does not match the MATLAB simulation results (for some frames of data). HDL simulation results are scaled down by a factor of two compared to the MATLAB simulation results. The exponent value produced by the HDL simulation is one less than the output of the MATLAB simulations. When the exponent is taken into account, the MATLAB and the HDL version may differ by one least significant bit (LSB). This issue affects the following parameter combination: Transform length: 64 I/O data flow: burst architecture FFT engine architecture: quad output Number of parallel engines: 2 There is no design impact, the design compiles and operates correctly. This issue has no workaround. Altera Corporation 7

Contact Information Solution Status This issue will be fixed in a future version of the FFT MegaCore function. Gate-Level Simulations The testbench provided with the FFT MegaCore function is not suitable for gate-level simulations. The testbench assumes zero delays in postfitting simulation models. Therefore, running gate-level simulations using the testbench may produce incorrect simulation results. This issue affects all configurations. There is no design impact; the design compiles correctly. Provide appropriate input and output constraints using the Quartus II Assignments Editor and create a testbench that matches these requirements. Solution Status This issue will be fixed in a future version of the FFT MegaCore function. Contact Information For more information, contact Altera's mysupport website at www.altera.com/mysupport and click Create New Service Request. Choose the Product Related Request form. Revision History Table 2 shows the revision history for FFT MegaCore function version 6.1. Table 2. Revision History Version Date Errata Summary 1.2 March 2007 Added Variable Streaming FFT Outputs Invalid Data issue. 1.1 February 2007 Added Incorrect Inverse Functionality for Variable Streaming FFT issue. 1.0 December 2006 First release. 8 Altera Corporation

Revision History 101 Innovation Drive San Jose, CA 95134 (408) 544-7000 www.altera.com Applications Hotline: (800) 800-EPLD Literature Services: literature@altera.com Copyright 2007 Altera Corporation. All rights reserved. Altera, The Programmable Solutions Company, the stylized Altera logo, specific device designations, and all other words and logos that are identified as trademarks and/or service marks are, unless noted otherwise, the trademarks and service marks of Altera Corporation in the U.S. and other countries. All other product or service names are the property of their respective holders. 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. Altera Corporation 9