प्राथमिकता एनकोडर
प्राथमिकता एनकोडर एक विद्युत परिपथ या एल्गोरिदम है, जो कई बाइनरी कोड इनपुट को कम संख्या में आउटपुट में कम्प्रेस करता है। प्राथमिकता एनकोडर का आउटपुट शून्य से प्रारंभ होने वाली सबसे महत्वपूर्ण सक्रिय लाइन के सूचकांक का द्विआधारी प्रतिनिधित्व है। इनका उपयोग अधिकांशतः सर्वोच्च प्राथमिकता वाले इंटरप्ट इनपुट पर कार्य करके इंटरप्ट अनुरोधों को नियंत्रित करने के लिए किया जाता है।
यदि एक ही समय में दो या दो से अधिक इनपुट दिए जाते हैं, तो सर्वोच्च प्राथमिकता वाले इनपुट को प्राथमिकता दी जाएगी।[1] एकल बिट 4 से 2 एनकोडर का एक उदाहरण दिखाया गया है, जहां उच्चतम-प्राथमिकता वाले इनपुट बाईं ओर हैं और x एक अप्रासंगिक मान को इंगित करता है - अर्थात् वहां कोई भी इनपुट मान समान आउटपुट देता है, क्योंकि इसे उच्च-प्राथमिकता वाले इनपुट द्वारा प्रतिस्थापित किया जाता है। (सामान्यतः सम्मिलित है[lower-alpha 1]) "v" आउटपुट इंगित करता है कि इनपुट वैध है या नहीं है।
I3 | I2 | I1 | I0 | O1 | O0 | v |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | x | x | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | x | 0 | 1 | 1 |
0 | 1 | x | x | 1 | 0 | 1 |
1 | x | x | x | 1 | 1 | 1 |
बड़े एनकोडर बनाने के लिए प्राथमिकता एनकोडर को सरलता से एरे में जोड़ा जा सकता है, जैसे छह 4-से-2 प्राथमिकता एनकोडर से बना एक 16-से-4 एनकोडर - चार 4-से-2 एनकोडर जिनके सिग्नल स्रोत उनके इनपुट से जुड़े होते हैं, और शेष दो एनकोडर पहले चार के आउटपुट को इनपुट के रूप में लेते हैं। सभी संभावित इनपुट कॉन्फ़िगरेशन को संभालने की स्थिति में, प्राथमिकता एनकोडर एक सरल एनकोडर परिपथ में संशोधन है।
प्राथमिकता एनकोडर का पुनरावर्ती निर्माण[2][3][4]
एक प्राथमिकता-एनकोडर, जिसे लीडिंग शून्य डिटेक्टर (एलजेडडी) या लीडिंग शून्य काउंटर (एलजेडसी) भी कहा जाता है, एक -बिट इनपुट वेक्टर प्राप्त करता है और इनपुट वेक्टर में पहले बाइनरी '1' के सूचकांक का पता लगाता है। एक वैध संकेत इंगित करता है कि क्या इनपुट वेक्टर में कोई बाइनरी '1' पाया गया था, इसलिए सूचकांक वैध है।
प्राथमिकता-एनकोडर को रिकर्सन द्वारा कुशलतापूर्वक निर्मित किया जा सकता है। इनपुट वेक्टर को बिट्स के साथ समान टुकड़ों में विभाजित किया गया है। एक प्राथमिकता एनकोडर के साथ प्रत्येक टुकड़े के लिए 𝑛/𝑘 की एक संकीर्ण चौड़ाई प्रयुक्त की जाती है। पहले वैध टुकड़े का पता लगाने के लिए, प्रत्येक का वैध बिट, बिट पर जाता है। इस टुकड़े का स्थान समग्र सूचकांक का उच्च भाग है, और समग्र सूचकांक के निचले हिस्से का उत्पादन करने के लिए टुकड़े के अन्दर ही स्पष्ट स्थान निर्धारित करता है।
प्रस्तावित संरचना की गहराई है, जबकि हार्डवेयर क्षेत्र की जटिलता है। यदि अल्टेरा के स्ट्रैटिक्स V या समकक्ष उपकरण का उपयोग किया जाता है, तो उच्च प्रदर्शन और क्षेत्र संपीड़न प्राप्त करने के लिए की अनुशंसा की जाती है, चूँकि मक्स को 6-एलयूटी का उपयोग करके कार्यान्वित किया जा सकता है, इसलिए यह एक संपूर्ण एएलएम है।
पुनरावर्ती प्राथमिकता-एनकोडर के लिए एक ओपन-सोर्स वेरिलॉग जनरेटर ऑनलाइन उपलब्ध है।[5]
वेरिलॉग में प्राथमिकता एनकोडर का व्यवहारिक विवरण इस प्रकार है।[5]
// behavioural description of priority enconder;
// https://github.com/AmeerAbdelhadi/Indirectly-Indexed-2D-Binary-Content-Addressable-Memory-BCAM
module pe_bhv
#( parameter OHW = 512 ) // encoder one-hot input width
( input clk , // clock for pipelined priority encoder
input rst , // registers reset for pipelined priority encoder
input [ OHW -1:0] oht , // one-hot input / [ OHW -1:0]
output reg [`log2(OHW)-1:0] bin , // first '1' index/ [`log2(OHW)-1:0]
output reg vld ); // binary is valid if one was found
// use while loop for non fixed loop length
// synthesizable well with Intel's QuartusII
always @(*) begin
bin = {`log2(OHW){1'b0}};
vld = oht[bin] ;
while ((!vld) && (bin!=(OHW-1))) begin
bin = bin + 1 ;
vld = oht[bin];
end
end
endmodule
सरल एनकोडर
एक एनकोडर (डिजिटल) परिपथ वन-हॉट से बाइनरी कनवर्टर है। अर्थात यदि 2n इनपुट लाइनें हैं, और अधिकतम उनमें से केवल एक ही कभी ऊंची होगी, तो इस 'हॉट' लाइन का बाइनरी कोड n-बिट आउटपुट लाइनों पर निर्मित होता है।
टिप्पणियाँ
- ↑ For instance, the 74x147 10-to-4 BCD priority encoder does not have a dedicated output valid signal. However, invalid is indicated by all outputs simultaneously high. https://www.ti.com/lit/ds/symlink/sn74ls148.pdf
संदर्भ
- ↑ M. Morris Mano, Michael D. Ciletti, "Digital Design", 4th Edition, Prentice Hall, 2006, ISBN 978-0-13-198924-5.
- ↑ Abdelhadi, Ameer M. S. (2016). Architecture of block-RAM-based massively parallel memory structures : multi-ported memories and content-addressable memories (Thesis). University of British Columbia.
- ↑ Abdelhadi, Ameer M.S.; Lemieux, Guy G.F. (May 2015). "Modular SRAM-Based Binary Content-Addressable Memories". 2015 IEEE 23rd Annual International Symposium on Field-Programmable Custom Computing Machines. pp. 207–214. doi:10.1109/FCCM.2015.69. ISBN 978-1-4799-9969-9. S2CID 16985129.
- ↑ Abdelhadi, Ameer M. S.; Lemieux, Guy G. F. (December 2014). "Deep and narrow binary content-addressable memories using FPGA-based BRAMs". 2014 International Conference on Field-Programmable Technology (FPT). pp. 318–321. doi:10.1109/FPT.2014.7082808. ISBN 978-1-4799-6245-7. S2CID 2074456.
- ↑ 5.0 5.1 Abdelhadi, A.M.S.; Lemieux, G.G.F. (2014). "Modular SRAM-based Indirectly-indexed 2D Binary Content Addressable Memory II2DCAM". The University of British Columbia.
Abdelhadi, A.M.S.; Lemieux, G.G.F. (2015). "Modular SRAM-Based Binary Content-Addressable Memories" (PDF). 2015 IEEE 23rd Annual International Symposium on Field-Programmable Custom Computing Machines. IEEE. pp. 207–214. doi:10.1109/FCCM.2015.69. ISBN 978-1-4799-9969-9. S2CID 16985129.