带 VHDL 的 RS 锁存器

RS latch with VHDL

我用 VHDL 编写了一个简单的 RS 锁存器,并尝试用 ISE 对其进行综合。合成器添加了一个 D 触发器,其中 D 输入接地,我的 (S)et 和 (R)eset 输入被视为预设和清除输入。我希望只看到 NAND 门。为什么它在不需要触发器的情况下添加了触发器?还有为什么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;

您关于使用触发器的观察是不正确的。该元素标记为 ldcp,这是一个透明锁存器。查看您的代码,您所描述的就是闩锁。 D 输入接地,因为你所有的过程都是设置或清除锁存器;您没有描述 'load' 操作,因此闩锁不使用其 D 输入。

FPGA 不包含与非门。尽管 ISE 的原理图中显示了这些门,但它们的组合功能实际上是在查找表 (LUT) 中实现的。仅使用 LUT 的锁存函数的行为与使用 NAND 门实现锁存器时的行为不同。

为了实现锁存功能,赛灵思 FPGA 必须利用 "storage elements"(FPGA 中实际可用的物理结构)来模拟其行为。这些元素具有可预测的行为。存储元件提供设置和重置输入。结合一些逻辑,您可以创建类似闩锁的行为。

您可以查看 PAR 输出而不是综合输出,看看它是如何实现的。