本帖最后由 郑青松001 于 2014-3-14 14:29 编辑
前言: 又到周五,献上一贴
(发现以前发的51的帖子还有比较多人回,FPGA的好冷清..................),OK。。。进入主题
大家都知道用FPGA实现FFT运算很快.,今天贴上一个FFT运算的使用.
一: 创建项目工程(这就跳过了)
二: 新建FFT宏
2.1 新建宏--OK
2.2设置参数parameter
2.2.1选择器件类型Cyclone II
2.2.2设置FFT运算长度1024
2.2.3设置数据精度12位
2.2.4设置旋转因子精度12位
2.3:设置参数Achtecure
2.3.1 设置数据流突发输出or持续数据流.
2.4:设置Implementa
tion
2.4.1主要设置选项,全局时钟,乘法器加法器的选择等
2.5:设置
仿真
2.5.1勾选Generate Simulation model & Language选择 & 勾选Generate netlist 生成仿真网表
2.6:OK..Step3 Generate------------->>>>至此宏建立完成
三: 现在得就把这个IP核给控制起来,这就像一块回做FFT运算的芯片控制得满足它的时许要求
下面给出控制状态机
//------控制状态机------------------------
parameter frame=13'd1024; //FFT采样点数
parameter Idle=3'd0,
Go=3'd1,
Assert_eop=3'd2,
Wait_state=3'd3;
reg[2:0] Current_state,
Next_state;
reg[11:0] counter,
next_counter;
always@(*) begin
case(Current_state)
Idle: begin
Next_counter<=0;
if(sk_ready) begin
Next_state<=Go;
end
else begin
Next_state<=Idle;
end
end
Go: begin
if(counter
Next_state<=Go;
Next_counter<=counter+1'b1;
end
else begin
Next_state<=Assert_eop;
Next_counter<=counter+1'b1;
end
end
Assert_eop: begin
next_counter<=0;
Next_state<=Wait_state;
end
Wait_state: begin
if(sk_ready) begin
next_counter<=0;
Next_state<=go;
end
else begin
next_counter<=counter;
Next_state<=wait_state;
end
end
endcase
end
四:既然把这个IP核当成一块芯片怎么可能没有管脚说明时序逻辑呢....OK----------->>>>补上
4.1.1附件FFT-datasheet
五: 仿真
5.1.1完成之后就得进行仿真了,设置仿真选择仿真程序
5.1.2新建仿真文件,放心testbench在生成IP核的时候已经生成了
5.1.3添加仿真文件-----之后进行全编译
5.1.4 OK,选择前后仿真,即RTL功能or时序仿真
5.1.4之后的都是自动的了.....至此------------>>>>>>>>仿真结束
六:硬件测试 --------->>>>>>>>>OVER<<<<<<<<<<
第一期:Verilog状态机的合理运用
https://bbs.elecfans.com/forum.p ... &fromuid=849251
(出处: 中国
电子技术
论坛)
19