gpt4 book ai didi

vhdl - 如何在实践中评估流程

转载 作者:行者123 更新时间:2023-12-02 05:33:20 24 4
gpt4 key购买 nike

我有如下两个过程。

如果说 A=1、B=2 和 C=3,模拟中发生的是上升沿 B=1 和 C=2,这就是我想要的结果。

但是我能保证在将设计实现到 fpga 中时也是如此吗?

让我担心的是与进程 BC 中的额外 if 状态相关的延迟。

AB : process(A,clk)
begin
if rising_edge(clk) then
B <= A;
end if;
end process;

BC : process(B,clk)
begin
if rising_edge(clk) then
if (some_statement) then
C <= B;
end if;
end if;
end process;

最佳答案

B 将采用 A 的值 (B=1),C 将采用 B 的值 (C=2)。

但是,我猜你实际上并没有描述你想要的。问题是您在两个进程的敏感列表中有 A 和 B。这意味着在进程 AB 中,每次 A 更改时以及 rising_edge(clk) 为真时,B 都会更改。这同样适用于进程 BC。假设你想描述两个串联的寄存器,你的代码应该是

AB : process(clk)
begin
if rising_edge(clk) then
B <= A;
end if;
end process;

BC : process(clk)
begin
if rising_edge(clk) then
if (some_statement) then
C <= B;
end if;
end if;
end process;

在这种情况下,如果您将此代码综合到 FPGA 上,您将推断出两个寄存器。进程 BC 中的寄存器将使用连接到 some_statement bool 输出的寄存器使能信号。如果 some_statement 已经是一个单一的 std_logic 信号,这不会引入额外的延迟但需要一些路由资源,所以你仍然应该避免在你不真正使用的地方使用启用信号需要它。

关于vhdl - 如何在实践中评估流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066815/

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