今天想來聊一聊芯片設計中的一個非?;A的概念——時鐘。對于外行來說聽到這個詞可能會感覺迷茫,猜一個大概意思吧可能也不太準。
對于芯片工程師來說時鐘這個詞就像每天喝水吃飯一樣平常,以至于可能從來不會注意它的存在。我也趁此機會,通過寫文章的方式,梳理一下我所理解的芯片時鐘是怎么一回事。
提起時鐘,就不得不先說芯片的兩種邏輯——時序邏輯(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也會變大,對芯片也不太好喲。
-
加法器
+關注
關注
6文章
183瀏覽量
30114 -
鎖存器
+關注
關注
8文章
906瀏覽量
41496 -
D觸發器
+關注
關注
3文章
164瀏覽量
47905 -
PLL電路
+關注
關注
0文章
92瀏覽量
6403 -
CTS
+關注
關注
0文章
35瀏覽量
14103
發布評論請先 登錄
相關推薦
評論