मेरे पास विशेष रूप से बड़े सिग्नल प्रोसेसिंग ट्रांसफ़ॉर्म हैं जिन्हें मैटलैब से वीएचडीएल में पोर्ट करने की आवश्यकता है। इसके लिए निश्चित रूप से किसी प्रकार के संसाधन साझाकरण की आवश्यकता होती है। थोड़ी गणना ने मुझे निम्नलिखित दिया:
- 64-अंक के 512 एफएफटी
- 41210 गुणा-जोड़ आपरेशन
सबसे बड़े वीरटेक्स 6 एफपीजीए को ध्यान में रखते हुए ~ 2000 डीएसपी 48 ई ब्लॉक है, मुझे पता है कि मैं संसाधनों को कई बार फिर से उपयोग करने के लिए संसाधन साझा कर सकता हूं। निष्पादन समय वास्तव में कोई समस्या नहीं है, प्रसंस्करण समय FPGA के संदर्भ में अपेक्षाकृत लंबा हो सकता है।
संसाधन उपयोग को देखते हुए, मूलांक -2 लाइट आर्किटेक्चर के उपयोग से मुझे 4dsp ब्लॉक / FFT ऑपरेशन = 2048 DSP ब्लॉक, कुल ~ 43k मिलता है। सबसे बड़े Virtex FPGA में 2k ब्लॉक या 20 ऑपरेशन / mux हैं।
जाहिर है कपड़े में इस तरह के बड़े muxes भी स्लाइस लेने के लिए जा रहा है। मुझे इस सीमा का ऊपरी सिरा कहां मिलेगा? मैं FPGA संसाधनों को असीम रूप से साझा नहीं कर सकता। क्या 41210 गुणक बहुत बड़ा है? मैं कैसे गणना करूं कि क्या बहुत बड़ा है?
मैंने अन्य संसाधनों (स्लाइस, ब्रैम आदि) को भी देखा है। मूलांक -2 लाइट 4 x 18k ब्राम्स / fft = 2048 ब्रैम देता है सबसे बड़ा Xilinx FPGA में 2128 एमएमए शामिल हैं। बहुत सीमा रेखा। मुझे चिंता है कि मेरा डिज़ाइन अभी बहुत बड़ा है।
अपडेट करें:
डिज़ाइन के बारे में कुछ और जानकारी। मैं विस्तार में नहीं जा सकता, लेकिन यहाँ मैं क्या दे सकता हूँ:
Initial conditions -> 512 ffts -> 40k multipliers ---------|----> output data to host
^------re-calculate initial conditions----|
आउटपुट डेटारेट कल्पना: "मैटलैब सिमुलेशन की तुलना में तेज़"
गणना के अनुसार, यह वह जगह है जहां मैं हूं:
एफएफटी चरण: आसान। मैं 1/2/4/8 FFT को लागू कर सकता हूं, एसडीआरएएम में परिणामों को संग्रहीत कर सकता हूं और बाद में पहुंच सकता हूं। अपेक्षाकृत छोटा, भले ही इसमें लंबा समय लगे, यह ठीक है। मूलांक -2 के उपयोग से मुझे 2 DSP48E और 2 18k BRAMS / FFT मिल सकते हैं। स्ट्रीमिंग 6 DSP48Es 0BRAMS / FFT देता है। या तो मामले में, 64 बिंदु FFT FPGA संसाधन शब्दों में छोटा है।
गुणक : यह मेरी समस्या है। गुणन इनपुट को लुकअप टेबल या FFT डेटा से लिया जाता है। यह वास्तव में गुणा-जोड़ का सिर्फ एक पूरा गुच्छा है। अनुकूलन करने के लिए बहुत कुछ नहीं है। एक फिल्टर नहीं है, लेकिन एक फिल्टर के समान विशेषताएं हैं।
FPGA पर संसाधन साझाकरण को ध्यान में रखते हुए, गणित निम्नानुसार काम करता है: एक LUT-6 का उपयोग 4-वेक्स के रूप में किया जा सकता है। N-way, M bit mux का सूत्र इस प्रकार है:
N*M/3 = number of luts, or N*M/12 = slices (4 LUTS/slice).
मेरे कार्यान्वयन के लिए संख्याओं को क्रंच करने से अच्छे परिणाम नहीं मिलते हैं। गुणक -6 परिवार के 90% के पास 40k ऑपरेशन करने के लिए संसाधन DSP को साझा करने के लिए पर्याप्त स्लाइस नहीं है।