FPGA पर प्रक्रिया का समय


10

मैं fpgas में नया हूं, और कुछ समय सूक्ष्मताएं हैं जो मुझे यकीन नहीं है कि मैं समझता हूं: यदि मेरी सभी तुल्यकालिक प्रक्रियाएं एक ही किनारे पर चालू हो जाती हैं, तो इसका मतलब है कि मेरे इनपुट एक बढ़ती हुई बढ़त पर 'कैप्चर' किए गए हैं, और मेरे आउटपुट बदल जाते हैं .. वही बढ़त? अगली बढ़त?

यदि मेरे पास दो मॉड्यूल हैं, जहां एक का आउटपुट अगले के इनपुट में बहता है, तो ऐसी स्थिति उत्पन्न हो सकती है जहां मेरे मॉड्यूल (पिछले मॉड्यूल के आउटपुट) के इनपुट उसी समय बदल रहे हैं जब वे कैप्चर किए जाते हैं।

ISIM स्क्रीनशॉट

205ns में मार्कर दिखाता है कि मैं किस बारे में बात कर रहा हूं, op और data_write मेरे इनपुट्स हैं। इस परीक्षण के मामले में सब कुछ "बस काम" लगता है, लेकिन सिमुलेशन में यह स्पष्ट नहीं है कि कब कब्जा किया जा रहा है। क्या data_write = "0001 ..." 205ns या (205ns + 1 घड़ी चक्र) पर कब्जा किया जा रहा है? क्या ISim में अधिक विस्तृत तरंगों को प्राप्त करने का एक तरीका है जो सेटअप और होल्ड टाइम दिखाता है?

धन्यवाद।

जवाबों:


12

फ्लिप-फ्लॉप के माध्यम से हमेशा कुछ प्रचार विलंब होता है। इसे अक्सर "क्लॉक-टू-क्यू" देरी कहा जाता है।

इसका मतलब है कि आपके इनपुट किनारे पर पकड़े गए हैं, और आप उसी किनारे पर बदलाव करते हैं, लेकिन बाद में कुछ नैनोसेकेंड। यह कुछ नैनोसेकंड विलंब पर्याप्त है (यदि आपके फ्लिप-फ्लॉप को "शून्य होल्ड टाइम" के साथ डिज़ाइन किया गया है क्योंकि वे अधिकांश FPGAs में हैं) कि परिवर्तन अगले घड़ी के किनारे तक किसी भी डाउनस्ट्रीम फ्लिप-फ्लॉप को प्रभावित नहीं करते हैं।

कार्यात्मक या आरटीएल सिमुलेशन में (जो संभवतः आप अपना परिणाम उत्पन्न करने के लिए कर रहे हैं) देरी को स्थायी नैनोसेकंड के रूप में अनुकरण नहीं किया जाएगा। वीएचडीएल में, यह सिम्युलेटर घड़ी का एकल डेल्टा चक्र होगा , जो तकनीकी रूप से बिल्कुल भी समय नहीं है। यह सिम्युलेटर आउटपुट में देरी को देखना असंभव बनाता है। फिर भी सिम्युलेटेड-ए-आइडियल फ्लिप-फ्लॉप के लिए, यह पर्याप्त है कि आउटपुट परिवर्तन डाउनस्ट्रीम फ्लिप-फ्लॉप को प्रभावित नहीं करते हैं।

यदि आप पोस्ट-प्लेस-एंड-रूट सिमुलेशन करते हैं, तो उपयुक्त विलंब को शामिल करने में सक्षम होना चाहिए ताकि आप इन प्रभावों को स्पष्ट रूप से बढ़ाए गए सिमुलेशन प्रयास की कीमत पर देख सकें।


1
VHDL RTL सिमुलेशन में, देरी एक एकल डेल्टा चक्र है। यह ठीक शून्य समय लेता है, लेकिन अनुकार एक क्रमबद्ध तरीके से आगे बढ़ने की अनुमति देता है क्योंकि वर्तमान डेल्टा चक्र में सभी अपडेट अगले डेल्टा चक्र शुरू होने से पहले पूरा हो जाता है। जब अधिक डेल्टा चक्र निर्धारित नहीं होते हैं, तो समय आगे बढ़ सकता है।
मार्टिन थॉम्पसन

1

