Saya memiliki transformasi pemrosesan sinyal besar yang perlu porting dari matlab ke VHDL. Ini pasti membutuhkan semacam berbagi sumber daya. Sedikit perhitungan memberi saya hal berikut:
- 512 ffts dari 64-poin
- 41210 operasi tambah banyak
Mengingat Virtex 6 FPGA terbesar memiliki ~ 2000 blok DSP48E, saya tahu bahwa saya dapat berbagi sumber daya untuk menggunakan kembali sumber daya beberapa kali. Waktu eksekusi tidak terlalu menjadi masalah, waktu pemrosesan dapat berlangsung relatif lama dalam hal FPGA.
Melihat penggunaan sumber daya, menggunakan arsitektur lite radix-2 membuat saya 4dsp blok / operasi FFT = 2048 blok DSP, total ~ 43k. Virtex FPGA terbesar memiliki 2k blok, atau 20 operasi / mux.
Jelas termasuk muxes besar seperti itu ke dalam kain juga akan mengambil irisan. Di mana saya menemukan batas atas batas ini? Saya tidak bisa berbagi sumber daya FPGA tanpa batas. Apakah 41210 pengganda terlalu besar? Bagaimana saya menghitung apa yang terlalu besar?
Saya juga melihat sumber daya lain (Irisan, Brams, dll). Radix-2 Lite juga memberikan 4 x 18r brams / fft = 2048 brams Xilinx FPGA terbesar berisi 2128 Brams. sangat perbatasan. Saya khawatir bahwa desain saya terlalu besar.
MEMPERBARUI:
Beberapa info lebih lanjut tentang desain itu sendiri. Saya tidak bisa menjelaskan secara detail, tetapi inilah yang bisa saya berikan:
Initial conditions -> 512 ffts -> 40k multipliers ---------|----> output data to host
^------re-calculate initial conditions----|
output datarate spec: "lebih cepat dari simulasi matlab"
perhitungan bijak, ini adalah tempat saya:
Tahap FFT: mudah. Saya bisa menerapkan 1/2/4/8 FFT, menyimpan hasilnya di SDRAM dan akses nanti. Relatif kecil, meskipun butuh waktu lama, tidak apa-apa. menggunakan radix-2 lite saya bisa mendapatkan 2 DSP48Es dan 2 18k BRAMS / FFT. streaming memberi 6 DSP48Es 0BRAMS / FFT. dalam kedua kasus, FFT 64 poin kecil dalam istilah sumber daya FPGA.
Pengganda : ini masalah saya. Input multiplikasi diambil dari tabel pencarian atau data FFT. Ini benar-benar hanya sejumlah multiply-add. Tidak banyak yang bisa dioptimalkan. Bukan filter, tetapi memiliki karakteristik yang mirip dengan filter.
Mempertimbangkan pembagian sumber daya pada FPGA, matematika bekerja sebagai berikut: One LUT-6 dapat digunakan sebagai mux 4 arah. Rumus untuk N-way, M bit mux adalah sebagai berikut:
N*M/3 = number of luts, or N*M/12 = slices (4 LUTS/slice).
menghitung angka untuk implementasi saya tidak memberikan hasil yang baik. 90% dari keluarga virtix-6 tidak memiliki cukup irisan untuk berbagi sumber daya DSP mereka untuk melakukan operasi 40k.