बाइनरी नंबर शून्य है या नहीं, यह कैसे पता करें


16

मैं अपने एलिमेंट्स ऑफ़ कम्प्यूटिंग सिस्टम बुक में दिए गए चश्मे से ALU को लागू कर रहा था। मैं केवल एक समस्या पर अटका हुआ हूं। मुझे कैसे पता चलेगा कि कोई दी गई संख्या शून्य है या नहीं। एक चीज जो मैं कर सकता हूं या बस में हर बिट, और फिर उस पर एक नहीं गेट लागू करें। लेकिन कुछ अन्य सुरुचिपूर्ण समाधान होना चाहिए।


6
ऐसा नहीं लगता कि आप वास्तव में फंस गए हैं - इससे अधिक आप असंतुष्ट हैं :)
vicatcu

7
एक एक्स इनपुट और न ही है सुरुचिपूर्ण समाधान। यह निर्धारित करने के लिए कि रजिस्टर में शून्य है, यह देखने के लिए हर बिट की जांच की जानी चाहिए कि क्या यह तार्किक 0 है। आपने निर्दिष्ट किया है कि आपको एक बिट आउटपुट की आवश्यकता है। इसलिए आपको एक्स इनपुट के साथ कुछ फ़ंक्शन की आवश्यकता है, और एक एनओडी की तरह एक आउटपुट।
W5VO

जवाबों:


14

बस के रूप में सभी बिट्स के आसपास कोई रास्ता नहीं है, के रूप में असंतोषजनक लग सकता है। हालाँकि, आप सिलिकॉन में दो इनपुट गेट्स तक ही सीमित नहीं हैं। आप पुलअप नेटवर्क में 4 श्रृंखला पी-टाइप ट्रांजिस्टर और पुलडाउन नेटवर्क में 4 समानांतर एन-टाइप ट्रांजिस्टर लगाकर सीएमओएस लॉजिक में 4-इनपुट एनआर गेट का निर्माण कर सकते हैं। यह आपके पेड़ टोपोलॉजी की गहराई को कम करता है और इसलिए आपके प्रसार में देरी करता है। आप सिर्फ़ उस सिद्धांत को ले सकते हैं, हालांकि सीरीज़ के पार संचयी वोल्टेज गिरने से पहले ट्रांजिस्टर पुल-अप को पुल-अप नहीं बनाता है जो "1" होने के लिए पर्याप्त है ... चार अंगूठे का एक अच्छा नियम है अगर मुझे सही याद है।


बारी-बारी से बड़ी संख्या में बिट्स के लिए NOR और NAND गेट का उपयोग करने से समझ में आएगा? उदाहरण के लिए, 4 गेटों के फैन-इन के साथ, 64-बिट शून्य टेस्ट में 16 NOR गेट्स का उपयोग किया जा सकता है, यदि 4 बिट्स शून्य से 4 NAND गेट्स हैं, जो 0 के परिणाम को फीड करता है, यदि सभी 4 बिट्स 1 हैं (सभी 16 मूल बिट्स 0 थे), इन चार परिणामों को फिर अंतिम NOR गेट पर भेजा जाएगा। (मैं एक ईई नहीं हूं, लेकिन यह मध्यवर्ती इनवर्टर का उपयोग करने से बेहतर प्रतीत होता है — ऑल-शून्य परिणाम को 0 पर वापस लाने के लिए और केवल NOR गेट्स का उपयोग करने के लिए।)
पॉल ए। क्लेटन

शून्य विलंबता की विलंबता को आंशिक विलंबता में आंशिक रूप से मोड़ने के तरीके भी हो सकते हैं।
पॉल ए। क्लेटन

NMOS का उपयोग करने के बारे में क्या: यदि कोई इनपुट 1 है तो एक पुल-अप रोकनेवाला और X ट्रांजिस्टर को 0 से नीचे लाने के लिए?
Oskar Skog


8

8 बिट मशीनों के साथ विशिष्ट समाधान यह था कि ALU कई 'ध्वज' बिट्स का उत्पादन करेगा जो सबसे हालिया ऑपरेशन के परिणाम का प्रतिनिधित्व करेंगे। हालांकि यह संभव होगा कि आपके आसपास जितने भी फ्लैग बिट्स हों (यानी, आपके सीपीयू में हर रजिस्टर के लिए 'Z' झंडा हो सकता है), यह आमतौर पर आपके द्वारा गणना की गई चीज़ है जो आप सबसे दिलचस्प है, इसलिए यह इस तरह से करने के लिए कुछ हद तक समझ में आता है।

