大型设计中FPGA多时钟设计策略详解

名词补充:

亚稳态:是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

利用FPGA实现大型设计时,可能需要FPGA具有以多个时钟运行的多重数据通路,这种多刊名FPGA设计必须特别小心,需要注意最大时钟速率、抖动、最大时钟数、异步时钟设计和时钟/数据关系。设计过程中最重要的一步是确定要用多少个不同的时钟,以及如何进行布线。

FPGA设计的第一步是决定需要什么样的时钟速率,设计中最快的时钟将确定FPGA必须能处理的时钟速率。最快时钟速率由设计中两个触发器之间一个信号的传输时间P来决定,如果P大于时钟周期T,则当信号在一个触发器上改变后,在下一个逻辑上将不会改变,直到两个时钟周期以后才改变。

传输时间为信号在第一个触发器输出处所需的保持时间加上两级之间的任何组合逻辑的延迟,再加两级之间的布线延迟及信号进入第二级触发器的设置时间。无论时钟速率为多少,每一个FPGA设计所用的时钟必须具有低抖动性。抖动S是触发器的一个时钟输入到另一个触发器的时钟输入之间的最大延迟。为使电路正常工作,抖动必须小于两个触发器之间的传输时间。从某种程度上而言就是时钟信号的延时要小于信号的延时。

下图显示了如果抖动大于传输时间(S>P)将出现的情况,该电路用时钟的两个上升沿来延迟信号1。然而,信号1上的一个改变会在相同的时钟周期上传输到信号2上,从而引起信号3的改变。因为S>P,电路将不能正常工作。

时钟速率与传输延时并没有什么关系,甚至普通的100bps时钟也会出现抖动问题(2MHz是模拟时钟, 依靠sin波形来取样时钟信号,2Mbits是数字时钟, 依靠周期性脉冲来取样)。

好在FPGA供应商已经认识到时钟抖动的影响,并在他们的芯片提供低抖动的布线资源。这些特殊的布线能够在芯片中一个给定的范围内的任何两个触发器之间提供一个确定的最大抖动。部分产品的低抖动资源覆盖了整个芯片,而其它的则可能只覆盖了FPGA逻辑块中的一个特定的行或列。对于一个需要很多时钟源的设计 ,这些低抖动FPGA是比较理想的选择。

多时钟设计的时最严重问题之一是用异步时钟将两级逻辑结合在一起。由于时钟会产生亚稳态,从而严重降低设计性能,或完全破坏设计所能实现的功能。在触发器的时序要求产生冲突时(设置时间和保持时间)将产生亚稳态,触发器的最终输出是未知的,并使整个设计处于不确定状态。如果有一级逻辑要将数据异步地发送到另一级,下图所示的情形将不能满足触发器的设置和保持时间的要求。确切的说,如果设计中含有异步逻辑将有可能会产生亚稳态。在处置异步资源时必须非常小心,因为这可能产生一些很严重的问题。

未经允许不得转载:TacuLee » 大型设计中FPGA多时钟设计策略详解

赞 (2)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址