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

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

3天内不再提示

时钟设计技巧

ZYNQ 来源:CSDN技术社区 作者:FPGA大叔 2022-10-26 09:04 次阅读

前言

时钟信号在很大程度上决定了整个设计的性能和可靠性,尽量避免使用FPGA内部逻辑产生的时钟,因为它很容易导致功能或时序出现问题。内部逻辑(组合逻辑)产生的时钟容易出现毛刺,影响设计的功能实现;组合逻辑固有的延时也容易导致时序问题。

一、内部逻辑产生的时钟

若使用组合逻辑的输出作为时钟信号或异步复位信号,设计者必须对有可能出现的问题采取必要的预防措施。我们知道,在正常的同步设计中,一个时钟一个节拍的数据流控制能够保证系统持续稳定的工作。但是,组合逻辑产生的时钟不可避免地会有毛刺出现,如果此时输入端口的数据正处于变化过程,那么它将违反建立和保持时间要求,从而影响后续电路的输出状态,甚至导致整个系统运行失败。

对于必须采用内部逻辑作时钟或者复位信号的应用,也还是有解决办法的。思路并不复杂,和异步复位、同步释放的原理是一样的。在输出时钟或者复位信号之前,再用系统专用时钟信号(通常指外部晶振输入时钟或者PLL处理后的时钟信号)打一拍,从而避免组合逻辑直接输出,达到同步处理的效果。对于输出的时钟信号或复位信号,最好让它走全局时钟网络,从而减小时钟网络延时,提升系统时序性能。

内部逻辑产生的时钟处理如下:

5867fd0a-54c7-11ed-a3b6-dac502259ad0.png

二、分频时钟与使能时钟

设计中往往需要用到主时钟的若干分频信号作为时钟,即分频时钟。可别小看这个所谓的分频时钟,简简单单不加处理的乱用时钟那就叫时钟满天飞,是很不好的设计风格。言归正传,如果设计中确实需要用到系统主时钟的分频信号来降低频率时,该如何处理呢?

对于资源较丰富的FPGA,一般都有内嵌的多个PLL或者DLL专门用于时钟管理,利用它们就可以很容易地达到多个时钟的设计,输出时钟能够配置成设计者期望的不同频率和相位差(相对于输入时钟),这样的时钟分频是最稳定的。但是对于某些无法使用PLL或者DLL资源的器件又该怎么办呢?推荐使用“使能时钟”进行设计,在“使能时钟”设计中只使用原有的时钟,让分频信号作为使能信号来用。

下面举一个实例来说明如何进行使能时钟的设计,该设计需要得到一个50MHz钟的5分频信号即10MHz。

input clk;      //50MHz时钟信号
input rst n; 
 
reg[2:0]ent;
wire en;        //使能信号,高电平有效
 
