从FPGA或PLD转换到门阵是经济高效的,有时甚至只需几百个单元就能实现。这已经引起越来越多设计者提出同样的问题:这种转换设计需要什么后续技术?事实上转换到门阵面临着许多电路的时序问题,这在FPGA设计中是不被注意的。
本文论述了转换时遇到的几种由于设计不当所造成的时序问题,提出了避免这些问题的方案。同时对时序变化的部分原因及充分利用门阵列技术亦在文中进行了讨论。
时序上的差异
如果知道原始设计电路工作中每一步时序上的裕量,Orbit保证无论FPGA是否模拟过,都可以成功完成转换,而使用其ATPG和结合缺省模拟分级确保了这一点。在转换完成前,由用户模拟或由Obrit ATPG产生的测试向量,用IC测试仪对FPGA进行测试。如果是用户提供的测试装置或测试向量,此时需分析时序情况,验证系统功能。注意:只有管腿到管腿的测试向量才有助于确认转换的正确性,设置内部节点的模拟向量在芯片级的验证模拟时是无用的。
毛刺信号的产生
许多逻辑电路能产生小的,寄生的信号,称作为毛刺信号。无法预见毛刺信号可通过设计来传播并产生不需要的时钟脉冲。任何组合电路都可能是潜在的毛刺信号的发生器,当毛刺信号影响后续电路时,就成为一个较大问题。
图1用于说明与门的输出变化与否依赖于线路的延时。假定图中信号AO总比BO提前5ns到达。
情况1:信号A1的延时为10ns,B1为20ns,那么与门的输出一直为低电平。
情况2:信号A1的延时为20ns,B1为10ns,那么与门的输出为5ns的高电平,其余为低电平。
情况3:两路信号延时都很小(如同在门阵列中一样),那么与门的输出一直为低电平。
上述差异的重要性完全依赖于信号的用途。如果电路输出后续由触发器锁定,情况2中非期望的毛刺信号可能被忽略;而如果毛刺信号在后续电路中被看作是有意义的信号,那么情况1和情况3中由于没有产生毛刺信号,就会致使电路工作不正常。
开启时钟
许多设计中出现的问题都与如何使用时钟有关。
图2用于解释由逻辑门控制时钟所诱发的问题。逻辑门的介入使得时钟到第二个触发器出现了特殊路经。要考虑两条线路的长度:一是CLK_IN到FF2的D输入端,另一是从CLK_IN到FF2_C端。
要验证两种情况:1、数据的变化在时钟信号的上升沿之后到达FF2;2、数据的变化在时钟信号的上升沿之前到达FF2。
情况1中,要改变FF2_Q,需要两个CLK_IN上升沿,而情况2中只需一个CLK_IN的上升沿。当路径2的延迟太长时,FF2_Q变化将早到一个时钟周期。这种设计逻辑特性很大程度上依赖于延迟路径。
替代的方案是用逻辑门来控制数据,而不是用时钟。由于全局时钟信号用于两个触发器,它们几乎在同一时间记录数据。实际上,FPGA中新的路径1几乎一定长于新路径2,这将确保电路的行为同情况1。当电路转换到门阵列时,必须仍保持这种相同。
总之,要尽量减少或者不使用逻辑门控制时钟信号,因为它会在时钟和数据之间产生较多的扭曲。
全局时钟信号的使用
如果时钟信号上由逻辑等式产生,那么这种方法就会有一些自身的问题。如果全局时钟信号线不用于路由派生时钟,那么时钟的同步上会有一些重要的差别。如果出于不同的用途分别产生时钟,情况甚至会变得更糟。
在长串寄存器链中,这个问题会在多处出现。此电路的一个替代方法如图3所示。使用CLK信号,用第二个与门消除了多路时钟。这样只产生一个时钟信号到触发器串。图3中触发器串的时钟信号是系统时钟通过门延迟得到的,当到达触发器串的数据与触发器串的时钟不同步时,将在两个路径间产生竞争。一路是触发器串的数据输入路径,另一路是系统时钟到达触发器串的时钟输入端路径。解决方案是用系统时钟的下降沿触发的单独触发器串记录数据。
状态检测:
如果不考虑电路钟的延迟,状态机的状态检测可能会出错。如果用组合逻辑来产生复位信号,那么即使是同步电路也会产生问题。
尽量保持状态控制逻辑(如计数器、分频器等)少于10位。如果超过10位,长计数器应该有用于监视内部状态的抽头,或者至少有一预置的功能。这些监视用抽头应能够很容易地将数据传送到输出引脚,以便监测。
复位问题:
如同时钟一样,如果使用组合逻辑或者不详细考虑时序,复位信号也能产生一系列问题。
图4示出了一种产生短脉冲的方法:当触发器D输入是高电位时,每个时钟周期后Q端产生一个短脉冲。复位信号是低电位有效,Q(输出高电位时不引起复位。当时钟的上升沿到来时,如果D端是高电位,Q(输出变低,导致触发器复位。然后Q(又被拉回到高电位,从而结束复位。
为避免组合复位信号的问题,可以使用图5所示得另一触发器的输出来驱动复位信号。
执行问题:
当逻辑等式用于描述一种功能,而编辑器用于产生逻辑关系时,情况变得更有趣。考虑最近发现的一个例子:
if T,OUT=/A
else,OUT=B
如图6,尽管电路在逻辑上是正确的,但当T变化时会产生毛刺信号。A=0,B=1时出现问题。
图7为简化电路。信号T仅仅用作模式切换。当系统在工作台上测试时,毛刺信号绝不会是问题。当随后使用自动系统测试时,要考虑很多效应以找到系统错误的根源。图7所示的逻辑在门阵列实现时,将可能在不需要的时候产生脉冲。事实上,这个问题是转换到门阵列实现时发现的,正可以解释自动的系统测试期间所出现的反常现象。
分割与试验的方法:
如果FPGA的功能在很大程度上依赖于路径延迟,那么设计阶段重新选择路径将引起一部分电路工作不正常。即使以前电路工作正常并且似乎已经最后完成了,情况仍然会如此。不同制造批号的电路模块可能具有不同的工作特性。工作电压和工作温度的变化可能引起时序上的变化。如果设计中每一步的工作时序只有很少的裕量,甚至没有,那么上述的效应将引起不同的逻辑行为。
上述问题与使用FPGA或是门阵列无关。使用好的设计技术可以将FPGA中的这些问题减至最少,并且可以使得门阵列的转换变得更为平稳。因为仿真模拟通常用于验证执行情况,而较差的设计在进行门阵列的转换中问题就会暴露出来。采用不同的时序模型库模拟,一个完美的设计能够给出相同的逻辑输出,而与电压、温度和工艺变化无关。
电压和温度效应:
设计者喜欢电源电压正好设置在5伏,并且环境温度永远是25℃。这样固然好,但绝大多数的电源电压是变化的。类似的商用电路的环境温度可能是从0~70℃。电压升高时,电路运行加快。温度升高时,电路运行变慢。通常,在低温、高电压(最快的情况)下出现的小毛刺信号,在高温、低电压(最慢的情况)时会消失不见。Orbit半导体公司使用了一种五角工艺验证技术,它可将PVT(工艺-电压-温度)变化包含于时序模型中,而且这些模型已被融合到硅片循环加工中。
工艺的变化:
具有某种功能的一处电路不能保证相同布局的另一处电路也具有同样功能,即使在相同的电压和温度条件下也是如此。制造过程中工艺的变化都是固有的、不可避免的。
FPGA供应商指出任何元件的延迟都可以从所给最差值的10%变到100%。他们还指出给定电路上跟踪的延迟是70%。如果路径A具有最大的延迟,路径B将介于最大延迟的70%和100%之间。这意味着如果两条路径中有一最大是40ns的延迟,当路径1是40ns时路径B可能时28ns。类似的,路径2是40ns时A可能是28ns。则一个信号通过路径1将比通过路径2早12ns或晚12ns。即使FPGA没有重新布线,这些变化仍会发生。
门阵列具有与FPGA同样特性的时序变化。主要差别是延迟通常是非常短的,这是因为内部连线是用金属完成的,而不是使用可编程路径器件。FPGA和门阵列都不能免除由于工艺变化引起的时序问题。
其他的转换差别:
FPGA提供了系统工作的很大灵活性,为更好地满足系统的需要,在FPGA转换成门阵列时,许多增强措施被加到设计中:
输入:
1、 TTL或CMOS
2、 施密特触发器(增加滞后效应)
3、 晶体或RC振荡器单元
4、 增加上拉或下拉器件
输出:
1、 很多不同的驱动级
2、 漏端开路(集电极开路)
3、 旋转比率控制
门阵列的门海结构实际上就是一个自由晶体管的海洋,添加特殊单元相对容易。甚至,一些生产商允许使用门海中的晶体管来制成模拟器件。
总结
从FPGA转换到门阵列时遇到的主要问题,常常在转换之前FPGA中就会看到。好的设计方案将减少FPGA中遇到的问题,并为转换到门阵列的设计做好准备