大型设计中FPGA的多时钟设计策略
发布时间:2008/5/28 0:00:00 访问次数:597
fpga设计的第一步是决定需要什么样的时钟速率,设计中最快的时钟将确定fpga必须能处理的时钟速率。最快时钟速率由设计中两个触发器之间一个信号的传输时间p来决定,如果p大于时钟周期t,则当信号在一个触发器上改变后,在下一个逻辑级上将不会改变,直到两个时钟周期以后才改变,如图1所示。
传输时间为信号在第一个触发器输出处所需的保持时间加上两级之间的任何组合逻辑的延迟,再加两级之间的布线延迟以及信号进入第二级触发器的设置时间。无论时钟速率为多少,每一个fpga设计所用的时钟必须具有低抖动特性。抖动s是触发器的一个时钟输入到另一个触发器的时钟输入之间的最大延迟。为使电路正常工作,抖动必须小于两个触发器之间的传输时间。
图二
图2显示了如果抖动大于传输时间(s>p)将出现的情况,该电路用时钟的两个上升沿来延迟信号1。然而,信号1上的一个改变会在相同的时钟周期上传输到的信号3上,从而引起信号2的改变。因为s>p,电路将不能不正常。
须注意的是,时钟速率与传输延时并没有什么关系,甚至普通的100bps时钟也会出现抖动问题。这意味着虽然fpga供应商宣称他们的芯片具有较短的传输时间和很高的时钟速率,但抖动问题可能会严重,甚至那些没有运行在最高速率上的设计也是如此。
好在fpga供应商已经认识到时钟抖动的影响,并在他们的芯片中提供低抖动的布线资源。这些特殊的布线能够在芯片中一个给定范围内的任何两个触发器之间提供一个确定的最大抖动。部分产品的低抖动资源覆盖了整个芯片,而其它的则可能只覆盖了fpga逻辑块中的一个特定的行或列。对于一个需要很多不同时钟源的设计,这些低抖动fpga是比较理想的选择。
多时钟设计的最严重问题之一是用异步时钟将两级逻辑结合在一起。由于异步时钟会产生亚稳态,从而严重降低设计性能,或完全破坏设计所能实现的功能。在触发器的时序要求产生冲突时(设置时间和保持时间)将产生亚稳态,触发器的最终输出是未知的,并使整个设计处于不确定状态。如果有一级逻辑要将数据异步地发送到另一级,图3所示的情形将不能满足触发器的设置和保持时间要求。确切地说,如果设计中含有异步逻辑将有可能会产生亚稳态。在处置异步资源时必需非常小心,因为这可能产生一些很严重的问题。
图三
多时钟设计
本文以电信应用中的e3多路复用/解复用设计为例。如图4所示,多路复用器接收来自一组独立线路接口芯片的16个独立e1信道,每一个信道都工作于2.048mhz;经复用后,这些e1流组合成4个e2流,分别工作在8.0448mhz;4个e2流最后组合成一个e3流,以34.368mbps的速率串行发送出去。在接收端执行相反的操作:解复用器从e3流提取4个e2数据流,然后从e2流提取16个e1流,最终将e1流发送到接收端的线路接口芯片。
图四
这些e1线路接口在发送和接收时都独立工作,因此2.048mhz的时钟速率可以有+/- 20ppm的偏差。同样,因为大多数系统同时发送和接收数据,分立的多路复用器和多路解复用器将提供2个独立的e3流(发送和接收)。因此,两个34.368mhz的时钟可以存在细微的差异。
由于e2流是在芯片上产生的,这些e2多路复用器可以共享同一个8.448mhz时钟。然而,由于接收的数据速率与我们所设计的板无关(且不能假定所有e2多路复用器使用相同时钟),所以e2解复用器时钟必须能工作在略为不同的速率下。
此外,假定设计中需要一个由工作频率为1mhz的处理器控制的独立spi(串行外围接口)总线接口,该接口用于状态和控制。这样一来,设计中总共用了32个2.048mhz时钟,5个8.448mhz时钟,2个34.368mhz时钟和一个1mhz时钟,总共多达40个时钟。
本设计中最快时钟是34.368mhz e3时钟。fpga的最大时钟速率的确定很重要,因为设计的差异将影响到该最大值。然而,在芯片商的资料手册中常常可以看到“全局时钟设置及保持时间”和“至clb输出的时钟”两个参数,将这两个参数的最大值相加,再增加25%就能可以得到最小时钟周期的初略值,在最大时钟速率条件下允许10%的余量,以保证过热条件下能正常工作。因此,我们设置的最小速率为40mhz,很多较新的fpga都能够很容易地支持该频率。事实上,fpga供应商已经推出了超过300mhz的器件。
在确定了能满足最大频率要求的fpga后,就需要保证有足够的空间来实现你的设计。如果所选的fpga没有足够的余量,就不能提供足够的布线资源来满足设计的时序约束。通常芯片供应商宣称的速率是最
fpga设计的第一步是决定需要什么样的时钟速率,设计中最快的时钟将确定fpga必须能处理的时钟速率。最快时钟速率由设计中两个触发器之间一个信号的传输时间p来决定,如果p大于时钟周期t,则当信号在一个触发器上改变后,在下一个逻辑级上将不会改变,直到两个时钟周期以后才改变,如图1所示。
传输时间为信号在第一个触发器输出处所需的保持时间加上两级之间的任何组合逻辑的延迟,再加两级之间的布线延迟以及信号进入第二级触发器的设置时间。无论时钟速率为多少,每一个fpga设计所用的时钟必须具有低抖动特性。抖动s是触发器的一个时钟输入到另一个触发器的时钟输入之间的最大延迟。为使电路正常工作,抖动必须小于两个触发器之间的传输时间。
图二
图2显示了如果抖动大于传输时间(s>p)将出现的情况,该电路用时钟的两个上升沿来延迟信号1。然而,信号1上的一个改变会在相同的时钟周期上传输到的信号3上,从而引起信号2的改变。因为s>p,电路将不能不正常。
须注意的是,时钟速率与传输延时并没有什么关系,甚至普通的100bps时钟也会出现抖动问题。这意味着虽然fpga供应商宣称他们的芯片具有较短的传输时间和很高的时钟速率,但抖动问题可能会严重,甚至那些没有运行在最高速率上的设计也是如此。
好在fpga供应商已经认识到时钟抖动的影响,并在他们的芯片中提供低抖动的布线资源。这些特殊的布线能够在芯片中一个给定范围内的任何两个触发器之间提供一个确定的最大抖动。部分产品的低抖动资源覆盖了整个芯片,而其它的则可能只覆盖了fpga逻辑块中的一个特定的行或列。对于一个需要很多不同时钟源的设计,这些低抖动fpga是比较理想的选择。
多时钟设计的最严重问题之一是用异步时钟将两级逻辑结合在一起。由于异步时钟会产生亚稳态,从而严重降低设计性能,或完全破坏设计所能实现的功能。在触发器的时序要求产生冲突时(设置时间和保持时间)将产生亚稳态,触发器的最终输出是未知的,并使整个设计处于不确定状态。如果有一级逻辑要将数据异步地发送到另一级,图3所示的情形将不能满足触发器的设置和保持时间要求。确切地说,如果设计中含有异步逻辑将有可能会产生亚稳态。在处置异步资源时必需非常小心,因为这可能产生一些很严重的问题。
图三
多时钟设计
本文以电信应用中的e3多路复用/解复用设计为例。如图4所示,多路复用器接收来自一组独立线路接口芯片的16个独立e1信道,每一个信道都工作于2.048mhz;经复用后,这些e1流组合成4个e2流,分别工作在8.0448mhz;4个e2流最后组合成一个e3流,以34.368mbps的速率串行发送出去。在接收端执行相反的操作:解复用器从e3流提取4个e2数据流,然后从e2流提取16个e1流,最终将e1流发送到接收端的线路接口芯片。
图四
这些e1线路接口在发送和接收时都独立工作,因此2.048mhz的时钟速率可以有+/- 20ppm的偏差。同样,因为大多数系统同时发送和接收数据,分立的多路复用器和多路解复用器将提供2个独立的e3流(发送和接收)。因此,两个34.368mhz的时钟可以存在细微的差异。
由于e2流是在芯片上产生的,这些e2多路复用器可以共享同一个8.448mhz时钟。然而,由于接收的数据速率与我们所设计的板无关(且不能假定所有e2多路复用器使用相同时钟),所以e2解复用器时钟必须能工作在略为不同的速率下。
此外,假定设计中需要一个由工作频率为1mhz的处理器控制的独立spi(串行外围接口)总线接口,该接口用于状态和控制。这样一来,设计中总共用了32个2.048mhz时钟,5个8.448mhz时钟,2个34.368mhz时钟和一个1mhz时钟,总共多达40个时钟。
本设计中最快时钟是34.368mhz e3时钟。fpga的最大时钟速率的确定很重要,因为设计的差异将影响到该最大值。然而,在芯片商的资料手册中常常可以看到“全局时钟设置及保持时间”和“至clb输出的时钟”两个参数,将这两个参数的最大值相加,再增加25%就能可以得到最小时钟周期的初略值,在最大时钟速率条件下允许10%的余量,以保证过热条件下能正常工作。因此,我们设置的最小速率为40mhz,很多较新的fpga都能够很容易地支持该频率。事实上,fpga供应商已经推出了超过300mhz的器件。
在确定了能满足最大频率要求的fpga后,就需要保证有足够的空间来实现你的设计。如果所选的fpga没有足够的余量,就不能提供足够的布线资源来满足设计的时序约束。通常芯片供应商宣称的速率是最