提起时钟,就不得不先说芯片的两种逻辑——时序逻辑(sequential)和组合逻辑(combinational)。组合逻辑比较好理解,他便是我们常说的与或非这种逻辑门,输出旗子暗记逻辑仅仅依赖于输入旗子暗记的逻辑,或者按我的理解,组合逻辑的旗子暗记传播是瞬间完成的(不考虑cell delay的话)。不管是多么繁芜的组合电路,就比如刚入门电路时候大家都会学一些全加器、半加器、超提高位加法器什么什么的,虽然电路图猛一看特殊繁芜,可能一张图还画不完,但只要他全部是由逻辑门构成,都可以认为当给定输入旗子暗记的时候,输出是不须要等待就可以直接看到的。当然这只是我的理解啦,详细的组合逻辑定义肯定不是这样吧?而时序逻辑,最主要的便是涌现了由时钟驱动的旗子暗记。什么意思呢?便是说电路中存在这样一类器件:他有一个分外的掌握输入旗子暗记,当这个旗子暗记跳变的时候,输出旗子暗记才会根据其他一样平常的输入旗子暗记变革。我们一样平常称这种器件叫触发器(flip-flop),而称这种分外的掌握旗子暗记叫时钟。举一个最大略的D触发器的例子,当时钟从0到1跳变的时候,输出才即是输入,其他韶光,不管输入如何变革,输出保持不变。由此可以看出时序逻辑器件一个主要的功能:寄存数据,因此这些触发器有时候也可以被称为寄存器(register)。当然还有另一种时序逻辑器件叫锁存器(latch),它是指时钟旗子暗记坚持某个电平时旗子暗记才可以传输。
随着flip-flop的涌现,时钟的观点也就应运而生了。其实时钟并没有多么奇怪的,他只是一个分外的掌握旗子暗记罢了。但是请大家思考这样一个问题:随着电路逐渐繁芜,不同电路分支输出的旗子暗记我总要抓取的呀,而详细什么韶光点抓取信号就成了问题。如果这个时钟旗子暗记一会快一会慢,那么旗子暗记的抓取就会很困难。所以为了规范化、统一化全体电路,让大家都按照同一个规则来走,那么设计就会变得大略化,这也是时钟旗子暗记(clock)的最初衷。为什么要叫“时钟”?便是希望这个旗子暗记能像钟表一样,稳定的每隔一段韶光跳变一次,很形象吧?一个稳定的时钟会掌握这个时钟域所有的时序器件,这些器件就会统一的隔一段韶光跳变一次,或者说旗子暗记传输一次,这就使我们的逻辑设计成为可能。

那么,我们如何得到一个稳定的时钟呢?现在的芯片一样平常是由晶振产生一个周期旗子暗记,但这个旗子暗记并不太好,须要后面经由一系列处理,关键的一步便是通过锁相环(PLL),终极得到一个我们想要的时钟。但是这个时钟也并不是数学意义上完美的,对我们后端来说,必须要考虑它的不愿定性,便是说我们还是会认为它的周期一会大一会小,从来不会有一个完美的时钟在现实宇宙里,毕竟我们后端是要做详细芯片实现的,必须悲观考虑。时钟从PLL出来,到每个flip-flop的delay也会不同,而我们又希望所有flip-flop都同时跳变,就须要一步CTS(时钟树综合)。这些就比较深入了,PLL和CTS往后再用别的章节来讲吧。

溘然又想到一个贴近生活的例子,我们平常看电脑CPU多少多少赫兹,便是指CPU的时钟频率,时钟频率越高,CPU打算速率自然就越快了嘛。而所谓超频,便是强行增大CPU的时钟频率,可以使CPU速率提高。但是频率越快,timing越难知足,可能会涌现setup violation哦,以是说超频更随意马虎去世机,而且power也会变大,对芯片也不太好哟。
微信"大众号:伟酱的芯片后端之路










