FPGA实现2048FFT的verilog源码和matlab源码分享-FPGA CPLD资料源码分享论坛-FPGA CPLD-ChipDebug

FPGA实现2048FFT的verilog源码和matlab源码分享

该帖子部分内容已隐藏
付费阅读
已售 4
3积分
此内容为付费阅读,请付费后查看

信号

方向

描述

clk

输入

FFT系统时钟信号

reset

输入

FFT高有效同步复位信号

master_sink_dav

输入

子发送器数据有效信号标志位,提示输入数据有待FFT

master_sink_ena

输出

主接收器写使能信号,提示子发送器可输入数据

master_sink_sop

输入

输入数据包起始位指示信号,从此时开始接收数据

inv_i

输入

FFT转换方向控制信号:0:FFT;1:IFFT

date_real_in[M-1…0]

输入

输入数据实部,M为输入数据位宽

data_imag_in[M-1…0]

输入

输入数据虚部

fft_real_out[M-1…0]

输出

输出数据实部

fft_imag_out[M-1…0]

输出

输出数据虚部

exponent_out[5…0]

输出

有符号数据块指数

master_source_dav

输入

子接收器接收有效指示信号

master_source_cna

输出

主发送器使能信号

master_source_sop

输出

输出数据包起始位

master_source_eop

输出

输出数据包结束位

具体的工作流程简述如下:FFT子模块复位后,数据源将master_sink_dav置位,表示有采样数据等待输入;作为回应,FFT Core将master_sink_ena置位,表示可以接收输入数据;当master_sink_sop置位,表示输入数据块的起始,同时数据源加载第一个复数数据;下一个时钟,master_sink_sop被清零,输入数据按照自然顺序被加入。输入数据达到2048点时,系统自然启动FFT运算。通过inv_i信号的置位/清零可以改变单个数据块的FFT转换方向,inv_i信号必须和master_sink_sop信号严格同步。当FFT转换结束时,子接收器已经将master_source_dav信号置位,表示子接收器可以接收FFT的转换结果;同时,master_source_ena信号置位,FFTCore按照自然顺序输出运算结果;在输出过程中,master_source_sop和master_source_eop信号被置位,表示输出数据块的起始和结束。

下图是前置发送数据端与FFT模块通信的时序图:2219a6b83e103737

下图是FFT模块与后置接受数据端通信的时序图:

f6fa556f6a103753

 

FFT模块总时序图如下所示:

16812da090103950

溢出检测,超过1位溢出值右移1位,超过2位溢出值右移2位,并且四舍五入最低位。

只要检测到溢出就要把本级的蝶形运算值全部移位。

目录内容:

├─design
│ bfly_r2dit.v
│ fft_2048.v
│ fft_ctrl.v
│ input_sw.v
│ output_sw.v
│ overflow_detect.v
│ shift_process.v

├─document
│ fft说明文档.docx

├─matlab_sim
│ cosmif.mif
│ FFT_1024_NEW.m
│ gen_wn.m
│ immif.mif
│ miffile.m
│ remif.mif

