VHDL में BIT पर STD_LOGIC का उपयोग कब करें


10

का उपयोग करने के बीच अंतर Whats:

ENTITY MyDemo is 
    PORT(X: IN STD_LOGIC; F: OUT STD_LOGIC );
END MyDemo; 

तथा

ENTITY MyDemo is 
    PORT(X: IN BIT; F: OUT BIT );
END MyDemo; 

STD_LOGIC और इसके विपरीत BIT का उपयोग करने की सीमाएँ क्या हैं? क्या वे पूरी तरह से इंटरचेंज सक्षम हैं? मैं समझता हूं कि अगर मैंने STD_LOGIC को परिभाषित किया है तो मैं इसे BIT_Vector के साथ उपयोग नहीं कर सकता हूं ताकि यह एलीमेंट तत्वों को एक्सेस कर सके। लेकिन मैं अंतर देख नहीं सकता।


जवाबों:


10

Bitएक पूर्वनिर्धारित प्रकार है और केवल इसका मान हो सकता है 0या 1Bitप्रकार आर्दश मूल्य है।

type Bit is ('0', '1');

std_logicstd_logic_1164पैकेज का हिस्सा है और एक डिजिटल प्रणाली के भीतर संकेतों के अधिक यथार्थवादी मॉडलिंग प्रदान करता है। यह नौ अलग-अलग मूल्य रखने में सक्षम है। आम तौर पर अपने कोड के भीतर आप केवल का उपयोग करेगा 0, 1और Z(उच्च-जेड)। लेकिन U(अनइंस्टॉलिज्ड) और X(अज्ञात) भी बहुत उपयोगी होते हैं जब सिस्टम को टेस्टबेंच में मॉडलिंग करते हैं।

    -------------------------------------------------------------------    
    -- logic state system  (unresolved)
    -------------------------------------------------------------------    
    TYPE std_ulogic IS ( 'U',  -- Uninitialized
                         'X',  -- Forcing  Unknown
                         '0',  -- Forcing  0
                         '1',  -- Forcing  1
                         'Z',  -- High Impedance   
                         'W',  -- Weak     Unknown
                         'L',  -- Weak     0       
                         'H',  -- Weak     1       
                         '-'   -- Don't care
                       );

--    attribute ENUM_ENCODING of std_ulogic : type is "U D 0 1 Z D 0 1 D";

    -------------------------------------------------------------------    
    -- *** industry standard logic type ***
    -------------------------------------------------------------------    
    SUBTYPE std_logic IS resolved std_ulogic;

std_logic_1164पैकेज भी परिवर्तित करने के लिए रूपांतरण कार्य प्रदान std_logicकरने के लिए Bit


6

ज्यादातर लोग इस्तेमाल करते हैं std_logic। वह u(अपरिभाषित), x(अज्ञात) और z(उच्च प्रतिबाधा) के लिए अनुमति देता है , जो थोड़ा नहीं होता है। हालांकि आप कभी भी किसी चिप में ट्रिस्टेट नहीं कर सकते हैं और इसलिए इसकी आवश्यकता नहीं है z, uयह लापता रेज़सेट खोजने के लिए उपयोगी है। xकई ड्राइवरों को खोजने के लिए उपयोगी है।


7
मुझे लगता है कि यह हास्यास्पद है कि आप Xकई ड्राइवरों को खोजने की उपयोगिता का उल्लेख करते हैं । std_logicवास्तव में VHDL के लिए उद्योग मानक प्रकार है, लेकिन यह VHDL के सबसे अधिक दुरुपयोग की सुविधा पर भी है। std_logicएक सुलझा हुआ संकेत है, जिसका अर्थ है कि एक फ़ंक्शन का उपयोग कई ड्राइवरों के मामले में संकेत के मूल्य को हल करने के लिए किया जाता है। लेकिन अधिकांश मामलों में कई ड्राइवर एक त्रुटि है। std_ulogicइस तरह के एक अनसुलझे प्रकार का उपयोग करके संकलक द्वारा एक त्रुटि के रूप में चिह्नित किया जाएगा।
trondd

