gpt4 book ai didi

vhdl - 使用复位逻辑与信号初始值之间的区别

转载 作者:行者123 更新时间:2023-12-04 22:21:02 25 4
gpt4 key购买 nike

假设我有一个信号,我可以将初始值分配为零,也可以在 RESET 时将其设置为零。我见过我的同事交替使用这两种方法。我只是想看看其他人对此的看法。

示例(使用初始值):

architecture arch of xxx is

signal flag : STD_LOGIC := 0;

begin
process (clk) begin
if rising_edge(clk) then
-- do something
end if;
end process;
end arch;

示例(使用重置值):
architecture arch of xxx is

signal flag : STD_LOGIC;

begin
process (clk,rst) begin
if (rst = '1') then
flag <= '0';
elsif rising_edge(clk) then
-- do something
end if;
end process;
end arch;

最佳答案

如果可能,请使用专用的复位信号,原因如下:

  • 使用复杂时钟生成的设计可能需要模块保持空闲
    (复位)直到时钟稳定。使用具有不稳定但
    运行时钟可能会改变预期的初始值。
  • 与其他或外部模块接口(interface)的模块可以获得协议(protocol)
    启动过程中接口(interface)的违规行为,避免误操作或
    由于违反协议(protocol)而挂断,可能需要将模块保持在
    重置,直到协议(protocol)操作在接口(interface)中定义良好。
  • 通过断言可以重新启动整个系统或系统的一部分
    重置,而不必重新加载整个 FPGA,这需要更长的时间
    时间,如果需要 CPU 交互可能会更复杂。
  • 一些 FPGA 技术,例如 Altera 部分重配置,不
    支持部分重配置中使用的模块的初始值。
    因此,如果仅使用重置,则模块的重用会更容易。
  • 模拟不同的启动/重启条件时更容易
    可以应用复位,并继续相同的模拟序列。如果
    如果使用初始值,则必须重新启动整个模拟。

  • 对尽可能少的触发器应用复位,因为资源方面的原因,Russell
    指出。此外,仅将其应用于所需的触发器,使其更容易
    在仿真期间捕获设计中的错误和疏忽,因为未知 X然后可能会出现值。复位应该是异步的,因为大多数 FPGA 和
    ASIC 技术具有带专用复位输入的触发器,并且复位
    然后不会通过插入逻辑来应用复位值来减慢同步设计部分的时序。例如,在 Altera Cyclone V 中可以看到减速,由于通过 MLABCELL 的同步复位,逻辑被插入到数据路径中,如此处的数据路径时序报告所示:

    enter image description here

    使用异步复位的触发器在数据路径中没有这种额外的延迟,如 figure through this link 所示。 .

    带复位的触发器的过程应该用复位部分写成:
    process (clk, rst) begin
    if rising_edge(clk) then
    -- Flip-flops updated at clock
    end if;
    if (rst = '1') then
    -- Flip-flops reset
    end if;
    end process;

    这种编码风格使得可以仅将重置应用于某些
    触发器在上升时钟更新,而其余的触发器是
    无需复位即可实现。

    合并后的 if-then-elsif-end if在问题代码中,实际上指定了
    对于未复位的触发器,该状态在复位期间保持不变,因为 rising_edge(clk) if 的一部分则不生效。这是
    可能不是预期的实现。

    对于正确的时序,复位信号 ( rst) 应与时钟同步
    ( clk ),至少对于解除断言( 10 ),因此不会违反恢复和删除时间。

    关于vhdl - 使用复位逻辑与信号初始值之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979921/

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