0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时钟与复位信号设计方案

CHANBAEK 来源:奇异白勺书 作者:Kim71 2023-09-19 09:26 次阅读

01时钟方案

1、避免内部产生时钟

我们设计时要尽可能避免在内部产生时钟,如果操作不当,会导致设计功能和时序问题。总而言之,尽量在代码中避免操作时钟。

组合逻辑搭建的时钟会引入毛刺,使功能出现问题,数据输入有毛刺会被过滤,但是时钟端毛刺会有明显问题。如图所示为组合逻辑产生的时钟效果。

图片

解决办法:在组合逻辑产生的时钟后面加入一个寄存器,用寄存器输入作为后续的时钟输入。但是由于组合逻辑会增加时钟线上的延迟,在一些情况下,逻辑延迟会导致时钟偏移比两个寄存器之间的数据延迟大。这样会违背寄存器的时序要求。

图片

2、分频时钟

在设计中尽量保证所需的时钟来自PLL。若要对主时钟进行分频时,始终使用同步计数器或者状态机。产生输出时钟时用寄存器进行输出,而不应该用组合逻辑。

3、多路时钟复用

多路时钟复用器,可以使同一个逻辑拥有不同的时钟。前提是得满足以下标准:

  • 在初始化配置后,时钟多路逻辑就不再改变;
  • 在测试时,设计会绕过功能时钟多路逻辑而选择普通时钟;
  • 在时钟切换时,寄存器始终处于复位状态;
  • 在时钟切换时产生的短暂错误响应没有负面影响

图片

4、门控时钟

门控时钟使用使能信号开关时钟,实现对某些门控电路的控制。在时钟关闭时,对应的时钟域的寄存器就会停止翻转。所以门控时钟时减少功耗的有效手段之一。

图片

显而易见,这种方式并不是同步设计,会导致时钟偏移以及毛刺现象。下图是同步时钟门控使能,不过此种方式由于时钟一直在不停的驱动,虽然后面寄存器输出保持不变,却并没有停止工作,因此不能达到降低功耗的作用。

图片

那有没有既满足同步要求又降低功耗的设计呢?

首先需要知道功耗到底耗在哪。传统的同步设计中,系统时钟连接到每个寄存器的时钟端,这使得功耗主要由三个部分组成:

  1. 在时钟沿变化的组合逻辑所产生的的功耗
  2. 由触发器产生的功耗
  3. 设计中时钟树产生的功耗

时钟门控能够大幅降低触发器的功耗,时钟门控可以存在于时钟树的根部、末端或者两者之间任何位置。由于 时钟树几乎消耗了整个芯片功耗的50% ,因此最好始终在根部产生或者关闭时钟。

基于锁存器的门控时钟电路是在上述门控时钟电路中加入一个电平敏感时钟的锁存。其只需要保证EN信号在时钟上升沿附近稳定不变就可以。如此就可以保证输出不含任何毛刺与尖峰脉冲。

图片

为了保证较高的生产缺陷覆盖率,有必要保证在插入扫描链时门控时钟电路是完全可控和可观察的。加入Test控制信号,使得测试状态下不管使能值是多少都能被时钟驱动。大多数ASIC生产商都提供“门控时钟单元”作为标准单元库的一部分。

图片

02复位信号设计方案

复位的基本目的是使SoC进入一个能进行稳定操作的确定状态 。好的设计会在系统没有明确要求的情况下为SoC的每个触发器都提供复位信号。但是在某些情况下,当流水线的寄存器在高速应用中使用时,应该去掉某些寄存器的复位信号以使设计达到更高的性能。

1、同步复位和异步复位

同步复位: 复位信号只有在时钟的有效沿到来时才能影响或者复位触发器的状态。

同步复位的优点:

1)同步复位一般能确保电路100%同步;

2)同步复位会综合为更小的触发器;

3)同步复位确保复位只发生在有效时钟沿,可过滤毛刺。

同步复位缺点:

1)同步复位可能需要一定长度的脉宽,保证时钟有效沿附近复位信号有效;

