gpt4 book ai didi

vhdl - 如何判断 VHDL 的输出何时稳定在其最终值?

转载 作者:行者123 更新时间:2023-12-05 00:47:25 25 4
gpt4 key购买 nike

首先,我想声明这是我参加的模拟考试。我知道答案是:cout = 4ns,S = 7ns。只是在寻找一点解释。提前致谢。

对于下面所示的全加器的 VHDL 实现,输出 cout 和 S 何时稳定在它们的最终值(考虑具有最坏情况输入的最坏情况时序路径)?

         architecture concurrent_behavior of full_adder is
signal t1, t2, t3, t4, t5: std_logic;

begin
t1 <= not A after 1 ns;
t2 <= not cin after 1 ns;
t4 <= not ((A or cin) and B) after 2 ns;
t3 <= not ((t1 or t2) and (A or cin)) after 2 ns;
t5 <= t3 nand B after 2 ns;
S <= not((B or t3) and t5) after 2 ns;
cout <= not(t1 or t2) and t4) after 2 ns;
end concurrent_behavior;

最佳答案

您基本上只是跟踪依赖关系,并通过逻辑为每个路由添加依赖关系。通常最容易从一个输出向后追溯到它需要的输入。例如:

cout <= not(t1 or t2) and t4) after 2 ns;

因此,cout 的最后一个阶段有 2 ns 的延迟。它的输入是 t1、t2 和 t4,因此它的 2 ns 延迟要等到 t1、t2 和 t4 都准备好后才能开始(即,这些延迟中最长的一个决定了最后一个阶段的开始时间)。

在这种情况下,t1 和 t2 各延迟 1 ns,t4 延迟 2 ns。因此,最后一个阶段在初始输入后 2 ns 开始。这使得从初始输入到最终输出的时间为 2+2 = 4 ns。

从算法的角度来看,我们可以说任何信号的延迟是该信号最后“阶段”的延迟加上其任何输入的延迟的最大值。

对于 S:

total = 2 + max_delay(B, t3, t5)
total = 2 + delay(t5);
total = 2 + 2 + max_delay(t3, B)
total = 2 + 2 + delay(t3)
total = 2 + 2 + 2 + max_delay(t1, t2, A, cin)
total = 2 + 2 + 2 + delay(t1) (or delay(t2) -- they're the same).
total = 2 + 2 + 2 + 1

关于vhdl - 如何判断 VHDL 的输出何时稳定在其最终值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7987923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com