├─quartus_pro
│ │ fft_2048.ipinfo
│ │ fft_2048.qpf
│ │ fft_2048.qsf
│ │ fft_2048.qws
│ │ ram1024x24_dp.qip
│ │ rom512x10_cos_sp.qip
│ │ rom512x10_sin_sp.qip
│ │
│ ├─db
│ │ .cmp.kpt
│ │ altsyncram_h1a1.tdf
│ │ altsyncram_i1a1.tdf
│ │ altsyncram_skq1.tdf
│ │ fft_2048.(0).cnf.cdb
│ │ fft_2048.(0).cnf.hdb
│ │ fft_2048.(1).cnf.cdb
│ │ fft_2048.(1).cnf.hdb
│ │ fft_2048.(10).cnf.cdb
│ │ fft_2048.(10).cnf.hdb
│ │ fft_2048.(11).cnf.cdb
│ │ fft_2048.(11).cnf.hdb
│ │ fft_2048.(12).cnf.cdb
│ │ fft_2048.(12).cnf.hdb
│ │ fft_2048.(13).cnf.cdb
│ │ fft_2048.(13).cnf.hdb
│ │ fft_2048.(14).cnf.cdb
│ │ fft_2048.(14).cnf.hdb
│ │ fft_2048.(15).cnf.cdb
│ │ fft_2048.(15).cnf.hdb
│ │ fft_2048.(16).cnf.cdb
│ │ fft_2048.(16).cnf.hdb
│ │ fft_2048.(17).cnf.cdb
│ │ fft_2048.(17).cnf.hdb
│ │ fft_2048.(18).cnf.cdb
│ │ fft_2048.(18).cnf.hdb
│ │ fft_2048.(2).cnf.cdb
│ │ fft_2048.(2).cnf.hdb
│ │ fft_2048.(3).cnf.cdb
│ │ fft_2048.(3).cnf.hdb
│ │ fft_2048.(4).cnf.cdb
│ │ fft_2048.(4).cnf.hdb
│ │ fft_2048.(5).cnf.cdb
│ │ fft_2048.(5).cnf.hdb
│ │ fft_2048.(6).cnf.cdb
│ │ fft_2048.(6).cnf.hdb
│ │ fft_2048.(7).cnf.cdb
│ │ fft_2048.(7).cnf.hdb
│ │ fft_2048.(8).cnf.cdb
│ │ fft_2048.(8).cnf.hdb
│ │ fft_2048.(9).cnf.cdb
│ │ fft_2048.(9).cnf.hdb
│ │ fft_2048.asm.qmsg
│ │ fft_2048.asm.rdb
│ │ fft_2048.asm_labs.ddb
│ │ fft_2048.cbx.xml
│ │ fft_2048.cmp.bpm
│ │ fft_2048.cmp.cdb
│ │ fft_2048.cmp.hdb
│ │ fft_2048.cmp.idb
│ │ fft_2048.cmp.logdb
│ │ fft_2048.cmp.rdb
│ │ fft_2048.cmp_merge.kpt
│ │ fft_2048.cycloneive_io_sim_cache.45um_ff_1200mv_0c_fast.hsd
│ │ fft_2048.cycloneive_io_sim_cache.45um_ss_1200mv_85c_slow.hsd
│ │ fft_2048.db_info
│ │ fft_2048.fit.qmsg
│ │ fft_2048.hier_info
│ │ fft_2048.hif
│ │ fft_2048.ipinfo
│ │ fft_2048.lpc.html
│ │ fft_2048.lpc.rdb
│ │ fft_2048.lpc.txt
│ │ fft_2048.map.ammdb
│ │ fft_2048.map.bpm
│ │ fft_2048.map.cdb
│ │ fft_2048.map.hdb
│ │ fft_2048.map.kpt
│ │ fft_2048.map.logdb
│ │ fft_2048.map.qmsg
│ │ fft_2048.map.rdb
│ │ fft_2048.map_bb.cdb
│ │ fft_2048.map_bb.hdb
│ │ fft_2048.map_bb.logdb
│ │ fft_2048.pre_map.hdb
│ │ fft_2048.pti_db_list.ddb
│ │ fft_2048.root_partition.map.reg_db.cdb
│ │ fft_2048.routing.rdb
│ │ fft_2048.rtlv.hdb
│ │ fft_2048.rtlv_sg.cdb
│ │ fft_2048.rtlv_sg_swap.cdb
│ │ fft_2048.sgdiff.cdb
│ │ fft_2048.sgdiff.hdb
│ │ fft_2048.sld_design_entry.sci
│ │ fft_2048.sld_design_entry_dsc.sci
│ │ fft_2048.smart_action.txt
│ │ fft_2048.tiscmp.fastest_slow_1200mv_85c.ddb
│ │ fft_2048.tiscmp.fast_1200mv_0c.ddb
│ │ fft_2048.tiscmp.slow_1200mv_85c.ddb
│ │ fft_2048.tis_db_list.ddb
│ │ fft_2048.tmw_info
│ │ fft_2048.vpr.ammdb
│ │ logic_util_heursitic.dat
│ │ mult_68n.tdf
│ │ prev_cmp_fft_2048.qmsg
│ │
│ ├─greybox_tmp
│ │ cbx_args.txt
│ │
│ ├─incremental_db
│ │ │ README
│ │ │
│ │ └─compiled_partitions
│ │ fft_2048.db_info
│ │ fft_2048.root_partition.cmp.ammdb
│ │ fft_2048.root_partition.cmp.cdb
│ │ fft_2048.root_partition.cmp.dfp
│ │ fft_2048.root_partition.cmp.hdb
│ │ fft_2048.root_partition.cmp.logdb
│ │ fft_2048.root_partition.cmp.rcfdb
│ │ fft_2048.root_partition.map.cdb
│ │ fft_2048.root_partition.map.dpi
│ │ fft_2048.root_partition.map.hbdb.cdb
│ │ fft_2048.root_partition.map.hbdb.hb_info
│ │ fft_2048.root_partition.map.hbdb.hdb
│ │ fft_2048.root_partition.map.hbdb.sig
│ │ fft_2048.root_partition.map.hdb
│ │ fft_2048.root_partition.map.kpt
│ │
│ ├─ipcore_dir
│ │ │ cosmif.mif
│ │ │ dds_ram_8x256.qip
│ │ │ dds_ram_8x256.v
│ │ │ immif.mif
│ │ │ mult10x10.qip
│ │ │ mult10x10.v
│ │ │ ram1024x24_dp.qip
│ │ │ ram1024x24_dp.v
│ │ │ remif.mif
│ │ │ rom512x10_cos_sp.qip
│ │ │ rom512x10_cos_sp.v
│ │ │ rom512x10_sin_sp.qip
│ │ │ rom512x10_sin_sp.v
│ │ │
│ │ └─greybox_tmp
│ │ │ cbx_args.txt
│ │ │
│ │ └─greybox_tmp
│ └─output_files
│ fft_2048.asm.rpt
│ fft_2048.done
│ fft_2048.fit.rpt
│ fft_2048.fit.smsg
│ fft_2048.fit.summary
│ fft_2048.flow.rpt
│ fft_2048.jdi
│ fft_2048.map.rpt
│ fft_2048.map.summary
│ fft_2048.pin
│ fft_2048.sof

└─sim
│ cosmif.mif
│ cosmif.ver
│ immif.mif
│ immif.ver
│ ppp.cr.mti
│ ppp.mpf
│ remif.mif
│ remif.ver
│ run.do
│ tb_fft_2048.v
│ vsim.wlf
│ wave.do

├─altera_lib
│ 220model.v
│ altera_mf.v
│ altera_primitives.v
│ cycloneive_atoms.v

└─work
│ _info
│ _lib.qdb
│ _lib1_21.qdb
│ _lib1_21.qpg
│ _lib1_22.qdb
│ _lib1_22.qpg
│ _vmake

├─@_opt
│ _lib.qdb
│ _lib.qdx
│ _lib1_0.qdb
│ _lib1_0.qpg
│ _lib2_0.qdb
│ _lib2_0.qdx
│ _lib2_0.qpg
│ _lib3_0.qdb
│ _lib3_0.qdx
│ _lib3_0.qpg

└─@_opt1
_lib.qdb
_lib.qdx
_lib1_0.qdb
_lib1_0.qpg
_lib2_0.qdb
_lib2_0.qdx
_lib2_0.qpg
_lib3_0.qdb
_lib3_0.qdx
_lib3_0.qpg

下载链接:

请登录后发表评论