ตัวอย่างนี้อธิบายถึง Fourier Transform (FFT) ที่รวดเร็ว 32K จุดโดยใช้คอร์ทรัพย์สินทางปัญญา (IP) Intel® FPGA FFT FFT เป็นอัลกอริธึม Fourier Transform (DFT) แบบแยกที่ลดจํานวนการประมวลผลที่จําเป็นจาก O(N2) เป็น O(NlogN) โดยการแยกไฟล์ DFT ของลําดับ x(n) ได้รับตามสมการต่อไปนี้:
โดยที่ k = 0, 1, ... N-1 และ N คือความยาวการแปลง
ในตัวอย่างการออกแบบนี้ ความยาวการแปลง N คือ 32768 ด้วยวิธีการ decimation in time (DIT) การออกแบบจะแยกลําดับการป้อนข้อมูลออกเป็นคี่และแม้แต่ตัวอย่างที่ป้อนลงในบล็อก FFT 16K แต่ละบล็อกที่ใช้งานควบคู่กันโดยใช้คอร์ FFT Intel FPGA IP ผลลัพธ์จากคอร์ FFT Intel FPGA IP จะถูกรวมเข้าและจัดเรียงลําดับใหม่เพื่อให้ได้เอาต์พุต FFT สุดท้าย ซึ่งแสดงอยู่ในรูปภาพที่ 1 คล้ายกับคอร์ FFT Intel FPGA IP ตัวอย่างการออกแบบใช้อินพุตและเอาต์พุตที่ตรงตามมาตรฐาน Atlantic
ดาวน์โหลดไฟล์ที่ใช้ในตัวอย่างนี้:
การใช้การออกแบบนี้อยู่ภายใต้และอยู่ภายใต้ข้อกําหนดและเงื่อนไขของข้อตกลงสิทธิ์การใช้งานการออกแบบที่อ้างอิงฮาร์ดแวร์ของ Intel®
ไฟล์ในการดาวน์โหลด zip ประกอบด้วย:
- fft_32K.v—ไฟล์การออกแบบระดับสูงสุดที่ใช้ FFT จุด 32K
- parse_fft_input.v—จัดวางตัวอย่างอินพุตใหม่เป็นตัวอย่างที่คู่และคี่เพื่อป้อนลงในบล็อก FFT 16K-point ที่เล็กกว่าสองบล็อก
- fft_small.v—ไฟล์ Wrapper ที่สร้างขึ้นโดยIntel FPGA IP FFT คอร์ได้รับการกําหนดค่าให้ปรับใช้ความยาวการแปลง 16K และใช้โครงสร้างการไหลของข้อมูล I/O สําหรับการสตรีม
- combine_fft.v—รวมเอาต์พุตของบล็อก FFT 16K-point แต่ละบล็อกใหม่โดยใช้ปัจจัยด้านแบนด์วิดท์ที่เหมาะสม
- fft_32K_streaming_tb.v—Testbench สําหรับการจําลอง RTL
- fft_32K_streaming_vo_msim.tcl—สคริปต์ TCL เพื่อดําเนินการจําลอง RTL โดยอัตโนมัติในซอฟต์แวร์ ModelSim- Intel FPGA
- fft_32K_tb.m-รุ่น MATLAB เพื่อตรวจสอบผลการจําลอง RTL
รูปภาพที่ 1 แสดงแผนผังระดับบนสุดของตัวอย่างการออกแบบ FFT จุด 32K
ตารางที่ 1 แสดงรายการพอร์ตและให้คําอธิบายสําหรับแต่ละพอร์ต
ตารางที่ 1 รายการพอร์ต FFT จุด 32K
คําอธิบาย | ประเภท | ชื่อพอร์ต |
---|---|---|
data_real_in[15:0] data_imag_in[15:0] |
อินพุต | อินพุตข้อมูลที่ซับซ้อน 16 บิต |
CLK | อินพุต | นาฬิการะบบ FFT |
รี เซ็ต | อินพุต | รีเซ็ตระดับสูงที่กําลังทํางานอยู่ |
master_sink_dav | อินพุต | สัญญาณจมข้อมูลหลักที่มีอยู่: อ้างอิงโดยแหล่งข้อมูล FFT Slave เพื่อระบุความพร้อมใช้งานของตัวอย่างข้อมูลสําหรับการป้อนข้อมูลไปยังฟังก์ชัน FFT |
master_sink_ena | ผลลัพธ์ | สัญญาณเปิดใช้งานการเขียน Master sink: อ้างด้วยฟังก์ชัน FFT เพื่อระบุว่าสามารถเขียนข้อมูลลงในฟังก์ชันได้ |
master_sink_sop | อินพุต | จุดเริ่มต้นอินพุตของแพ็กเก็ต: แสดงถึงฟังก์ชัน FFT จุดเริ่มต้นของอินพุตบล็อกข้อมูล ควรระบุไว้สําหรับรอบสัญญาณนาฬิกาซิงโครนัสกับตัวอย่างข้อมูลอินพุตแรก |
fft_real_out[15:0] fft_imag_out[15:0] | ผลลัพธ์ | เอาต์พุตข้อมูลที่ซับซ้อน 16 บิต |
exponent_out[5:0] | ผลลัพธ์ | เลขชี้กําลังบล็อกที่ได้รับการรับรอง: บัญชีสําหรับการปรับขยายค่าสัญญาณภายในระหว่างการคํานวณ FFT |
master_source_dav |
อินพุต | อ้างถึงโดย Slave Sink บนเอาต์พุตของฟังก์ชัน FFT เพื่อระบุว่าสามารถยอมรับตัวอย่างเอาต์พุตได้หนึ่งบล็อก |
master_source_ena | ผลลัพธ์ | เปิดใช้งานแหล่งข้อมูลหลัก: อ้างอิงด้วยฟังก์ชัน FFT เมื่อ FFT สามารถส่งออกข้อมูลได้ |
master_source_sop | ผลลัพธ์ | เริ่มเอาต์พุตของแพ็กเก็ต: ทดสอบในตัวอย่างเอาต์พุตแรกของแต่ละบล็อก |
master_source_eop | ผลลัพธ์ | ตอนท้ายเอาต์พุตของแพ็กเก็ต: ทดสอบในตัวอย่างเอาต์พุตสุดท้ายของแต่ละบล็อก |
ลิงก์ที่เกี่ยวข้อง
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติที่เกี่ยวข้องที่ใช้ในตัวอย่างการออกแบบนี้ในโครงการของคุณ ไปที่: