Delta Cycles和Waveforms

nai*_*een 5 vhdl

谁能解释delta周期如何影响VHDL模拟的波形?我知道它与VHDL如何确定优先级有关,但我不确定如何.

use*_*120 8

您不会在VHDL标准(IEEE Std 1076-2008)中找到信息,并且没有广泛理解哪些delta周期(这里有一个关于您作为语言用户实际需要了解多少的提示,一个抽象的知识可以满足).

Delta循环在VHDL之前.您可以在互联网上找到可追溯到1971年的参考文献.VHDL从CONLAN BCL时间模型中获取它的三角形周期,它们被称为步骤(注意我们今天看到交互式模拟器命令,请参阅VHDL的Delta延迟的起源,SUMIT GHOSH ,Int.J. Engng Ed.Vol.20,No.4,pp.638-645,2004,和CONLAN Report,R.Piloty,M.Barbacci,D.Borrione,D.Dietmeyer,F.Hill,P. Skelly,Springer-Verlag 1983).

有一个简单的参考资料解释了Ishiura Nagisa博士论文关于逻辑模拟和硬件描述语言的研究中的概念,其中第7章描述了NES:硬件描述语言的不确定行为模型.

7.2.2零延迟建模

在设计硬件时,事件之间的时序关系非常重要.HDL必须具有时序关系规范的框架.因此,开发硬件行为模型的最重要问题之一是如何建模时间.

可能最简单的时间建模方法之一是用符号序列表示波形,每个符号与离散时间的最小单位相关联.

在VHDL术语中,这些符号是类型的值,离散时间由模拟时间的值表示.

...然后,硬件组件的行为由符号集上的顺序机器表示.尽管该建模实现了简单的数学处理,但它缺乏在单位时间内在同一位置表达多个事件的发生的能力.因此,很难解释包含由零延迟分量组成的循环的电路的行为.

模拟VHDL模型在模拟时间内产生一系列波形事件.VHDL实际上根本不会处理具有零延迟组件的反馈回路.第7章的要点是用另一种HDL来描述如何做到这一点.

...这里,零延迟意味着延迟小于单位时间.它是时间量化的产物.如果组件的延迟时间小于时间的最小单位,则将其指定为0.当我们将时钟周期作为单位时间时,也会出现零延迟.在这种情况下,门的延迟被视为零延迟,因为它不是由单位时间测量的.零延迟表示前后关系因果关系,其延迟时间为0,以单位时间为单位,

在没有模拟时间推进的情况下发生的VHDL模拟周期是由信号分配产生的增量周期,默认增量延迟为0.我们可以看到Jayaram Bhasker对A VHDL Primer(AT&T)中的delta周期的描述受此段落的影响. VHDL Primer对delta周期的描述被广泛引用并且仍然没有启发性,导致寻找关于该主题的计算机科学家的着作.

请注意,VHDL模型通过等待语句中的进程的恢复和后续重新暂停来操作(具有敏感性列表的进程具有带有敏感性列表的隐式等待语句,作为该进程的最后一个语句).未指定流程执行恢复的顺序,可以使用并行运行的流程模拟VHDL.

为了处理此信号更新已安排,并且在所有进程暂停之前不会生效.如果针对当前模拟时间安排了任何更新,则下一个模拟周期是增量周期,否则模拟时间前进到下一次下一个模拟周期的调度信号更新.当没有安排进一步的事件时,模拟时间进入时间'高度并且模拟结束.

这些delta周期允许模型执行中的确定性,其中进程可以通过使用具有历史的信号并行执行.在流程执行期间,信号不会更改,每个流程每次都会执行相同的操作.VHDL是正式的符号,旨在支持对其合成符合条件子集的形式验证,确定性在这里很重要.

为了处理零延迟,bcl(Conlan)[Pi183]和VHDL [Coe89]的时间模型分别基于称为步长和Δ延迟的子单位时间来设计.单位时间的信号值是步长或Δ延迟中无限重复计算的最终结果.由于这些模型是为了计算最终结果而发明的

图7.2.jpg

单位时间内,没有注意单位时间内的计算顺序.实际上,步长或Δ延迟与单位延迟模型下的模拟相关联.有些情况下,最终结果取决于计算的顺序.例如,在图7.2中,虽然电路不切实际,但D上可能存在危险,这会改变Q上的信号值.通过使用bcl和VHDL模型,我们永远不会得到这个结果.这又是因为这些语言基于确定性计算模型.

这不太清楚.连续增量周期内的执行顺序由当前模拟时间的信号更新确定.Delta周期将以确定的顺序发生.

作者继续阐述非确定性行为模型作为替代方案的优点,其余叙述对VHDL几乎没有影响.

除了图7.2所示的完全理论模型的非确定性.VHDL无法处理零延迟反馈环路.为了捕获这些情况,VHDL模拟器实现了在模拟停止之前允许的最大数量的增量循环.虽然这个数字有时可以通过命令行选项设置[Coe89]参考(Vantage Analysis Systems的David R. Coelho在1989年的VHDL手册),但是在作者的模拟器开始时,delta周期最大值为127 ,反映更简单的模型,并且必然会随着时间的推移而增加.在现代模拟器中,默认最大值通常为5,000或10,000,反映了模型的复杂性.我们的想法是允许足够的delta周期来克服模型的复杂性,而不会让零延迟循环不受限制地运行.

在图7.2中,如果A,B,C和D是VHDL中的信号,其中反相器,缓冲器和AND门表示具有一个Δ延迟(零延迟模型)的信号分配,则信号D将不具有单个delta周期脉冲(毛刺) ,小于可测量的时间).如果你想要一个脉冲,你需要延迟,依靠逆变器和缓冲器的下降时间的不同.

当使用0延迟建模时,VHDL可能需要额外的信号作为缓冲器以给出增量延迟或补偿由于逻辑路径中的不同数量的信号分配而具有增量延迟的信号.另一方面,合成忽略了延迟(除了偶尔提供警告的工具之外).

因此,使用信号更新的delta周期为零延迟模型提供了确定性 - 基于在所有进程暂停后发生的信号更新的正确结果.没有这种决定论,你就会依赖于赋值的顺序,就像使用变量一样.使用信号可以在任意边界上分解设计.可以描述进程和其他并发语句而不考虑它们之间的顺序.

优先级在标准中具有特定含义(运算符优先级),说'确定性'更安全.每次都会得到相同的答案,因为即使是零延迟分配,在进程执行期间也不会发生信号更新.