名稱:64點(diǎn)FFT快速傅里葉變換Radix4(代碼在文末付費(fèi)下載)
軟件:Quartus
語(yǔ)言: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
閱讀全文