वांछित घड़ी के किनारे (बढ़ते या गिरते हुए) D पर इनपुट आउटपुट Q पर दिखाई देता है। यह एक परिमित मात्रा (घड़ी से क्यू विलंब) और यह मानते हुए कि कोई समय का उल्लंघन नहीं है, D एक समय में केवल एक FF से गुजरेगा (यानी यदि Q से जुड़ा एक और FFs इनपुट है, तो दूसरा FF बदलने से पहले FF1 Q मान पास कर देगा।

अपने सिमुलेशन में टाइमिंग को शामिल करने के लिए, आपको अपने डिज़ाइन को संश्लेषित करने और जगह देने और रूट करने की आवश्यकता है, फिर पोस्ट प्लेस और रूट सिमुलेशन चलाएं। इसमें सभी कॉम्बिनेशन, क्लॉक टू क्यू देरी आदि शामिल होंगे। एचडीएल सिमुलेशन में इनमें से कोई भी समय नहीं है, इसलिए यह केवल मूल संचालन के परीक्षण के लिए उपयोगी है, समय सीमा नहीं। आपको एक टाइमिंग रिपोर्ट भी मिलेगी, जो आपको एक विशेष घड़ी डोमेन की गति सीमा बताएगी, आपको बताएंगे कि क्या कोई समय-सीमा उल्लंघन हैं, और आपको विभिन्न रास्तों के लिए समय सुस्त दिखाते हैं। आप इस जानकारी का उपयोग यह जानने के लिए कर सकते हैं कि कहाँ chnages किए जाने की आवश्यकता हो सकती है, या सॉफ़्टवेयर को यह बताने के लिए नियम जोड़े गए हैं कि उल्लंघन एक समस्या नहीं है (जैसे कि बहु-चक्र पथ या क्रॉस क्लॉक पथ जैसी चीज़ों के लिए)


1

यह पिछले जवाबों के अतिरिक्त के रूप में है, जिसे मैं मानता हूं कि आप विचार प्राप्त करते हैं।

ये मामले वास्तव में शुरुआत में थोड़ा मुश्किल हो सकते हैं जब सिमुलेशन RTL डिजाइन करता है क्योंकि किसी को यह देखने में मुश्किल हो सकती है कि इसका क्या कारण है और आदर्श / कार्यात्मक / RTL सिमुलेशन (= कोई प्रचार देरी) में क्या प्रभाव है।

सही सिम्युलेटर के साथ, डेल्टा देरी कर सकते हैं वास्तव में कल्पना की जा। ISim ऐसा नहीं करता है, लेकिन ei ModelSim में, आप घड़ी के किनारों के चारों ओर डेल्टा विस्तार सक्षम कर सकते हैं । नीचे एक छोटी गाड़ी 3-पार्टी आईपी से एक उदाहरण स्क्रीनशॉट है जिसे मैंने परेशान किया।

ModelSim में डेल्टा विलंब विस्तार

cघड़ी संकेत है, और +1आदि समय के अनुसार कल्पना चक्र हैं।

यदि कोई डिज़ाइन सिम्युलेटेड है, जहाँ सिमुलेशन और डिज़ाइन दोनों सही मायने में आदर्श और सिंक्रोनस हैं , तो बिना किसी देरी के सिम्युलेटेड, आप कर सकते हैं, सिद्धांत रूप में, एक विशिष्ट क्लॉक फ्लैंक पर सभी सिग्नल परिवर्तनों को उस क्लॉक फ्लैंक के बाद थोड़ा होने पर देखें। आपके उदाहरण में, इसलिए, 205 ns पर, data_write= 0000...वह है जिसे कैप्चर किया जा रहा है। पहली इकाई में कुछ अन्य तर्क सिग्नल data_writeको 0001...उसी फ्लैंक पर बदल रहे हैं , और यह संकेत data_writeघड़ी के फ्लैंक के बाद थोड़ा सा दिखाई देता है । यह "थोड़ा बाद में" एक आदर्श सिमुलेशन (आपका उदाहरण) में एक या कई सिमुलेशन डेल्टास होगा (आईएसआईएम में दिखाई नहीं देता है, लेकिन उदाहरण के लिए मॉडलसिम में डेल्टा विस्तार), या वास्तविक दुनिया में बाद में कुछ पीएस / एनएस।

एक साइड नोट पर: RTL डिजाइन के साथ एक महत्वपूर्ण बात यह सुनिश्चित करना है कि क्लॉक फ्लैंक पर इनपुट हमेशा सैंपल किए जाते हैं - एक डेल्टा चक्र बाद में बहुत देर हो चुकी होती है। बाद में इनपुट एक डेल्टा मान्य नहीं हो सकता है। या दूसरे शब्दों में: "घड़ी के रास्ते के साथ गड़बड़ न करें"।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.