Altifigence Academy

2 / 63 · अवधारणा

संख्या प्रणालियाँ और निश्चित चौड़ाई का निरूपण

आधार रूपांतरण से आगे बढ़कर निरूपण सीमा, आवश्यक बिट और काटने से होने वाली त्रुटि की गणना करें।

पाठ्यक्रम का प्रारंभिक स्तर

विद्यालय स्तर का बीजगणित और बुनियादी प्रोग्रामिंग अनुभव अनुशंसित है। द्विआधारी संख्याएँ और बूलियन बीजगणितबूलियन बीजगणित 0, 1 और AND, OR, NOT का बीजगणित। यहाँ जोड़ का चिह्न सामान्यतः OR है, इसलिए इसके नियम पूर्णांक जोड़ से अलग हैं। विस्तार से पढ़ें इसी पाठ्यक्रम में समझाए जाते हैं; उसके बाद हम विश्वविद्यालय के प्रारंभिक डिजिटल लॉजिक स्तर पर तेज़ी से आगे बढ़ते हैं। सूत्र रटने के बजाय इनपुट शर्तें, बिट चौड़ाई और अवलोकन का समय तय करने तथा उदाहरणों से जाँचने पर ध्यान दें।

बिट अनुक्रम और मान अलग हैं

परिपथ सीमित बिट अनुक्रम संग्रहित करता है। उसे पूर्णांक, चिह्नयुक्त मान या स्थिर-बिंदु संख्यास्थिर-बिंदु निरूपण बिंदु की स्थिति पहले तय करके पूर्णांक बिट अनुक्रम पर निश्चित पैमाना लागू करना। चौड़ाई, चिह्न और भिन्नांश बिटों की संख्या साथ तय करनी होती है। विस्तार से पढ़ें मानना डिज़ाइन अनुबंध तय करता है। इस पाठ में पूर्णांक संक्रियाएँ और घातों का ज्ञान मानकर सीधे वास्तविक RTL के लिए आवश्यक सीमा गणना पर आते हैं।

NN-बिट unsignedunsigned बिट अनुक्रम को गैर-ऋणात्मक पूर्णांक मानने का नियम। n बिट की सीमा 0 से 2^n−1 है और वही बिट signed व्याख्या में अलग मान दे सकते हैं। मान की व्याख्या इस प्रकार है।

u=∑i=0N−1bi2i,0≤u≤2N−1u=\sum_{i=0}^{N-1}b_i2^i,\qquad 0\le u\le 2^N-1

10110110 का मान 128+32+16+4+2=182128+32+16+4+2=182 है। चार-चार बिट के समूह में यह B6 है, इसलिए 8'hB6 और 8'b10110110 एक ही बिट अनुक्रम हैं। हर हेक्साडेसिमल अंक हमेशा चार बिट दर्शाता है, जिससे पते, मास्क और तरंगरूप पढ़ते समय रूपांतरण आसान होता है।

बिट वही, व्याख्या अलग

नीचे b7 बदलें। unsigned व्याख्या में उसका भार 128 जुड़ता है, लेकिन द्विपूरकद्विपूरक निश्चित चौड़ाई के बिटों में चिह्नयुक्त पूर्णांक दर्शाने की विधि। n बिट की सीमा −2^(n−1) से 2^(n−1)−1 तक है। विस्तार से पढ़ें व्याख्या में सर्वोच्च बिट का भार −128 होता है। पहले 0x7F और 0x80 बनाकर दोनों व्याख्याओं की सीमा की तुलना करें।

बिट और संख्या निरूपण

10110110 → unsigned 182 · signed -74 · hex 0xB6

बिट बदलना और उन्हें signed मानना अलग संक्रियाएँ हैं। परिपथ की चौड़ाई आठ बिट ही रहने पर भी ऑपरेटर को दी गई चिह्न-सूचना के अनुसार तुलना का परिणाम बदल सकता है।

पहले सीमा, फिर बिट चौड़ाई

MM अलग अवस्थाओं को पहचानने के लिए बिटों की न्यूनतम आवश्यक संख्या है:

N=⌈log⁡2M⌉N=\left\lceil\log_2 M\right\rceil

0 से 999 तक गिनने के लिए 1000 मान चाहिए, इसलिए 10 बिट लगते हैं। 0 से 1024 तक 1025 मान हैं, इसलिए 11 बिट चाहिए। अधिकतम मान को अवस्थाओं की संख्या समझ लेने पर ठीक सीमा पर एक बिट कम पड़ जाता है। यदि RTL को M=1M=1 तक पैरामीटरयुक्त बनाएँ, तो शून्य-बिट वेक्टर से बचने के लिए चौड़ाई कम से कम 1 रखें।

कम चौड़ाई के संकेत में संग्रहित करने पर क्या होता है

ऊपरी बिट हटाकर केवल NN बिट रखने वाला unsigned संग्रहण मॉड्यूलर संक्रिया है।

xstored=x mod 2Nx_{stored}=x\bmod 2^N

उदाहरण के लिए, नौ-बिट परिणाम 300 को आठ बिट में रखने पर 44 बचता है। यह पूर्णांकन या संतृप्ति नहीं है। संतृप्ति चाहिए तो सीमा पार होने का पता लगाने और अधिकतम मान चुनने वाला अलग परिपथ बनाना होगा।

SystemVerilog
logic [7:0] a, b, low;
logic [8:0] full_sum;
assign full_sum = {1'b0, a} + {1'b0, b};
assign low = full_sum[7:0];

जोड़ने से पहले दोनों संकार्य विस्तृत किए गए हैं, इसलिए carry सुरक्षित रखने का आशय स्पष्ट है। केवल संख्या का आधार देखकर चिह्न या परिणाम की चौड़ाई भी तय मान न लें। तरंगरूप की व्याख्या के लिए चौड़ाई, चिह्न और आधार तीनों चाहिए।

खुद आज़माएँ

0 से 4095 और 0 से 4096 तक गिनने के लिए क्रमशः कितने बिट चाहिए? 511 को आठ-बिट unsigned में रखने पर क्या बचेगा?

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

पहली सीमा में 4096=2124096=2^{12} मान हैं, इसलिए 12 बिट; दूसरी में 4097 मान हैं, इसलिए 13 बिट चाहिए। 511 mod 256=255511\bmod256=255 होने से संग्रहित मान 8'hFF है। केवल इससे यह निष्कर्ष नहीं निकलता कि overflow नहीं हुआ।

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