這段時(shí)間去面試了幾家公司,發(fā)現(xiàn)比較大的公司相對(duì)于重視基礎(chǔ)問(wèn)題。這里邊又有幾個(gè)問(wèn)題特別的突出。他們是:同步時(shí)鐘設(shè)計(jì)、亞穩(wěn)態(tài)、異步FIFO。可以說(shuō),這些個(gè)問(wèn)題要是弄清楚了,就至少滿(mǎn)足了技術(shù)方面1/3的要求,另外的2/3是什么,我就說(shuō)不清楚了。又有人發(fā)了競(jìng)爭(zhēng)冒險(xiǎn)毛刺的問(wèn)題,不過(guò),對(duì)于采用同步設(shè)計(jì)方法的系統(tǒng),這些問(wèn)題一般不會(huì)遇到。下面就談?wù)勎覍?duì)這些問(wèn)題的看法,要是你覺(jué)得看這些東西覺(jué)得類(lèi)似一堆狗屎,那么恭喜你,你面試成功的機(jī)會(huì)增加了1/3;要是你你覺(jué)得阿,什么樣的牛人拉了一堆牛屎,那么不好意思,還是再去補(bǔ)補(bǔ)課把。這里推薦一本《數(shù)字設(shè)計(jì)——原理和實(shí)踐》(John F.Wakerly)的書(shū),仔細(xì)看一遍吧。
同步時(shí)鐘設(shè)計(jì) 簡(jiǎn)單說(shuō)就是一個(gè)系統(tǒng)中(或系統(tǒng)中的一部分)都采用同一個(gè)時(shí)鐘觸發(fā)。系統(tǒng)中的(D)觸發(fā)器全部都連接到一個(gè)時(shí)鐘,而且只控制觸發(fā)器的同步端(輸入,同步置位,同步復(fù)位)。這樣的系統(tǒng)是相對(duì)于異步系統(tǒng)而言的,異步系統(tǒng)并不是不同的觸發(fā)器時(shí)鐘端連接到不同的時(shí)鐘信號(hào)的系統(tǒng)(一般的這樣叫做跨時(shí)鐘系統(tǒng),是相對(duì)幾個(gè)較小的同步系統(tǒng)的組合),而是更本沒(méi)有了時(shí)鐘的概念,依靠和觸發(fā)器構(gòu)造一樣的反饋電路組成。相對(duì)于異步系統(tǒng),同步系統(tǒng)更好設(shè)計(jì)(異步設(shè)計(jì)則象一個(gè)魔術(shù),類(lèi)似于匯編和高級(jí)語(yǔ)言的關(guān)系),更容易進(jìn)行時(shí)序分析(為什么要用D觸發(fā)器而不用D鎖存器)——在這里組合邏輯的競(jìng)爭(zhēng)冒險(xiǎn)毛刺問(wèn)題都不存在了。應(yīng)該說(shuō),同步系統(tǒng)最大的問(wèn)題在于時(shí)鐘的偏斜(skew)。同步時(shí)鐘系統(tǒng)也存在一些涉及的技巧,這些技巧一般圍繞著降低關(guān)鍵路徑的延時(shí)和時(shí)間和空間的平衡。這些都是平衡的藝術(shù)(了解了基本的部件之后,剩下的工作就是一個(gè)字"平衡"),這里邊的方法就太具體,而且本人也知道得不多,不敢亂說(shuō)了。不過(guò),只要你用過(guò)一種方法,就可以體會(huì)到其中的精神了。
亞穩(wěn)態(tài) 這是跨時(shí)鐘設(shè)計(jì)中最基礎(chǔ)的一個(gè)問(wèn)題(宏觀(guān)的問(wèn)題是FIFO),按照我的觀(guān)察,上論壇問(wèn)問(wèn)題多的一般不明白這個(gè),請(qǐng)一定要注意了。 什么是亞穩(wěn)態(tài)?數(shù)字電路中的簡(jiǎn)單雙穩(wěn)態(tài)電路就是兩個(gè)反相器首尾相連組成(加一些控制邏輯變成了鎖存器,觸發(fā)器),然而并不像名字顯示的,這種電路其實(shí)還有第三種半穩(wěn)定態(tài)——就是當(dāng)兩個(gè)反相器都處于中間值得情況——這稱(chēng)之為亞穩(wěn)態(tài)。我們知道反相器在非邏輯值范圍的反饋系數(shù)是相當(dāng)大的,一旦因?yàn)楦蓴_或者噪音離開(kāi)了這個(gè)中心點(diǎn),就會(huì)很快地進(jìn)入邏輯值范圍(穩(wěn)態(tài))。數(shù)學(xué)分析,從亞穩(wěn)態(tài)進(jìn)入穩(wěn)態(tài),正如放射元素的衰變,是一個(gè)指數(shù)的規(guī)律(為什么是指數(shù)的規(guī)律?你要是想不明白,說(shuō)明你還沒(méi)有搞明白亞穩(wěn)態(tài))。那么,亞穩(wěn)態(tài)的危害到底是什么呢?消耗功率;),其實(shí)不是(雖然亞穩(wěn)態(tài)消耗很大的功率),亞穩(wěn)態(tài)的問(wèn)題在于其電平并不處于有效邏輯電平范圍內(nèi),而且在變化。這就導(dǎo)致與其相連其他數(shù)字部件將其作出不同的判斷(注意,不同),有的作為'1',有的作為'0',有的也進(jìn)入了亞穩(wěn)態(tài),數(shù)字部件就會(huì)邏輯混亂。那么究竟如何避免(或者減小)亞穩(wěn)態(tài)的危險(xiǎn)呢?注意到亞穩(wěn)態(tài)的觸發(fā)器繼續(xù)停留在亞穩(wěn)態(tài)的幾率按照指數(shù)減少,那么辦法就是等——等足夠長(zhǎng)的時(shí)間,直到這個(gè)幾率變得小的實(shí)際上不會(huì)發(fā)生。到底需要有多長(zhǎng)呢?有的廠(chǎng)商有一個(gè)數(shù)據(jù),有的沒(méi)有,按照普通的做法,至少等一個(gè)時(shí)鐘周期——這也就是所謂的異步數(shù)據(jù)要用兩個(gè)觸發(fā)器打一下。這一段有點(diǎn)糊涂,不容易說(shuō)明白,你看了要是覺(jué)得云里霧里,不知所云,那們你只有找一本書(shū)學(xué)習(xí)了;要是覺(jué)得作者表達(dá)不清,那么恭喜你,面試通過(guò)了的幾率增加了。關(guān)于這個(gè)問(wèn)題有很多糊涂的認(rèn)識(shí),要是你的主考官和你爭(zhēng)論,你就順著他的意思,畢竟沒(méi)有人想找一個(gè)管教不了的手下。
異步FIFO 異步FIFO是跨時(shí)鐘域設(shè)計(jì)方法的集中體現(xiàn),體現(xiàn)了很多的方法。不過(guò),其中最重要的有兩點(diǎn),一個(gè)就是亞穩(wěn)態(tài),一個(gè)就是和亞穩(wěn)態(tài)類(lèi)似但不相同的——多個(gè)控制/狀態(tài)信號(hào)的跨時(shí)鐘傳遞。具體地說(shuō),就是當(dāng)你把一組信號(hào)傳遞到另外一個(gè)時(shí)鐘域的話(huà),這一組信號(hào)可能因?yàn)檠舆t不同,這樣到達(dá)新時(shí)鐘域之后,得到的數(shù)據(jù)相差一個(gè)老時(shí)鐘域的時(shí)鐘周期。興好,對(duì)于FIFO,需要傳遞的是一個(gè)計(jì)數(shù)器,這個(gè)計(jì)數(shù)器可以編碼成格雷碼(gray code),這樣的編碼每次只變化一個(gè)位,正好解決了上面的問(wèn)題(要是沒(méi)有畫(huà)過(guò)圖,最好畫(huà)一個(gè)圖看一下)。真不清楚這是怎么發(fā)明的!注意,這里其實(shí)還對(duì)格雷碼的相對(duì)延遲和相關(guān)的時(shí)鐘周期有一個(gè)要求。這就是異步FIFO中最關(guān)鍵的一點(diǎn),至于指針如何控制,稍微考慮一下都很容易清楚。需要注意的事,這些東西不是用嘴能說(shuō)清楚的,最好畫(huà)一個(gè)示意圖,不要因?yàn)闆](méi)有說(shuō)清楚,讓主考官覺(jué)得你沒(méi)有清楚。
當(dāng)然,除此之外還有很多很多的東西。比如組合邏輯的設(shè)計(jì)技巧,俺就沒(méi)有研究。比如高速布線(xiàn)信號(hào)完整性問(wèn)題,俺也不敢多說(shuō)。至于整個(gè)系統(tǒng)的設(shè)計(jì)思想,更不敢妄語(yǔ)。不過(guò)如果只要你有一個(gè)問(wèn)題了解到了相當(dāng)?shù)纳疃龋嘈拍愫苋菀赘闱宄渌麊?wèn)題。