2016-04-06 30 views
-2

Bu kurulum neden çalışır? (: Tamsayı: 1 M) aracılığıyla dışarı 1 olmak limanın biraz belirtmek istiyorum ama ne zaman M-1 0 downto sadece hayır mantıklı 0 aşağı 0, olurduVHDL: generic map setup

component mux2to1 is 
generic (M : integer := 1); -- Number of bits in the inputs and output 
port (input0 : in m32_vector(M-1 downto 0) := (others => '0'); 
     input1 : in m32_vector(M-1 downto 0) := (others => '0'); 
     sel  : in m32_1bit; 
     output : out m32_vector(M-1 downto 0)); 
end component; 

Ben genric haritalarını anlamak yoludur .

+2

Sen 0, 1 veya daha fazla eleman olan bir dizi olabilir. (0'a kadar 0) 1 öğeye sahip olur. Bakınız IEEE Std 1076-2008 5.3.2 Dizi türleri, 5.3.2.2 İndeks kısıtlamaları ve ayrık aralıklar. – user1155120

cevap

1

@ @ kullanıcı1155120'de, 1 öğeye sahip bir dizi olabilir. (0'a kadar 0) 1 öğeye sahip olur.

Ancak yapmak için başka bir önemli nokta vardır: VHDL de belirli bir tür 1 elemanının bir dizi eleman türü ile aynı tür değil

. Yani, örneğin, std_logic ve std_logic_vector(0 downto 0) farklı türlerdir. Birini diğerine atayamazsın. std_logic bir skaler iken, std_logic_vector(0 downto 0) bir dizi türüdür.

Bu türler arasında "dönüştürmek" için dizi türünü dizine eklemeniz gerekir. Yani, sinyallerle

signal S : std_logic; 
signal A : std_logic_vector(0 downto 0); 

Eğer S veya tam tersi bir atayamıyoruz, fakat yapabileceğin bu:

A(0) <= S; 

veya bu:

S <= A(0); 

yapabilirsiniz ayrıca dizin dizi port . Yani,

entity HAS_ARRAY_PORT 
    port (P : in std_logic_vector(0 downto 0)); 
end; 

ile bunu yapabilirsin:

L: entity work.HAS_ARRAY_PORT port map (P(0) => S); 
+0

Ayrıca std_logic ve std_logic_vector farklı türler ve bir dizinin adlandırılmış bir dizini ve adlandırılmış dizini de diyebilirsiniz. Bu durumda, dizi elemanının taban tipi std_logic taban tipi ile aynıdır. IEEE Std 1076-2008 8.4 Endekslenmiş isimler ve std_logic_1164 için paket bildirimi. – user1155120

+0

böylece jenerik (M: tamsayı: = 1) M yi 1 olarak atadığımızı ve 0'ın sadece bir öğe olacağını, ancak veri tipinin henüz atanmadığını mı kastediyoruz? Bu kelime veya 1 bit veya başka bir şey olabilir mi? –

+0

@Zac Uwyo H jenerik (M: tamsayı: = 1), m32_vector türünde bir eleman dizisine sahip olduğunuz anlamına gelir. –