//5分频计数0~4
always@( posedge clk or negedge rst _n)begin
    if(!rst _n) ent<=3'd0;
    else if(ent<3'd4) ent<=ent+1b1;
    else ent<=3'd0;
end
assign en=(cnt==3'd4);//每5个时钟周期产生1个时钟周期高脉冲
 
//使用使能时钟
always@( posedge clk or negedge rst _n)begin
    if(!rst _n)…;
    else if(en)…;
 
    ...
 
end

如下图所示,使能信号不直接作为时钟使用,而是作为数据输入端的选择信号,这避免了使用分频时钟。

587f0950-54c7-11ed-a3b6-dac502259ad0.png

三、门控时钟

组合逻辑中多用门控时钟,一般驱动门控时钟的逻辑都是只包含一个与门(或门).如其他的附加逻辑,容易因竞争产生不希望的毛刺。如图a所示,门控时钟通过一个使号控制时钟的开或者关。当系统不工作时可以关闭时钟,整个系统就处于非激活状态,这种够在某种程度上降低系统功耗。

图a:门控时钟

5886f818-54c7-11ed-a3b6-dac502259ad0.png

然而,使用门控时钟并不符合同步设计的思想,它可能会影响系统设计的实现和验证。单纯从功能实现来看,使用使能时钟替代门控时钟是一个不错的选择;但是使能时钟在使能信号关闭时,时钟信号仍然在工作,它无法像门控时钟那样降低系统功耗。

是否有一种设计方法既可以降低系统功耗,又能够稳定可靠的替代门控时钟呢?Altera就提出了一种解决方案,且待我慢慢道来。如图b所示,对于上升沿有效的系统时钟cì k,它的下降沿先把门控信号(gating signal)打一拍,然后再用这个使能信号(enable)和系统时钟(clk)相与后作为后续电路的门控时钟。

图b:推荐的门控时钟

588f916c-54c7-11ed-a3b6-dac502259ad0.png

这样的门控时钟电路很好地解决了组合逻辑常见的一些问题。它避免了毛刺的出现,同时也有效抑制了亚稳态可能带来的危害。但是从另一个方面来说,如果这个设计的系统时钟(clk)占空比不是很稳定,或者输出的使能信号(enable)与时钟信号(clk)的逻辑过于复杂(不止这个例子中一个与门那么简单),那么它也会带来一些功能或时序上的问题。总的来说,只要设计者控制好这个设计中时钟的占空比和门控逻辑复杂度,它还是比图a给出的门控时钟方案更可行。

审核编辑:汤梓红

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

    关注

    1629

    文章

    21736

    浏览量

    603208
  • pll
    pll
    +关注

    关注

    6

    文章

    776

    浏览量

    135149
  • 时钟信号
    +关注

    关注

    4

    文章

    448

    浏览量

    28563

原文标题:【FPGA技巧篇】时钟设计技巧

文章出处:【微信号:ZYNQ,微信公众号:ZYNQ】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    时钟树优化与有用时钟延迟

    时钟树优化与有用时钟延迟在 “后端时序修正基本思路” 提到了时序优化的基本步骤。其中,最关键的阶段就是时钟树建立。
    发表于 10-26 09:29 4426次阅读
    <b class='flag-5'>时钟</b>树优化与有用<b class='flag-5'>时钟</b>延迟

    时钟设计中时钟切换电路设计案例

    在多时钟设计中可能需要进行时钟的切换。由于时钟之间可能存在相位、频率等差异,直接切换时钟可能导致产生glitch。
    的头像 发表于 09-24 11:20 5725次阅读
    多<b class='flag-5'>时钟</b>设计中<b class='flag-5'>时钟</b>切换电路设计案例

    航空时钟~风雷仪表

    时钟
    风雷仪表
    发布于 :2023年03月03日 15:54:36

    IC数据和时钟时钟线缓冲电路

    IC数据和时钟时钟线缓冲电路
    发表于 09-12 11:57 1561次阅读
    IC数据和<b class='flag-5'>时钟</b><b class='flag-5'>时钟</b>线缓冲电路

    门控时钟时钟偏移研究

    所谓门控时钟就是指连接到触发器时钟端的时钟来自于组合逻辑;凡是组合逻辑在布局布线之后肯定会产生毛刺,而如果采用这种有毛刺的信号来作为时钟使用的话将会出现功能上的错
    发表于 09-07 16:11 35次下载
    门控<b class='flag-5'>时钟</b>与<b class='flag-5'>时钟</b>偏移研究

    什么是时钟周期_时钟周期怎么算

    时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟
    发表于 03-11 10:07 5.1w次阅读

    STM32时钟系统时钟树和时钟配置函数介绍及系统时钟设置步骤资料

    本文档的主要内容详细介绍的是STM32时钟系统时钟树和时钟配置函数介绍及系统时钟设置步骤资料。
    发表于 10-11 08:00 22次下载
    STM32<b class='flag-5'>时钟</b>系统<b class='flag-5'>时钟</b>树和<b class='flag-5'>时钟</b>配置函数介绍及系统<b class='flag-5'>时钟</b>设置步骤资料

    什么是时钟时钟信号的关键指标

    首先,我们看一下时钟信号中最常见到的波形 - 矩形波(尤其是方波更常用)。在较低时钟频率的系统中我们看到的基本上都是以矩形波为主的时钟信号,因为电路基本上都是靠时钟的边沿(上升沿或下降
    的头像 发表于 12-06 11:53 6.2w次阅读
    什么是<b class='flag-5'>时钟</b>呢 <b class='flag-5'>时钟</b>信号的关键指标

    stm32内部时钟有哪些时钟源 stm32使用内部时钟配置教程

    stm32内部时钟有哪些时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一
    的头像 发表于 07-22 10:38 1.7w次阅读

    什么是门控时钟 门控时钟降低功耗的原理

    门控时钟的设计初衷是实现FPGA的低功耗设计,本文从什么是门控时钟、门控时钟实现低功耗的原理、推荐的FPGA门控时钟实现这三个角度来分析门控时钟
    的头像 发表于 09-23 16:44 1.4w次阅读
    什么是门控<b class='flag-5'>时钟</b> 门控<b class='flag-5'>时钟</b>降低功耗的原理

    verilog的时钟分频与时钟使能

    时钟使能电路是同步设计的基本电路,在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理;在ASIC中可以通过STA约束让分频始终和源时钟
    的头像 发表于 01-05 14:00 1740次阅读

    什么是时钟偏斜?了解时钟分配网络中的时钟偏斜

    通过了解同步电路、时钟传输和时钟分配网络,了解时钟偏斜、它是什么及其对现代系统的影响。 现代数字电子产品设计的最大挑战之一是满足时序限制的能力。保持可预测且组织良好的逻辑操作流的一种方法是在数
    的头像 发表于 01-27 10:05 3695次阅读
    什么是<b class='flag-5'>时钟</b>偏斜?了解<b class='flag-5'>时钟</b>分配网络中的<b class='flag-5'>时钟</b>偏斜

    时钟偏差和时钟抖动的相关概念

    本文主要介绍了时钟偏差和时钟抖动。
    的头像 发表于 07-04 14:38 2052次阅读
    <b class='flag-5'>时钟</b>偏差和<b class='flag-5'>时钟</b>抖动的相关概念

    什么是时钟芯片?时钟芯片的工作原理 时钟芯片的作用

    什么是时钟芯片?时钟芯片的工作原理 时钟芯片的作用 时钟芯片是一种用于计算机或其他电子设备中的集成电路,它提供精准的时钟信号。
    的头像 发表于 10-25 15:02 6326次阅读

    时钟抖动和时钟偏移的区别

    时钟抖动(Jitter)和时钟偏移(Skew)是数字电路设计中两个重要的概念,它们对电路的时序性能和稳定性有着显著的影响。下面将从定义、原因、影响以及应对策略等方面详细阐述时钟抖动和时钟
    的头像 发表于 08-19 18:11 1009次阅读