您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > FPGA重要设计思想及工程应用之时序及同步设计
谢大钊谢大钊编著编著FPGA/CPLDFPGA/CPLD重要设计思想及工程应用重要设计思想及工程应用时序及同步设计篇时序及同步设计篇中嵌教育中嵌教育(())谢大钊谢大钊编著编著谢大钊谢大钊编著编著概述数字电路中,时钟是整个电路最重要、最特殊的信号。第一,系统内大部分器件的动作都是在时钟的跳变沿上进行,这就要求时钟信号时延差要非常小,否则就可能造成时序逻辑状态出错.第二,时钟信号通常是系统中频率最高的信号.谢大钊谢大钊编著编著概述第三第三,,时钟信号通常是负载最重的信时钟信号通常是负载最重的信号号,,所以要合理分配负载。出于这样的考所以要合理分配负载。出于这样的考虑在虑在FPGAFPGA这类可编程器件内部一般都设有这类可编程器件内部一般都设有数量不等的专门用于系统时钟驱动的全局数量不等的专门用于系统时钟驱动的全局时钟网络。这类网络的特点是:一、负载时钟网络。这类网络的特点是:一、负载能力特别强能力特别强,,任何一个全局时钟驱动线都任何一个全局时钟驱动线都可以驱动芯片内部的触发器可以驱动芯片内部的触发器;;二是时延差二是时延差特别小特别小;;三是时钟信号波形畸变小三是时钟信号波形畸变小,,工作工作可靠性好。可靠性好。谢大钊谢大钊编著编著概述因此因此,,在在FPGAFPGA设计中最好的时钟方案设计中最好的时钟方案是是::由专用的全局时钟输入引脚驱动单个由专用的全局时钟输入引脚驱动单个主时钟去控制设计项目中的每一个触发主时钟去控制设计项目中的每一个触发器。同步设计时器。同步设计时,,全局时钟输入一般都接全局时钟输入一般都接在器件的时钟端在器件的时钟端,,否则会使其性能受到影否则会使其性能受到影响。响。对于需要多时钟的时序电路对于需要多时钟的时序电路,,最好选用最好选用一个频率是它们的时钟频率公倍数的高频一个频率是它们的时钟频率公倍数的高频主时钟。主时钟。谢大钊谢大钊编著编著概述各个功能模块要使用统一的复位电路。各个功能模块要使用统一的复位电路。在使用带时钟的触发器、计数器等有复位在使用带时钟的触发器、计数器等有复位端的库器件时端的库器件时,,一般应尽量使用有同步复一般应尽量使用有同步复位的器件。注意复位时保证各个器件都能位的器件。注意复位时保证各个器件都能复位复位,,以避免某些寄存器的初始状态不确以避免某些寄存器的初始状态不确定而引起系统工作不可靠。定而引起系统工作不可靠。谢大钊谢大钊编著编著建立和保持时间建立和保持时间若想掌握时钟设计方法首先需要了解建立时间和保持时间的概念。如下页图所示,建立时间(setuptime):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(holdtime):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。谢大钊谢大钊编著编著建立和保持时间建立和保持时间谢大钊谢大钊编著编著全局时钟全局时钟对于一个设计项目来说,全局时钟对于一个设计项目来说,全局时钟((或同或同步时钟步时钟))是最简单和最可预测的时钟。在是最简单和最可预测的时钟。在CPLD/FPGACPLD/FPGA设计中最好的时钟方案是:由专设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动的单个主时钟去用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。只要可能钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟。就应尽量在设计项目中采用全局时钟。CPLD/FPGACPLD/FPGA都具有专门的全局时钟引脚,它都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。时钟提供器件中最短的时钟到输出的延时。谢大钊谢大钊编著编著全局时钟全局时钟下页图是一个全局时钟的实例。图中波下页图是一个全局时钟的实例。图中波形表示出触发器的数据输入形表示出触发器的数据输入D[1..3]D[1..3]应遵守建应遵守建立时间和保持时间的约束条件。如果在应立时间和保持时间的约束条件。如果在应用中不能满足建立和保持时间的要求,则用中不能满足建立和保持时间的要求,则必须用时钟同步输入信号。必须用时钟同步输入信号。最好的方法是用全局时钟引脚去钟控最好的方法是用全局时钟引脚去钟控PLDPLD内的每一个寄存器,于是数据只要遵守内的每一个寄存器,于是数据只要遵守相对时钟的建立时间相对时钟的建立时间tsutsu和保持时间和保持时间thth。。谢大钊谢大钊编著编著全局时钟全局时钟谢大钊谢大钊编著编著门控时钟门控时钟在许多应用中,整个设计项目都采用外部在许多应用中,整个设计项目都采用外部的全局时钟是不可能或不实际的。的全局时钟是不可能或不实际的。PLDPLD具有具有乘积项逻辑阵列时钟(即时钟是由逻辑产生乘积项逻辑阵列时钟(即时钟是由逻辑产生的),允许任意函数单独地钟控各个触发的),允许任意函数单独地钟控各个触发器。然而,当你用阵列时钟时,应仔细地分器。然而,当你用阵列时钟时,应仔细地分析时钟函数,以避免毛刺。析时钟函数,以避免毛刺。谢大钊谢大钊编著编著门控时钟门控时钟通常用阵列时钟构成门控时钟。门控时通常用阵列时钟构成门控时钟。门控时钟常常同微处理器接口有关,用地址线去钟常常同微处理器接口有关,用地址线去控制写脉冲。然而,每当用组合函数钟控控制写脉冲。然而,每当用组合函数钟控触发器时,通常都存在着门控时钟。如果触发器时,通常都存在着门控时钟。如果符合下述条件,门控时钟可以像全局时钟符合下述条件,门控时钟可以像全局时钟一样可靠地工作:一样可靠地工作:谢大钊谢大钊编著编著门控时钟门控时钟1.1.驱动时钟的逻辑必须只包含一个驱动时钟的逻辑必须只包含一个““与与””门或一门或一个个““或或””门。如果采用任何附加逻辑在某些工门。如果采用任何附加逻辑在某些工作状态下,会出现竞争产生的毛刺。作状态下,会出现竞争产生的毛刺。2.2.逻辑门的一个输入作为实际的时钟,而该逻逻辑门的一个输入作为实际的时钟,而该逻辑门的所有其它输入必须当成地址或控制辑门的所有其它输入必须当成地址或控制线,它们遵守相对于时钟的建立和保持时线,它们遵守相对于时钟的建立和保持时间的约束。间的约束。谢大钊谢大钊编著编著门控时钟门控时钟实例实例11如下页图所示是一个可靠的门控时钟的如下页图所示是一个可靠的门控时钟的实例。用一个实例。用一个““与与””门产生门控时钟门产生门控时钟,引脚,引脚nWRnWR和和nWEnWE考虑为时钟引脚,引脚考虑为时钟引脚,引脚ADD[0ADD[0……3]3]是地址引脚,两个触发器的数据是地址引脚,两个触发器的数据是信号是信号D[1D[1……n]n]经随机逻辑产生的。经随机逻辑产生的。谢大钊谢大钊编著编著门控时钟门控时钟实例实例11谢大钊谢大钊编著编著门控时钟门控时钟实例实例22如下页图所示也是一个可靠的门控时钟如下页图所示也是一个可靠的门控时钟的实例。在这个实例中,用一个的实例。在这个实例中,用一个““或或””门产生门产生门控时钟。引脚门控时钟。引脚nWRnWR和和nWEnWE考虑为时钟引考虑为时钟引脚,引脚脚,引脚00……3]3]是地址引脚,两个触发器的是地址引脚,两个触发器的数据是信号数据是信号D[1D[1……n]n]经随机逻辑产生的。经随机逻辑产生的。谢大钊谢大钊编著编著门控时钟门控时钟实例实例22谢大钊谢大钊编著编著门控时钟门控时钟实例实例11和实例和实例22的波形图显示出有关的建立时的波形图显示出有关的建立时间和保持时间的要求。这两个设计项目的地址间和保持时间的要求。这两个设计项目的地址线必须在时钟保持有效的整个期间内保持稳定线必须在时钟保持有效的整个期间内保持稳定((nWRnWR和和nWEnWE是低电平有效是低电平有效))。如果地址线在规。如果地址线在规定的时间内未保持稳定,则在时钟上会出现毛定的时间内未保持稳定,则在时钟上会出现毛刺,造成触发器发生错误的状态变化。另一方刺,造成触发器发生错误的状态变化。另一方面,数据引脚面,数据引脚D[1D[1……n]n]只要求在只要求在nWRnWR和和nWEnWE的有的有效边沿处满足标准的建立和保持时间的规定。效边沿处满足标准的建立和保持时间的规定。谢大钊谢大钊编著编著门控时钟门控时钟由实例由实例11和实例和实例22我们可以看出地址线必须我们可以看出地址线必须在时钟保持有效的整个期间内保持稳定在时钟保持有效的整个期间内保持稳定((nWRnWR和和nWEnWE是低电平有效是低电平有效))。如果地址线在规定的。如果地址线在规定的时间内未保持稳定,则在时钟上会出现毛时间内未保持稳定,则在时钟上会出现毛刺,造成触发器发生错误的状态变化。那么刺,造成触发器发生错误的状态变化。那么我们能不能对两个实例做个改进使地址线不我们能不能对两个实例做个改进使地址线不需要在需要在nWRnWR有效的整个期间内保持稳定呢?有效的整个期间内保持稳定呢?而只要求它们和数据引脚一样符合同样的建而只要求它们和数据引脚一样符合同样的建立和保持时间,从而降低对地址线的要求,立和保持时间,从而降低对地址线的要求,同时改善设计的可靠性。同时改善设计的可靠性。谢大钊谢大钊编著编著门控时钟门控时钟回答当然是肯定的,我们可以将门控时回答当然是肯定的,我们可以将门控时钟转换成全局时钟以改善设计项目的可靠钟转换成全局时钟以改善设计项目的可靠性。性。那么门控时钟如何才能转换为全局时那么门控时钟如何才能转换为全局时钟呢?钟呢?谢大钊谢大钊编著编著门控时钟如何转换为全局时钟门控时钟如何转换为全局时钟如下页图所示描述出了如何用全局时钟如下页图所示描述出了如何用全局时钟重新设计实例重新设计实例11的电路。地址线在控制的电路。地址线在控制DD触触发器的使能输入,许多发器的使能输入,许多PLDPLD设计软件,如设计软件,如ISEISE软件都提供这种带使能端的软件都提供这种带使能端的DD触发器。触发器。当当ENAENA为高电平时,为高电平时,DD输入端的值被钟控到输入端的值被钟控到触发器中:当触发器中:当ENAENA为低电平时,维持现在为低电平时,维持现在的状态。的状态。谢大钊谢大钊编著编著门控时钟如何转换为全局时钟门控时钟如何转换为全局时钟谢大钊谢大钊编著编著门控时钟如何转换为全局时钟门控时钟如何转换为全局时钟从重新设计的电路的波形图中可以看出从重新设计的电路的波形图中可以看出地址线不需要在地址线不需要在nWRnWR有效的整个期间内保有效的整个期间内保持稳定;而只要求它们和数据引脚一样符持稳定;而只要求它们和数据引脚一样符合同样的建立和保持时间,这样对地址线合同样的建立和保持时间,这样对地址线的要求就少很多。的要求就少很多。谢大钊谢大钊编著编著门控时钟如何转换为全局时钟门控时钟如何转换为全局时钟实例实例如下页图所示给出了一个不可靠的门控时钟的如下页图所示给出了一个不可靠的门控时钟的例子。例子。33位同步加法计数器的位同步加法计数器的RCORCO输出用来钟控触输出用来钟控触发器发器。然而,计数器给出的多个输入起到时钟的作。然而,计数器给出的多个输入起到时钟的作用,这违反了可靠门控时钟所需的条件之一。在产用,这违反了可靠门控时钟所需的条件之一。在产生生RCORCO信号的触发器中,没有一个能考虑为实际的信号的触发器中,没有一个能考虑为实际的时钟线时钟线,这是因为所有触发器在几乎相同的时刻发,这是因为所有触发器在几乎相同的时刻发生翻转。而我们并不能保证在生翻转。而我们并不能保证在CPLD/FPGACPLD/FPGA内部内部QA,QB,QCQA,QB,QC到到DD触发器的布线长短一致,因此,如触发器的布线长短一致,因此,如下页图的时间波形所示,在计数器从下页图的时间波形所示,在计数器从33计到计到44时,时,RCORCO线上会出现毛刺(假设线上会出现毛刺(假设QCQC到到DD触发器的路径较触发器的路径较短,即短,即
本文标题:FPGA重要设计思想及工程应用之时序及同步设计
链接地址:https://www.777doc.com/doc-4326199 .html