@trondd: इसके बारे में अच्छी बात है std_ulogic। लेकिन ध्यान रखें कि कई कोर के साथ लिखा std_logicजाएगा ताकि आप इसके बारे में कुछ देखेंगे।
ब्रायन कार्लटन

1
std_logicवास्तव में सबसे आम प्रकार के आसपास है; मैं सिर्फ यह तर्क दे रहा हूं कि इसका उपयोग मूल इरादे के अनुसार नहीं है: बहु-राज्य संकेतों की मॉडलिंग। आंतरिक डिजाइनों के लिए हम आमतौर पर केवल 1या 0एक चालक पर विचार करते हैं । विषय पर गहन चर्चा के लिए Electronics.stackexchange.com/questions/17524/… देखें ।
trondd

5

std_logic एक संकल्प समारोह है

न केवल std_logicइसके अलावा अधिक उपयोगी राज्य हैं 1और 0, इसमें एक रिज़ॉल्यूशन फ़ंक्शन भी परिभाषित है।

एक संकल्प समारोह एक VHDL भाषा अवधारणा है। यह एक फ़ंक्शन है जो एक प्रकार से जुड़ा होता है, और यह निर्धारित करता है कि क्या होता है जब उस प्रकार के कई मान एकल सिग्नल पर लागू होते हैं। वाक्य रचना है:

SUBTYPE std_logic IS resolved std_ulogic;

जहां std_ulogicका अनसुलझा (और इस तरह बहुत कम उपयोगी) संस्करण है std_logic

विशेष रूप से, इसका मतलब है अच्छी चीजों की तरह 0 और 1सुराग के लिए X:

library ieee;
use ieee.std_logic_1164.all;

entity std_logic_tb is
end std_logic_tb;

architecture behav of std_logic_tb is
    signal s0 : std_logic;
begin
    s0 <= '0';
    s0 <= '1';
    process
    begin
        wait for 1 ns;
        assert s0 = 'X';
        wait;
    end process;
end behav;

यह सहज ज्ञान युक्त बनाता है, जैसा कि हम समझते Xहैं कि राज्य जहां एक ही तार पर कई असंगत मूल्य लागू होते हैं।

std_logic यह भी जानता है कि एलआरएम पर मौजूद तालिका के अनुसार इनपुट संकेतों के हर दूसरे संभावित जोड़े को कैसे हल किया जाए।

bit दूसरी ओर, एक रिज़ॉल्यूशन फ़ंक्शन नहीं होता है, और अगर हमने इसे उपरोक्त उदाहरण पर उपयोग किया है, तो यह GHDL 0.34 पर एक सिमुलेशन त्रुटि का कारण होगा।

के संभावित मान std_logicएक अच्छा विकल्प है क्योंकि वे द्वारा मानकीकृत कर रहे हैं आईईईई 1164 कई सामान्य उपयोग के मामलों के साथ और सौदा।


0

std_logic बिट की तुलना में अधिक समृद्ध है , और मूल रूप से इसका ज्यादातर समय उपयोग किया जाना चाहिए।

बूलियन प्रकार भी है , जो, बिट की तरह , दो मान हैं। यह तुलना का प्रकार है, एक IF [बूल] या WHEN [बूल] के बाद अपेक्षित प्रकार , अक्सर चयन स्थिरांक के लिए उपयोग किया जाता है:constant ENABLE_DEBUG_INTERFACE : boolean := true;

एक जगह जहां बिट को std_logic के लिए पसंद किया जा सकता है वह बड़ी सरणियों, यादों के लिए है। सिमुलेटरों के अनुकूलन पर, बिट सिम्युलेटर की मेमोरी में std_logic की तुलना में कम क्षेत्र में रहता है । और यह बात मायने रखती है कि क्या आपका डिज़ाइन एक जीबी रैम का इस्तेमाल करता है।

यह बहुत बड़े डिजाइनों के लिए भी तेज हो सकता है, उदाहरण के लिए, पोस्ट-संश्लेषण गेट-स्तरीय नेटलिस्ट से स्वचालित रूप से उत्पन्न कुछ।

बेशक, यह प्रदर्शन पहलू भाषा का हिस्सा नहीं है, और VHDL सिम्युलेटर के कार्यान्वयन पर निर्भर करता है।

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