• 方案介紹
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

64點(diǎn)FFT代碼及報(bào)告,Radix4快速傅里葉變換

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

名稱:64點(diǎn)FFT快速傅里葉變換Radix4(代碼在文末付費(fèi)下載)

軟件:Quartus

語言:Verilog

代碼功能:

使用verilog實(shí)現(xiàn)64-point Pipeline FFT處理器。

FPGA代碼資源下載網(wǎng):hdlcode.com

部分代碼展示

module?fft64_top(
//input
?????????????????clk???????????,
?????????????????rst_n???????????,
?????????????????data_in_valid?,
?????????????????data_in_re????,
?????????????????data_in_im????,
//output
?????????????????data_out_valid,
?????????????????data_out_re???,
?????????????????data_out_im???,
?????????????????out_index?
?????????????????);
?????????????????
parameter?DATAWIDTH?=?10?;
input???????????????????????????clk?????????????;????????????
input???????????????????????????rst_n?????????????;??????????????
input???????????????????????????data_in_valid???;????
input???[DATAWIDTH-1:0]?????????data_in_re??????;??????????
input???[DATAWIDTH-1:0]?????????data_in_im??????;??????
output??????????????????????????data_out_valid??;
output??[DATAWIDTH-1:0]?????????data_out_re?????;
output??[DATAWIDTH-1:0]?????????data_out_im?????;
output??[5:0]???????????????????out_index???????;
reg????????????????????????????data_out_valid??;
reg????[DATAWIDTH-1:0]?????????data_out_re?????;
reg????[DATAWIDTH-1:0]?????????data_out_im?????;
reg????[5:0]???????????????????out_index???????;
wire????????????????????????????data_out_valid_tmp??;
wire????[DATAWIDTH-1:0]?????????data_out_re_tmp?????;
wire????[DATAWIDTH-1:0]?????????data_out_im_tmp?????;
wire????[5:0]???????????????????out_index_tmp???????;
wire????????????????????????????data_out_valid_st1??;
wire????[DATAWIDTH-1:0]?????????data_out_re_st1?????;
wire????[DATAWIDTH-1:0]?????????data_out_im_st1?????;
wire????????????????????????????data_out_valid_st2??;
wire????[DATAWIDTH-1:0]?????????data_out_re_st2?????;
wire????[DATAWIDTH-1:0]?????????data_out_im_st2?????;
always??@(posedge?clk?or?negedge?rst_n)
??if?(!rst_n)
????data_out_valid?<=?1'b0???;
??else
????data_out_valid?<=?data_out_valid_tmp??;
????
always??@(posedge?clk?or?negedge?rst_n)
??if?(!rst_n)
????data_out_re?<=?{DATAWIDTH{1'b0}}???;
??else
????data_out_re?<=?data_out_re_tmp??;
????
always??@(posedge?clk?or?negedge?rst_n)
??if?(!rst_n)
????data_out_im?<=?{DATAWIDTH{1'b0}}???;
??else
????data_out_im?<=?data_out_im_tmp??;
????
????
always??@(posedge?clk?or?negedge?rst_n)
??if?(!rst_n)
????out_index?<=?6'b0???;
??else
????out_index?<=?out_index_tmp??;
????
????
fft4_st1??????u_fft4_st1_top(
//input
?????????????????????????????.clk(clk),
?????????????????????????????.rst_n(rst_n),
?????????????????????????????.data_in_valid(data_in_valid),
?????????????????????????????.data_in_re(data_in_re),
?????????????????????????????.data_in_im(data_in_im),
//output?????????????????????
?????????????????????????????.data_out_valid_st1(data_out_valid_st1),
?????????????????????????????.data_out_re_st1(data_out_re_st1),
?????????????????????????????.data_out_im_st1(data_out_im_st1)
?????????????????????????????);
fft4_st2????????u_fft4_st2_top(
//input
???????????????????????????????.clk??????????(clk)??????????????????,
???????????????????????????????.rst_n????????(rst_n)??????????????????,
???????????????????????????????.data_in_valid(data_out_valid_st1)???,
???????????????????????????????.data_in_re???(data_out_re_st1)??????,
???????????????????????????????.data_in_im???(data_out_im_st1)??????,
//output???????????????????????
???????????????????????????????.data_out_valid_st2(data_out_valid_st2)????,
???????????????????????????????.data_out_re_st2???(data_out_re_st2)???????,
???????????????????????????????.data_out_im_st2???(data_out_im_st2)???????
???????????????????????????????);
????????????????
????????????????
bu4_st3???????u_bu4_st3_top(
//input
??????????????????????????????.clk???????????(clk)??????????????????????,
??????????????????????????????.rst_n?????????(rst_n)????????????????????,
??????????????????????????????.data_in_valid?(data_out_valid_st2)???????,
??????????????????????????????.data_in_re????(data_out_re_st2)??????????,
??????????????????????????????.data_in_im????(data_out_im_st2)??????????,
//output??????????????????????
??????????????????????????????.data_out_valid?(data_out_valid_tmp)??,
??????????????????????????????.data_out_re????(data_out_re_tmp???)??,
??????????????????????????????.data_out_im????(data_out_im_tmp???)???
??????????????????????????????);
????????????????
out_index?????u_out_index_top(???????????????????????????????
//input?????????????????????????????????????????
??????????????????????????????.clk???????(clk)?????,????
??????????????????????????????.rst_n?????(rst_n)???,????
??????????????????????????????.start?????(data_out_valid_tmp)???,????
//output????????????????????????????????????
??????????????????????????????.out_index?(out_index_tmp)????
??????????????????????????????);????????????
??????????????????????????????
??????????????????????????????
endmodule

設(shè)計(jì)報(bào)告(可下載):

64-point_Radix4_Pipeline_FFT.doc

報(bào)告.png

fft.png

相關(guān)推薦