FPGA/CPLD 数字电路设计经验
FPGA/CPLD 数字电路设计经验分享
摘要:在数字电路的设计中,时序设计是一个系统性能的主要标志,在高层次设计方法中,对时序控制的
抽象度也相应提高,因此在设计中较难把握,但在理解 RTL 电路时序模型的基础上,采用合理的设计方法
在设计复杂数字系统是行之有效的,通过许多设计实例证明采用这种方式可以使电路的后仿真通过率大大
提高,并且系统的工作频率可以达到一个较高水平。
关键词:FPGA 数字电路 时序 时延路径 建立时间 保持时间
1 数字电路设计中的几个基本概念:
1.1 建立时间和保持时间:
建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时
间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上
升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。 如图 1 。 数
据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间(如图 2)
图 1 建立时间和保持时间关系图
注:
z 在考虑建立保持时间时,应该考虑时钟树向后偏斜的情况,在考虑建立时间时应该考虑时钟树向
前偏斜的情况。在进行后仿真时,最大延迟用来检查建立时间,最小延时用来检查保持时间。
z 建立时间的约束和时钟周期有关,当系统在高频时钟下无法工作时,降低时钟频率就可以使系统
完成工作。保持时间是一个和时钟周期无关的参数,如果设计不合理,使得布局布线工具无法布
出高质量的时钟树,那么无论如何调整时钟频率也无法达到要求,只有对所设计系统作较大改动
才有可能正常工作,导致设计效率大大降低。因此合理的设计系统的时序是提高设计质量的关键。
在可编程器件中,时钟树的偏斜几乎可以不考虑,因此保持时间通常都是满足的。1.2 FPGA 中的
竞争和冒险现象
信号在 FPGA 器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单
元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一
定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的
输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一
个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。(与分立元件不同,由于 PLD 内部不存在寄
生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在 PLD、FPGA 设计中尤为突出)
图 2 是一个逻辑冒险的例子,从图 3 的仿真波形可以看出,"A、B、C、D"四个输入信号经过布线延时以后,
高低电平变换不是同时发生的,这导致输出信号"OUT"出现了毛刺。(我们无法保证所有连线的长度一致,
1