• 如何理解「复位 」?


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

    同步复位

    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时钟域也可以用的复位信号)。


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

  • 相关阅读:
    年轻人绝对不懂的人际关系经验
    MRCPv2在电信智能语音识别业务中的应用
    S3 介绍
    RGW 学习 前言
    CEPH 自动化测试用例介绍
    CentOS7使用yum安装ceph rpm包
    Placement_pools on Rados-GW
    ceph log机制
    bucket list 函数解析
    ceph 初始化函数解析
  • 原文地址:https://www.cnblogs.com/mage0306/p/10595332.html
Copyright © 2020-2023  润新知