उन पुराने CPU में से कुछ स्वचालित रूप से लगभग हर डेटा मूव के लिए फ्लैग बिट्स सेट करते हैं, जबकि दूसरों को आपको अपने कोड में एक विशिष्ट 'तुलना' निर्देश को छड़ी करने की आवश्यकता होगी यदि आपको अचानक पता होना चाहिए कि क्या एक निश्चित रजिस्टर शून्य था। और क्या आप हर रजिस्टर के लिए एक शून्य चेक प्रदान करते हैं या सिर्फ जो गणना की गई है उसके लिए, वास्तव में "यह शब्द शून्य है" या केवल सभी बिट्स की तुलना में जांचने का कोई सरल तरीका नहीं है।


1
यह 32-बिट एआरएम चिप्स के लिए भी विशिष्ट है, और अधिकांश आर्किटेक्चर के लिए विशिष्ट हो सकता है। ARM के लिए, APSR (एप्लिकेशन प्रोग्राम स्टेटस रजिस्टर) N, Z, C, V और Q बिट्स (ऋणात्मक, शून्य, कैर्री, ओवेरफ़्लो, संतृप्त) बिट्स के अलावा अन्य कार्यों को प्रदान करने के लिए बिट बिट की तलाश में है। । ये आपकी मशीन के लिए उपयोगी हो सकते हैं या नहीं भी।
केविन वर्मर

मैं या समाधान ठीक है, लेकिन यह मुझे कीड़े मैं सिर्फ एक बिट पाने के लिए तर्क का इतना उपयोग करना है। कुछ सुरुचिपूर्ण समाधान होना चाहिए।
रिक_2047

@ Rick_2047 - आपने यह उल्लेख नहीं किया कि आप इसके साथ क्या लागू कर रहे हैं, लेकिन मैं एक FPGA का अनुमान लगा रहा हूं? यह मुझे भी बग कर देगा, चाहे जितने भी लॉजिक ब्लॉक बाँधने पड़ें, एक हाई फैन-इन गेट करने के लिए। यह केवल उनमें से केवल एक में डालने का एक अच्छा कारण है।
जस्टजेफ

एक FPGA नहीं बल्कि एक HDL और हार्डवेयर सिम्युलेटर है।
रिक_2047

3

उदाहरण के लिए कुछ CPU, MIPS में एक रजिस्टर होता है जिसमें हमेशा शून्य होता है, जिससे एक और रजिस्टर का परीक्षण बहुत तेजी से होता है।


यदि मेरे पास एक रजिस्टर है जिसमें शून्य होने की संख्या की मैं कैसे जांच करूं? इसके अलावा, मैं केवल एक बिट उत्पन्न करना चाहता हूं जो कि 16 बिट्स की बस शून्य है या नहीं, यह निर्भर करता है
Rick_2047

1
एक तुलनित्र ... जो एक शानदार NOR गेट को पतित करता है ...
vicatcu

यदि रजिस्टर सस्ते हैं (वे एक FPGA में SRAM ब्लॉक में हैं) तो उन्हें कुछ इस तरह से लाभ हो सकता है और उन्हें अन्य कारणों के लिए निर्देश की तुलना करने के लिए एक रजिस्टर की आवश्यकता होती है।
jpc

@vicatu - वास्तव में यदि आप दो N बिट संख्या की तुलना करना चाहते हैं, तो आपको N 2-इनपुट XOR गेट की आवश्यकता होगी। OR / NOR चीज़ केवल शून्य परीक्षणों के लिए अच्छी है।
जस्ट जेफ

लेकिन अंततः मुझे जितने भी गेट्स का उपयोग करने की आवश्यकता होगी, मेरे पास इनपुट बिट्स या कम से कम कई ट्रांजिस्टर होंगे।
रिक_2047

0

मैं एक बहुत बड़ा प्रशंसक हूं or_reduce- अधिकांश संश्लेषण उपकरण इसे सर्वश्रेष्ठ कार्यान्वयन के लिए अनुकूलित करेंगे क्योंकि वे जानते हैं कि आप वास्तव में क्या कर रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.