क्या कोई मुझे बता सकता है कि संश्लेषण के उपकरण द्वारा आरटीएल सर्किट में कोड का पता कैसे लगाया जाता है, अगर वीएचडीएल में आईएफ-एल्स निर्माण और केस स्टेटमेंट के बीच अंतर होता है?
if-elsif-else
निर्माण एक प्राथमिकता नेटवर्क मार्ग infers:
इस सर्किट का अनुकरण करें - सर्किटलैब का उपयोग करके बनाई गई योजनाबद्ध
इससे मेल खाती है
if bool_expr_1 then
sig <= val_expr_1;
elsif bool_expr_2 then
sig <= val_expr_2;
elsif bool_expr_3 then
sig <= val_expr_3;
else
sig <= val_expr_4;
end if;
case
निर्माण, दूसरे हाथ पर, एक बड़ा infers ol 'mux:
इससे मेल खाती है
case case_expr is
when c0 =>
sig <= val_expr_0;
when c1 =>
sig <= val_expr_1;
when c2 =>
sig <= val_expr_2;
...
when others =>
sig <= val_expr_N;
end case;
जाहिर है कि ये केवल एक मूल्य अभिव्यक्ति के साथ बहुत सरल डिजाइन हैं, जिसके परिणामस्वरूप एक आउटपुट होता है।
कई नेस्टेड के मामले पर विचार करें-अगर-और किसी प्रक्रिया के अंदर केस-स्टेट्स को मिलाते हैं या नहीं।
उपरोक्त के अनुसार, आप देख सकते हैं कि वे घोंसला कैसे बनाते / मिलाते हैं।
यह भी कि कब किस निर्माण का उपयोग किया जाए?
चूंकि if-else
प्राथमिकता प्राथमिकता होती है, इसलिए इसका उपयोग तब किया जाना चाहिए जब एक से अधिक इनपुट स्थिति हो सकती है। case
जब इनपुट पारस्परिक रूप से अनन्य होते हैं, तो एक दूसरे का उपयोग करना उचित होता है।
dec
/jz
निर्देश करता है , जो बहुत अधिक कुशल है। शायद एक समान अनुकूलन यहां लागू किया गया है।