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

名称:256点FFT调用Quartus IP核实现傅里叶变换

软件:Quartus

语言:VHDL

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

演示视频:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=210

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

代码下载:256点FFT调用Quartus IP核实现傅里叶变换 软件:Quartus 语言:VHDL 代码功能:使用VHDL实现256点FFT,调用Quartus IP核实现傅里叶变换名称: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点http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=210

部分代码展示

复制代码
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;

设计文档:

设计文档.doc

  1. 工程文件
  1. 程序文件

FFT IP 核设置

  1. 程序编译
  1. RTL图
  1. Testebcnh
  1. 仿真图
相关推荐
javajenius16 小时前
Quartus II下载安装教程Quartus II 18保姆级安装步骤(附安装包)
其他·fpga开发
颜子鱼17 小时前
FPGA中复位信号的省略
fpga开发
cycf19 小时前
面向模块的综合技术之过约束(十)
fpga开发
颜子鱼19 小时前
FPGA-状态机架构
fpga开发
颜子鱼19 小时前
FPGA-状态机
fpga开发
GateWorld1 天前
FPGA设计中的“幽灵信号:一条走线,两种命运——浅析路径延迟导致的逻辑错误
fpga开发
云雾J视界1 天前
RISC-V开源处理器实战:从Verilog RTL设计到FPGA原型验证
fpga开发·开源·verilog·risc-v·rtl·数字系统
我爱C编程1 天前
【仿真测试】基于FPGA的完整BPSK通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·bpsk·帧同步·viterbi译码·频偏锁定·定时点
tiger1191 天前
FPGA在AI时代的定位?
人工智能·fpga开发
白杨树田2 天前
【EDA软件】【文件合并烧录操作方法】
fpga开发