本帖最后由 linkobe 于 2011-4-25 16:37 编辑  
 
library ieee; 
use ieee.std_logic_1164.all; 
 
entity home2 is 
port(d1:in std_logic; 
     clk:in std_logic; 
     d0: out std_logic); 
end home2; 
 
architecture rtl_home2 of home2 is 
signal tmp: std_logic_vector(4 downto 0); 
 
component d_trigger 
port(d,clk:in std_logic; 
     q: out std_logic); 
end component; 
 
begin 
 
G1:for i in 0 to 3 generate 
 
q1:if(i=0) generate  
Ux:d_trigger port map(d1,clk,tmp(i+1)); 
end generate q1; 
q2:if(i=3) generate 
Ux:d_trigger port map(tmp(i),clk,d0); 
end generate q2; 
q3:if((i/=0)and(i/=3)) generate  
Ux:d_trigger port map(tmp(i),clk,tmp(i+1)); 
end generate q3; 
end generate G1; 
end rtl_home2; 
 
运行的环境是quartusII8.1软件。程序中的d_trigger是D触发器的例化名。 
第一个问题是:为何在程序开头,没有加入use work.d_trigger.all;这句话可以正常运行,但是加入了这句话就会报错。其中,d_trigger和当前的实体在同一个目录下,是不是因为这个就可以不加了。如果想加入那句话,应该怎么加才是正确的。 
第二个问题:生成语句的标号是可加可不加的,参考了一些资料也是这么说的。但是在此只要把生成语句的标号删去,比如说把G1删去,就会报错。这是为何? 
 
初学VHDL,不懂得问题描述是否让高手们明白,包涵包涵 |