【问题标题】:4-bit Shift register with flip flop带触发器的 4 位移位寄存器
【发布时间】:2015-05-10 12:07:44
【问题描述】:

我想使用 D FlipFlop 构建一个 4 位移位寄存器,但我不明白这个图。

这个代码是给我的移位寄存器

ENTITY shift4 IS
 PORT ( D : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; 
 Enable : IN STD_LOGIC;
 Sin : IN STD_LOGIC;
 Clock : IN STD_LOGIC;
 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; 
END shift4 ; 

我为触发器编写了这段代码

entity flipflop is
 port ( D_in : in std_logic;
 CLK : in std_logic;
 CLR : in std_logic;
 Q_out : out std_logic
 );
end flipflop; 


architecture behavior of flipflop is
begin
process(CLK)
begin
if CLR='0' then null;
elsif RISING_EDGE(CLK) then
Q_out <= D_in;
end if;
end process ;
end behavior ;

我没有从这张图中得到的是我应该如何使用 D 以及如何用这个输入和输出移植映射触发器。我试过这个

FF1: flipflop port map(Sin,Clock,Enable, Q(3));
FF2: flipflop port map(Sin,Clock,Enable, Q(2));
FF3: flipflop port map(Sin,Clock,Enable, Q(1));
FF4: flipflop port map(Sin,Clock,Enable, Q(0));

但显然情况并非如此,因为我也必须使用 D,但我找不到使用所有变量的方法。

【问题讨论】:

  • 要理解电路图,请考虑在 D 触发器中,输入“D”的状态在 CLK 的上升沿传递到输出 Q。当 D 随后发生变化时,这对 Q 没有影响,直到 CLK 的下一个上升沿...所以如果您将“1”置于 Sin,在 CLK 的第一个上升沿它到达 Q3(这也是下一个 D 触发器 ...在第二个上升沿到达 Q2 ...等等等等

标签: vhdl flip-flop shift-register


【解决方案1】:
FF1: flipflop port map(Sin,Clock,Enable, Q(3));

这很好,它完全符合您的图表要求。

FF2: flipflop port map(Sin,Clock,Enable, Q(2));

这不好。这将FF2 的输入D 连接到Sin,而图表将其连接到Q(3)。您可以尝试执行以下操作:

FF2: flipflop port map(Q(3),Clock,Enable, Q(2));

但除非您的工具兼容使用 VHDL-2008,否则它将失败(假设它不兼容更安全)。这是因为在 VHDL 中您无法读取实体的输出。相反,您必须定义一个内部信号,将其用于所有分配,并将Q 分配给它。

architecture structural of shift4 is
    signal Q_i : std_logic_vector(3 downto 0); -- _i stands for internal
begin
    Q <= Q_i; -- Drive output port from the internal version

    FF1: flipflop(Sin, Clock, Enable, Q_i(3));

【讨论】:

  • 我明白了,但是 shift4 实体中的 D 呢?我们根本没有使用它
  • 嗯,没看到。从图中看,它是无用的,不应该在那里。顶部图表上没有D 输入,只有SinClockEnableQ
猜你喜欢
  • 1970-01-01
  • 2023-01-11
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
相关资源
最近更新 更多