2013-03-05 35 views
0

我開始在VHDL中,並且嘗試向端口添加啓用時遇到問題。我有一個8位的輸出向量,如果「使能」位輸入爲「1」,我想輸入一個值。否則,在向量中輸入'0'。VHDL - 與向量和位之間的操作

我可以做:

out(0) <= '0' AND Enable; 
out(1) <= '0' AND Enable; 
out(2) <= '1' AND Enable; 
out(3) <= '0' AND Enable; 
out(4) <= '1' AND Enable; 
... 
out(7) <= '0' AND Enable; 

有一個簡單的方法來使這個?我在想:out <= "01010100" AND Enable; 但它不工作...

我可以使用「如果」,但我更喜歡用這種方式來了解如何做到這一點。

回答

3

整潔的方式做,這是與條件信號分配:

Out <= Value when Enable = '1' else (others=>'0'); 

...作爲獎勵,當Enable爲低時,您可以分配您想要的任何值(即使是不同的信號向量)。

+0

完美,甚至更好的解決方案!謝謝 – Xeanhort 2013-03-05 19:37:31

3

而且它與同樣大小的另一種載體,與(others => Enable)

初始化一個更完整的例子:

subtype Data_Word is std_logic_vector(7 downto 0); 

signal Out, Value, Mask : Data_Word; 
... 
Mask <= (others => Enable); 
Out <= Value and Mask; 

或許只是

Out <= Value and (Out'Range => Enable);