VHDL

2012-01-24 17 views
11

'da birden çok sıfır içeren bir çıkış nasıl bildirilir Merhaba, bu komutu değiştirmek için bir yol bulmaya çalışıyorum: Bus_S <= "0000000000000000000000000000000" & Ne;, daha kullanışlı bir şeyle. Sıfırları tek tek saymak çok karmaşık değildir. Program, bir ALU için bir SLT birimiyle ilgilidir. SLT yalnızca 1 bit alır (bir ADDSU32'nin MSB'si) ve 32 bitlik bir çıktıya sahiptir, ancak tüm bitler ADDSU32'nin Ne = MSB'sine bağlıdır.VHDL

entity SLT_32x is 
    Port (Ne : in STD_LOGIC; 
     ALUop : in STD_LOGIC_VECTOR (1 downto 0); 
     Bus_S : out STD_LOGIC_VECTOR (31 downto 0)); 
end SLT_32x; 

architecture Behavioral of SLT_32x is 
begin 
    Bus_S <= "0000000000000000000000000000000" & Ne; 
end Behavioral; 

(30 0 downto) böyle = '0' falan kullanmak için bir yolu var mı (plz şimdilik ALUop görmezden)? Teşekkürler.

+1

sayesinde: 'sabitesi C: STD_LOGIC_VECTOR (30 0 downto) = (diğerleri => '0');' – BugShotGG

cevap

24

Bunu deneyin: bus_S <= (0 => Ne, others => '0') Anlamı: 0 değerini Ne'a ayarlayın ve diğer bitleri '0'a ayarlayın. Verilen cevaplara

1

alternatif:

architecture Behavioral of SLT_32x is 
begin 
    Bus_S <= (others => '0'); 
    Bus_S(0) <= ne; 
end Behavioral; 

daima combinatoric süreçte son atama dikkate alınır. Bu durum, çoğu vaka için bir varsayılan atamaya ve daha sonra özel durumları ekleyerek, yani hiyerarşik bir blok üzerinden geniş bir veri yolunu (kayıt olarak tanımlanır) besleyen ve sadece bazı sinyalleri değiştiren çok okunabilir kodlar yapar. de çalışır

+0

Bu; ' ' Bus_S <= C & Ne; Ne_out <= Ne başlar Bir süreç içinde yapılması gerekiyor, aksi takdirde işe yaramaz. en azından ModelSim-Altera 10.3d'de değil – iSWORD