VHDL: या एक वेक्टर के इन-इंग बिट्स एक साथ


11

मैं एक वेक्टर के बिट्स को एक साथ करना चाहता हूं। तो कहते हैं कि मेरे पास एक वेक्टर है example(23 downto 0)और मैं सभी बिट्स को एक और वेक्टर में रखना चाहता हूं, क्या ऐसा करने का कोई तरीका है जिसमें शामिल नहीं होना है example(0) or example(1) or ...example(23)?


क्या आप इसके बजाय शून्य की तुलना कर सकते हैं? उसी का असर होगा।
डेविड

डेविड की टिप्पणी (32 बिट वेक्टर का उपयोग करके) पर विस्तार करने के लिए: or_result <= '0' when input=X"00000000" else '1';प्रश्न में वेक्टर की लंबाई से मिलान करने के लिए शून्य की संख्या बदलें।

तर्क कमी vhdl 2008 में उपलब्ध है, देखें stackoverflow.com/questions/20296276/…
Moberg

1
इसके अलावा आप अधिक सामान्य तरीके का उपयोग कर सकते हैं:result <= '0' when (example=(example'range=>'0')) else '1';
मिगुएल रिस्को

जवाबों:



5

वेरिलोग के पास एक सुविधाजनक "कमी ऑपरेटर" है जो वास्तव में आपके लिए पूछ रहा है: वेक्टर के |example[23:0]सभी बिट्स का आदेश देता है example

दुर्भाग्य से VHDL के पास यह ऑपरेटर नहीं है। हालांकि comp.lang.vhdl अकसर किये गए सवाल के अनुसार

वेक्टर के सभी बिट्स (जैसे, "या" वेक्टर के सभी बिट्स) पर कमी ऑपरेशन करने के लिए कोई पूर्वनिर्धारित VHDL ऑपरेटर नहीं है। हालांकि, कमी ऑपरेटरों को आसानी से लागू किया जा सकता है:

[एक उदाहरण को छोड़ देना जो 'X' और 'Z' मान को संभालता नहीं है]

    function or_reduce( V: std_logic_vector )
                return std_ulogic is
      variable result: std_ulogic;
    begin
      for i in V'range loop
        if i = V'left then
          result := V(i);
        else
          result := result OR V(i);
        end if;
        exit when result = '1';
      end loop;
      return result;
    end or_reduce;
    ...
    b <= or_reduce( b_vec ); 

जो कोई भी नीचे गिरा, उसकी देखभाल करने के लिए क्यों?
फोटॉन

क्या यह संश्लेषित है?
जोहान्स शाउब -

@ जोहान्सचैब-लिट, निश्चित रूप से, यह वास्तव में बड़े OR गेट (या छोटे आकार का एक पेड़) के लिए संश्लेषित किया जा सकता है। संभवतः मानक पुस्तकालय में संस्करण (हारून डी। मार्स्को के उत्तर में) मक्खी पर उत्पन्न किसी चीज से बेहतर अनुकूलित होगा।
फोटॉन

VHDL-2008 में यूनिरी रिडक्शन ऑपरेटर्स हैं। एफएक्यू पुराना है। इसके अलावा, प्रस्तुत समारोह जल्दी से बाहर निकलने के कारण संदिग्ध सिंथेसिज़ेबिलिटी का है, जो कुछ टूल को चोक कर सकता है और सिमुलेशन के लिए माइक्रो-ऑप्टिमाइजेशन के अलावा अन्य आवश्यक नहीं है।
केविनटाइबेड्यू 3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.