1024点FFT计算波形频率设计Verilog代码VIVADO仿真
·
名称:1024点FFT计算波形频率设计Verilog代码VIVADO仿真(文末获取)
软件:VIVADO
语言:Verilog
代码功能:
1024点FFT计算波形频率
1、输入位宽为10bit的AD采样模拟信号波形数据
2、进行FFT计算(调用IP核)
3、输出计算的频谱,找到最大值所在的位置换算为频率
1. 工程文件

2. 程序文件
1024点

3. Testbench

4. 仿真图



部分代码展示:
module FFT_ctrl( input clk_in,//时钟100M input rst_p,//复位 input [9:0] wr_data,//AD采样的10bit数据 output clk_AD,//AD采样时钟 output [36:0] max_data//最大值对应的频率 ); parameter point=1024;//根据实际点数修改 parameter resolve=9765625;//10000000000/point=频率分辨率*1000,采样时钟除以点数,根据实际点数修改 wire clk;//采样时钟10M assign clk_AD=clk; clk_wiz_0 i_clk_wiz_0 ( // Clock in ports .clk_in1(clk_in), // input clk_in1 // Clock out ports .clk_out1(clk)); // output clk_out1 //fifo 空满信号 wire empty; wire almost_empty; wire full; reg wr_en=0; reg rd_en=0; wire [9:0] rd_data; wire last; reg valid=0; wire [31:0] fft_dout; wire fft_dout_tvalid; wire signed [11:0] fft_dout_re; wire signed [11:0] fft_dout_im; //控制FIFO写使能 always@(posedge clk or posedge rst_p) if(rst_p) wr_en<=0; else if(empty==1) wr_en<=1; else if(full==1) wr_en<=0; //控制FIFO读使能 always@(posedge clk or posedge rst_p) if(rst_p) rd_en<=0; else if(full==1 && fft_dout_tvalid==0) rd_en<=1; else if(almost_empty==1) rd_en<=0;
源代码
点击下方的公众号卡片获取
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)