2)复位信号可能经过多级组合逻辑,会存在潜在问题;

3)复位电路需要复位时钟,门控时钟电路中,可能因为时钟无效导致复位无效。

异步复位: 复位触发器在设计时加入了一个复位引脚,通过复位信号直接控制。

异步复位优点:

1)保证数据路径上的整洁干净;

2)不管有没有时钟都可以复位。

异步复位缺点:

1)异步复位信号不一定可以被I/O口直接驱动;

2)异步复位为异步过程,撤销异步信号时,若刚好处于时钟有效沿,会使电路进入亚稳态;

3)板机系统或者其他造成的噪声毛刺引起伪复位。

2、常用的解决方案:异步复位,同步释放。

所谓异步复位同步释放,是指复位信号到来时不受时钟信号的同步,复位信号释放时需要进行时钟信号的同步。

图片

上图清楚地展示了异步复位和同步释放两个阶段。

异步复位阶段:当rst_async_n有效时,此时第二个D触发器的输出rst_sync_n立即置为低电平,实现异步复位。

同步释放阶段:假设rst_async_n在clk的上升沿时撤除,那么第一级触发器处于亚稳态,但是由于两级触发器的缓冲作用,第二级触发器的输入为clk到来前第一级触发器的输出,即为低电平。因此,此时第二级触发器的输出一定是稳定的低电平,方框左中触发器仍然处于复位状态。在下一个clk到来时,第一级触发器的输出已经是稳定的高电平了,故rst_sync_n已经是稳定的高电平,此时复位释放,实现同步释放。

代码示例:

always@(posedge clk, negedge rst_async_n)begin
    if (!rst_async_n) begin   
        rst_s1 <= 1'b0;  
        rst_s2 <= 1'b0;  
    end  
    else begin  
        rst_s1 <= 1'b1;  
        rst_s2 <= rst_s1;  
    end
end

assign rst_sync_n = rst_s2;

rst_async_n=0时,rst_sync_n会被立即复位为0,输出到后续电路用于异步复位;rst_async_n=1时,假设此时恰好在时钟沿附近,会造成recovery或者removal的违例,但经过DFF1和DFF2的两级同步,rst_sync_n释放沿与时钟沿同步,送入到后续电路不会再有recovery和removal违例出现。

可以看到,异步复位、同步释放其最显著特征是既保留了异步复位的功能,又避免了异步复位释放时所面临的recovery或者removal违例问题。

03小结

本文简单介绍了在ASIC设计中常用的时钟方案选择和处理复位信号时的方案选择。时钟设计上,应尽可能避免通过内部逻辑产生时钟,需要多个时钟域时可以选择用PLL产生分频时钟。需要考虑功耗的情况下可以选择带锁存器的门控时钟来降低功耗。在处理复位信号时,一般采用异步复位、同步释放的方法,既保留异步复位的功能,又避免了复位信号释放时的恢复时间和去除时间违例问题。

在后续的文章中,面对时钟,还将介绍更为复杂棘手的多时钟切换问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120261
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131461
  • 组合逻辑
    +关注

    关注

    0

    文章

    47

    浏览量

    10038
  • 异步复位
    +关注

    关注

    0

    文章

    47

    浏览量

    13312
  • 复位信号
    +关注

    关注

    0

    文章

    54

    浏览量

    6316
