Altifigence Academy

16 / 63 · अवधारणा

योजक और carry प्रसार संरचना

पूर्ण योजक के सूत्र निकालें और ripple carry के कार्य, चौड़ाई तथा विलंब का संयुक्त विश्लेषण करें।

एक बिट के योग को दो बिट में दर्शाना

ai,bi,cia_i,b_i,c_i का योग 0 से 3 तक है, इसलिए योग बिट sis_i और अगले स्थान का carry ci+1c_{i+1} चाहिए। तीनों में विषम संख्या में 1 हों तो योग बिट 1; कम से कम दो 1 हों तो carry 1 है।

si=ai⊕bi⊕cis_i=a_i\oplus b_i\oplus c_i
ci+1=aibi+(ai⊕bi)cic_{i+1}=a_ib_i+(a_i\oplus b_i)c_i

gi=aibig_i=a_ib_i को generate और pi=ai⊕bip_i=a_i\oplus b_i को propagate कहें तो ci+1=gi+picic_{i+1}=g_i+p_ic_i। यहाँ ++ OR है। अर्ध योजक carry इनपुट के बिना विशेष मामला है: योग XOR और carry AND है।

तीनों इनपुट बदलकर जाँचें कि a+b+cin = sum+2×cout हमेशा सत्य है। carry अगले स्थान का इनपुट है और उसका भार sum के समान नहीं है।

एक स्थान का योग और अगले स्थान का carry

a + b + cin = sum + 2 × cout

carry कहाँ तक जाता है

चार-बिट 1111 + 0001 लें। bit 0 में carry बनकर बाकी तीन स्थानों तक जाता है। संग्रहित योग 0000 और सर्वोच्च carry 1 है। ripple-carry संरचना में निचले स्थान का carry ऊपरी स्थान की गणना को प्रतीक्षा करा सकता है।

c2=g1+p1g0+p1p0c0c_2=g_1+p_1g_0+p_1p_0c_0

सूत्र इस तरह खोलने से carry की समानांतर गणना की संभावना दिखती है। वास्तविक तेज़ योजक समूह propagate/generate जोड़ते हैं, लेकिन fan-in, तार और सेल लाइब्रेरी के कारण क्षेत्रफल-विलंब का समझौता होता है। RTL का + अनिवार्यतः एक ripple-carry परिपथ में नहीं बदलता।

योग की चौड़ाई डिज़ाइन में स्पष्ट रखें

SystemVerilog
logic [3:0] a, b, sum;
logic cin, cout;
logic [4:0] wide_sum;
assign wide_sum = {1'b0, a} + {1'b0, b} + {4'b0000, cin};
assign sum = wide_sum[3:0];
assign cout = wide_sum[4];

15+15+1=3115+15+1=31 तक दर्शाने के लिए पाँच बिट पर्याप्त हैं। पहले तय करें कि केवल निचला योग चाहिए, carry अगले चरण में जाएगा, या संतृप्ति चाहिए। नीचे का अभ्यास एक पूर्ण योजक की सत्य सारणीसत्य सारणी हर संभव इनपुट संयोजन और उसके आउटपुट की पूरी सूची। समय के साथ बदलाव अलग तरंगरूप में जाँचे जाते हैं। विस्तार से पढ़ें जाँचता है; वास्तविक संश्लेषित परिपथ का विलंब नहीं मापता।

इनपुट बदलें

खुद आज़माएँ

चार-बिट unsigned में a=9a=9, b=6b=6, cin=1c_{in}=1 के लिए पूरा योग, चार-बिट योग और carry निकालें। उसी परिपथ को signed जोड़ मानें तो क्या केवल carry से overflow पता चलेगा?

व्याख्या पढ़ें

पूरा योग 16, बिट अनुक्रम 10000, इसलिए sum=0000, carry=1। signed व्याख्या में 1001 −7 है, इसलिए −7+6+1=0-7+6+1=0, जो सीमा के भीतर है। carry और signed overflow अलग शर्तें हैं।

आपका चयन इस ब्राउज़र पर लागू होता है। फ़ुटर से कभी भी बदलें।