名稱:256點(diǎn)FFT調(diào)用Quartus IP核實(shí)現(xiàn)傅里葉變換(代碼在文末付費(fèi)下載)
軟件:Quartus
語言:VHDL
代碼功能:使用VHDL實(shí)現(xiàn)256點(diǎn)FFT,調(diào)用Quartus IP核實(shí)現(xiàn)傅里葉變換
演示視頻:
FPGA代碼verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com
部分代碼展示
library?ieee;? use?ieee.std_logic_1164.all;? --256點(diǎn)FFT設(shè)計(jì),16bit輸入 entity?fft256?is?port(? ?clk?:?IN?STD_LOGIC;?--時(shí)鐘 ?reset_n?:?IN?STD_LOGIC;?--復(fù)位 ?sink_real?:?IN?STD_LOGIC_VECTOR?(15?DOWNTO?0);?--16bit輸入數(shù)據(jù) ?source_error?:?OUT?STD_LOGIC_VECTOR?(1?DOWNTO?0);?--FFT?IP核輸出的報(bào)錯(cuò)指示信號(hào) ?source_sop?:?OUT?STD_LOGIC;?----FFT?IP核輸出的數(shù)據(jù)第一位指示信號(hào) ?source_eop?:?OUT?STD_LOGIC;?----FFT?IP核輸出的數(shù)據(jù)最后一位指示信號(hào) ?source_valid?:?OUT?STD_LOGIC;?--FFT?IP核輸出的數(shù)據(jù)有效指示信號(hào) ?source_exp?:?OUT?STD_LOGIC_VECTOR?(5?DOWNTO?0);?--FFT?IP核輸出的指示信號(hào) ?source_real?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0);?--FFT變換輸出的實(shí)部 ?source_imag?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0)?--FFT變換輸出的虛部 ?);? end?fft256;? architecture?one?of?fft256?is? --例化FFT?IP?核 component?fft_burst? ?PORT?(? ?clk?:?IN?STD_LOGIC;? ?reset_n?:?IN?STD_LOGIC;? ?inverse?:?IN?STD_LOGIC;? ?sink_valid?:?IN?STD_LOGIC;? ?sink_sop?:?IN?STD_LOGIC;? ?sink_eop?:?IN?STD_LOGIC;? ?sink_real?:?IN?STD_LOGIC_VECTOR?(15?DOWNTO?0);? ?sink_imag?:?IN?STD_LOGIC_VECTOR?(15?DOWNTO?0);? ?sink_error?:?IN?STD_LOGIC_VECTOR?(1?DOWNTO?0);? ?source_ready?:?IN?STD_LOGIC;? ?sink_ready?:?OUT?STD_LOGIC;? ?source_error?:?OUT?STD_LOGIC_VECTOR?(1?DOWNTO?0);? ?source_sop?:?OUT?STD_LOGIC;? ?source_eop?:?OUT?STD_LOGIC;? ?source_valid?:?OUT?STD_LOGIC;? ?source_exp?:?OUT?STD_LOGIC_VECTOR?(5?DOWNTO?0);? ?source_real?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0);? ?source_imag?:?OUT?STD_LOGIC_VECTOR?(15?DOWNTO?0)? ?);? END?component;? --例化FFT?IP核控制模塊 component?ctrl_fft?port(? ?reset_n?:?in?std_logic;? ?clk?:?in?std_logic;? ?sink_ready?:?in?std_logic;? ?sink_sop?:?out?std_logic;? ?sink_eop?:?out?std_logic;? ?sink_valid?:?out?std_logic);? end?component;? --定義連接信號(hào) signal?sink_valid_i,sink_eop_i,sink_sop_i,sink_ready_i?:?std_logic;? begin? --調(diào)用FFT?IP核 u1?:?fft_burst?port?map(? ?clk?=>?clk,?--時(shí)鐘 ?reset_n?=>?reset_n,?--復(fù)位 ?inverse?=>?'0',? ?sink_valid?=>?sink_valid_i,?--每幀輸入數(shù)據(jù)有效時(shí)為高電平 ?sink_sop?=>?sink_sop_i,?--用來指示每幀輸入數(shù)據(jù)的第一個(gè)數(shù)據(jù) ?sink_eop?=>?sink_eop_i,--用來指示每幀輸入數(shù)據(jù)的最后一個(gè)數(shù)據(jù)? ?sink_real?=>?sink_real,?--16bit輸入數(shù)據(jù) ?sink_imag?=>?(others=>'0'),? ?sink_error?=>?"00",? ?source_ready?=>?'1',? ?sink_ready?=>?sink_ready_i,??--指示可以輸入待變換的數(shù)據(jù) ?source_error?=>?source_error,?--FFT?IP核輸出的報(bào)錯(cuò)指示信號(hào) ?source_sop?=>?source_sop,?--FFT?IP核輸出的數(shù)據(jù)第一位指示信號(hào) ?source_eop?=>?source_eop,?--FFT?IP核輸出的數(shù)據(jù)最后一位指示信號(hào) ?source_valid?=>?source_valid,?--FFT?IP核輸出的數(shù)據(jù)有效指示信號(hào) ?source_exp?=>?source_exp,?--FFT?IP核輸出的指示信號(hào) ?source_real?=>?source_real,?--FFT變換輸出的實(shí)部 ?source_imag?=>?source_imag?--FFT變換輸出的虛部 ?);? ? --調(diào)用FFT?IP核控制模塊 u2?:?ctrl_fft?port?map(? ?reset_n?=>?reset_n,? ?clk?=>?clk,? ?sink_ready?=>?sink_ready_i,?--指示可以輸入待變換的數(shù)據(jù)? ?sink_sop?=>?sink_sop_i,--用來指示每幀輸入數(shù)據(jù)的第一個(gè)數(shù)據(jù)? ?sink_eop?=>?sink_eop_i,--用來指示每幀輸入數(shù)據(jù)的最后一個(gè)數(shù)據(jù)? ?sink_valid?=>?sink_valid_i?--每幀輸入數(shù)據(jù)有效時(shí)為高電平 ?);? end?one;
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
FFT IP 核設(shè)置
3. 程序編譯
4. RTL圖
5. Testebcnh
6. 仿真圖
閱讀全文