Altera提供FPGA, CPLD和ASIC解决方案
  • 下载
  • 文档资料
  • 产品
    • 器件
    • 设计软件
    • IP
    • 开发套件/电缆
    • 设计和支持服务
    • 资料
  • 最终市场
    • 汽车
    • 广播
    • 计算机和存储
    • 消费类
    • 工业
    • 医疗
    • 军事和航空航天
    • 测试和测量
    • 无线通信
    • 有线通信
  • 技术中心
    • DSP
    • 外部存储器
    • 嵌入式处理
    • 收发器
    • 并行I/O
    • 信号完整性
    • 系统集成
  • 教育与活动
    • 培训中心
    • 大学计划
    • 网络研讨会和视频
    • 演示
    • 活动日程
  • 支持
    • 设计和支持资源指南
    • 知识数据库
    • 器件
    • 软件
    • IP
    • 开发套件和电缆
    • 设计范例
    • 参考设计
    • 下载
    • 用户社区和论坛
    • mySupport
  • 公司介绍
    • 关于我们
    • 客户成功案例
    • 合作伙伴
    • 新闻中心
    • 投资者关系
    • 保护环境
    • 职位招聘
    • 联系我们
  • 在线购买
    • 器件
    • 设计软件
    • 开发和教育套件
    • 电缆和可编程硬件
    • IP
  • 全部页面
  • 产品型号
  • 知识数据库
  • 支持&技术资料
  • 论坛 & Wiki

Verilog: FFT With 32K-Point Transform Length

主页 > 支持 > 设计范例 > Verilog HDL > Verilog: FFT With 32K-Point Transform Length

This example describes a 32K-point fast Fourier transform (FFT) using the Altera® FFT IP MegaCore® . The FFT is a discrete Fourier transform (DFT) algorithm which reduces the number of computation needed from O(N2) to O(NlogN) by decomposition. The DFT of a sequence x(n) is given by the following equation:

Equation for the DFT of a sequence x(n) where k = 0, 1, … N-1 and N is the transform length.

In this design example, the transform length, N, is 32768. Using the decimation in time (DIT) method, the design breaks down the input sequence into odd and even samples which feeds into the two individual 16K-point FFT blocks implemented in parallel using the FFT IP MegaCore. The results from the FFT IP MegaCore are recombined and reordered to obtain the final FFT output. This is shown in Figure 1. Similar to the FFT IP MegaCore, the design example uses Atlantic compliant input and output interfaces.

Download the files used in this example:

  • Download fft_32K.zip
  • Download FFT 32K-Point README File

The use of this design is governed by, and subject to, the terms and conditions of the Altera Hardware Reference Design License Agreement.

Files in the zip download include:

  • fft_32K.v—Top level design file implementing the 32K-point FFT
  • parse_fft_input.v—Reorders the input sample into even and odd samples to feed into the two smaller 16K-point FFT blocks
  • fft_small.v—Wrapper file generated by the FFT IP MegaCore.  The core is configured to implement transform length of 16K, and it uses the streaming I/O data flow structure.
  • combine_fft.v—Recombines the output of the individual 16K-point FFT blocks using the appropriate twiddle factors
  • fft_32K_streaming_tb.v—Testbench for RTL simulation
  • fft_32K_streaming_vo_msim.tcl—TCL script to automate the RTL simulation process in ModelSim
  • fft_32K_tb.m—MATLAB model to verify the RTL simulation results

Figure 1 shows the top-level diagram of the 32K-point FFT design example.

Figure 1. Top-Level Diagram of 32K-Point FFT Design

Figure 1. Top-Level Diagram of 32K Point FFT Design
View Full Size

Table 1 lists the ports and gives a description for each.

Table 1. 32K-Point FFT Port Listing
Port Name Type Description
data_real_in[15:0], data_imag_in[15:0] Input 16-bit complex data inputs
clk Input FFT system clock
reset Input Active high reset
master_sink_dav Input Master sink data available signal: Asserted by the FFT slave data source to indicate the availability of data sample for input to the FFT function
master_sink_ena Output Master sink write enable signal: Asserted by the FFT function to indicate that data can be written into the function
master_sink_sop Input Input start of packet: Indicates to the FFT function the start of an input data block. Should be asserted for one clock cycle synchronous with the first input data sample
fft_real_out[15:0], fft_imag_out[15:0] Output 16-bit complex data outputs
exponent_out[5:0] Output Signed block exponent: Accounts for scaling of internal signal values during FFT computation
master_source_dav Input Asserted by the slave sink on the output of the FFT function to indicate that it can accept one block of output samples
master_source_ena Output Master source enable: Asserted by the FFT function when data is available to be output by the FFT
master_source_sop Output Output start of packet: Asserted on first output sample of each block
master_source_eop Output Output end of packet: Asserted on last output sample of each block

Related Links

For more information on related features used in this design example in your project, go to:

  • Fast Fourier Transform (FFT) MegaCore
  • FFT MegaCore Function User Guide (PDF)

Design Examples Disclaimer

These design examples may only be used within Altera Corporation devices and remain the property of Altera. They are being provided on an “as-is” basis and as an accommodation; therefore, all warranties, representations, or guarantees of any kind (whether express, implied, or statutory) including, without limitation, warranties of merchantability, non-infringement, or fitness for a particular purpose, are specifically disclaimed. Altera expressly does not recommend, suggest, or require that these examples be used in combination with any other product not provided by Altera.

给本页评分


  • 产品
    • MAX/MAX II
    • Stratix/Stratix GX
    • Nios II
  • 功能
    • 算法
    • 存储器
    • 总线及I/O
    • 逻辑
    • 接口与外设
    • DSP
    • 通信
    • PLL & Clocking
  • 设计输入方法
    • Quartus II软件工程
    • Tcl
    • VHDL
    • Verilog HDL
    • C Code 范例
    • DSP Builder
    • TimeQuest
    • 片内调试
      • SignalTap II
  • 仿真工具
    • Mentor Graphics ModelSim
    • Cadence NCsim
    • Synopsys VCS
  • 旧范例
    • 图形编辑器
    • AHDL
    请填写反馈意见
    产品 | 最终市场 | 技术中心 | 教育与活动 | 支持 | 公司介绍 | 在线购买
    联系我们 | 站点帮助 | 网站导航 | 个人信息 | 法律申明
    Copyright © 1995-2010 Altera International Limited. 版权所有
    Altera Forum
    Altera
    论坛
    RSS
    RSS
    Flickr
    Flickr
    Email Updates
    电邮新闻