当前位置:
文档之家› FPGA重要设计思想及工程应用之时序及同步设计
FPGA重要设计思想及工程应用之时序及同步设计
谢大钊 编著
建立和保持时间
谢大钊 编著
全局时钟
对于一个设计项目来说,全局时钟(或同 步时钟)是最简单和最可预测的时钟。在 CPLD/FPGA设计中最好的时钟方案是:由专 用的全局时钟输入引脚驱动的单个主时钟去 钟控设计项目中的每一个触发器。只要可能 就应尽量在设计项目中采用全局时钟。 CPLD/FPGA都具有专门的全局时钟引脚,它 直接连到器件中的每一个寄存器。这种全局 时钟提供器件中最短的时钟到输出的延时。
谢大钊 编著
提高同步系统的运行速度
由于Tco、Tsetup是由具体的器件和工艺 决定的,我们设计电路时只可以改变 Tdelay。所以缩短触发器间组合逻辑的延时 是提高同步电路速度的关键。由于一般同 步电路都不止一级锁存,而要使电路稳定 工作,时钟周期必须满足最大延时要求, 缩短最长延时路径,才可提高电路的工作 频率。
谢大钊 编著
时钟系统应用2
谢大钊 编著
时钟系统应用2
如上页图所示20M的高频时钟将作为系统时钟, 输入到所有触发器的的时钟端。3M_EN 和5M_EN 将控制所有触发器的使能端。即原来接3M时钟的触 发器,接20M时钟,同时3M_EN 将控制该触发器使 能 ,原接5M时钟的触发器,也接20M时钟,同时 5M_EN 将控制该触发器使能。 这样我们就可以将 任何非同源时钟同步化。 异步信号输入总是无法满足数据的建立保持时 间,所以建议大家把所有异步输入都先经过双触发 器进行同步化 。
时钟系统应用1
谢大钊 编著
时钟系统应用2
在许多应用中只将异步信号同步化还是 不够的,当系统中有两个或两个以上非同 源时钟的时候,数据的建立和保持时间很 难得到保证,我们将面临复杂的时间问 题,那么这个时候怎么办呢?
谢大钊 编著
时钟系统应用2
最好的方法是将所有非同源时钟同步化, 那么又怎么样将非同源时钟同步化呢?
谢大钊 编著
门控时钟如何转换为全局时钟
实例
谢大钊 编著
门控时钟如何转换为全局时钟
实例
如下页图所示给出了一种可靠的全局钟控 的电路,它是上页图中不可靠计数器电路的 改进,RCO控制D触发器的使能输入。这个 改进不需要增加PLD的逻辑单元,和上页图 中的设计相比功能完全一样 ,但可靠性却高 得多。
谢大钊 编著
谢大钊 编著
门控时钟如何转换为全局时钟
谢大钊 编著
门控时钟如何转换为全局时钟
从重新设计的电路的波形图中可以看出 地址线不需要在nWR有效的整个期间内保 持稳定;而只要求它们和数据引脚一样符 合同样的建立和保持时间,这样对地址线 的要求就少很多。
谢大钊 编著
门控时钟如何转换为全局时钟
实例
如下页图所示给出了一个不可靠的门控时钟的 例子。3位同步加法计数器的RCO输出用来钟控触 发器 。然而,计数器给出的多个输入起到时钟的作 用,这违反了可靠门控时钟所需的条件之一。在产 生RCO信号的触发器中,没有一个能考虑为实际的 时钟线 ,这是因为所有触发器在几乎相同的时刻发 生翻转。而我们并不能保证在CPLD/FPGA内部 QA,QB,QC到D触发器的布线长短一致,因此,如 下页图的时间波形所示,在计数器从3计到4时, RCO线上会出现毛刺(假设QC到D触发器的路径较 短,即QC的输出先翻转)。
FPGA/CPLD
重要设计思想及工程应用
时序及同步设计篇
中嵌教育() 谢大钊 编著
谢大钊 编著
概述
数字电路中,时钟是整个电路最重要、 最特殊的信号。 第一, 系统内大部分器件的动作都是 在时钟的跳变沿上进行, 这就要求时钟信 号时延差要非常小, 否则就可能造成时序 逻辑状态出错. 第二, 时钟信号通常是系统中频率最 高的信号.
谢大钊 编著
门控时钟
回答当然是肯定的,我们可以将门控时 钟转换成全局时钟以改善设计项目的可靠 性。 那么门控时钟如何才能转换为全局时 钟呢?
谢大钊 编著
门控时钟如何转换为全局时钟
如下页图所示描述出了如何用全局时钟 重新设计实例1 的电路。地址线在控制D触 发器的使能输入,许多PLD设计软件,如 ISE软件都提供这种带使能端的D触发器。 当ENA为高电平时,D输入端的值被钟控到 触发器中:当ENA为低电平时,维持现在 的状态。
谢大钊 编著
提高同步系统的运行速度
之前我们学习了怎么样将非同源时钟同 步化得到同步系统。那么在同步系统里又 怎么样提高同步系统的运行速度,使系统 的效率尽量高? 很明显我们可以提高同步时钟的速度, 同步时钟愈快,电路处理数据的时间间隔 越短,电路在单位时间处理的数据量就愈 大。
谢大钊 编著
提高同步系统的运行速度
谢大钊 编著
概述
各个功能模块要使用统一的复位电路。 在使用带时钟的触发器、计数器等有复位 端的库器件时, 一般应尽量使用有同步复 位的器件。注意复位时保证各个器件都能 复位, 以避免某些寄存器的初始状态不确 定而引起系统工作不可靠。
谢大钊 编著
建立和保持时间
若想掌握时钟设计方法首先需要了解建立时 间和保持时间的概念。 如下页图所示,建立时间(setup time):是指 在触发器的时钟信号上升沿到来以前,数据稳 定不变的时间,如果建立时间不够,数据将不 能在这个时钟上升沿被打入触发器; 保持时间(hold time):是指在触发器的时钟信 号上升沿到来以后,数据稳定不变的时间, 如 果保持时间不够,数据同样不能被打入触发 器。
谢大钊 编著
门控时钟
1.驱动时钟的逻辑必须只包含一个“与”门或一 个“或”门。如果采用任何附加逻辑在某些工 作状态下,会出现竞争产生的毛刺。 2.逻辑门的一个输入作为实际的时钟,而该逻 辑门的所有其它输入必须当成地址或控制 线,它们遵守相对于时钟的建立和保持时 间的约束。
谢大钊 编著
门控时钟
实例1
谢大钊 编著
概述
因此, 在FPGA设计中最好的时钟方案 是: 由专用的全局时钟输入引脚驱动单个 主时钟去控制设计项目中的每一个触发 器。同步设计时, 全局时钟输入一般都接 在器件的时钟端, 否则会使其性能受到影 响。 对于需要多时钟的时序电路, 最好选用 一个频率是它们的时钟频率公倍数的高频 主时钟。
门控时钟如何转换为全局时钟
实例
谢大钊 编著
时钟系统应用1
如下页图所示,在这个应用中CLK_A用以钟 控REG_A,CLK_B用于钟控REG_B,由于 REG_A驱动着进入REG_B的组合逻辑,故 CLK_A的上升沿相对于CLK_B的上升沿有建立 时间和保持时间的要求。由于REG_B不驱动馈 到REG_A的逻辑,CLK_B的上升沿相对于 CLK_A没有建立时间的要求。此外,由于时钟 的下降沿不影响触发器的状态,所以CLK_A和 CLK_B的下降沿之间没有时间上的要求。我们 可以看到电路中有两个独立的时钟,可是,在 它们之间的建立时间和保持时间的要求是很难 得到保证的。那么应该怎么样解决这个问题 呢?
谢大钊 编著
概述
第三, 时钟信号通常是负载最重的信 号, 所以要合理分配负载。出于这样的考 虑在FPGA这类可编程器件内部一般都设有 数量不等的专门用于系统时钟驱动的全局 时钟网络。这类网络的特点是:一、负载 能力特别强, 任何一个全局时钟驱动线都 可以驱动芯片内部的触发器; 二是时延差 特别小; 三是时钟信号波形畸变小, 工作 可靠性好。
谢大钊 编著
提高同步系统的运行速度
我们在刚才做时间分析的时候,没有提 Tpd这个参数,Tpd是时钟的延时参数,如 果使用PLD的全局时钟型号,Tpd可以为 0,如果是普通时钟,则不为0。所以如果 考虑到时钟的延时,时钟周期最小应该 为:T=Tco+Tdelay+Tsetup-Tpd。当然以上 全部分析的都是器件内部的运行速度,如 果考虑芯片I/O管脚延时对系统速度的影 响,那么还需要加一些修正。
谢大钊 编著
提高同步系统的运行速度
我们可以将较大的组合逻辑分解为较小 的几块,中间插入触发器,如下页图所 示,这样可以提高电路的工作频率。这也 是“流水线”(pipelining)技术的基本原理。
谢大钊 编著
提高同步系统的运行速度
谢大钊 编著
提高同步系统的运行速度
如下页图所示是一个可靠的门控时钟的 实例。用一个“与”门产生门控时钟 ,引脚 nWR和nWE考虑为时钟引脚,引脚 ADD[0…3]是地址引脚,两个触发器的数据 是信号D[1…n]经随机逻辑产生的。
谢大钊 编著
门控时钟
实例1
谢大钊 编著
门控时钟
实例2
如下页图所示也是一个可靠的门控时钟 的实例。在这个实例中,用一个“或”门产生 门控时钟。引脚nWR和nWE考虑为时钟引 脚,引脚0…3]是地址引脚,两个触发器的 数据是信号D[1…n]经随机逻辑产生的。
谢大钊 编著
时钟系统应用2Βιβλιοθήκη 我们可以使用带使能端的D触发器,并引 入一个高频时钟(频率高于系统中的所有源 时钟),便可以达到使系统中所有源时钟同 步的效果。
谢大钊 编著
时钟系统应用2
谢大钊 编著
时钟系统应用2
如上页图所示,系统有两个不同源时 钟,一个为3MHz,一个为5MHz,不同的 触发器使用不同的时钟。为了系统稳定, 假设我们引入一个20MHz时钟,那么这个 20MHz的时钟怎么才能将3M和5M时钟同步 化呢?
谢大钊 编著
提高同步系统的运行速度
如上页图所示,我们先来看一个同步电 路中数据传递的基本模型。其中Tco是触发 器时钟到数据输出的延时;Tdelay是组合逻 辑的延时;Tsetup是触发器的建立时间。
谢大钊 编著
提高同步系统的运行速度
假设数据已经被时钟的上升沿打入D触发器, 那么数据到达第一个触发器的Q端需要Tco,再经 过组合逻辑的延时Tdelay到达的第二个触发器的D 端,要想时钟能在第二个触发器再次被稳定的锁 入触发器,则时钟周期最小应该为: T=Tco+Tdelay+Tsetup 时钟频率最快应该为:F= 1/T PLD开发软件也正是通过这个公式来计算系统 运行速度Fmax。