1

我遇到了一个逻辑设计,我有一些问题。第一个问题是这个设计中是否有两个独立的 SR 触发器?第二个问题是时钟是否通常用于在设计中传播输入,或者这是否可以称为组合?因为我很难理解将输入传播到输出需要多少时钟周期。如果我理解正确,它将首先需要一个时钟周期来传播设计的第一部分(第一个触发器?),然后第二个时钟周期会将新输入传播到设计的第二部分(第二个拖鞋?)。

逻辑设计

我正在尝试在 VHDL 中实现这个设计,但不完全确定我是否可以做这样的事情:

entity logic_design is
  port(
    R     : in std_logic;
    S1    : in std_logic;
    R1    : in std_logic;
    A     : in std_logic;

    Q     : out std_logic;
    Q_bar : out std_logic
  );
end logic_design;

architecture Behavioral of logic_design is

signal sig_Q1_out     : std_logic;
signal sig_Q1_bar_out : std_logic;
signal sig_Q2_out     : std_logic;
signal sig_Q2_bar_out : std_logic;

begin

process(S1, R1)
begin

   sig_Q1_out     <= S1 nand sig_Q1_bar_out;
   sig_Q1_bar_out <= R1 nand sig_Q1_out;

   sig_Q2_out     <= sig_Q1_out nor sig_Q2_bar_out;
   sig_Q2_bar_out <= (sig_Q2_out nor A) nor R;

end process;

Q     <= signal_Q2_out;
Q_bar <= signal_Q2_bar_out;

另外,有没有应用这种设计的例子。我已经读过,在使用开关和按钮时,如果没有正确理解这如何有助于避免弹跳,这是很常见的谴责。

4

2 回答 2

1

目前您的设计是组合的,因为您没有任何时钟,也没有移位寄存器触发器。这意味着如果您更改输入,输出将直接更新,可能会有延迟,但在模拟期间不会考虑在内。

如果您希望您的设计是连续的,您需要添加寄存器(又名 D 触发器)来存储临时结果。DFF 的行为是存储输入并在上升沿时钟上将其作为输出传递。

D 触发器行为

考虑到 D 是输入,Q 是输出,您看到您需要等待时钟的下一个上升沿才能将输入信号传播到输出或在组合设计中。这就是您如何使电路同步并顺便创建管道的方式。

我建议您尝试使用这种行为自己实现 D 触发器,并在每个输入之前添加一个,在每个输出之后添加一个。为了获得这个设计: 同步电路原理

然后你应该模拟它,你会看到你的输出只在上升沿时钟上变化,你也会看到在输入变化和输出更新之间只有一个时钟周期。这也是如何创建同步电路的原理。

如果您想要更多周期(例如为了提高时钟频率),您必须将您的设计分成两个组合设计并在它们之间添加一个 DFF。例如在 Q1 和 S2 之间。如果这样做,第一个时钟周期将根据您的输入计算 Q1 并将其存储在中间 DFF 中,第二个时钟周期将计算来自 Q1 的输出。

我认为您应该寻找一些解释如何进行此类设计的书籍或课程,如果您想制作一些数字电路,这是必要的基础。

于 2017-08-30T08:42:17.927 回答
1

设计中有两个级联的 SR锁存器,而不是触发器。它们都是经典的交叉耦合 NAND 锁存器(如果您对第二个锁存器进行 De-Morganise,您可以看到这一点)。

这是一个完全组合的电路;没有时钟,您必须考虑组合逻辑,而不是时钟/顺序逻辑。

但是,它实际上做了什么,我不确定。通常,S1 和 R1 是低电平有效控制输入,Q2 是低电平有效输出。S1“设置”(并强制)Q2(到 0),但重置(到 1)更复杂 - 你必须释放 R1,然后设置 A 或 R2,这并不明显这是什么意思。它可能是更大电路的一部分——可能是某种触发器的实现(请注意,你认为的“时钟”逻辑实际上基本上是一个异步组合电路,就像这个一样)。单个 SR 锁存器可用于去抖动,但这是用于板级设计 - 你不会在芯片中这样做(你会改为让所有东西都有时钟)。

您的 VHDL 是一个好的开始,但您需要在灵敏度列表中包含 A 和 R2。使用您当前的逻辑,它们实际上是在 S1 或 R1 变化时进行采样的(因此您添加了两个采样电路,即触发器)。我会把它分成两个过程,第一个对 S1 和 R1 敏感,第二个对 Q1、A、R2 敏感。

您可能会将该电路合成到 FPGA 中,但您需要注意时序,否则它将无法工作。

于 2017-08-31T07:50:04.717 回答