वेरिलॉग ट्यूटोरियल: चर्चा के बिंदु
- वेरिलॉग क्या है?
- इतिहास और मानकीकरण
- वेरिलोग डिजाइन
- वेरिलोग मॉडलिंग
- वेरिलोग ऑपरेटर्स
वेरिलॉग ट्यूटोरियल से संबंधित अन्य विषयों के लिए, यहाँ क्लिक करें!
वेरिलॉग क्या है?
वेरिलॉग "सत्यापन" और "लॉजिक" शब्दों का संयोजन है। यह हार्डवेयर विवरण भाषा या एक विशेष प्रकार की प्रोग्रामिंग भाषा है जो डिजिटल सिस्टम और सर्किट के हार्डवेयर कार्यान्वयन का वर्णन करती है। यह एक दृढ़ता से टाइप की गई भाषा है और याद किए जाने वाले बिंदु हैं कि यह प्रोग्रामिंग भाषा नहीं है।
चरण-दर-चरण VHDL ट्यूटोरियल के लिए, यहाँ क्लिक करें!
वेरिलोग का इतिहास और मानकीकरण
प्रभु गोयल, ची-लाई हुआंग, डगलस वार्मके और फिल मूरबी ने वर्ष 1983 के आसपास वेरिलॉग विकसित किया। पहला नाम "ऑटोमेटेड इंटीग्रेटेड डिज़ाइन सिस्टम्स" था जिसे आगे "गेटवे डिज़ाइन ऑटोमेशन" के रूप में नाम दिया गया था और वर्ष 1990 में ताल द्वारा खरीदा गया था। ताल अब वेरिलॉग और वेरिलॉग-एक्सएल का कॉपीराइट स्वामी है।
मुख्य रूप से, वेरिलोग का उपयोग परिभाषित करना और अनुकरण शुरू करना था। बाद में भाषा की लोकप्रियता ने अधिक विकास की मांग उठाई, और यह तर्क सर्किट के संश्लेषण की ओर जाता है।
वेरिलॉग ट्यूटोरियल: मानकीकरण
के लिए लोकप्रियता VHDL वेरिलोग भाषा को ओपन सोर्स के रूप में प्रकाशित करने के लिए मजबूर ताल। IEEE द्वारा Verilog के पहले मानकीकरण को 1364-1995 के रूप में लेबल किया गया था और इसे Verilog-95 नाम दिया गया था।
संशोधन | अपडेट |
IEEE 1364 - 2001 | वेरिलोग -२००१। हस्ताक्षर किए गए चर और घोंसले का समर्थन करता है। बड़े पैमाने पर EDA पैकेज द्वारा उपयोग किया जाता है। |
आईईईई 1364-2005 | वेरिलॉग 2005. थोड़ा सुधार और स्पष्टीकरण के साथ आया था। |
आईईईई P1800-2005 | सिस्टम वेरिलॉग। |
आईईईई 1800-2017 | SystemVerilog और Verilog का विलय। SystemVerilog 2009 के रूप में जाना जाता है। |
वेरिलोग डिजाइन
वेरिलॉग में दो तरह की डिज़ाइन कार्यप्रणाली हैं। वो हैं - नीचे-ऊपर दृष्टिकोण और ऊपर-नीचे दृष्टिकोण।
नीचे से ऊपर का दृष्टिकोण: यह मॉडल डिजाइन करने का पारंपरिक तरीका है। योजना को गेट स्तर पर लागू किया गया है। कार्यान्वयन के लिए विशिष्ट फाटकों का उपयोग किया जाता है। यह विधि विभिन्न संरचनात्मक और आदेशित नियोजन के लिए मार्ग खोलती है।
शीर्ष पाद उपागम: इस दृष्टिकोण के पारंपरिक एक पर कुछ फायदे हैं। यहां बदलाव को आसान बनाया जा सकता है। प्रारंभिक परीक्षण भी संभव है।
वेरिलोग मॉडलिंग
वेरिलोग मॉडलिंग में कुछ डिज़ाइन इकाइयाँ हैं। आइए हम प्राथमिक घटकों पर चर्चा करें।
A. मॉड्यूल
एक वेरिलोग मॉडल पोर्ट घोषणाओं, डेटा प्रकार घोषणाओं, सर्किट कार्यक्षमता, समय विनिर्देशों के साथ आता है। मॉड्यूल की एक बुनियादी संरचना नीचे दी गई है।
मॉड्यूल मोड्यूल का नाम (port_list);
अंत मॉड्यूल
- वेरिलॉग मामला संवेदनशील है।
- आरक्षित कीवर्ड निचले मामलों में लिखे गए हैं।
- स्टेटमेंट को समाप्त करने के लिए एक अर्धविराम का उपयोग किया जाता है।
- टिप्पणी नियम सी प्रोग्रामिंग भाषा के समान है।
- एकल पंक्ति टिप्पणी "//" से शुरू होती है.
उदाहरण के लिए - // वेरिलॉग सिंगल लाइन टिप्पणी का उदाहरण
- बहुस्तरीय टिप्पणियां - '/ *' से शुरू होती हैं और '* /' के साथ समाप्त होती हैं।
उदाहरण के लिए -
/* उदाहरण
वेरिलोग मल्टीपल की
लाइन टिप्पणी * /
- सिमुलेशन प्रक्रिया के लिए समय विनिर्देशों का उपयोग किया जाता है।
एक मॉड्यूल में अधिकतम चार स्तर की धारणा होती है। स्तर नीचे परिभाषित किए गए हैं।
व्यवहार: धारणा का उच्चतम स्तर। इस स्तर पर प्रत्याशित डिजाइन की योजना बनाई गई है। हालांकि, हार्डवेयर कार्यान्वयन के लिए कोई विचार नहीं किया गया है।
डाटा प्रवाह: वेरिलोग मॉड्यूल का यह स्तर वांछित डिज़ाइन के डेटाफ्लो का वर्णन करता है। इस स्तर को डिजाइन करते समय घटकों के माध्यम से डेटाफ्लो के हार्डवेयर कार्यान्वयन को ध्यान में रखा जाता है।
गेट: इस वेरिलॉग मॉड्यूल स्तर में तर्क फाटकों को लागू किया जाता है। गेटों के बीच इंटरकनेक्ट लागू होते हैं।
स्विच: धारणा का निम्नतम स्तर। स्विच, भंडारण गांठ को लागू किया जाता है। इंटरकनेक्ट भी उनके बीच डिज़ाइन किए गए हैं।
बी। मॉड्यूल घोषणाएँ
मॉड्यूल की घोषणाएं 'से शुरू होती हैंमॉड्यूल'कीवर्ड। इसमें पोर्ट सूची (यदि मौजूद है) शामिल है।
पोर्ट प्रकार: बंदरगाह तीन प्रकार के होते हैं। नाम और इसकी कार्यक्षमता नीचे दी गई है।
- निवेश - इनपुट पोर्ट
- उत्पादन - आउटपुट पोर्ट
- अंदर बाहर - द्वि-दिशात्मक बंदरगाह
पोर्ट घोषणाएँ: पोर्ट घोषणाओं के लिए सामान्य संरचना नीचे दी गई है।
<पोर्ट_टाइप>पोर्ट_नाम>;
C. डेटा प्रकार
वेरिलोग में कई प्रकार के डेटा प्रकार हैं।
नेट डेटा प्रकार: इस प्रकार के डेटा में प्रवाह के बीच भौतिक अंतर का वर्णन है।
नेट्स -> फंक्शनल ब्लॉक: एमयूएक्स -> फंक्शनल ब्लॉक्स: ऐडर्स -> नेट्स
नीचे दी गई तालिका नेट डेटाटाइप के बारे में अधिक जानकारी प्रदान करेगी।
प्रकार | निस्र्पण |
तार | नोड या कनेक्शन का वर्णन करता है |
तीन | एक त्रि-राज्य नोड का वर्णन करता है |
आपूर्ति 0 | तर्क 0 का प्रतिनिधित्व करता है |
आपूर्ति1 | तर्क 1 का प्रतिनिधित्व करता है |
- बस घोषणाएँ: बस घोषणाओं की सामान्य संरचना नीचे दी गई है।
<डाटा प्रकार> [सबसे महत्वपूर्ण बिट (MSB): कम से कम महत्वपूर्ण बिट (LSB)]सिग्नल_नाम>;
<डाटा प्रकार> [सबसे महत्वपूर्ण बिट (LSB): सबसे महत्वपूर्ण बिट (MSB)]सिग्नल_नाम>;
उदाहरण के लिए -
तार [3: 1] in;
चर डेटा प्रकार: इस डेटाटाइप में उस समय के लिए डेटा सहेजने के लिए तत्व का वर्णन किया गया है।
वेरिलॉग द्वारा समर्थित कई प्रकार के चर हैं। उनमें से कुछ हैं -
पूर्णांक - 32 बिट्स, हस्ताक्षरित।
REG - किसी भी बिट आकार, अहस्ताक्षरित। हस्ताक्षरित reg को लागू करने के लिए, कीवर्ड - 'साइन किए हुए हस्ताक्षर' का उपयोग करें।
वास्तविक, समय, वास्तविक समय - संश्लेषण के लिए कोई समर्थन नहीं।
D. मॉड्यूल तात्कालिकता
सभी घोषणाओं के बाद, मॉड्यूल को कुछ सिंटैक्स की मदद से उच्च-स्तरीय मॉड्यूल पर त्वरित किया जा सकता है। मॉड्यूल को तात्कालिक करके, हम पदानुक्रम के कई स्तरों के साथ डिजाइन बना सकते हैं। इससे हमें सरलता बनाए रखने में मदद मिलेगी। अधिकांश आधुनिक डिजाइनों में पदानुक्रम की कई परतें हैं।
तात्कालिकता के लिए सामान्य प्रारूप नीचे दिया गया है।
<emonenet_name> #<देरी>instance_name> (port_list);
घटक का नाम: यह निचले स्तर के घटक के लिए मॉड्यूल का नाम है।
देरी: यह एक वैकल्पिक विकल्प है। देरी पूरे घटक में देरी का परिचय देती है।
उदाहरण के नाम: यह प्रत्येक व्यक्ति के उदाहरण के लिए डिजाइनर द्वारा दिया गया अनन्य नाम है।
पोर्ट सूची: पोर्ट सूची सिग्नल सूचियाँ देती है जो घटक से जुड़ी होगी।
ई। अनुकरण घटक
डिजाइनिंग प्रक्रिया पूरी होने के बाद, परीक्षण प्रक्रिया शुरू होती है। यह परीक्षण उत्तेजना ब्लॉक का उपयोग करके किया जा सकता है। स्टिमुलस ब्लॉक आमतौर पर एक परीक्षण बेंच के रूप में जाना जाता है।
स्टिमुलस एप्लिकेशन दो प्रकार के हो सकते हैं। प्राथमिक डिज़ाइन डिज़ाइन ब्लॉक से शुरू होता है और सीधे पोर्ट सिग्नल को डिज़ाइन ब्लॉक में ले जाता है।
दूसरा डिज़ाइन उत्तेजना ब्लॉक और उच्च-स्तरीय प्रतिकृति मॉडल में डिज़ाइन ब्लॉक को तुरंत बदल देता है। इंटरफ़ेस ब्लॉक के बीच संचार लिंक है।
कुछ बेसिक वेरिलॉग कॉन्सेप्ट्स
वेरिलोग ऑपरेटर्स
वेरिलोग एचडीएल के लिए तीन मौलिक ऑपरेटर हैं। उन्हें नीचे दिया गया है।
यूनीरी वेरिलोग ऑपरेटर: इस प्रकार के वेरिलोग ऑपरेटर पहले ऑपरेंड में आते हैं।
उदाहरण के लिए: x = ~ y; यहाँ Here ~ ’एक अपर संचालक है
बाइनरी वेरिलोग ऑपरेटर: इस प्रकार के वेरिलोग ऑपरेटर दो ऑपरेंड के बीच आते हैं।
उदाहरण के लिए: x = y || z; यहाँ '||' एक बाइनरी ऑपरेटर है।
टर्नरी वेरिलोग ऑपरेटर: Tवेरिलोग ऑपरेटरों के प्रकार दो अलग ऑपरेटरों को तीन ऑपरेटरों को अलग करने के लिए उपयोग करते हैं।
उदाहरण के लिए: x = y? z: w; यहाँ '?' और ':' टर्नरी ऑपरेटर हैं।
वेरिलॉग एचडीएल के श्रेणीबद्ध ऑपरेटर हैं - अंकगणितीय, तार्किक, संबंधपरक, बिटवाइज़, शिफ्ट, कॉन्टेक्टेशन और इक्वैलिटी। विभिन्न प्रकार के वेरिलोग ऑपरेटरों और उनके प्रतीकों को नीचे दी गई तालिका में दिया गया है।
संचालक का प्रकार | आइकॉन | आपरेशन | संचालन की जरूरत है |
अंकगणित | * | गुणन | दो |
अंकगणित | / | विभाजन | दो |
अंकगणित | + | इसके अलावा | दो |
अंकगणित | - | घटाव | दो |
अंकगणित | % | मापांक | दो |
तार्किक | ! | इनकार | एक |
तार्किक | && | और | दो |
तार्किक | || | OR | दो |
संबंधपरक | > | से अधिक | दो |
संबंधपरक | < | कम से कम | दो |
संबंधपरक | > = | इससे बड़ा या इसके बराबर | दो |
संबंधपरक | <= | से कम या बराबर | दो |
समानता | == | बराबर है | दो |
समानता | ! = = | के बराबर नहीं है | दो |
समानता | === | मामला बराबर | दो |
समानता | ! == | मामला न के बराबर | दो |
बिटवाइज़ | ~ | नकार | एक |
बिटवाइज़ | & | बिटवाइज़ और | दो |
बिटवाइज़ | | | बिटवार या | दो |
बिटवाइज़ | ^ | बिटवाइज़ XOR | दो |
बिटवाइज़ | ~^ | बिटवाइन्स XNOR | दो |
कमी | & | कटौती और | एक |
कमी | ~& | कटौती नंद | एक |
कमी | | | कमी या | एक |
कमी | ~| | कटौती NOR | एक |
कमी | ^ | कटौती XOR | एक |
कमी | ^~ | XNOR को कम करना | एक |
पाली | >> | सही बदलाव | दो |
पाली | << | बायां शिफ्ट | दो |
कड़ी | {} | कड़ी | किसी भी संख्या का हो सकता है |
प्रतिकृति | {{}} | प्रतिकृति | किसी भी संख्या का हो सकता है |
सशर्त | ? : | सशर्त | तीन |
वेरिलोग ऑपरेटर्स में भी पूर्वता है। उनकी प्राथमिकता नीचे दी गई तालिका में दी गई है।
ऑपरेटर | चिह्न | प्रधानता |
यूनिरी गुणन, विभाजन, मापांक | +, -,; ~ ~, /,% | उच्चतम |
जोड़, घटाव पारी | +, - <<, >> | |
संबंधपरक समानता | <, <=>,> = ==; =! =, ===; = == | |
तार्किक रूप से कमी | &, ~ & ^, ^ ~ |, ~ | && || | |
सशर्त | ?: | निम्नतम |
वेरिलॉग नंबर विनिर्देशों
वेरिलॉग नंबर दो प्रकार के होते हैं, आकार की संख्या और असूचीबद्ध संख्या।
Sized Verilog नंबर: वेरिलोग एचडीएल में आकार की संख्या का प्रतिनिधित्व करने के लिए सामान्य संरचना नीचे दी गई है।
'
उदाहरण के लिए - 8'b3456;
यह एक आकार का वेरिलॉग नंबर है जो बताता है कि यह 8-बिट संख्या और बाइनरी प्रकार है।
- आकार: आकार अंकों की संख्या है जो मुख्य संख्या है। आकार दशमलव मूल्यों का उपयोग करके वर्णित है।
- बेस_फॉर्मेट: आधार प्रारूप बताता है कि यह किस प्रकार की संख्या होगी। कई प्रकार हैं - बाइनरी (द्वारा दिए गए - 'बी'), दशमलव (द्वारा दिए गए - 'डी'), अष्टक (द्वारा दिए गए - 'ओ'), हेक्साडेसिमल (द्वारा दिए गए - 'एच')। यदि base_format के लिए कोई विनिर्देशन नहीं है, तो डिफ़ॉल्ट रूप से यह एक दशमलव संख्या है।
- संख्या: मुख्य संख्या जिसे आप रखना चाहते हैं।
अनसाइज़्ड वेरिलॉग नंबर: इन नंबरों को किसी निर्दिष्ट आकार की आवश्यकता नहीं है।
वेरिलोग एचडीएल में अनइंस्टॉल किए गए नंबरों का प्रतिनिधित्व करने के लिए सामान्य संरचना नीचे दी गई है।
'
उदाहरण के लिए - 'h3456;
यह एक अनसुलझा वेरिलॉग नंबर है जो बताता है कि यह एक हेक्साडेसिमल संख्या है।
नकारात्मक संख्या: यदि आप संख्या को ऋणात्मक संख्या के रूप में घोषित करना चाहते हैं, तो संख्या से पहले माइनस सिंबल (-) डालें।
उदाहरण के लिए: - 345; यह एक ऋणात्मक, असमान, दशमलव संख्या है।
वेरिलोग एरेस
Verilog HDL में पूर्णांक, रजिस्टरों (reg), वैक्टर (reg या नेट डेटा प्रकारों, कई बिट लंबाई) और समय की सरणी संभव है। सरणियों की मूल घोषणा एक उदाहरण के साथ नीचे दी गई है।
पूर्णांक मैट्रिक्स [0: 3];
इसका मतलब सात मानों की एक सरणी है।
- वेरिलोग वास्तविक चर के लिए किसी भी सरणी की अनुमति नहीं देता है।
- वेरिलॉग एचडीएल किसी भी बहुआयामी सरणी का समर्थन नहीं करता है।
- एरे तत्वों का उपयोग करके पुनः प्राप्त किया जा सकता है - [ ]
वेरिलॉग ट्यूटोरियल से संबंधित अन्य विषयों के लिए, यहाँ क्लिक करें!
Xilinx का उपयोग करके चरण-दर-चरण Verilog ट्यूटोरियल के लिए, हमारा अगला लेख देखें!
नमस्ते, मैं सुदीप्त रॉय हूं। मैंने इलेक्ट्रॉनिक्स में बी.टेक किया है। मैं इलेक्ट्रॉनिक्स उत्साही हूं और वर्तमान में इलेक्ट्रॉनिक्स और संचार के क्षेत्र के लिए समर्पित हूं। मुझे एआई और मशीन लर्निंग जैसी आधुनिक तकनीकों की खोज में गहरी रुचि है। मेरा लेखन सभी शिक्षार्थियों को सटीक और अद्यतन डेटा प्रदान करने के लिए समर्पित है। किसी को ज्ञान प्राप्त करने में मदद करने से मुझे बहुत खुशी मिलती है।
आइए लिंक्डइन के माध्यम से जुड़ें -