触发器涉及到的问题的一系列思考.doc_第1页
触发器涉及到的问题的一系列思考.doc_第2页
触发器涉及到的问题的一系列思考.doc_第3页
触发器涉及到的问题的一系列思考.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

触发器涉及到的问题的一系列思考:建立时间:触发器在时钟沿来到前,其数据输入端的数据必须保持不变的时间保持时间:触发器在时钟沿来到后,其数据输入端的数据必须保持不变的时间 因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。 两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间 Tmax+Tco+Tsetup(这种情况时给定了右边这几个参数之后要你选择时钟频率)如果考虑更细一点呢,即还要考虑时钟延迟Tpd,时钟偏移Tskew,甚至温度,电源带来的影响?那我就无能为力了!哈哈。下面谈谈保持时间,说了这么多,可能又忘记前面的概念了,什么是保持时间:触发器在时钟沿来到后,其数据输入端的数据必须保持不变的时间。首先要声明的是,一般的设计当中,保持时间远没有建立时间来的重要。谈保持时间,就要考虑Tmin了,因为在谈建立时间的时候是讨论怎么样延迟小来满足建立时间。而这里就是如果来得太快,也会出问题。因为,保持时间的含义就是这个数据必须要经过这么长的时间处理,在这个时间段里,不允许输入端有变化的信号,你如果来得太快,那么有可能触发器的输出将可能出错(有可能触发器内部电容没有充放电完全)。这样,因为第一个触发器输出的数据最快也要Tmin到达,所以,保持时间要小于这个时间,也就是你要尽快处理。即TholdTmin。这样,在信号到达第二个触发器的时候,他们允许你到达了(但是不让你进哦,还有一个建立时间)。如果深入探讨一点,我们又来考虑一下Tco,即信号在触发器中的延迟,如果考虑到他,那么上面那个公式要改为:TholdTmin+Tco。下面谈谈在FPGA当中的最大时钟频率的估算问题了解了前面的一些概念以后,我们知道我的系统的时钟周期要有一定的长度,这个长度要覆盖建立时间Tsetup,触发器的输出延迟Tco,组合逻辑延迟Tlogic,现在我么年考虑更细一点,即再包含一个布线延迟,我们必须估算出布线延迟才能更精确的知道所能达到的上限频率,但是xilinx公司没有给出布线延迟的模型,不过业内通过统计分析表明,逻辑延迟与布线延迟的比值约为1:1到1:2由于我们所选用的芯片大量已经进入0.18um和0.13um深亚微米的工艺,因此我们取逻辑延迟与布线延迟比值为1:2,这样我们可以这样计算最大周期时间,Tmax = Tsetup+ Tco+Tlogic+Troute = Tsetup+ Tco+Tlogic+2Tlogic = Tsetup+ Tco+3Tlogic这样,我们的上限频率为Fmax = 1 / Tmax注意:由于针对某一个器件(可能一种特定工艺下的库单元,他的触发器的时序参数时固定的)他的Tsetup和Tco是固定的,因此我们在设计中要考虑的参数只有两个Tlogic和Troute,通过良好的设计和诸如流水线技术我们可以把这两个指标控制在一个合理的范围之内。现在来讨论设计建立时间和保持时间的一些工程问题:流水线技术;为什么要用两级触发器来同步异步输入信号见最前面的讨论,这里还不是非常清楚,留待以后再分析。接着讨论,一般工程中,都有速度要求,也就是要处理速度越快越好,这就要求时钟频率更快,但是频率快也将带来一系列的问题,首先是如果频率加大,那么周期减少(呵呵,废话),那么,根据前面对建立时间的讨论,允许我们的组合逻辑的延迟就越来越小。这给设计也带来了复杂性。由于组合逻辑的延迟是一个关键数据(一般他的级别比触发器内部延迟如Tco要大很多),所以他就是提升速度的一个瓶颈,怎么解决呢?在同步设计中,我们是通过在延迟比较大的组合逻辑中插入触发器,他他们分成几个独立的更小一点的组合逻辑块,这样,系统地频率就能加快。但是注意,这样就在原来的数据通路上加入延时。而且,原来设计受限制的部分只要一个周期完成,现在由于加入了触发器,所以,加多少个触发器就需要多几个时钟周期把数据从一段送到另一端。也许我们会疑惑为什么?这样好像更慢了,我觉得应该从大局着想,这样的话系统地频率上去了,那么原来的一个周期和改变后的一周期不是一个概念了(周期变短了)。再就是整个系统因此而提升了速度,这样才是不为一粒老鼠屎,坏了一锅粥阿,实在是何乐而不为。这也就是所谓的“流水线技术”附:到底什么情况下我们使用流水线技术?如果某个设计的处理流程分为若干步骤,而且整个数据处理时“单向的”,即没有反馈和迭代,前一个的输出是下一个的输入 就行下面讨论亚稳态问题了,呵呵,当然也和触发器相关。首先要清楚,什么是亚稳态?亚稳态是指触发器无法在一个规定的时间内达到一个可确认的状态。我们可以来打个比方:假想两个触发器为两个相邻的交通灯,这两个交通灯必须要步调一致,也就是说如果第一个交通灯绿灯亮了之后车开始行驶,然后到达第二个交通灯处,那么,如果这个时候第二个交通灯还没有从红灯转到绿灯,也就是说这里的车还在等,那么从第一个交通灯驶来的车将会与其发生碰撞。这里,我们就可以将交通灯当作时钟,而汽车当作要传递的信号。也就是说这两个交通灯必须同时(或者相差很近)的改变,从而使得从第一个交通灯的驶来的车到达第二个交通灯的时候,这里的车已经离开。两个交通灯发生改变也就是时钟触发时刻,如果一致就是时钟没有发生偏移,否则时钟偏移。这个偏移发生的原因是时钟布线相关的延时。如果时钟偏移过大就可能会发生交通事故,也就是会产生亚稳态。其次,什么时候会出现亚稳态呢?如果锁存器的一个输入脉冲太窄,或两个输入同时有效,或两个输入相互间隔足够小,那么硬件锁存器可能进入亚稳态。如果异步信号(所谓异步信号就是:如果信号不能由时钟控制,或者如果他是由不同域(时钟域)中的时钟同步,那么它就是异步信号)恰巧在触发器的初始化期间来到,那么他们可能造成触发器进入亚稳态。如果数据输入在时钟跳变之前或之后的有限时间间隔中发生变化,那么触发器可能进入亚稳态。(摘自Verilog 高级数字设计)注:这里涉及到同步异步信号的问题当一个信号跨越某个时钟域(如,低俗向高速域传输数据)时,对新时钟的电路来说,他就是一个异步信号,接受该信号的电路需要对他进行同步处理,同步可以防止第一级存储单元(触发器)的亚稳态在新的时钟域里传播蔓延。(这就是同步的目的)那么怎样避免亚稳态,也就是怎样同步呢?简单的同步器有两个触发器串联组成,中间没有其他任何电路(而且要尽量贴得近,以确保两者间有最小的时滞(clock skew),这种设计可以保证后一个触发器获得前一个触发器的输出时,前一个触发器已退出了亚稳态,并且输出已经稳定。同步器典型有三种:电平同步器,边沿检测和脉冲。摘自:/special_column/techarticle/jszl4911.html除了同步器外,还有一些方法:用反应更快的触发器降低采样频率,给更多的时间避开亚稳态时间使用边沿变化快速的信号(并不是频率快,而是时钟沿陡峭)原则就是:器件使用比较好的工艺,时钟周期余量大一些。具体代码解决办法之一:always(posedge clka)siga=din;always(posedge clkb)begin sigb=siga; sigb_d 最长的组合路径延迟 + 典型的亚稳态恢复时间 + 触发器的setup time。根据以上几个数据确定你如何处理亚稳态信号深入的探讨暂避。1、setup time的意义:为什么Data需要在Clock到达之前到达? 其实在实际的问题中,setup time并不一定是大于零的,因为Clock到达时刻并不等同于latch的传输门A关闭的时刻(更何况这种关闭并不是绝对的和瞬间完成的),这之间有一个未知的延迟时间。 为使问题简化,假设Clock的到达时刻为传输门A关闭、传输门B打开的时刻。如果Data没有在这之前足够早的时刻到达,那么很有可能内部的feedback线路上的电压还没有达到足够使得inv1翻转的地步(因为inv0有延时,Data有slope,传输门B打开后原来的Q值将通过inv2迫使feedback保持原来的值)。如果这种竞争的情况发生,Q的旧值将有可能获胜,使Q不能够寄存住正确的Data值;当然如果feedback上的电压已经达到了足够大的程度也有可能在竞争中取胜,使得Q能够正确输出。 如果inv0、inv1和inv2的延时较大(Data的变化影响feedback和Q的时间越长),那么为了保证正确性就需要更大的setup time。所以在实际测量setup time的时候,需要选取工艺中最慢的corner进行仿真测量。2、hold time的意义:为什么Data在Clock到达之后仍然要保持一段时间? 和setup time的情况不一样,因为Clock到达时刻并不等同于latch的传输门A完全关闭的时刻。所以如果Data没有在Clock到达之后保持足够长的时间,那么很有可能在传输门A完全关闭之前Data就已经变化了,并且引起了feedback的变化。如果这种变化足够大、时间足够长的话,很有可能将feedback从原本正确的低电压拉到较高电压的电压。甚至如果这种错误足够剧烈,导致了inv1和inv2组成的keeper发生了翻转,从而彻底改变了Q的正确值,就会导致输出不正确。当然,如果这种错误电压不是足够大到能够改变keeper的值,就不会影响到Q的正确输出。 如果inv0、inv1和inv2的延时较小(Data的变化影响feedback和Q的时间越短),那么为了保证正确性,就需要更大的hold time。所以在实际测量hold time的时候,需要选取工艺中最快的corner进行仿真测量。有同步信号引发到跨域传送有牵扯到了握手和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论