[VHDL]使用信号驱动输出端口,为什么输出端口不可见?

时间:2015-11-29 19:14:51

标签: vhdl electronics

参考这篇文章How to write to two output ports from inside architecture in VHDL?我使用与其答案之一相同的概念制作了一个VHDL模块。 他的代码:

entity HIER is
port (
    IN1 : in bit;
    OUT1, OUT2 : out bit);
end hier;

architecture HIER_IMPL of HIER is 
   signal temp : bit;
   component BUF1 is 
      port (a : in bit; o : out bit);
   end component;
begin
   BUF2 : BUF1 port map (a => IN1, o => temp);
   OUT1 <= temp;
   OUT2 <= temp;

end HIER_IMPL;

他生成的RTL(使用xilinx 9.1i) enter image description here

我使用相同的信号概念制作了一个D触发器来驱动输出端口 我的代码:

entity dfff is
    Port ( D : in  STD_LOGIC;
           clk : in  STD_LOGIC;
           Q : out  STD_LOGIC;
           Qbar : out  STD_LOGIC);
end dfff;

architecture Behavioral of dfff is
component nand_2 is
port(A:in std_logic;
        B:in std_logic;
        C:out std_logic);
end component;
component not_1 is
port(A:in std_logic;
                B:out std_logic);
                end component;
signal Z : std_logic_vector(4 downto 0);
begin
n1 : not_1 port map (D,z(0));
n2 : nand_2 port map(D,clk,z(1));
n3 : nand_2 port map(z(0),clk,z(2));
n4 : nand_2 port map(z(1),z(3),z(4));
n5 : nand_2 port map(z(2),z(4),z(3));
Q<=z(4);
Qbar<=z(3);
end Behavioral;

我生成的RTL(使用xilinx 9.1i): enter image description here

现在我的问题是为什么我的输出端口Q和Qbar在RTL中看不到,而他的OUT1和OUT2是? 我是这个领域的初学者。

2 个答案:

答案 0 :(得分:2)

在ISE14.4中正常工作。我记得旧版本的RTL Viewer实际上无法使用。

enter image description here

答案 1 :(得分:1)

当我第一次开始编写VHDL时,我也尝试在离散门中编写FF,AFAIR它并没有太顺利。 你应该写你的平台(在这种情况下可能是一些Xilinx芯片),知道它是什么和做什么。 当你接受培训时,这也将对你有所帮助,FPGA和CPLD不是伟大的AND和OR门阵列,它们是很好的查找表阵列,所以在FPGA中实现FF的机会很好一点也不瘦。

关于你的实际问题,我首先要确保我确实将输出设置为某个地方。合成器非常努力地不包含多余的电路,所以如果你的结果没有结束,它可能会被优化掉(尽管这肯定也会优化你所获得的电路)。

同样如上所述,尝试更新您的工具,14.7比9.1更新,甚至是2013年10月。