• 如何理解「复位 」?


    • 复位目的:使整个系统进入一个指定的初始状态

    同步复位

    always  @(posedge clk)
    begin
      if(!rst_n)    
        ......
      else
        ......   
    end
    

    优点:

    1. 可使整个电路为完全的同步设计,有利于静态时序分析(STA)。
    2. 有利于仿真工具仿真(Modelsim、Vcs)。
    3. 只在时钟触发沿发生发生作用,滤除毛刺。

    缺点以及注意事项:

    1. 复位脉宽必须超过一个时钟周期。
    2. 复位依赖于时钟信号。
    3. 若复位信号发生在时钟沿,可能产生亚稳态。
    4. 对于同步复位信号管脚在数据通路中或者是没有专用的同步复位管脚的器件,同步复位将耗费更多资源实现。

    异步复位

    always  @(posedge clk or negedge rst_n)
    begin
      if(!rst_n)
        ......
      else
        ......
    end
    

    优点:

    1. 复位不会出现在数据通路,减少额外逻辑以及数据延迟
    2. 复位不依赖于时钟信号

    缺点及注意事项:

    1. 对毛刺敏感
    2. 若在始终触发沿附近去除复位,可能产生亚稳态

    复位策略

    1. 异步低复位
    2. 同步的异步复位。即异步复位,同步释放。
    3. 能不用复位的地方尽量不用。
    4. 对于RAM、ROM、乘法器、数据计算通路,不需要复位,同时也节省资源。
    5. 移位寄存器,若不复位,则可充分进行资源优化。
    6. 对于控制信号、计数器、状态机的状态寄存器等必须要用复位。

    异步复位HDL代码:

    module  arsr           //Asynchronous reset, synchronous release
    
      (
    //        input              i_clk_a    ,
            input              i_rst_n_a  ,
            input              i_clk_b    ,
    
            output  reg        o_rst_n_b  
      )
    //-----------------------------  reg && wire   -------------------------------
    
            reg        rst_n_temp_0  ;
            reg        rst_n_temp_1  ;
    
    //--------------------------------  o_rst_b_n   -----------------------------------
    
            always  @(posedge i_clk_b or negedge i_rst_n_a)
            begin
                if(!i_rst_n_a)
                begin
                        rst_n_temp_0 <= 1'b0;
                        rst_n_temp_1 <= 1'b0;
                        o_rst_n_b    <= 1'b0;
                end
                else
                begin
                        rst_n_temp_0 <= 1'b1;
                        rst_n_temp_1 <= rst_n_temp_0;
                        o_rst_n_b    <= rst_n_temp_1;            
                end
            end
    
    endmodule
    

    如代码那样,即可将在(A时钟域的复位信号)变成(B时钟域也可以用的复位信号)。


    有问题联系可以我,一起讨论。
    在这里插入图片描述

  • 相关阅读:
    server 2012 r2 配置
    在线流媒体nginx/Windows解决方案
    ECS上配置FTP Filezilla
    新项目扫雷专贴 备忘录
    如何解决 Windows 实例出现身份验证错误及更正 CredSSP
    win10 再次重装系统
    SAI窗口无法移动
    无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支
    遇到技嘉 Gigabyte UEFI DualBIOS问题
    dnsunlocker解决
  • 原文地址:https://www.cnblogs.com/mage0306/p/10595332.html
Copyright © 2020-2023  润新知