01時(shí)鐘方案
1、避免內(nèi)部產(chǎn)生時(shí)鐘
我們設(shè)計(jì)時(shí)要盡可能避免在內(nèi)部產(chǎn)生時(shí)鐘,如果操作不當(dāng),會導(dǎo)致設(shè)計(jì)功能和時(shí)序問題??偠灾?,盡量在代碼中避免操作時(shí)鐘。
組合邏輯搭建的時(shí)鐘會引入毛刺,使功能出現(xiàn)問題,數(shù)據(jù)輸入有毛刺會被過濾,但是時(shí)鐘端毛刺會有明顯問題。如圖所示為組合邏輯產(chǎn)生的時(shí)鐘效果。
解決辦法:在組合邏輯產(chǎn)生的時(shí)鐘后面加入一個寄存器,用寄存器輸入作為后續(xù)的時(shí)鐘輸入。但是由于組合邏輯會增加時(shí)鐘線上的延遲,在一些情況下,邏輯延遲會導(dǎo)致時(shí)鐘偏移比兩個寄存器之間的數(shù)據(jù)延遲大。這樣會違背寄存器的時(shí)序要求。
2、分頻時(shí)鐘
在設(shè)計(jì)中盡量保證所需的時(shí)鐘來自PLL。若要對主時(shí)鐘進(jìn)行分頻時(shí),始終使用同步計(jì)數(shù)器或者狀態(tài)機(jī)。產(chǎn)生輸出時(shí)鐘時(shí)用寄存器進(jìn)行輸出,而不應(yīng)該用組合邏輯。
3、多路時(shí)鐘復(fù)用
多路時(shí)鐘復(fù)用器,可以使同一個邏輯擁有不同的時(shí)鐘。前提是得滿足以下標(biāo)準(zhǔn):
- 在初始化配置后,時(shí)鐘多路邏輯就不再改變;
- 在測試時(shí),設(shè)計(jì)會繞過功能時(shí)鐘多路邏輯而選擇普通時(shí)鐘;
- 在時(shí)鐘切換時(shí),寄存器始終處于復(fù)位狀態(tài);
- 在時(shí)鐘切換時(shí)產(chǎn)生的短暫錯誤響應(yīng)沒有負(fù)面影響
4、門控時(shí)鐘
門控時(shí)鐘使用使能信號開關(guān)時(shí)鐘,實(shí)現(xiàn)對某些門控電路的控制。在時(shí)鐘關(guān)閉時(shí),對應(yīng)的時(shí)鐘域的寄存器就會停止翻轉(zhuǎn)。所以門控時(shí)鐘時(shí)減少功耗的有效手段之一。
顯而易見,這種方式并不是同步設(shè)計(jì),會導(dǎo)致時(shí)鐘偏移以及毛刺現(xiàn)象。下圖是同步時(shí)鐘門控使能,不過此種方式由于時(shí)鐘一直在不停的驅(qū)動,雖然后面寄存器輸出保持不變,卻并沒有停止工作,因此不能達(dá)到降低功耗的作用。
那有沒有既滿足同步要求又降低功耗的設(shè)計(jì)呢?
首先需要知道功耗到底耗在哪。傳統(tǒng)的同步設(shè)計(jì)中,系統(tǒng)時(shí)鐘連接到每個寄存器的時(shí)鐘端,這使得功耗主要由三個部分組成:
- 在時(shí)鐘沿變化的組合邏輯所產(chǎn)生的的功耗
- 由觸發(fā)器產(chǎn)生的功耗
- 設(shè)計(jì)中時(shí)鐘樹產(chǎn)生的功耗
時(shí)鐘門控能夠大幅降低觸發(fā)器的功耗,時(shí)鐘門控可以存在于時(shí)鐘樹的根部、末端或者兩者之間任何位置。由于 時(shí)鐘樹幾乎消耗了整個芯片功耗的50% ,因此最好始終在根部產(chǎn)生或者關(guān)閉時(shí)鐘。
基于鎖存器的門控時(shí)鐘電路是在上述門控時(shí)鐘電路中加入一個電平敏感時(shí)鐘的鎖存。其只需要保證EN信號在時(shí)鐘上升沿附近穩(wěn)定不變就可以。如此就可以保證輸出不含任何毛刺與尖峰脈沖。
為了保證較高的生產(chǎn)缺陷覆蓋率,有必要保證在插入掃描鏈時(shí)門控時(shí)鐘電路是完全可控和可觀察的。加入Test控制信號,使得測試狀態(tài)下不管使能值是多少都能被時(shí)鐘驅(qū)動。大多數(shù)ASIC生產(chǎn)商都提供“門控時(shí)鐘單元”作為標(biāo)準(zhǔn)單元庫的一部分。
02復(fù)位信號設(shè)計(jì)方案
復(fù)位的基本目的是使SoC進(jìn)入一個能進(jìn)行穩(wěn)定操作的確定狀態(tài) 。好的設(shè)計(jì)會在系統(tǒng)沒有明確要求的情況下為SoC的每個觸發(fā)器都提供復(fù)位信號。但是在某些情況下,當(dāng)流水線的寄存器在高速應(yīng)用中使用時(shí),應(yīng)該去掉某些寄存器的復(fù)位信號以使設(shè)計(jì)達(dá)到更高的性能。
1、同步復(fù)位和異步復(fù)位
同步復(fù)位: 復(fù)位信號只有在時(shí)鐘的有效沿到來時(shí)才能影響或者復(fù)位觸發(fā)器的狀態(tài)。
同步復(fù)位的優(yōu)點(diǎn):
1)同步復(fù)位一般能確保電路100%同步;
2)同步復(fù)位會綜合為更小的觸發(fā)器;
3)同步復(fù)位確保復(fù)位只發(fā)生在有效時(shí)鐘沿,可過濾毛刺。
同步復(fù)位缺點(diǎn):
1)同步復(fù)位可能需要一定長度的脈寬,保證時(shí)鐘有效沿附近復(fù)位信號有效;
2)復(fù)位信號可能經(jīng)過多級組合邏輯,會存在潛在問題;
3)復(fù)位電路需要復(fù)位時(shí)鐘,門控時(shí)鐘電路中,可能因?yàn)闀r(shí)鐘無效導(dǎo)致復(fù)位無效。
異步復(fù)位: 復(fù)位觸發(fā)器在設(shè)計(jì)時(shí)加入了一個復(fù)位引腳,通過復(fù)位信號直接控制。
異步復(fù)位優(yōu)點(diǎn):
1)保證數(shù)據(jù)路徑上的整潔干凈;
2)不管有沒有時(shí)鐘都可以復(fù)位。
異步復(fù)位缺點(diǎn):
1)異步復(fù)位信號不一定可以被I/O口直接驅(qū)動;
2)異步復(fù)位為異步過程,撤銷異步信號時(shí),若剛好處于時(shí)鐘有效沿,會使電路進(jìn)入亞穩(wěn)態(tài);
3)板機(jī)系統(tǒng)或者其他造成的噪聲毛刺引起偽復(fù)位。
2、常用的解決方案:異步復(fù)位,同步釋放。
所謂異步復(fù)位同步釋放,是指復(fù)位信號到來時(shí)不受時(shí)鐘信號的同步,復(fù)位信號釋放時(shí)需要進(jìn)行時(shí)鐘信號的同步。
上圖清楚地展示了異步復(fù)位和同步釋放兩個階段。
異步復(fù)位階段:當(dāng)rst_async_n有效時(shí),此時(shí)第二個D觸發(fā)器的輸出rst_sync_n立即置為低電平,實(shí)現(xiàn)異步復(fù)位。
同步釋放階段:假設(shè)rst_async_n在clk的上升沿時(shí)撤除,那么第一級觸發(fā)器處于亞穩(wěn)態(tài),但是由于兩級觸發(fā)器的緩沖作用,第二級觸發(fā)器的輸入為clk到來前第一級觸發(fā)器的輸出,即為低電平。因此,此時(shí)第二級觸發(fā)器的輸出一定是穩(wěn)定的低電平,方框左中觸發(fā)器仍然處于復(fù)位狀態(tài)。在下一個clk到來時(shí),第一級觸發(fā)器的輸出已經(jīng)是穩(wěn)定的高電平了,故rst_sync_n已經(jīng)是穩(wěn)定的高電平,此時(shí)復(fù)位釋放,實(shí)現(xiàn)同步釋放。
代碼示例:
always@(posedge clk, negedge rst_async_n)begin
if (!rst_async_n) begin
rst_s1 <= 1'b0;
rst_s2 <= 1'b0;
end
else begin
rst_s1 <= 1'b1;
rst_s2 <= rst_s1;
end
end
assign rst_sync_n = rst_s2;
rst_async_n=0時(shí),rst_sync_n會被立即復(fù)位為0,輸出到后續(xù)電路用于異步復(fù)位;rst_async_n=1時(shí),假設(shè)此時(shí)恰好在時(shí)鐘沿附近,會造成recovery或者removal的違例,但經(jīng)過DFF1和DFF2的兩級同步,rst_sync_n釋放沿與時(shí)鐘沿同步,送入到后續(xù)電路不會再有recovery和removal違例出現(xiàn)。
可以看到,異步復(fù)位、同步釋放其最顯著特征是既保留了異步復(fù)位的功能,又避免了異步復(fù)位釋放時(shí)所面臨的recovery或者removal違例問題。
03小結(jié)
本文簡單介紹了在ASIC設(shè)計(jì)中常用的時(shí)鐘方案選擇和處理復(fù)位信號時(shí)的方案選擇。時(shí)鐘設(shè)計(jì)上,應(yīng)盡可能避免通過內(nèi)部邏輯產(chǎn)生時(shí)鐘,需要多個時(shí)鐘域時(shí)可以選擇用PLL產(chǎn)生分頻時(shí)鐘。需要考慮功耗的情況下可以選擇帶鎖存器的門控時(shí)鐘來降低功耗。在處理復(fù)位信號時(shí),一般采用異步復(fù)位、同步釋放的方法,既保留異步復(fù)位的功能,又避免了復(fù)位信號釋放時(shí)的恢復(fù)時(shí)間和去除時(shí)間違例問題。
在后續(xù)的文章中,面對時(shí)鐘,還將介紹更為復(fù)雜棘手的多時(shí)鐘切換問題。
-
寄存器
+關(guān)注
關(guān)注
31文章
5268瀏覽量
119643 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1700瀏覽量
131180 -
組合邏輯
+關(guān)注
關(guān)注
0文章
46瀏覽量
10022 -
異步復(fù)位
+關(guān)注
關(guān)注
0文章
46瀏覽量
13291 -
復(fù)位信號
+關(guān)注
關(guān)注
0文章
53瀏覽量
6285
發(fā)布評論請先 登錄
相關(guān)推薦
評論