FFT Compiler IP Core User’s Guide
August 2011
IPUG54_01.9
Table of Contents
Chapter 1. Introduction .......................................................................................................................... 4
Quick Facts ........................................................................................................................................................... 4
Features ................................................................................................................................................................ 6
Chapter 2. Functional Description ........................................................................................................ 8
Block Diagram....................................................................................................................................................... 8
High Performance Architecture .................................................................................................................... 9
Low Resource Architecture .......................................................................................................................... 9
Configuring the FFT Compiler............................................................................................................................. 10
Number of Points ....................................................................................................................................... 10
Architecture ................................................................................................................................................ 10
Output Order .............................................................................................................................................. 10
Scaling Mode ............................................................................................................................................. 11
Precision Reduction Method ...................................................................................................................... 11
Signal Descriptions ............................................................................................................................................. 11
Interfacing with the FFT Compiler ....................................................................................................................... 12
Configuration Signals ................................................................................................................................. 12
Handshake Signals .................................................................................................................................... 13
Exponent Output ........................................................................................................................................ 13
Exceptions.................................................................................................................................................. 13
Timing Specifications .......................................................................................................................................... 13
Chapter 3. Parameter Settings ............................................................................................................ 16
Points/Mode Tab ................................................................................................................................................. 17
Number of Points ....................................................................................................................................... 17
Architecture ................................................................................................................................................ 17
FFT Mode................................................................................................................................................... 17
Output Order .............................................................................................................................................. 18
Scaling Width Tab ............................................................................................................................................... 18
Scaling Mode ............................................................................................................................................. 18
Data Width ................................................................................................................................................. 18
Precision Reduction Method ...................................................................................................................... 19
Implementation Tab ............................................................................................................................................ 19
Multiplier Type............................................................................................................................................ 19
Pipeline ...................................................................................................................................................... 19
Memory Type ............................................................................................................................................. 19
Synthesis and Simulation Tools Tab................................................................................................................... 20
Support Synplify ......................................................................................................................................... 20
Support Precision....................................................................................................................................... 20
Support ModelSim...................................................................................................................................... 20
Support ALDEC.......................................................................................................................................... 20
Chapter 4. IP Core Generation............................................................................................................. 21
Licensing the IP Core.......................................................................................................................................... 21
Getting Started .................................................................................................................................................... 21
IPexpress-Created Files and Top Level Directory Structure............................................................................... 24
Instantiating the Core .......................................................................................................................................... 25
Running Functional Simulation ........................................................................................................................... 25
Synthesizing and Implementing the Core in a Top-Level Design ....................................................................... 25
Hardware Evaluation........................................................................................................................................... 26
Enabling Hardware Evaluation in Diamond................................................................................................ 26
Enabling Hardware Evaluation in ispLEVER.............................................................................................. 26
© 2011 Lattice Semiconductor Corp. All Lattice trademarks, registered trademarks, patents, and disclaimers are as listed at www.latticesemi.com/legal. All other brand
or product names are trademarks or registered trademarks of their respective holders. The specifications and information herein are subject to change without notice.
IPUG54_01.9, August 2011
2
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Table of Contents
Updating/Regenerating the IP Core .................................................................................................................... 27
Regenerating an IP Core in Diamond ........................................................................................................ 27
Regenerating an IP Core in ispLEVER ...................................................................................................... 27
Chapter 5. Support Resources ............................................................................................................ 29
Lattice Technical Support.................................................................................................................................... 29
Online Forums............................................................................................................................................ 29
Telephone Support Hotline ........................................................................................................................ 29
E-mail Support ........................................................................................................................................... 29
Local Support ............................................................................................................................................. 29
Internet ....................................................................................................................................................... 29
References.......................................................................................................................................................... 29
LatticeECP ................................................................................................................................................. 29
LatticeECP2/M ........................................................................................................................................... 29
LatticeECP3 ............................................................................................................................................... 29
LatticeXP2.................................................................................................................................................. 30
Revision History .................................................................................................................................................. 30
Appendix A. Resource Utilization ....................................................................................................... 31
LatticeECP Devices ............................................................................................................................................ 31
Ordering Part Number................................................................................................................................ 31
LatticeECP2 Devices .......................................................................................................................................... 31
Ordering Part Number................................................................................................................................ 32
LatticeECP2M Devices ....................................................................................................................................... 32
Ordering Part Number................................................................................................................................ 32
LatticeECP3 Devices .......................................................................................................................................... 32
Ordering Part Number................................................................................................................................ 32
LatticeXP2 Devices ............................................................................................................................................. 33
Ordering Part Number................................................................................................................................ 33
IPUG54_01.9, August 2011
3
FFT Compiler IP Core User’s Guide
Chapter 1:
Introduction
Lattice's Fast Fourier transform (FFT) Compiler intellectual property (IP) core offers forward and inverse Fast Fourier Transforms for point sizes from 64 to 16384. The FFT Compiler IP core can be configured to perform forward
FFT, inverse FFT (IFFT) or port selectable forward/inverse FFT. The FFT Compiler IP core offers two choices of
implementation: high performance (Streaming I/O) and low resource (Burst I/O). In the high performance implementation, the FFT Compiler IP core can perform real-time computations with continuous data streaming in and
out at clock rate. There can also be arbitrary gaps between data blocks allowing discontinuous data blocks. The low
resource implementation can be used when it is required to use less slice (logic unit of Lattice FPGA devices) and
Embedded Block RAM (EBR) and Digital Signal Processor (DSP) resources or if the device is too small to accommodate the high performance version.
To account for the data growth in fine register length implementations, the FFT Compiler IP core allows several different modes (fixed and dynamic) for scaling data after each radix-2 stage of the FFT computation. The low
resource version also supports block floating point arithmetic that provides increased dynamic range for intermediate computations. The FFT Compiler IP core also allows the number of FFT points to be varied dynamically
through a port.
Quick Facts
Table 1-1 through Table 1-5 give quick facts about the FFT Compiler IP core for LatticeECP™, LattceECP2™,
LatticeECP2M™, LatticeECP3™, and LatticeXP2™ devices, respectively.
Table 1-1. FFT Compiler IP Core for LatticeECP Devices Quick Facts
FFT IP Configuration
High performance
256 points
Core
Requirements
LatticeECP
Minimal Device Needed
LFECP6E
Data Path Width
LUTs
sysMEM EBRs
Registers
MULT18X18ADDSUB
16
16
16
16
2100
2700
800
1000
3
5
3
5
1700
2100
800
900
6
8
2
®
2
®
Lattice Diamond 1.0 or ispLEVER 8.1
Synthesis
Synopsys Synplify Pro for Lattice D-2009.12L-1
Aldec Active-HDL 8.2 Lattice Edition
Simulation
IPUG54_01.9, August 2011
Low performance
256 points
LFECP33E-5F672C
Lattice Implementation
Design Tool
Support
Low performance
256 points
FPGA Families Supported
Targeted Device
Resource
Utilization
High performance
1024 points
Mentor Graphics ModelSim SE 6.3F
4
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Introduction
Table 1-2. FFT Compiler IP Core for LatticeECP 2Devices Quick Facts
FFT IP Configuration
Core
Requirements
High performance 256 points
High performance
1024 points
LFE2-6E
LFE2-12E
FPGA Families Supported
Minimal Device Needed
Resource
Utilization
LUTs
sysMEM EBRs
Registers
MULT18X18ADDSUB
LFE2-6E
LFE2-6E
LFE2-50E-7F672C
16
16
16
16
2100
2700
800
900
3
6
3
3
1700
2100
800
800
6
8
2
2
Diamond 1.0 or ispLEVER 8.1
Lattice Implementation
Design Tool
Support
Low performance
256 points
Lattice ECP2
Targeted Device
Data Path Width
Low performance
256 points
Synthesis
Synopsys Synplify Pro for Lattice D-2009.12L-1
Aldec Active-HDL 8.2 Lattice Edition
Simulation
Mentor Graphics ModelSim SE 6.3F
Table 1-3. FFT Compiler IP Core for LatticeECP2M Devices Quick Facts
FFT IP Configuration
High performance
256 points
Core
Requirements
FPGA Families Supported
Data Path Width
LUTs
sysMEM EBRs
Registers
MULT18X18ADDSUB
LFE2M35E-7F672C
16
16
16
16
2100
2700
900
1000
3
6
3
3
1700
2100
800
900
6
8
2
2
Diamond 1.0 or ispLEVER 8.1
Synthesis
Synopsys Synplify Pro for Lattice D-2009.12L-1
Aldec Active-HDL 8.2 Lattice Edition
Simulation
IPUG54_01.9, August 2011
Low performance
256 points
LFE2M20E
Lattice Implementation
Design Tool
Support
Low performance 256
points
Lattice ECP2M
Minimal Device Needed
Targeted Device
Resource
Utilization
High performance
1024 points
Mentor Graphics ModelSim SE 6.3F
5
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Introduction
Table 1-4. FFT Compiler IP Core for LatticeECP3 Devices Quick Facts
FFT IP Configuration
High performance
256 points
Core
Requirements
FPGA Families Supported
Minimal Device Needed
Data Path Width
LUTs
sysMEM EBRs
Registers
MULT18X18C
LFE3-35EA
LFE3-95E-8FN672CES
16
16
16
16
2100
2700
900
1000
3
6
3
3
1700
2100
800
900
16
4
4
12
Diamond 1.0 or ispLEVER 8.1
Lattice Implementation
Design Tool
Support
Low performance 256
points
Low performance
256 points
Lattice ECP3
Targeted Device
Resource
Utilization
High performance
1024 points
Synthesis
Synopsys Synplify Pro for Lattice D-2009.12L-1
Aldec Active-HDL 8.2 Lattice Edition
Simulation
Mentor Graphics ModelSim SE 6.3F
Table 1-5. FFT Compiler IP Core for LatticeXP2 Devices Quick Facts
FFT IP Configuration
Core
Requirements
High performance
256 points
High performance
1024 points
LFXP2-5E
LFXP2-8E
FPGA Families Supported
Minimal Device Needed
Resource
Utilization
LUTs
sysMEM EBRs
Registers
MULT18X18ADDSUB
LFXP2-5E
LFXP2-5E
LFXP2-17E-7F484CES
16
16
16
16
2100
2700
900
1000
3
6
3
3
1700
2100
800
900
6
8
2
2
Diamond 1.0 or ispLEVER 8.1
Lattice Implementation
Design Tool
Support
Low performance 256 points
Lattice XP2
Targeted Device
Data Path Width
Low performance 256 points
Synthesis
Synopsys Synplify Pro for Lattice D-2009.12L-1
Aldec Active-HDL 8.2 Lattice Edition
Simulation
Mentor Graphics ModelSim SE 6.3F
Features
• Wide range of points sizes: 64, 128, 256, 512, 1024, 2048, 4096, 8192, and 16384
• Choice of high-performance (streaming I/O) or low resource (burst I/O) versions
• Run-time variable FFT point size
• Forward, inverse or port-configurable forward/inverse transform modes
• Choice of no scaling, fixed scaling (RS111/RS211) or dynamically variable stage-wise scaling
IPUG54_01.9, August 2011
6
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Introduction
• Data precision of 8 to 24 bits
• Twiddle factor precision of 8 to 24 bits
• Natural order for input and choice of bit-reversed or natural order for output
• Support for arbitrary gaps between input data blocks in high-performance realization
• Block floating point scaling support in low resource configurations
IPUG54_01.9, August 2011
7
FFT Compiler IP Core User’s Guide
Chapter 2:
Functional Description
This chapter provides a functional description of the Lattice FFT Compiler IP core.
Block Diagram
Figure 2-1 shows the interface diagram for the FFT compiler. The diagram shows all of the available ports for the IP.
It should be noted that not all the I/O ports are available for a chosen configuration.
Figure 2-1. FFT Compiler Interface Diagram
clk
rstn
exponent
except
mode
modeset
sfact
sfactset
points
pointset
rfib
ibend
FFT
Compiler
obstart
outvalid
dore
ibstart
dire
doim
diim
FFT is a fast algorithm to implement the following N point Discrete Fourier Transform (DFT) function.
N-1
nk
X(k) =
(1)
x(n)WN
n=0
where WN is given by:
-j
WN = e
2π
N
(2)
The inverse DFT is given by:
N-1
-nk
1
X(n) =
N
X(k)WN
(3)
k=0
However the output of the FFT Compiler IP core will differ from the true output by a scale factor determined by the
scaling scheme. If “right-shift by 1 at all stages” scaling mode (RS111) is used, there is a division by 2 at every
stage resulting in an output that is 1/Nth of the true output of Equation (1). The output for inverse FFT will match
with Equation (3) for this scaling mode. Using other scaling modes will result in outputs scaled by other appropriate
scale factors.
The FFT Compiler IP corer offers two different implementation modes - High Performance and Low Resource. In
High Performance mode, the FFT Compiler IP core can continuously read in and give out one data sample per
clock, block after block. The FFT throughput is equal to the clock rate when the data blocks are applied continuously. Low Resource mode uses less logic and memory resources, but requires 4 to 8 block periods to compute the
IPUG54_01.9, August 2011
8
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
FFT for one block of input data. Both versions of FFT do not allow breaks in the data stream within a block but do
allow arbitrary additional gaps between data blocks.
High Performance Architecture
The implementation diagram for the high performance FFT is shown in Figure 2-2.
Figure 2-2. Implementation Diagram for High-Performance FFT
bfly
control
Scaling
din
bfly
mem
Scaling
mem
mem
Input
Registers
and
Control
PE(log2N-1)
PE1
control
bfly
Scaling
PE0
Output
Processing,
Bit-Reversal
& Control
dout
control
The high performance FFT implementation consists of several processing elements (PEs) connected in cascade.
The number of PEs is equal to log2 N, where N is the number of FFT points. Each PE has a radix-2 decimation-infrequency (DIF) butterfly (bfly), a memory (mem), an address generation and control logic (control), and a scaling
unit (scaling). Some of the butterflies include a twiddle multiplier and a twiddle factor memory. The scaling unit performs a division by 2, a division by 4, or no division, depending on the scaling mode and scale factor inputs at the
port. There is an input-processing block at the beginning of the PE chain and an output-processing block at the end
of the PE chain. The input processing block has registers and control logic for handshake signals and dynamic
mode control. The output-processing block contains handshake, mode control and bit-reversal logic, if configured
for natural ordered output.
The high performance FFT implementation enables streaming I/O operation, where the data is processed at clock
speed without any gaps between blocks. This implementation can also be employed for burst I/O situations by
using the handshake signals.
Low Resource Architecture
The low resource implementation employs only one physical radix-2 butterfly and reuses the same butterfly over
multiple time periods to perform all stages of the FFT computation. Hence the resource requirement (EBR and
slices) is lower compared to the high-performance version. Depending on the number of points, an N-point FFT
computation may require 4N to 8N cycles. The implementation diagram for the low-resource FFT is shown in
Figure 2-3.
IPUG54_01.9, August 2011
9
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
Figure 2-3. Low-resource FFT Data Flow Diagram
Twiddle
ROM
mem
a
Butterfly
mem
b
Commutator
Input Data
Output Data
As Figure 2-3 shows, the FFT module is built with a butterfly reading from and writing to two memories at the same
time. There is a commutator after the butterfly to handle the writing sequence of the intermediate outputs. The twiddle memory contains the pre-computed twiddle factors for the FFT. When an input block is applied, the first half of
the block is written into memory a and the second half into memory b in a bit-reversed order. The butterfly reads
from the two memories, performs stage 0 computation and writes out the intermediate results to the same sites in
each memory. Again, for stage 1 computation, the butterfly reads from the two memories, performs computation
and writes back into the two memories through the commutator. A similar process of reading, computing and writing continues for each of the remaining stages. For every block of input data read, four to eight blocks of computation time is required for this scheme. Due to the twin memory architecture, when data is unloaded form FFT in bitreversed mode, the data in memory a (points 0 to N/2-1) will be unloaded first, followed by the data in memory b
(N/2 to N-1), both in a bit-reversed order.
Configuring the FFT Compiler
Number of Points
The number of points can be either fixed and specified in the GUI or specified through the points input port. If the
FFT core is going to be used for fixed points, it is better to configure it that way, to avoid the additional resource utilization in dynamic points configurations. In dynamic points configurations, the hardware resources used correspond to the maximum number of points. So to minimize resource utilization, the minimum and maximum points
must be set to the minimum and maximum values expected in the usage.
Architecture
The operation mode must be chosen to suit the throughput requirements and resource availability. If block floating
point scaling is required, then the Low Resource architecture must be selected.
Output Order
Output data can be chosen either to be in bit-reversed order or natural order. Natural order output is preferred in
many applications, where the output is directly fed to the following stage. But in applications where a FIFO or a buffer is used between the output of FFT and the input to the next processing block, as in multi-clock systems, bitreversal can be done in that glue memory. Selecting bit-reversed output results in reduced latency and/or lesser
EBR usage. In low resource modes, the bit-reversed order is applicable separately to the lower and upper half of
the output. For a N point FFT, the first N/2 points are available in bit-reversed order first, followed by the second N/2
points in a bit-reversed order.
IPUG54_01.9, August 2011
10
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
Scaling Mode
The selection of scaling mode depends on the statistical properties of the data and the trade-off between increased
dynamic range and occasional overflows. If a large dynamic range is required for the internal computations and if
the low-resource implementation is used, block floating point will be the best choice. If memory and logic resource
utilization (and possibly throughput reduction) is not a problem, full precision arithmetic (scaling selected as
“None”) can be used. The data width grows by one bit every stage requiring bigger multipliers, wider data path logic
and wider memories. The output width is equal to input width + log2N.
Among the fixed scale factors, RS111 is a more uniform scaling method than RS211. If the input data magnitude is
known to be higher on the average, the RS211 method may be employed. Dynamic scale mode is for more complex scenarios where the statistical properties of the input differ between data blocks and the user wants to use
more than one scaling scheme.
Precision Reduction Method
Precision reduction method selection applies to the scaling process after every stage. When scaling is employed (a
divide by 2 or 4), the scaled data is obtained either by truncating the data (discarding last one or two bits) or rounding the data to the nearest number in the scaled precision (discarding one or two bits and making correction to the
output data based on discarded bits). Truncation results in less logic utilization while rounding improves the accuracy of results.
Signal Descriptions
The top-level interface diagram for the FFT Compiler is shown in Figure 2-1 and the details of the I/O ports are
summarized in Table 2-1.
Table 2-1. Top level I/O interface
Port
Bits
I/O
Description
Clock and Reset
clk
1
I
System clock.
rstn
1
I
System wide asynchronous active-low reset signal.
I
Data in real. Real part of the input data.
Data Input and Output
dire
8 - 24
diim
8 - 24
I
Data in imaginary. Imaginary part of the input data.
dore
8 - 24
O
Data out real. Real part of the output data.
doim
exponent
8 - 24
O
Data out imaginary. Imaginary part of the output data.
Log2(N)+1
O
Exponent output for block floating point. This value denotes the effective scaling
that was done during block floating scaling.
I
FFT mode signal. Programs core to perform forward or inverse FFT.
Configuration Signals
mode
1
0 - Forward FFT
1 - Inverse FFT
The value at mode is loaded into the system whenever modeset input goes high.
The changes are effective from the start of the next input data block, i.e., for an
ibstart going high during or after modeset.
modeset
1
IPUG54_01.9, August 2011
I
Set FFT mode signal. When this input signal goes high, the value at mode port is
read and the FFT mode (forward or inverse FFT) is set.
11
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
Table 2-1. Top level I/O interface (Continued)
Port
sfact
Bits
I/O
Description
12 - 28
I
Stage-wise scaling factors. This signal is a concatenation of individual 2-bit
stage scaling factors. The most significant 2 bits correspond to stage 1 scale factor, the next significant 2 bits to stage 2 scale factor and so on. When the number
of point is not a power of 4, the last stage has only 1-bit scaling factor.
Each scaling factor denotes the number of right shifts performed to that stage’s
output data.
The scale factors are loaded into the system when sfactset input goes high. The
changes are effective from the start of the next input data block, i.e., for an
ibstart going high during or after sfactset.
sfactset
points
1
I
Set scale factor signal. When this signal goes high, stage-wise scaling factors
are set with the values at sfact input port.
3 if maximum
points = 128
I
Number of FFT points. This input is used to specify the number of points in the
dynamic points mode. The value at this port must be equal to the log2 of the
number of points represented in unsigned binary form. The valid range of values
is from 6 to 14. A value less than 6 will be read as 6 and a value greater than 14
will be read as 14.
I
Set number of points signal. When this input signal goes high, the value at points
port is read and the number of FFT points is set accordingly. The new number of
points is effective from the next block of data, i.e., for a valid ibstart applied after
pointset going high. For low resource mode, pointset can be applied during or
before ibstart. For high performance mode, pointset must be applied five
cycles before ibstart.
4, otherwise
pointset
1
Status and Handshake Signals
ibstart
1
I
Input block start. Asserted high by the user to identify the start of an input data
block. Once this signal goes high for a cycle, the core enters an “input read
cycle”, during which input data is read in N consecutive cycles (N is the number
of FFT points). Any ibstart signal during an input read cycle is ignored.
except
1
O
Exception. Denotes that an exception (overflow) has occurred in the computation. This could be due to the use of a wrong set of scaling factors. The exception always corresponds to a problem with the data that is currently output and
not with a problem with the data that is being processed.
rfib
1
O
Ready for input block. This signal indicates that the core is ready to receive the
next block of input data. The driving system can assert ibstart one cycle after
rfib goes high. After ibstart goes high, the core will pull rfib low in the next
clock cycle.
ibend
1
O
Input block end. This signal goes high for one cycle to coincide with the last sample of the current input data block that is being read through input ports.
obstart
1
O
Output block start. This signal is asserted high by the core for one clock cycle, to
signify the start of an output block of data.
outvalid
1
O
Output data valid. This signal indicates that the core is now giving out valid output data through dore and doim ports.
Interfacing with the FFT Compiler
Configuration Signals
There are three dynamic configuration signals used in the FFT compiler: mode, sfact and points. The user
independently selects each of these. The configuration signals are sampled and stored when the corresponding
set signals are active. Specifically mode is set when modeset is active, sfact is set when sfactset is active,
and points is set when pointset becomes active. However these values must be set during or before the start of
a block for them to be effective for that block. In other words, the set signals must be active at or before ibstart
going active, for them to be effective for that block. There are a couple of exceptions to this rule. In low-resource
implementation and in bit-reversed output mode, the set signals are ignored when outvalid is high. Refer to
IPUG54_01.9, August 2011
12
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
Figure 2-6 for an illustration of configuration signal timing. In high performance implementation, the pointset
must be applied five cycles before ibstart for it to be effective for the next block.
Handshake Signals
The input ibstart is used to specify the start of a data block and it is assumed to coincide with first data point in
the input block. This signal also sets the configuration of the core based on the values set by the corresponding set
signals. Once ibstart is valid, the core starts reading the input in consecutive clocks without gap until all the Npoints are read. When the last data in a block is being read from input, the output ibend is asserted high by the
core. The output control signal rfib indicates that the core is ready for a new input block. One cycle after
ibstart, the output rfib goes low and it remains low until one cycle before the next block can be applied. The
external driving system can check for rfib and start an input block in the next cycle after rfib goes high. Refer to
Figure 2-6 for an illustration of configuration signal timing.
Exponent Output
The output port exponent gives the value of the exponent of the multiplicative factor for the output to get the true
FFT output. The value of exponent is an unsigned number. The true (i)FFT output is given by:
True (i)FFT output = (dore * 2^exponent) + j (doim * 2^exponent)
Exceptions
Exceptions occur if there is an internal overflow in the computation of an output block. An exception is notified by
the except signal going high during a valid output. The except signal goes high if one or more overflows occur during the computation of a block. The severity and number of overflow exceptions in a block depends on the scaling
scheme used and the property of the input data. If the user is using an appropriate scaling method for the expected
input data and can tolerate occasional exceptions, the except output may be left unconnected leading to a slightly
reduced resource utilization.
Timing Specifications
The top-level timing diagrams for several cases are given in Figure 2-4 through Figure 2-7.
Figure 2-4. Timing Diagram for Streaming I/O with Continuous Data Blocks (64 Points)
clk
rfib
ibstart
dire,
diim
x1(0)
x1(1)
x1(2)
...
x1(62)
X1(2)
...
x1(63)
x2(0)
x2(1)
x2(2)
x2(3)
X1(62)
X1(63)
X2(0)
X2(1)
ibend
dore,
doim
output latency
X1(0)
X1(1)
obstart
outvalid
IPUG54_01.9, August 2011
13
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
Figure 2-5. Timing Diagram for Streaming I/O with Gaps Between Data Blocks (64 Points)
clk
rfib
ibstart
dire,
diim
x1(0)
x1(1)
...
x1(62)
X1(2)
...
x1(2)
x1(63)
x2(0)
x2(1)
x2(2)
ibend
output latency
dore,
doim
X1(0)
X1(1)
X1(62)
X1(63)
X2(0)
obstart
outvalid
Figure 2-6. Timing Diagram Showing Handshake Signals for Low Resource FFT
clk
rfib
mode
x
mode1
x
x
sfact1
x
x
points1
x
x
mode2
modeset
sfact
x
sfact2
x
sfactset
points
x
points2
x
pointset
ibstart
dire,
diim
x1(0)
x1(1)
...
x1(63)
x2(0)x
(1)
2
x2(2)
x2(3)
ibend
This block uses:
mode1, sfact1 and points1
IPUG54_01.9, August 2011
14
This block uses:
mode2, sfact2 and points1, as
only modeset and sfactset
occur at or before ibstart
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Functional Description
Figure 2-7. Timing Diagram Showing Handshake Signals for High Performance FFT
clk
rfib
mode
x
mode1
x
x
sfact1
x
mode2
x
modeset
sfact
sfact2
x
x
sfactset
points
x
points1
x
x
points2
pointset
ibstart
dire,
diim
x1(0)
x1(1)
...
x1(63)
x2(0)
x2(1)
ibend
This block uses:
mode1, sfact1 and points1
This block
uses:
mode2, sfact2
and points1, as
pointset does
not arrive 5
cycles before
ibstart
Output Latency
Table 2-2 gives the latency through the IP core as a function of FFT point size and implementation mode.
Table 2-2. Latency through FFT IP Core (Clock Cycles)
FFT Point Size
Low Resource Mode
64
278
High Performance Mode
83
128
598
152
256
1302
282
512
2838
543
1024
6166
1057
2048
13334
2086
4096
28694
4136
8192
61462
8237
16384
131094
16431
IPUG54_01.9, August 2011
15
FFT Compiler IP Core User’s Guide
Chapter 3:
Parameter Settings
The IPexpress™ tool is used to create IP and architectural modules in the Diamond and ispLEVER software. Refer
to “IP Core Generation” on page 21 for a description on how to generate the IP.
Table 3-1 provides the list of user configurable parameters for the FFT Compiler IP core. The parameter settings
are specified using the FFT Compiler IP core Configuration GUI in IPexpress.
Table 3-1. FFT Compiler Parameter Description
Name
Range
Default
Number of Points
Points variability
Fixed, Variable
Fixed
64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384
64
Minimum points
64, 128, 256, 512, 1024, 2048, 4096, 8192
64
Maximum points
{128, 256, 512, 1024, 2048, 4096, 8192, 16384} only
values > Min points are valid
128
High Performance, Low Resource
Low Resource
Forward, Inverse, Dynamic through Port
Forward
Bit-reversed, Natural
Bit-reversed
None, RS111, RS211, Dynamic Through Port, Block
Floating Point
RS111
Input Data Width
8 to 24
16
Twiddle Factor Width
8 to 24
16
Truncation, Rounding
Truncation
Multiplier Type
DSP block based, LUT based
DSP block based
Adder Pipeline
0,1
0
Number of Points (N)
Architecture
Architecture
FFT Mode
FFT Mode
Output Order
Output order
Scaling Mode
Scaling Mode
Data Widths
Precision Reduction Method
Precision Reduction
Implementation
Multiplier Pipeline
2,3,4
3
EBR Memory, Distributed Memory, Automatic
EBR Memory
Synthesis Tools
Support Synplify
Support Precision RTL Sythesis
Both are selected
Simulation Tools
Support ModelSim
Support Active-HDL
Both are selected
Memory Type
Synthesis & Simulation Tools
IPUG54_01.9, August 2011
16
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Parameter Settings
Points/Mode Tab
Figure 3-1 shows the contents of the Points/Mode tab.
Figure 3-1. Points/Mode Tab
Number of Points
This parameter allows the user to specify fixed or variable number of points.
Number of Points
This parameter specifies the number of FFT points if points variability is “FIxed.”
Maximum Points
This parameter denotes the maximum for the points range if points variability is “Variable.”
Minimum Points
This parameter denotes the minimum for the points range if points variability is “Variable.”
Architecture
This option selects either High-Performance (Streaming I/O) or Low Resource (Burst I/O) architecture. The high
performance implementation offers high throughput and allows streaming input and output data, with optional gaps
between blocks. The low resource implementation results in low memory and logic resource utilization, but takes
multiple block periods (typically between 4 to 8) of computation time to process each data block.
FFT Mode
This parameter configures operating mode of the core to forward FFT, inverse FFT or dynamically variable forward/inverse FFT. In the “Dynamic Through Port” mode, the FFT mode can be set to forward or inverse FFT using
the input ports mode and modeset.
IPUG54_01.9, August 2011
17
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Parameter Settings
Output Order
This parameter specifies whether the output data is in bit-reversed or natural order.
Scaling Width Tab
Figure 3-1 shows the contents of the Scaling Width tab.
Figure 3-2. Scaling Width Tab
Scaling Mode
This parameter defines whether the data is scaled or not after each radix-2 butterfly and if so, what kind of scaling
is used. The value can be None, RS111, RS211, Dynamic Through Port and Block Floating Point.
• If the value is “None” there is no scaling at the output of butterflies.
• The option RS111 results in a fixed scaling of “right shift by 1” in all FFT stages.
• The option RS211 results in a fixed scaling of “right shift by 2” in the first stage and “right shift by 1” in the subsequent stages.
• If Scale Mode is set to “Dynamic Through Port”, the scale factors for the FFT stages are read dynamically from
the input port sfact for every data block. In the dynamic scaling mode, for high performance architecture, there is
an option to set the last stage (or the last two stages, if FFT Mode is dynamic) scaling to fixed scaling to improve
the performance.
• In Block Floating Point scaling, the dynamic range for the intermediate computation is increased by extracting a
common exponent for all the data points in each stage and using the full arithmetic width for processing only the
mantissa. An additional output port exponent is added to the FFT compiler core when this option is selected.
This option is not available for the Streaming I/O mode.
Data Width
Input Data Width
This parameter specifies input data width (width of either of the components: real or imaginary).
IPUG54_01.9, August 2011
18
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Parameter Settings
Twiddle Factor Width
This parameter specifies twiddle factor width (width of either of the components: real or imaginary).
Precision Reduction Method
This parameter specifies whether the data is truncated or rounded nearest during scaling. In rounding mode, for
high performance architecture, there is an additional option to set the last stage (or the last two, if FFT Mode is
dynamic) to truncation. Setting the last stage to truncation results in better throughput.
Implementation Tab
Figure 3-3 shows the contents of the Implementation tab.
Figure 3-3. Implementation Tab
Multiplier Type
This option specifies whether DSP blocks or LUTs are used for implementing multipliers and multiply-add components.
Pipeline
Multiplier Pipeline
This option is used to specify the pipeline of LUT based multipliers in low resource mode. Higher values for pipeline
leads to better performance at the cost of slightly increased utilization and latency.
Adder Pipeline
This option is used to specify an additional pipeline after the adders. Additional pipeline leads to better performance at the cost of slightly increased utilization and latency. This option is available only when architecture is low
resource and the scale mode is not block floating point.
Memory Type
This parameter specifies the balance between using EBR and distributed memories. If EBR memory is selected,
EBRs are used for memory depths 32 and higher. If the Distributed Memory option is selected, EBR memories are
used only for depths 512 or more and the rest uses distributed memories. In the automatic option, the IP generator
uses a pre-defined setting to select the EBR and distributed memories based on the FFT parameters.
IPUG54_01.9, August 2011
19
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Parameter Settings
Synthesis and Simulation Tools Tab
Figure 3-3 shows the contents of the Synthesis and Simulation Tools tab.
Figure 3-4. Synthesis and Simulation Tools Tab
Support Synplify
If selected, IPexpress generates evaluation scripts and other associated files required to synthesize the top-level
design using the Synplify synthesis tool.
Support Precision
If selected, IPexpress generates evaluation script and other associated files required to synthesize the top-level
design using the Precision synthesis tool.
Support ModelSim
If selected, IPexpress generates evaluation script and other associated files required to run simulation using the
ModelSim simulator.
Support ALDEC
If selected, IPexpress generates evaluation script and other associated files required to run simulation using the
ALDEC simulator.
IPUG54_01.9, August 2011
20
FFT Compiler IP Core User’s Guide
Chapter 4:
IP Core Generation
This chapter provides information on licensing the FFT Compiler IP core, generating the core using the Diamond or
ispLEVER software IPexpress tool, running functional simulation, and including the core in a top-level design. The
Lattice FFT Compiler IP core can be used in LatticeECP3, LatticeECP2/M, LatticeECP, and LatticeXP2 device families.
Licensing the IP Core
An IP license is required to enable full, unrestricted use of the FFT Compiler IP core in a complete, top-level
design. An IP license that specifies the IP core and device family is required to enable full use of the core in Lattice
devices. Instructions on how to obtain licenses for Lattice IP cores are given at:
http://www.latticesemi.com/products/intellectualproperty/aboutip/isplevercoreonlinepurchas.cfm
Users may download and generate the IP core and fully evaluate the core through functional simulation and implementation (synthesis, map, place and route) without an IP license. The FFT Compiler IP core also supports Lattice’s IP hardware evaluation capability, which makes it possible to create versions of the IP core that operate in
hardware for a limited time (several hours) without requiring an IP license (see “Instantiating the Core” on page 25
for further details). However, a license is required to enable timing simulation, to open the design in the Diamond or
ispLEVER EPIC tool, and to generate bitstreams that do not include the hardware evaluation timeout limitation.
Getting Started
The FFT Compiler IP core is available for download from the Lattice IP Server using the IPexpress tool. The IP files
are automatically installed using InstallShield technology in any customer-specified directory. After the IP core has
been installed, the IP core will be available in the IPexpress GUI dialog box shown in Figure 4-1.
The IPexpress tool GUI dialog box for the FFT Compiler IP core is shown in Figure 4-1. To generate a specific IP
core configuration the user specifies:
• Project Path – Path to the directory where the generated IP files will be loaded.
• File Name – “username” designation given to the generated IP core and corresponding folders and files.
• (Diamond) Module Output – Verilog or VHDL.
• (ispLEVER) Design Entry Type – Verilog HDL or VHDL.
• Device Family – Device family to which IP is to be targeted (e.g. LatticeSCM, Lattice ECP2M, LatticeECP3,
etc.). Only families that support the particular IP core are listed.
• Part Name – Specific targeted part within the selected device family.
IPUG54_01.9, August 2011
21
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
Figure 4-1. IPexpress Dialog Box (Diamond Version)
Note that if the IPexpress tool is called from within an existing project, Project Path, Module Output (Design Entry in
ispLEVER), Device Family and Part Name default to the specified project parameters. Refer to the IPexpress tool
online help for further information.
To create a custom configuration, the user clicks the Customize button in the IPexpress tool dialog box to display
the FFT Compiler IP core Configuration GUI, as shown in Figure 4-2. From this dialog box, the user can select the
IP parameter options specific to their application. Refer to “Parameter Settings” on page 16 for more information on
the parameter settings.
IPUG54_01.9, August 2011
22
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
Figure 4-2. Configuration Dialog Box (Diamond Version)
IPUG54_01.9, August 2011
23
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
IPexpress-Created Files and Top Level Directory Structure
When the user clicks the Generate button in the IP Configuration dialog box, the IP core and supporting files are
generated in the specified “Project Path” directory. The directory structure of the generated files is shown in
Figure 4-3.
Figure 4-3. Lattice FFT Compiler IP Core Directory Structure
Table 4-1 provides a list of key files created by the IPexpress tool and how they are used. The IPexpress tool creates several files that are used throughout the design cycle. The names of most of the created files are customized
to the user’s module name specified in the IPexpress tool.
Table 4-1. File List
File
Description
_inst.v
This file provides an instance template for the IP.
.v
This file provides the FFT core for simulation.
_beh.v
This file provides a behavioral simulation model for the FFT core.
_bb.v
This file provides the synthesis black box for the user’s synthesis.
.ngo
The ngo files provide the synthesized IP core.
.lpc
This file contains the IPexpress tool options used to recreate or modify the core in
the IPexpress tool.
.ipx
The IPX file holds references to all of the elements of an IP or Module after it is
generated from the IPexpress tool (Diamond version only). The file is used to
bring in the appropriate files during the design implementation and analysis. It is
also used to re-load parameter settings into the IP/Module generation GUI when
an IP/Module is being re-generated.
_top.[v,vhd]
This file provides a module which instantiates the FFT core. This file can be easily
modified for the user's instance of the FFT core. This file is located in the
fft_comp_eval//src/rtl/top directory.
IPUG54_01.9, August 2011
24
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
Table 4-1. File List (Continued)
File
Description
twidx.mem
Twiddle factor to initialize ROM. The “x” in file name can be 0,1,2, etc.
_generate.tcl
This file is created when GUI “Generate” button is pushed and generation is
invoked. This file may be run from command line.
_generate.log
This is the IPexpress scripts log file.
_gen.log
This is the IPexpress IP generation log file.
Instantiating the Core
The \ and subtending directories provide files supporting FFT IP core evaluation. The
\ directory shown in Figure 4-3 contains files and folders with content that is constant for all
configurations of the FFT. The \ subfolder (\fft_comp_core0 in this example) contains files and
folders with content specific to the username configuration. The \fft_comp_eval directory is created by IPexpress the first time the core is generated and updated each time the core is regenerated. A \ directory is created by IPexpress each time the core is generated and regenerated each time the core with the same file
name is regenerated. A separate \ directory is generated for cores with different names, e.g.
\fft_compiler_eval0, \fft_compiler_eval1, etc.
Running Functional Simulation
Simulation support for the FFT IP core is provided for Aldec Active-HDL (Verilog and VHDL) simulator and for Mentor Graphics ModelSim simulator. The functional simulation includes a configuration-specific behavioral model of
the FFT IP core. The test bench sources stimulus to the core, and monitors output from the core. The generated IP
core package includes the configuration-specific behavior model (_beh.v) for functional simulation in
the “Project Path” root directory. The simulation scripts supporting ModelSim evaluation simulation is provided
in \\fft_comp_eval\\sim\modelsim\scripts. The simulation script supporting Aldec evaluation simulation is provided in
\\fft_comp_eval\\sim\aldec\scripts. Both ModelSim and Aldec simulation are supported via test bench files provided in \\fft_comp_eval\testbench. Models
required for simulation are provided in the corresponding \models folder. Users may run the Aldec evaluation
simulation by doing the following:
1. Open Active-HDL.
2. Under the Tools tab, select Execute Macro.
3. Browse to folder \\fft_comp_eval\\sim\aldec\scripts and execute
one of the “do” scripts shown.
Users may run the ModelSim evaluation simulation by doing the following:
1. Open ModelSim.
2. Under the File tab, select Change Directory and choose the folder
\fft_comp_eval\\sim\modelsim\scripts.
3. Under the Tools tab, select Execute Macro and execute the ModelSim “do” script shown.
Note: When the simulation completes, a pop-up window will appear asking “Are you sure you want to finish?”
Answer No to analyze the results. Answering Yes closes ModelSim.
Synthesizing and Implementing the Core in a Top-Level Design
Synthesis support for the FFT IP core is provided for Mentor Graphics Precision or Synopsys Synplify. The FFT IP
core itself is synthesized and is provided in NGO format when the core is generated in IPexpress. Users may syn-
IPUG54_01.9, August 2011
25
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
thesize the core in their own top-level design by instantiating the core in their top-level as described previously and
then synthesizing the entire design with either Synplify or Precision RTL Synthesis. The following text describes the
evaluation implementation flow for Windows platforms. The flow for Linux and UNIX platforms is described in the
Readme file included with the IP core. The top-level files _top.v are provided in
\\fft_comp_eval\\src\rtl\top. Push-button implementation of the reference design is supported via Diamond or ispLEVER project files, .syn, located in the following directory: \\fft_comp_eval\\impl\(synplify or precision).
To use this project file in Diamond:
1. Choose File > Open > Project.
2. Browse to
\\fft_comp_eval\\impl\synplify (or precision) in the Open Project dialog box.
3. Select and open .ldf. At this point, all of the files needed to support top-level synthesis and implementation will be imported to the project.
4. Select the Process tab in the left-hand GUI window.
5. Implement the complete design via the standard Diamond GUI flow.
To use this project file in ispLEVER:
1. Choose File > Open Project.
2. Browse to
\\fft_comp_eval\\impl\synplify (or precision) in the Open Project dialog box.
3. Select and open .syn. At this point, all of the files needed to support top-level synthesis and implementation will be imported to the project.
4. Select the device top-level entry in the left-hand GUI window.
5. Implement the complete design via the standard ispLEVER GUI flow.
Hardware Evaluation
The FFT Compiler IP core supports supports Lattice’s IP hardware evaluation capability, which makes it possible to
create versions of the IP core that operate in hardware for a limited period of time (several hours) without requiring
the purchase of an IP license. It may also be used to evaluate the core in hardware in user-defined designs.
Enabling Hardware Evaluation in Diamond
Choose Project > Active Strategy > Translate Design Settings. The hardware evaluation capability may be
enabled/disabled in the Strategy dialog box. It is enabled by default.
Enabling Hardware Evaluation in ispLEVER
In the Processes for Current Source pane, right-click the Build Database process and choose Properties from the
dropdown menu. The hardware evaluation capability may be enabled/disabled in the Properties dialog box. It is
enabled by default.
IPUG54_01.9, August 2011
26
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
Updating/Regenerating the IP Core
By regenerating an IP core with the IPexpress tool, you can modify any of its settings including device type, design
entry method, and any of the options specific to the IP core. Regenerating can be done to modify an existing IP
core or to create a new but similar one.
Regenerating an IP Core in Diamond
To regenerate an IP core in Diamond:
1. In IPexpress, click the Regenerate button.
2. In the Regenerate view of IPexpress, choose the IPX source file of the module or IP you wish to regenerate.
3. IPexpress shows the current settings for the module or IP in the Source box. Make your new settings in the Target box.
4. If you want to generate a new set of files in a new location, set the new location in the IPX Target File box. The
base of the file name will be the base of all the new file names. The IPX Target File must end with an .ipx extension.
5. Click Regenerate. The module’s dialog box opens showing the current option settings.
6. In the dialog box, choose the desired options. To get information about the options, click Help. Also, check the
About tab in IPexpress for links to technical notes and user guides. IP may come with additional information. As
the options change, the schematic diagram of the module changes to show the I/O and the device resources
the module will need.
7. To import the module into your project, if it’s not already there, select Import IPX to Diamond Project (not
available in stand-alone mode).
8. Click Generate.
9. Check the Generate Log tab to check for warnings and error messages.
10.Click Close.
The IPexpress package file (.ipx) supported by Diamond holds references to all of the elements of the generated IP
core required to support simulation, synthesis and implementation. The IP core may be included in a user's design
by importing the .ipx file to the associated Diamond project. To change the option settings of a module or IP that is
already in a design project, double-click the module’s .ipx file in the File List view. This opens IPexpress and the
module’s dialog box showing the current option settings. Then go to step 6 above.
Regenerating an IP Core in ispLEVER
To regenerate an IP core in ispLEVER:
1. In the IPexpress tool, choose Tools > Regenerate IP/Module.
2. In the Select a Parameter File dialog box, choose the Lattice Parameter Configuration (.lpc) file of the IP core
you wish to regenerate, and click Open.
3. The Select Target Core Version, Design Entry, and Device dialog box shows the current settings for the IP core
in the Source Value box. Make your new settings in the Target Value box.
4. If you want to generate a new set of files in a new location, set the location in the LPC Target File box. The base
of the .lpc file name will be the base of all the new file names. The LPC Target File must end with an .lpc extension.
5. Click Next. The IP core’s dialog box opens showing the current option settings.
IPUG54_01.9, August 2011
27
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
IP Core Generation
6. In the dialog box, choose desired options. To get information about the options, click Help. Also, check the
About tab in the IPexpress tool for links to technical notes and user guides. The IP core might come with additional information. As the options change, the schematic diagram of the IP core changes to show the I/O and
the device resources the IP core will need.
7. Click Generate.
8. Click the Generate Log tab to check for warnings and error messages.
IPUG54_01.9, August 2011
28
FFT Compiler IP Core User’s Guide
Chapter 5:
Support Resources
This chapter contains information about Lattice Technical Support, additional references, and document revision
history.
Lattice Technical Support
There are a number of ways to receive technical support.
Online Forums
The first place to look is Lattice Forums (http://www.latticesemi.com/support/forums.cfm). Lattice Forums contain a
wealth of knowledge and are actively monitored by Lattice Applications Engineers.
Telephone Support Hotline
Receive direct technical support for all Lattice products by calling Lattice Applications from 5:30 a.m. to 6 p.m.
Pacific Time.
• For USA & Canada: 1-800-LATTICE (528-8423)
• For other locations: +1 503 268 8001
In Asia, call Lattice Applications from 8:30 a.m. to 5:30 p.m. Beijing Time (CST), +0800 UTC. Chinese and English
language only.
• For Asia: +86 21 52989090
E-mail Support
• techsupport@latticesemi.com
• techsupport-asia@latticesemi.com
Local Support
Contact your nearest Lattice Sales Office.
Internet
www.latticesemi.com
References
[1] Lawrence R. Rabiner and Bernard Gold, “Theory and Application of Digital Signal Processing”, Prentice-Hall,
Inc., Englewood Cliffs, NJ, 1975.
LatticeECP
• HB1000, LatticeECP/EC Family Handbook
LatticeECP2/M
• HB1003, LatticeECP2/M Family Handbook
LatticeECP3
• HB1009, LatticeECP3 Family Handbook
LatticeXP2
• DS1009, Lattice XP2 Datasheet
IPUG54_01.9, August 2011
29
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Support Resources
Revision History
Date
Document
Version
IP
Version
Change Summary
—
—
—
Previous Lattice releases.
September 2006
01.2
2.0
Added LatticeECP2 device support.
February 2007
01.3
2.1
Added LatticeECP2M device support.
Updated for ispLEVER 6.1 SP1.
May 2007
01.4
2.2
Added support for LatticeXP2 FPGA family.
February 2008
01.5
2.3
Updated appendices.
May 2009
01.6
2.4
Added support for LatticeECP3, updated figures and tables.
June 2010
01.7
2.4
Divided document into chapters. Added table of contents.
Added Quick Facts tables in Chapter 1, “Introduction.”
Added new content in Chapter 4, “IP Core Generation.”
August 2010
01.8
2.5
Added support for Diamond software throughout.
August 2011
01.9
2.5
Added Output Latency section.
IPUG54_01.9, August 2011
30
FFT Compiler IP Core User’s Guide
Appendix A:
Resource Utilization
This appendix gives resource utilization information for Lattice FPGAs using the FFT Compiler IP core. The IP configurations shown in this chapter were generated using the IPexpress software tool.
IPexpress is the Lattice IP configuration utility, and is included as a standard feature of the Diamond and ispLEVER
design tools. Details regarding the usage of IPexpress can be found in the IPexpress and Diamond or ispLEVER
help system. For more information on the Diamond or ispLEVER design tools, visit the Lattice web site at:
www.latticesemi.com/software.
LatticeECP Devices
Table A-1. Performance and Resource Utilization1
# Points
Operating Mode
SLICEs
LUTs
Registers
sysMEM™
EBRs
sysDSP™
Blocks
fMAX (MHz)
64
Low resource
488
588
705
3
1
213
64
High performance
998
1444
1174
1
2
208
256
Low resource
575
732
772
3
1
212
256
High performance
1424
2060
1636
3
3
200
1024
Low resource
702
957
861
5
1
192
1024
High performance
1781
2589
2056
7
4
182
8192
Low resource
769
1055
913
36
1
189
8192
High performance
2579
3950
2762
38
6
179
1. Performance and utilization data are generated targeting a LFECP33E-5F672C device using Lattice Diamond 1.0 and Synplify Pro D2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade
within the LatticeECP family.
Ordering Part Number
The Ordering Part Number (OPN) for the FFT Compiler for LatticeECP/EC devices is FFT-COMP-E2-U2.
LatticeECP2 Devices
Table A-2. Performance and Resource Utilization1
# Points
Operating Mode
SLICEs
LUTs
Registers
sysMEM
EBRs
sysDSP
Blocks
fMAX (MHz)
64
Low resource
499
608
695
3
1
283
64
High performance
723
1435
1174
1
2
283
256
Low resource
578
745
755
3
1
250
256
High performance
1049
2078
1636
3
3
250
1024
Low resource
666
894
804
3
1
258
1024
High performance
1324
2626
2056
6
4
258
8192
Low resource
787
1123
897
18
1
240
8192
High performance
1952
3880
2762
21
6
240
1. Performance and utilization data are generated targeting a LFE2-50-7F672C device using Lattice Diamond 1.0 and Synplify Pro D2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade
within the LatticeECP2 family.
Ordering Part Number
The Ordering Part Number (OPN) for the FFT Compiler for LatticeECP2 devices is FFT-COMP-P2-U2.
IPUG54_01.9, August 2011
31
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Resource Utilization
LatticeECP2M Devices
Table A-3. Performance and Resource Utilization1
# Points
64
SLICEs
LUTs
Registers
sysMEM
EBRs
sysDSP
Blocks
fMAX (MHz)
Low resource
534
681
730
3
1
286
Operating Mode
64
High performance
989
1437
1174
1
2
243
256
Low resource
616
830
789
3
1
292
256
High performance
1419
2070
1636
3
3
266
1024
Low resource
718
991
839
3
1
273
1024
High performance
1782
2618
2056
6
4
261
8192
Low resource
787
1123
897
18
1
234
8192
High performance
2518
3867
2762
21
6
229
1. Performance and utilization data are generated targeting a LFE2M-35E-7F672C device using Lattice Diamond 1.0 and Synplify Pro D2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade
within the LatticeECP2M family.
Ordering Part Number
The Ordering Part Number (OPN) for the FFT Compiler for LatticeECP2M devices is FFT-COMP-PM-U2.
LatticeECP3 Devices
Table A-4. Performance and Resource Utilization1
# Points
Operating Mode
SLICEs
LUTs
Registers
sysMEM
EBRs
sysDSP
Blocks
fMAX (MHz)
64
Low resource
493
668
727
3
2
285
64
High performance
733
1433
1174
1
2
243
256
Low resource
575
821
783
3
2
255
256
High performance
1065
2074
1636
3
3
266
1024
Low resource
653
964
820
3
2
254
1024
High performance
1329
2602
2056
6
4
261
8192
Low resource
722
1089
870
18
2
258
8192
High performance
1957
3843
2762
21
6
229
1. Performance and utilization data are generated targeting a LFE3-95E-8FN672CES device using Lattice Diamond 1.0 and Synplify Pro D2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade
within the LatticeECP3 family.
Ordering Part Number
The Ordering Part Number (OPN) for the FFT Compiler for LatticeECP3 devices is FFT-COMP-E3-U2.
IPUG54_01.9, August 2011
32
FFT Compiler IP Core User’s Guide
Lattice Semiconductor
Resource Utilization
LatticeXP2 Devices
Table A-5. Performance and Resource Utilization1
# Points
64
SLICEs
LUTs
Registers
sysMEM
EBRs
sysDSP
Blocks
fMAX (MHz)
Low resource
534
681
730
3
1
261
Operating Mode
64
High performance
989
1437
1174
1
2
243
256
Low resource
616
830
789
3
1
226
256
High performance
1419
2070
1636
3
3
266
1024
Low resource
718
991
839
3
1
237
1024
High performance
1782
2618
2056
6
4
261
1. Performance and utilization data are generated targeting a LFXP2-17E-7F484C device using Lattice Diamond 1.0 and Synplify Pro D2009.12L-1 software. Performance may vary when using a different software version or targeting a different device density or speed grade
within the LatticeXP2 family.
Ordering Part Number
The Ordering Part Number (OPN) for the FFT Compiler for LatticeXP2 devices is FFT-COMP-X2-U2.
IPUG54_01.9, August 2011
33
FFT Compiler IP Core User’s Guide