名称:调用VIVADO FFT IP核进行FFT计算Verilog代码Vivado仿真(文末获取)
软件:Vivado
语言:Verilog
代码功能:调用VIVADO FFT IP核进行FFT计算
1. 工程文件
2. 程序文件
3. Testbench
4. 仿真图
Matlab计算
输入实部虚部
输出FFT结果,实部虚部,与matlab计算一致,因为FFT的IP核是整数计算,因此存在一点误差,是正常现象。
部分代码展示:
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2019/05/24 21:27:49 // Design Name: // Module Name: fft_IP_1024 // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module fft_IP_1024( input clk_in,//时钟 input data_in_en,//数据输入使能 input last_data,//输入最后一个数据信号 input [15:0] data_in_real,//输入的16位数据实部 input [15:0] data_in_imag,//输入的16位数据虚部 output data_out_en,//输出使能 output [31:0] data_out//输出32位FFT结果,输出数据,高16位虚部,低16位实部 ); // sample_data(15 downto 0) := data(index).re; -- real data // sample_data(31 downto 16) := data(index).im; -- imaginary data wire m_axis_data_tvalid; xfft_1024 U_xfft_1024 ( .aclk(clk_in), // input wire aclk .s_axis_config_tdata(8'd1), //1表示FFT,0表示逆fft .s_axis_config_tvalid(1'b1), // 1表示s_axis_config_tdata有效 .s_axis_config_tready( ), // output wire s_axis_config_tready .s_axis_data_tdata({data_in_imag,data_in_real}), // 输入实部和虚部,高16位虚部,低16位实部 .s_axis_data_tvalid(data_in_en), // 输入数据有效使能 .s_axis_data_tready( ), // output wire s_axis_data_tready .s_axis_data_tlast(last_data), // 输入最后一个数据结束 .m_axis_data_tdata(data_out), // 输出数据,高16位虚部,低16位实部
源代码
扫描文章末尾的公众号二维码