मान लीजिए कि मुझे std_logic_vector पर विभिन्न बिट्स का परीक्षण करना है। क्या एक एकल प्रक्रिया को कार्यान्वित करना बेहतर होगा, कि प्रत्येक बिट के लिए लूप्स या 'एन' प्रक्रियाओं को तत्काल उत्पन्न करने के लिए जो प्रत्येक प्रक्रिया का परीक्षण करता है?फॉर-लूप और सामान्य के लिए लागू करने के बीच व्यावहारिक अंतर क्या है? दूसरे पर एक का उपयोग करना बेहतर कब होता है?
के लिए लूप
my_process: process(clk, reset) begin
if rising_edge (clk) then
if reset = '1' then
--init stuff
else
for_loop: for i in 0 to n loop
test_array_bit(i);
end loop;
end if;
end if;
end process;
के लिए: जनरेट
for_generate: for i in 0 to n generate begin
my_process: process(clk, reset) begin
if rising_edge (clk) then
if reset = '1' then
--init stuff
else
test_array_bit(i);
end if;
end if;
end process;
end generate;
क्या इस मामलों के लिए FPGA और ASIC कार्यान्वयन पर प्रभाव हो सकता है? सीएडी उपकरण के साथ निपटने के लिए क्या आसान है?
संपादित करें: बस एक प्रतिक्रिया मैं एक को दे दिया पुरुष की मदद करने, मेरे सवाल का अधिक स्पष्ट बनाने के जोड़ने:
उदाहरण के लिए, जब मैं के लिए-छोरों आईएसई पर का उपयोग कर कोड का एक टुकड़ा भाग गया, संश्लेषण सारांश दिया मुझे एक उचित परिणाम, सबकुछ गणना करने में काफी समय लग रहा है। जब मैंने अपने डिजाइन को दोबारा कोड किया, इस बार उत्पन्न करने के लिए, और कई प्रक्रियाओं का उपयोग करते हुए, मैंने थोड़ा और क्षेत्र इस्तेमाल किया, लेकिन उपकरण सबकुछ तेजी से गणना करने में सक्षम था और मेरा समय परिणाम भी बेहतर था। तो, क्या यह एक नियम पर निर्भर करता है, जो हमेशा अतिरिक्त क्षेत्र और कम जटिलता की लागत के साथ उत्पन्न करने के लिए बेहतर होता है या क्या यह उन सभी मामलों में से एक है जिन्हें मुझे हर एक कार्यान्वयन संभावना को सत्यापित करना है?
हाय यूजीन, उत्तर देने के लिए बहुत बहुत धन्यवाद। मुझे खेद है, लेकिन मुझे अपने प्रश्न पर और स्पष्ट होना चाहिए था। मैं कोडिंग की मूल बातें और संरचनाओं का उपयोग करने के "तार्किक" प्रभावों को जानता हूं। मेरा संदेह उनको उपयोग करने के व्यावहारिक परिणाम पर है। मैंने उदाहरण के रूप में एक साधारण वेक्टर के साथ उदाहरण का इस्तेमाल किया, लेकिन अभ्यास में चीजें अधिक जटिल होती हैं। तो, reformulating: अगर मेरे पास कोड का एक टुकड़ा है जो मुझे एक घड़ी चक्र में जवाब देना चाहिए (या समांतर में अपनी सभी सामग्री को चलाएं, यदि यह बेहतर है) क्या, भौतिक एलवीएल दृष्टिकोण से, सबसे अच्छा कार्यान्वयन होगा रणनीति? –
उदाहरण के लिए, जब मैं आईएसई पर फॉर-लूप का उपयोग करके कोड का एक टुकड़ा चलाता हूं, तो संश्लेषण सारांश ने मुझे निष्पक्ष परिणाम दिया, सब कुछ गणना करने में काफी समय लगा। जब मैंने अपने डिज़ाइन को फिर से कोड किया, इस बार उत्पन्न करने के लिए, और कई प्रक्रियाओं का उपयोग करते हुए, मैंने थोड़ा और क्षेत्र उपयोग किया, लेकिन उपकरण सबकुछ तेजी से गणना करने में सक्षम थे और मेरा समय परिणाम भी बेहतर था। तो, क्या यह किसी नियम पर निर्भर करता है, जो हमेशा अतिरिक्त क्षेत्र की लागत के साथ उत्पन्न करने के लिए बेहतर होता है या क्या यह उन सभी मामलों में से एक है जिन्हें मुझे हर एक कार्यान्वयन संभावना को सत्यापित करना है? –
तेजी से गणना दूसरे कार्यान्वयन की समानांतर प्रकृति के परिणामस्वरूप हुई। और, हमेशा के रूप में, संसाधनों की संख्या के साथ एक व्यापार बंद है। यदि आप दोनों कार्यान्वयन के आरटीएल योजनाबद्ध रूप से देखते हैं तो आप अंतर देखेंगे। व्यक्तिगत रूप से मैं आरटीएल तर्क को कोड करते समय 'जेनरेट' लूप का उपयोग कर रहा हूं, यानी सटीक हार्डवेयर संरचना निर्दिष्ट करते समय, और व्यवहार के विवरणों के साथ 'फॉर लूप' (अच्छी तरह से, लगभग कभी नहीं :)) –