假设一个具有已定义两种架构的实体。 这两个体系结构具有相同的实体(明显)工作,随后在两个设定的输出引脚为不同的值。 我的问题是,如何在程序(模拟器)确定哪些输出应该是(即其架构选择)?
下面是一个例子:
library ieee;
use ieee.std_logic_1164.all;
entity Exercise_4 is
generic (n : integer := 4);
port(
a, b : std_logic_vector (n-1 downto 0);
clk, rst : std_logic;
q, qn : buffer std_logic_vector (n-1 downto 0));
end;
architecture one of Exercise_4 is
begin
process (clk, rst)
begin
if rst = '0' then
q <= (others=>'0');
elsif (clk' event and clk = '0') then
q <= a ;
end if;
end process;
process (clk, rst)
begin
if rst = '0' then
qn <= (others=>'1');
elsif (clk' event and clk = '0') then
for i in a'range loop
qn(i) <= not q(i) ;
end loop;
end if;
end process;
end;
architecture two of Exercise_4 is
begin
process (clk,rst)
begin
if rst = '0' then
q <= (others=>'0');
qn <= (others=>'0');
elsif (clk' event and clk = '0') then
q <= a;
qn <= b ;
end if;
end process;
end;
我做了模拟,发现是q得到了分配的价值和QN得到说明B赋值。 看来,第二个体系结构已经由编译器,我不明白为什么程序决定这样做选择。
谢谢。