2012-04-29 14 views
10

मैं वीएचडीएल में एक छोटी सी चीज विकसित कर रहा हूं और इसमें काफी नया हूं। मुझे एक छोटे से std_logic_vector को एक छोटे से टुकड़ा करने के तरीके को समझने में परेशानी हो रही है।वीएचडीएल में एक std_logic_vector "टुकड़ा" कैसे करें?

उदाहरण के लिए मैं 3 संकेत है:

signal allparts: std_logic_vector(15 downto 0); 
signal firstpart: std_logic_vector(7 downto 0); 
signal secondpart: std_logic_vector(7 downto 0); 

असल में, क्या मैं चाहता हूँ बिट्स 15 firstpart को 0 से secondpart और बिट्स 7 से 8 के माध्यम से आवंटित करने के लिए है। वास्तव में किस प्रकार मैं "टुकड़ा" अलग-अलग बिट्स

उत्तर

18

बताए इस तरह एक वेक्टर आप सीधे उन्हें प्रदान कर सकते हैं होगा:

firstpart <= allparts(15 downto 8); 
secondpart <= allparts(7 downto 0); 

... या अगर firstpart और secondpart बस वैकल्पिक तरीके के हिस्से का संदर्भ देने वाले allparts सिग्नल, आप एक उपनाम का उपयोग करना चाह सकते हैं:

alias firstpart is allparts(15 downto 8); 
alias secondpart is allparts(7 downto 0); 
+0

आह। मैं अब और अधिक देख रहा हूं कि वीएचडीएल एक बहुत ही सुसंगत भाषा है। इसके अलावा, उपनाम समाधान बहुत साफ है, इसलिए मैं उस – Earlz

+0

का उपयोग करूंगा नोट करें कि उदाहरण के लिए 'std_logic_vector ([कुछ अभिव्यक्ति]) (15 से 8 तक) 'काम नहीं करेगा। यह वाक्यविन्यास लागू होने पर अधिक जानकारी के लिए [यह उत्तर] देखें (http://stackoverflow.com/a/28452053/603003)। – ComFreek

संबंधित मुद्दे