Altifigence Academy

18 / 63 · अवधारणा

तुलनित्र और सीमांत मानों का विनिर्देश

एक ही बिट अनुक्रम की unsigned और signed तुलना अलग करें तथा सीमा शर्तें जाँचें।

परिमाण की तुलना सर्वोच्च भिन्न बिट से तय होती है

दो unsignedunsigned बिट अनुक्रम को गैर-ऋणात्मक पूर्णांक मानने का नियम। n बिट की सीमा 0 से 2^n−1 है और वही बिट signed व्याख्या में अलग मान दे सकते हैं। विस्तार से पढ़ें वेक्टरों को MSBMSB सबसे अधिक स्थानिक भार वाला बिट। उसका इंडेक्स वेक्टर की घोषणा की दिशा पर निर्भर है; उसे हमेशा सबसे बड़ा इंडेक्स न मानें। विस्तार से पढ़ें से पढ़कर पहला भिन्न बिट खोजें। वहाँ जिसका बिट 1 है, वह बड़ा है। ei=ai⊕bi‾e_i=\overline{a_i\oplus b_i} रखने पर चार-बिट greater-than शर्त यह है।

gt⁡(a,b)=a3b‾3+e3a2b‾2+e3e2a1b‾1+e3e2e1a0b‾0\operatorname{gt}(a,b)=a_3\overline b_3+e_3a_2\overline b_2+e_3e_2a_1\overline b_1+e_3e_2e_1a_0\overline b_0

बाईं ओर gt⁡(a,b)\operatorname{gt}(a,b) तुलना का बूलियन परिणाम है। निचले बिट की तुलना तभी असर करती है जब सभी ऊपरी बिट समान हों। समानता सभी eie_i का AND है।

signed तुलना पहले चिह्न समझती है

4'b1111 और 4'b0001 unsigned में 15 और 1, लेकिन signed में −1 और 1 हैं। चिह्न अलग हों तो ऋणात्मक मान छोटा है। logic [3:0] और logic signed [3:0] का अंतर संग्रहण क्षमता नहीं, संक्रिया में प्रयुक्त व्याख्या है।

SystemVerilog
logic [3:0] a, b;
logic unsigned_lt, signed_lt;
assign unsigned_lt = a < b;
assign signed_lt = $signed(a) < $signed(b);

इस कोड में दोनों संकार्यों की चौड़ाई समान है। चौड़ाई अलग हो तो केवल cast लगाने से पहले तय करें कि किस चौड़ाई तक विस्तार होगा।

उन्हीं दो बिट अनुक्रमों का क्रम अलग चिह्न अनुबंध से उलट सकता है। unsigned का सर्वोच्च बिट से तुलना वाला नियम signed मान पर सीधे न लगाएँ।

बिटों की तुलना से पहले व्याख्या तय करें
  1. 1111 vs 0001: समान चार-बिट इनपुट
  2. Unsigned: 15, 1 से बड़ा है
  3. Signed: −1, 1 से छोटा है

सीमा शर्तें स्पष्ट वाक्य में लिखें

16 वस्तुओं वाले बफ़र में count==16 का अर्थ full और count<16 का अर्थ और जगह होना है। count चार बिट हो तो 16 दर्शा ही नहीं सकता, इसलिए full शर्त विफल होगी। तुलना का कार्य और तुलना किए जा रहे मान की निरूपण सीमा साथ जाँचने का यही कारण है।

दहलीज़ TT हो तो पहले T−1,T,T+1T-1,T,T+1 जाँचें; निरूपण सीमा से बाहर के मान अलग संभालें। ऐसे परीक्षण बनाएँ जो < और <= का अंतर स्पष्ट करें। unsigned wraparound के बाद केवल बचे मान की तुलना से खोया carry वापस नहीं मिलता।

खुद आज़माएँ

0–16 भराव दर्शाने वाले FIFO count में कितने बिट चाहिए? full पर साथ pop और push स्वीकार्य हैं या नहीं, क्या अकेला तुलना सूत्र तय कर सकता है?

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

17 मान दर्शाने के लिए पाँच बिट चाहिए। उसी समय pop हो तो खाली हुई जगह पर push स्वीकारना इंटरफ़ेस की नीति है। केवल count < 16 उपयोग करने से full पर एक साथ आदान-प्रदान रुक सकता है। अनुमति देने के लिए pop की वास्तविक स्वीकृति शर्त भी शामिल करें।

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