A毛刺的产生: 多路信号的电平值在发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”。有毛刺就说明该电路存在“冒险”。与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递。 概括的讲,只要输入信号同时变化,组合逻辑必将产生毛刺,将它们的输出直接连接到时钟输入端、清零或者置位端口的设计方法是错误的。 消除毛刺的影响: 1、
用Gray编码; 2、
用作D触发器的输入端进行同步; 由于毛刺基本上不能满足D触发器输入端的建立保持时间,所以D触发器对毛刺不敏感,可以用来处理带有毛刺的信号。 B锁存器与触发器: 触发器是在时钟的边沿进行数据的锁存的,而锁存器是用电平使能来锁存数据的,在设计中应尽量使用触发器而不是锁存器。 C延时电路的产生: 在器件内部产生延时,必需经过一定的物理资源,可以通过逻辑门或者其他的延时单元来实现,使用多级与非门的时候往往会被综合器优化,因为综合器会认为一个信号非两次还是它自己,
Altera的LCELL原语也可以产生一定的延时,但会随着温度改变而改变,可以考虑使用D触发器; D在设计中将延时最大的路径称作关键路径,它会影响速度的瓶颈 解决方法:可以将较大的组合逻辑分解为较小的几块,中间插入触发器,这样可以提高电路的工作频率,也是“流水线pipeline”的原理;比如将一个36位的加法器分成3个12位; E非同源时钟的同步化: 用一个高频时钟对其他的非同源时钟同步,分别检测其他时钟的上升沿(用两个触发器打两拍在输出端判断或者用三个触发器打三拍在后两个输出端判断)作使能,来输出数据; 高频时钟作为触发时钟对低频采样,而低频时钟作为使能信号; 小结:稳定可靠的时钟是系统稳定可靠的重要条件,我们不能将任何可能含有毛刺的输出作为时钟信号,并且尽可能只使用一个全局时钟,对多时钟系统要注意异步信号和非同源时钟; F两个不相关时钟的处理: 利用高频时钟采样两个时钟,在电路中使用高频时钟作为电路的工作时钟,经采样后的低频时钟作为使能; 在时钟同步单元采用两次同步法; 使用握手信号; 使用双时钟FIFO进行数据缓冲; 小结: 1、
采用全局时钟,不要将时钟参与运算; 2、
以寄存器位边界划分工作模块,使各模块输出保持原来的时序; 3、
组合逻辑尽量采用并行结构(如case),降低寄存器之间的延迟从而提高工作频率; 4、
消除锁存器,减小电路面积; 5、
设计中尽量采用同步设计,信号被时钟采样后再参与逻辑运算,这样可以隔断组合路径,也可以消除毛刺,在设计中,组合信号的输出不允许反馈作为该组合逻辑的输入,这样可以避免组合环; |