本帖最后由 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,不懂得问题描述是否让高手们明白,包涵包涵 |