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产生分频时钟。需要考虑功耗的情况下可以选择带锁存器的门控时钟来降低功耗。在处理复位信号时,一般采用异步复位、同步释放的方法,既保留异步复位的功能,又避免了复位信号释放时的恢复时间和去除时间违例问题。

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

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

    关注

    30

    文章

    5032

    浏览量

    117746
  • 时钟
    +关注

    关注

    10

    文章

    1480

    浏览量

    130306
  • 组合逻辑
    +关注

    关注

    0

    文章

    45

    浏览量

    9993
  • 异步复位
    +关注

    关注

    0

    文章

    45

    浏览量

    13251
  • 复位信号
    +关注

    关注

    0

    文章

    50

    浏览量

    6169
收藏 人收藏

    评论

    相关推荐

    对于选择同步化的异步复位方案

    线将会是一个和时钟一样多扇出的网络,如此多的扇出,时钟信号是采用全局时钟网络的,那么复位如何处理?有人提出用全局
    发表于 02-20 10:40 1091次阅读
    对于选择同步化的异步<b class='flag-5'>复位</b>的<b class='flag-5'>方案</b>

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

    复位信号几乎是除了时钟信号外最常用的信号了,几乎所有数字系统在上电的时候都会进行复位,这样才能保
    的头像 发表于 07-27 09:48 5133次阅读
    <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 1406次阅读
    为什么需要<b class='flag-5'>复位</b>树?<b class='flag-5'>复位</b><b class='flag-5'>信号</b>用什么电路产生?

    用单片机实现电子时钟设计方案

    用单片机实现电子时钟设计方案时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时
    发表于 12-17 11:20

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

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

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

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

    《高级FPGA设计》学习笔记:复位方案

    重复的错误也正是我们最不愿意遇到也最糟糕的错误。下面简单介绍三种复位方案:一、完全异步方案这种方案,确立和释放寄存器都是异步的,值得重申一下,异步指的是
    发表于 12-05 17:09

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

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

    三选一的信号开关设计方案

    三选一的信号开关设计方案  本设计实例使用一个单刀瞬时接触开关,通过滚动三个输出态选择三个信号源中的一个。图1中的电路包括常用的CD4000&
    发表于 12-24 15:09 4772次阅读
    三选一的<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

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

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

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

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

    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 1092次阅读
    Xilinx FPGA芯片内部<b class='flag-5'>时钟</b>和<b class='flag-5'>复位</b><b class='flag-5'>信号</b>使用方法

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

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