• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

256点FFT调用Quartus IP核实现VHDL傅里叶变换

05/07 10:37
930
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-23102122393L53.doc

共1个文件

名称:256点FFT调用Quartus IP核实现傅里叶变换(代码在文末付费下载)

软件:Quartus

语言:VHDL

代码功能:使用VHDL实现256点FFT,调用Quartus IP核实现傅里叶变换

演示视频:

FPGA代码verilog/VHDL代码资源下载网:www.hdlcode.com

部分代码展示

library?ieee;?
use?ieee.std_logic_1164.all;?
--256点FFT设计,16bit输入
entity?fft256?is?port(?
?clk?:?IN?STD_LOGIC;?--时钟
?reset_n?:?IN?STD_LOGIC;?--复位
?sink_real?:?IN?STD_LOGIC_VECTOR?(15?DOWNTO?0);?--16bit输入数据
?source_error?:?OUT?STD_LOGIC_VECTOR?(1?DOWNTO?0);?--FFT?IP核输出的报错指示信号
?source_sop?:?OUT?STD_LOGIC;?----FFT?IP核输出的数据第一位指示信号
?source_eop?:?OUT?STD_LOGIC;?----FFT?IP核输出的数据最后一位指示信号
?source_valid?:?OUT?STD_LOGIC;?--FFT?IP核输出的数据有效指示信号
?source_exp?:?OUT?STD_LOGIC_VECTOR?(5?DOWNTO?0);?--FFT?IP核输出的指示信号
?source_real?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0);?--FFT变换输出的实部
?source_imag?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0)?--FFT变换输出的虚部
?);?
end?fft256;?
architecture?one?of?fft256?is?
--例化FFT?IP?核
component?fft_burst?
?PORT?(?
?clk?:?IN?STD_LOGIC;?
?reset_n?:?IN?STD_LOGIC;?
?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_exp?:?OUT?STD_LOGIC_VECTOR?(5?DOWNTO?0);?
?source_real?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0);?
?source_imag?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0)?
?);?
END?component;?
--例化FFT?IP核控制模块
component?ctrl_fft?port(?
?reset_n?:?in?std_logic;?
?clk?:?in?std_logic;?
?sink_ready?:?in?std_logic;?
?sink_sop?:?out?std_logic;?
?sink_eop?:?out?std_logic;?
?sink_valid?:?out?std_logic);?
end?component;?
--定义连接信号
signal?sink_valid_i,sink_eop_i,sink_sop_i,sink_ready_i?:?std_logic;?
begin?
--调用FFT?IP核
u1?:?fft_burst?port?map(?
?clk?=>?clk,?--时钟
?reset_n?=>?reset_n,?--复位
?inverse?=>?'0',?
?sink_valid?=>?sink_valid_i,?--每帧输入数据有效时为高电平
?sink_sop?=>?sink_sop_i,?--用来指示每帧输入数据的第一个数据
?sink_eop?=>?sink_eop_i,--用来指示每帧输入数据的最后一个数据?
?sink_real?=>?sink_real,?--16bit输入数据
?sink_imag?=>?(others=>'0'),?
?sink_error?=>?"00",?
?source_ready?=>?'1',?
?sink_ready?=>?sink_ready_i,??--指示可以输入待变换的数据
?source_error?=>?source_error,?--FFT?IP核输出的报错指示信号
?source_sop?=>?source_sop,?--FFT?IP核输出的数据第一位指示信号
?source_eop?=>?source_eop,?--FFT?IP核输出的数据最后一位指示信号
?source_valid?=>?source_valid,?--FFT?IP核输出的数据有效指示信号
?source_exp?=>?source_exp,?--FFT?IP核输出的指示信号
?source_real?=>?source_real,?--FFT变换输出的实部
?source_imag?=>?source_imag?--FFT变换输出的虚部
?);?
?
--调用FFT?IP核控制模块
u2?:?ctrl_fft?port?map(?
?reset_n?=>?reset_n,?
?clk?=>?clk,?
?sink_ready?=>?sink_ready_i,?--指示可以输入待变换的数据?
?sink_sop?=>?sink_sop_i,--用来指示每帧输入数据的第一个数据?
?sink_eop?=>?sink_eop_i,--用来指示每帧输入数据的最后一个数据?
?sink_valid?=>?sink_valid_i?--每帧输入数据有效时为高电平
?);?
end?one;

设计文档:

1. 工程文件

2. 程序文件

FFT IP 核设置

3. 程序编译

4. RTL图

5. Testebcnh

6. 仿真图

  • 1-23102122393L53.doc
    下载

相关推荐