今天想來(lái)聊一聊芯片設(shè)計(jì)中的一個(gè)非常基礎(chǔ)的概念——時(shí)鐘穷蛹。對(duì)于外行來(lái)說(shuō)聽(tīng)到這個(gè)詞可能會(huì)感覺(jué)迷茫利虫,猜一個(gè)大概意思吧可能也不太準(zhǔn)俘陷。對(duì)于芯片工程師來(lái)說(shuō)時(shí)鐘這個(gè)詞就像每天喝水吃飯一樣平常,以至于可能從來(lái)不會(huì)注意它的存在愿待。我也趁此機(jī)會(huì)浩螺,通過(guò)寫(xiě)文章的方式,梳理一下我所理解的芯片時(shí)鐘是怎么一回事仍侥。
提起時(shí)鐘要出,就不得不先說(shuō)芯片的兩種邏輯——時(shí)序邏輯(sequential)和組合邏輯(combinational)。組合邏輯比較好理解农渊,他就是我們常說(shuō)的與或非這種邏輯門(mén)患蹂,輸出信號(hào)邏輯僅僅依賴(lài)于輸入信號(hào)的邏輯,或者按我的理解砸紊,組合邏輯的信號(hào)傳播是瞬間完成的(不考慮cell delay的話)传于。不管是多么復(fù)雜的組合電路,就比如剛?cè)腴T(mén)電路時(shí)候大家都會(huì)學(xué)一些全加器醉顽、半加器沼溜、超前進(jìn)位加法器什么什么的,雖然電路圖猛一看特別復(fù)雜游添,可能一張圖還畫(huà)不完盛末,但只要他全部是由邏輯門(mén)構(gòu)成弹惦,都可以認(rèn)為當(dāng)給定輸入信號(hào)的時(shí)候,輸出是不需要等待就可以直接看到的悄但。當(dāng)然這只是我的理解啦棠隐,具體的組合邏輯定義肯定不是這樣吧?而時(shí)序邏輯檐嚣,最重要的就是出現(xiàn)了由時(shí)鐘驅(qū)動(dòng)的信號(hào)助泽。什么意思呢?就是說(shuō)電路中存在這樣一類(lèi)器件:他有一個(gè)特殊的控制輸入信號(hào)嚎京,當(dāng)這個(gè)信號(hào)跳變的時(shí)候嗡贺,輸出信號(hào)才會(huì)根據(jù)其他一般的輸入信號(hào)變化。我們一般稱(chēng)這種器件叫觸發(fā)器(flip-flop)鞍帝,而稱(chēng)這種特殊的控制信號(hào)叫時(shí)鐘诫睬。舉一個(gè)最簡(jiǎn)單的D觸發(fā)器的例子,當(dāng)時(shí)鐘從0到1跳變的時(shí)候帕涌,輸出才等于輸入摄凡,其他時(shí)間,不管輸入如何變化蚓曼,輸出保持不變亲澡。由此可以看出時(shí)序邏輯器件一個(gè)重要的功能:寄存數(shù)據(jù),因此這些觸發(fā)器有時(shí)候也可以被稱(chēng)為寄存器(register)纫版。當(dāng)然還有另一種時(shí)序邏輯器件叫鎖存器(latch)床绪,它是指時(shí)鐘信號(hào)維持某個(gè)電平時(shí)信號(hào)才可以傳輸。
隨著flip-flop的出現(xiàn)其弊,時(shí)鐘的概念也就應(yīng)運(yùn)而生了癞己。其實(shí)時(shí)鐘并沒(méi)有多么奇怪的,他只是一個(gè)特殊的控制信號(hào)罷了梭伐。但是請(qǐng)大家思考這樣一個(gè)問(wèn)題:隨著電路漸漸復(fù)雜痹雅,不同電路分支輸出的信號(hào)我總要抓取的呀,而具體什么時(shí)間點(diǎn)抓取信號(hào)就成了問(wèn)題籽御。如果這個(gè)時(shí)鐘信號(hào)一會(huì)快一會(huì)慢,那么信號(hào)的抓取就會(huì)很艱難惰匙。所以為了規(guī)范化技掏、統(tǒng)一化整個(gè)電路,讓大家都按照同一個(gè)規(guī)則來(lái)走项鬼,那么設(shè)計(jì)就會(huì)變得簡(jiǎn)單化哑梳,這也是時(shí)鐘信號(hào)(clock)的最初衷。為什么要叫“時(shí)鐘”绘盟?就是希望這個(gè)信號(hào)能像鐘表一樣鸠真,穩(wěn)定的每隔一段時(shí)間跳變一次悯仙,很形象吧?一個(gè)穩(wěn)定的時(shí)鐘會(huì)控制這個(gè)時(shí)鐘域所有的時(shí)序器件吠卷,這些器件就會(huì)統(tǒng)一的隔一段時(shí)間跳變一次锡垄,或者說(shuō)信號(hào)傳輸一次,這就使我們的邏輯設(shè)計(jì)成為可能祭隔。
那么货岭,我們?nèi)绾蔚玫揭粋€(gè)穩(wěn)定的時(shí)鐘呢?現(xiàn)在的芯片一般是由晶振產(chǎn)生一個(gè)周期信號(hào)疾渴,但這個(gè)信號(hào)并不太好千贯,需要后面經(jīng)過(guò)一系列處理,關(guān)鍵的一步就是通過(guò)鎖相環(huán)(PLL)搞坝,最終得到一個(gè)我們想要的時(shí)鐘搔谴。但是這個(gè)時(shí)鐘也并不是數(shù)學(xué)意義上完美的,對(duì)我們后端來(lái)說(shuō)桩撮,必須要考慮它的不確定性敦第,就是說(shuō)我們還是會(huì)認(rèn)為它的周期一會(huì)大一會(huì)小,從來(lái)不會(huì)有一個(gè)完美的時(shí)鐘在現(xiàn)實(shí)宇宙里距境,畢竟我們后端是要做具體芯片實(shí)現(xiàn)的申尼,必須悲觀考慮。時(shí)鐘從PLL出來(lái)垫桂,到每個(gè)flip-flop的delay也會(huì)不同师幕,而我們又希望所有flip-flop都同時(shí)跳變,就需要一步CTS(時(shí)鐘樹(shù)綜合)诬滩。這些就比較深入了霹粥,PLL和CTS以后再用別的章節(jié)來(lái)講吧。
突然又想到一個(gè)貼近生活的例子疼鸟,我們平澈罂兀看電腦CPU多少多少赫茲,就是指CPU的時(shí)鐘頻率空镜,時(shí)鐘頻率越高浩淘,CPU計(jì)算速度自然就越快了嘛。而所謂超頻吴攒,就是強(qiáng)行增大CPU的時(shí)鐘頻率张抄,可以使CPU速度提高。但是頻率越快洼怔,timing越難滿足署惯,可能會(huì)出現(xiàn)setup violation哦,所以說(shuō)超頻更容易死機(jī)镣隶,而且power也會(huì)變大极谊,對(duì)芯片也不太好喲诡右。
微信公眾號(hào):偉醬的芯片后端之路