2017-04-26 36 views
2

比方說,我有3個控制信號A,B和C.如何輕鬆地在VHDL測試平臺組和驅動信號

在測試平臺是有在VHDL到組這樣的功能和快速迭代所有的情況下(以使例如,它們要迭代for循環)而不是寫出8個案例。

的僞代碼示例:

for i in range 0 to 7 
grouped_signals <=std_logic_vector(to_unsigned(i,3) 
+0

可以使用代碼,你以例子的形式顯示,然後在'port map'中使用這個信號作爲differen t輸入爲A => grouped_signals(0),B => grouped_signals(1),C => grouped_signals(2)'。 – Roman

+2

(A,B,C)<= std_logic_vector(to_unsigned(i,3);其中,賦值的左側目標是一個聚合參見IEEE Std 1076-2008 9.3.3.3數組聚合10.5信號賦值語句10.5 .2簡單信號分配,10.5.2.1(和變量賦值10.6變量賦值語句,...)。(A,B,C)的類型是右邊表達式的類型,並且有一個匹配元素右側表達式的每個元素的目標,這使用位置關聯 – user1155120

+0

這個工作,問題主要是類型不匹配和局部性。 – cc6g11

回答

3

它可以是一個信號分配,其中目標是一個聚合:

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.numeric_std.all; 

entity agg_assign is 
end entity; 

architecture foo of agg_assign is 
    signal A, B, C: std_logic; 
begin 
    process 
    begin 
     wait for 10 ns; 
     for i in 0 to 7 loop 
      (A, B, C) <= std_logic_vector(to_unsigned(i, 3)); 
      wait for 10 ns; 
     end loop; 
     wait; 
    end process; 
end architecture; 

並且產生:

agg_assign.png