收藏 人收藏

    评论

    相关推荐

    复位信号是什么意思?复位信号的作用?详解Xilinx FPGA复位信号那些事

    复位信号几乎是除了时钟信号外最常用的信号了,几乎所有数字系统在上电的时候都会进行复位,这样才能保
    的头像 发表于 07-27 09:48 8623次阅读
    <b class='flag-5'>复位</b><b class='flag-5'>信号</b>是什么意思?<b class='flag-5'>复位</b><b class='flag-5'>信号</b>的作用?详解Xilinx FPGA<b class='flag-5'>复位</b><b class='flag-5'>信号</b>那些事

    为什么需要复位树?复位信号用什么电路产生?

    复位信号在数字电路里面的重要性仅次于时钟信号。对一个芯片来说,复位的主要目的是使芯片电路进入一个已知的,确定的状态。
    的头像 发表于 08-27 10:18 2163次阅读
    为什么需要<b class='flag-5'>复位</b>树?<b class='flag-5'>复位</b><b class='flag-5'>信号</b>用什么电路产生?

    FPGA时钟内部设计方案

    时钟设计方案 在复杂的FPGA设计中,设计时钟方案是一项具有挑战性的任务。设计者需要很好地掌握目标器件所能提供的时钟资源及它们的限制,需
    发表于 01-22 09:30 628次阅读
    FPGA<b class='flag-5'>时钟</b>内部<b class='flag-5'>设计方案</b>

    从ASIC到FPGA的转换系统时钟设计方案

    从ASIC到FPGA的转换系统时钟设计方案
    发表于 03-02 09:37

    51单片机复位电路的设计方案

    51单片机复位电路的设计方案
    发表于 11-29 19:37

    基于51单片机的时钟-跑表设计方案(程序+仿真)

    基于51单片机的时钟-跑表设计方案(程序+仿真)
    发表于 11-29 12:07

    异步复位,同步释放的方式,而且复位信号低电平有效

    顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。
    发表于 02-11 12:40 8264次阅读
    异步<b class='flag-5'>复位</b>,同步释放的方式,而且<b class='flag-5'>复位</b><b class='flag-5'>信号</b>低电平有效

    有源嵌位复位威廉希尔官方网站 的设计方案资料下载.pdf

    有源嵌位复位威廉希尔官方网站 的设计方案资料下载
    发表于 04-25 16:35 10次下载
    有源嵌位<b class='flag-5'>复位</b>威廉希尔官方网站
的<b class='flag-5'>设计方案</b>资料下载.pdf

    外加电压检测复位电路设计方案

    PIC单片机 的 外接电压检测 复位电路 举例 1.设计思路 有许多型号单片机的内部均不具备掉电复位功能,即使对于内部包含该功能的PIC单片机,其复位门槛电压值是固定不可更改的,有时不能满足用户的需求,因此,外加电压检测
    发表于 07-01 10:36 7488次阅读
    外加电压检测<b class='flag-5'>复位</b>电路<b class='flag-5'>设计方案</b>

    同步复位和异步复位电路简介

    同步复位和异步复位都是状态机的常用复位机制,图1中的复位电路结合了各自的优点。同步复位具有时钟
    的头像 发表于 08-12 15:20 7423次阅读
    同步<b class='flag-5'>复位</b>和异步<b class='flag-5'>复位</b>电路简介

    基于STM32单片机的时钟设计方案

    基于STM32单片机的时钟设计方案
    发表于 08-04 16:37 38次下载

    信号放大电路设计方案汇总

    信号放大电路设计方案汇总
    发表于 09-14 15:01 141次下载

    STM32电源管理、复位时钟

    第二篇文章——STM32电源、复位时钟电源管理电源电压调节器可编程电压监测器(PVD: Programmable voltage detector )低功耗模式复位Cortex-M3的复位
    发表于 01-05 14:25 10次下载
    STM32电源管理、<b class='flag-5'>复位</b>、<b class='flag-5'>时钟</b>

    Xilinx FPGA芯片内部时钟复位信号使用方法

    如果FPGA没有外部时钟源输入,可以通过调用STARTUP原语,来使用FPGA芯片内部的时钟复位信号,Spartan-6系列内部时钟源是5
    的头像 发表于 10-27 11:26 1926次阅读
    Xilinx FPGA芯片内部<b class='flag-5'>时钟</b>和<b class='flag-5'>复位</b><b class='flag-5'>信号</b>使用方法

    同步复位和异步复位到底孰优孰劣呢?

    复位方式具有精确控制的特点,因为复位信号时钟信号同步工作,所以可以保证复位
    的头像 发表于 01-16 16:25 1748次阅读