2017-04-26 28 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