我用VHDL写了一个简单的RS锁存器,并试图用ISE合成它。合成器增加了一个D触发器,其中D输入接地,我的(S)et和(R)eset输入被视为预置和清除输入。我期望只看到与非门。为什么它在没有必要的情况下添加了一个触发器?也是为什么D输入接地?
entity rs is
Port ( r : in STD_LOGIC;
s : in STD_LOGIC;
q : inout STD_LOGIC);
end rs;
architecture Behavioral of rs is
begin
process( r, s )
begin
if r = '1' then
q <= '0';
elsif s = '1' then
q <= '1';
else
q <= q;
end if;
end process;
end Behavioral;
答案 0 :(得分:2)
您对使用触发器的观察结果不正确。该元素标记为ldcp
,这是一个透明的锁存器。看看你的代码,你已经描述了一个锁存器。 D
输入接地,因为您所做的所有过程都设置或清除了锁存器;你没有描述'加载'操作,所以锁存器不使用它的D
输入。
答案 1 :(得分:2)
FPGA不包含与非门。尽管门在ISE的原理图中显示,但它们的组合功能实际上是在LookUp Tables(LUT)中实现的。仅使用LUT的锁存器功能的行为与使用NAND门实现锁存器时的行为不同。
为了实现锁存功能,Xilinx FPGA必须利用&#34;存储元件&#34; (FPGA中实际可用的物理结构)来模拟它们的行为。这些元素具有可预测的行为。存储元件提供置位和复位输入。与某些逻辑一起,您可以创建类似锁存器的行为。
您可以查看PAR输出而不是合成输出,以了解它是如何实现的。