带VHDL的RS锁存器

时间:2017-03-14 13:15:11

标签: vhdl

我用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;

enter image description here

2 个答案:

答案 0 :(得分:2)

您对使用触发器的观察结果不正确。该元素标记为ldcp,这是一个透明的锁存器。看看你的代码,你已经描述了一个锁存器。 D输入接地,因为您所做的所有过程都设置或清除了锁存器;你没有描述'加载'操作,所以锁存器不使用它的D输入。

答案 1 :(得分:2)

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

为了实现锁存功能,Xilinx FPGA必须利用&#34;存储元件&#34; (FPGA中实际可用的物理结构)来模拟它们的行为。这些元素具有可预测的行为。存储元件提供置位和复位输入。与某些逻辑一起,您可以创建类似锁存器的行为。

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