華為同步電路設(shè)計規(guī)范_第1頁
華為同步電路設(shè)計規(guī)范_第2頁
華為同步電路設(shè)計規(guī)范_第3頁
華為同步電路設(shè)計規(guī)范_第4頁
華為同步電路設(shè)計規(guī)范_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、深圳市華為技術(shù)有限公司研究管理部文檔中心文檔編號 產(chǎn)品版本 密級V1.0 秘密產(chǎn)品名稱:同步電路設(shè)計技術(shù)及規(guī)則共27頁同步電路設(shè)計技術(shù)及規(guī)則(僅供內(nèi)部使用FPGA GROUP文 檔 作 者: 周志堅(jiān)日期:1999/11/18 研 究 部: 日期: 文檔管理員:日期: 深圳市華為技術(shù)有限公司版權(quán)所有 不得復(fù)制 日期修訂版本描述作者1999/11/18 1.00 初稿完成周志堅(jiān) 目 錄1 設(shè)計可靠性42 時序分析基礎(chǔ)4 3同步電路設(shè)計53.1同步電路的優(yōu)越性53.2 同步電路的設(shè)計規(guī)則63.3 異步設(shè)計中常見問題及其解決方法63.4 不建議使用電路17 4SET和RESET信號處理185 時延電路

2、處理196 全局信號的處理方法207 時序設(shè)計的可靠性保障措施24 8ALTERA參考設(shè)計準(zhǔn)則25 同步電路設(shè)計技術(shù)及規(guī)則1 設(shè)計可靠性為了增加可編程邏輯器件電路工作的穩(wěn)定性,一定要加強(qiáng)可編程邏輯器件設(shè)計的規(guī)范要求,要盡量采用同步電路設(shè)計。對于設(shè)計中的異步電路,要給出不能轉(zhuǎn)換為同步設(shè)計的原因,并對該部分異步電路的工作可靠性(如時鐘等信號上是否有毛刺,建立-保持時間是否滿足要求等作出分析判斷,提供分析報告。2 時序分析基礎(chǔ)電路設(shè)計的難點(diǎn)在時序設(shè)計,而時序設(shè)計的實(shí)質(zhì)就是滿足每一個觸發(fā)器的建立/保持時間的要求。 REG2(DREG2(Q圖1.1如上圖所示,以REG2為例,假定 觸發(fā)器的建立時間要求為

3、:T_setup,保持時間要求為:T_hold,路徑延時為:T1,路徑延時為:T2,路徑延時為:T3,時鐘周期為:T_cycle,Ts =(T_cycle + T-T1,Th =T1-T,令 T =T3-T2,則條件1.如果T_setup < Ts ,即 T_setup < (T_cycle + T-T1,這說明信號比時鐘有效沿超過T_setup 時間到達(dá)REG2的D端,滿足建立時間要求。反之則不滿足;條件2.如果T_hold < Th ,即T_hold < T1-T ,這說明在時鐘有效沿到達(dá)之后,信號能維持足夠長的時間,滿足保持時間要求。反之則不滿足。從條件1和2我們

4、可以看出,當(dāng)T > 0 時,T_hold受影響;當(dāng)T < 0 時,T_setup 受影響。如果我們采用的是嚴(yán)格的同步設(shè)計電路,即一個設(shè)計只有一個CLK,并且來自時鐘PAD或時鐘BUFF (全局時鐘,則T對電路的影響很小,幾乎為0;如果采用的是異步電路,設(shè)計中時鐘滿天飛,無法保證每一個時鐘都來自強(qiáng)大的驅(qū)動BUFF(非全局時鐘,如下圖所示,則T影響較大,有時甚至超過人們想象。這就是為什么我們建議采用同步電路進(jìn)行設(shè)計的重要原因之一。 CLK圖1.23 同步電路設(shè)計3.1 同步電路的優(yōu)越性1.同步電路比較容易使用寄存器的異步復(fù)位/置位端,以使整個電路有一個確定的初始狀態(tài);2.在可編程邏輯器

5、件中,使用同步電路可以避免器件受溫度,電壓,工藝的影響,易于消除電路的毛刺,使設(shè)計更可靠,單板更穩(wěn)定;3.同步電路可以很容易地組織流水線,提高芯片的運(yùn)行速度,設(shè)計容易實(shí)現(xiàn); 下圖是一個設(shè)計中所要準(zhǔn)備采用的電路,該設(shè)計采用Xilinx的FPGA器件4062xla來實(shí)現(xiàn),工作頻率是32.768MHz(即圖中CLK頻率。設(shè)計原打算在每隔60ns輸出一個數(shù)據(jù),即DATA。然而,我們在設(shè)計之前,考慮到256x7的同步RAM延時可能比較大,如果在加上其后的同步RAM延時的話,估計在60ns 之內(nèi)很難完成。該部分電路是整個設(shè)計中的一個關(guān)鍵路徑,因此,我們在進(jìn)行具體設(shè)計之前,先對這種電路結(jié)構(gòu)進(jìn)行了驗(yàn)證,事實(shí)證

6、明我們的擔(dān)心是對的。正確的做法是,采用流水線方法,在256x7的RAM 之后再加一個觸發(fā)器,每個RAM都按60ns的速度讀取數(shù)據(jù),整個流程滯后60ns輸出DATA。其它相關(guān)信號(在其它模塊中也隨之滯后60ns輸出。 CLK圖1.34.同步電路可以很好地利用先進(jìn)的設(shè)計工具,如靜態(tài)時序分析工具等,為設(shè)計者提供最大便利條件,便于電路錯誤分析,加快設(shè)計進(jìn)度。1.1 同步電路的設(shè)計規(guī)則1.盡可能在整個設(shè)計中只使用一個主時鐘,同時只使用同一個時鐘沿,主時鐘走全局時鐘網(wǎng)絡(luò)。2.在FPGA設(shè)計中,推薦所有輸入、輸出信號均應(yīng)通過寄存器寄存,寄存器接口當(dāng)作異步接口考慮。3.當(dāng)全部電路不能用同步電路思想設(shè)計時,即需

7、要多個時鐘來實(shí)現(xiàn),則可以將全部電路分成若干局部同步電路(盡量以同一個時鐘為一個模塊,局部同步電路之間接口當(dāng)作異步接口考慮。4.當(dāng)必須采用多個時鐘設(shè)計時,每個時鐘信號的時鐘偏差(T要嚴(yán)格控制。5.電路的實(shí)際最高工作頻率不應(yīng)大于理論最高工作頻率,留有設(shè)計余量,保證芯片可靠工作。 6.電路中所有寄存器、狀態(tài)機(jī)在單板上電復(fù)位時應(yīng)處在一個已知的狀態(tài)。 1.2 異步設(shè)計中常見問題及其解決方法異步電路設(shè)計主要體現(xiàn)在時鐘的使用上,如使用組合邏輯時鐘、級連時鐘和多時鐘網(wǎng)絡(luò);另外還有采用異步置位、復(fù)位、自清零、自復(fù)位等。這些異步電路的大量存在,一是增加設(shè)計難度,二是在出現(xiàn)錯誤時,電路分析比較困難,有時會嚴(yán)重影響設(shè)

8、計進(jìn)度。很多異步設(shè)計都可以轉(zhuǎn)化為同步設(shè)計,對于可以轉(zhuǎn)化的邏輯必須轉(zhuǎn)化,不能轉(zhuǎn)化的邏輯,應(yīng)將異步的部分減到最小,而其前后級仍然應(yīng)該采用同步設(shè)計。下面給出一些異步邏輯轉(zhuǎn)化為同步邏輯的方法:1.組合邏輯產(chǎn)生的時鐘QD組合邏輯.輸入圖1.4 組合邏輯產(chǎn)生的時鐘組合邏輯的時鐘如果產(chǎn)生毛刺,易使觸發(fā)器誤翻轉(zhuǎn)。 2.行波計數(shù)器/行波時鐘QDQDQDclkQ1Q2Q0·····圖1.5 行波計數(shù)器 行波記數(shù)器雖然原理簡單,設(shè)計方便,但級連時鐘(行波時鐘最容易造成時鐘偏差(T,級數(shù)多了,很可能會影響其控制的觸發(fā)器的建立/保持時間,使設(shè)計難度加大。轉(zhuǎn)換的方法是采用

9、同步記數(shù)器,同步計數(shù)器用原理圖描述可能較難,但用VHDL很簡單就可以描述一個4位計數(shù)器: Counter4:Process(nreset,clkBeginIf nreset = '0' thenCnt <= ( others => "0" ;Elsif clk = '1' and clk'event thenCnt <= cnt + 1;End if;End process counter4;通常邏輯綜合工具都會對上述描述按不同器件的特點(diǎn)進(jìn)行不同的優(yōu)化,我們并不需要關(guān)心它是逐位進(jìn)位計數(shù)器還是超前進(jìn)位計數(shù)器。4.不規(guī)則

10、的計數(shù)器 這是一個53計數(shù)器,采用計到53后產(chǎn)生異步復(fù)位的辦法實(shí)現(xiàn)清0,產(chǎn)生毛刺是必然的。然而最嚴(yán)重的是,當(dāng)計數(shù)器所有bit或相關(guān)bit均在翻轉(zhuǎn)時,電路有可能出錯,例如:計數(shù)器從“110011”->“110100”,由于電路延時的原因,中間會出現(xiàn)“110101”狀態(tài),導(dǎo)致計數(shù)器誤清0。采用同步清0的辦法,不僅可以有效地消除毛刺,而且能避免計數(shù)器誤清0。電路如下圖所示。 QDclk+1=526位二進(jìn)制計數(shù)器Q5:0"000000"圖1.7 規(guī)則的計數(shù)器5.分頻器這是3和4的特例,我們推薦使用同步計數(shù)器最高位的方法,如果需要保證占空比,可以使用圖1.8所示電路進(jìn)行最后一次

11、二分頻。下圖是19.44MHz 分頻到8kMHz(分頻數(shù)為2430的電路:QDclk+1=121411位二進(jìn)制計數(shù)器 QDENAclkout··圖1.8 分頻數(shù)為2430的電路若是奇數(shù)分頻,則處理比較特殊,以5分頻器為例,其要求產(chǎn)生的時序關(guān)系如下圖所示,MCLKDIV5_CLK很顯然,該電路要用上MCLK 的上沿和下研,對上圖時序進(jìn)行分解,得下圖 123444123012344401230MCLK COUNTO DIVO COUNT1DIV1DIV5_CLK圖1.9 5分頻信號時序分解圖中,COUNT0采用上沿計數(shù),COUNT1采用下沿計數(shù),DIV0和DIV1是分別是上沿觸

12、發(fā)器和下沿觸發(fā)器的輸出,DIV5_CLK 是DIV0和DIV1的或門輸出。讀者可根據(jù)該時序圖,畫出相應(yīng)的原理圖,或者用HDL 語言進(jìn)行描述。在使用該電路時,需要注意:(1DIV0和DIV1到DIV5_CLK 的約束要嚴(yán),越快越好。不然,無法保證1:1的占空比。 (2MCLK 頻率要求較高,盡量不要出現(xiàn)窄脈沖,尤其是在高頻電路里。 (3COUNT1可有可無,視時鐘頻率高低而定。頻率越高,COUNT1越需要。6.多時鐘的同步化我們在設(shè)計中,經(jīng)常預(yù)見這種情況:一個控制信號來自其它芯片(或者芯片其它模塊,該信號相對本電路來講是異步的,即來自不同的時鐘源。其模型可用圖1.10表示。 CLK1圖1.10在

13、圖1.10中,CLK1與CLK2來自不同的時鐘源,該電路即可能出現(xiàn)在同一芯片里,又可能出現(xiàn)在不同芯片里。但效果是一樣的,即存在危險性:由于時鐘源不同,對REG2和REG3來講,在同一時刻,一個“認(rèn)為”REG1的輸出是“1”,另一個認(rèn)為是“0”。這必定造成電路判斷出現(xiàn)混亂,導(dǎo)致出錯。 這種錯誤的實(shí)質(zhì)是內(nèi)部其它電路對輸入控制信號(也可認(rèn)為是狀態(tài)信號認(rèn)識不一致,導(dǎo)致不同的電路進(jìn)入不同的狀態(tài)。正確的做法是在REG1之后再加一個觸發(fā)器,用CLK2的時鐘沿去采樣,然后用該觸發(fā)器的輸出參與其后同步電路“活動”。如圖1.11所示。 圖1.11如果輸入信號是兩根以上信號線,如下圖所示,則該處理方法不準(zhǔn)確。應(yīng)引入

14、專門的同步調(diào)整電路或其它特殊處理電路。我們在設(shè)計時,會對總線數(shù)據(jù)進(jìn)行同步調(diào)整,卻往往忽略了對一組控制信號進(jìn)行同步調(diào)整。 CLK1圖1.12 問題電路7.RS觸發(fā)器 R SQQ圖1.13RS 觸發(fā)器是一種危險的觸發(fā)器,R=S=1會導(dǎo)致不穩(wěn)定態(tài),初始狀態(tài)也不確定。在設(shè)計時盡量避免采用這種電路,或用如圖1.14電路改進(jìn) 圖1.14 可編程邏輯器件一般選用結(jié)構(gòu)中的D 觸發(fā)器來完成設(shè)計。我們認(rèn)為,設(shè)計時最好從系統(tǒng)的角度來考慮,實(shí)現(xiàn)電路的功能,建議使用用VHDL 直接描述所需要的設(shè)計。這樣作,既安全,又具有極大的靈活性:Process(nreset,clk BeginIf nreset = '0&

15、#39; then Rs <= '0'Elsif clk = '1' and clk'event then Case r&s is When "00" => Rs <= rs; When "01" => Rs <= '1' When "10" => Rs <='0' When "11" =>-這里可以自定義R=S=1的行為When others =>Rs <= '0&#

16、39;End case;End if;End precess;8.上升沿檢測Q D CLRN outIn'1'。clrn圖1.15 上升沿檢測不建議采用這種電路檢測信號的上升沿,因?yàn)镮N為數(shù)據(jù)信號,上邊容易有毛刺,使觸發(fā)器誤動作。 out圖1.16采用時鐘檢測信號,出現(xiàn)0->1的變化即為上升沿。當(dāng)被測信號與時鐘相關(guān)時,可以不用第一個觸發(fā)器。9.下降沿檢測 QDCLRNIn'1'。圖1.17同上升沿檢測電路,這種電路對毛刺、干擾極為敏感。 out圖1.18采用時鐘檢測信號,出現(xiàn)1->0的變化即為下降沿。 當(dāng)被測信號與時鐘相關(guān)時,可以不用第一個觸發(fā)器。1

17、0.上升/下降沿檢測 圖1.19采用時鐘檢測信號,出現(xiàn)變化即為上升/下降沿。 當(dāng)被測信號與時鐘相關(guān)時,可以不用第一個觸發(fā)器。11.對計數(shù)器的譯碼 clk圖1.20對計數(shù)器譯碼,可能由于競爭冒險產(chǎn)生毛刺。如果后級采用了同步電路,我們完全可以對此不予理會。如果對毛刺要求較高,推薦采用Gray 編碼(PLD或One-hot 編碼(FPGA的計數(shù)器,一般不要采用二進(jìn)制碼.具體描述中,我們可以用狀態(tài)機(jī)來描述,而利用邏輯綜合工具來編碼,有經(jīng)驗(yàn)的選手可以自己強(qiáng)制定義狀態(tài)機(jī)的編碼。12.門控時鐘QD組合邏輯input clk圖1.21 門控時鐘門控時鐘是非常危險的,極易產(chǎn)生毛刺,使邏輯誤動作。 在可編程邏輯器

18、件中,一般使用觸發(fā)器的時鐘使能端,而這樣,并不增加資源,只要保證建立時間,可使毛刺不起作用。QD組合邏輯inputclkENA圖1.2213.鎖存器 圖1.23鎖存器是較危險的電路,沒有確定的初始狀態(tài),輸出隨輸入變化,這意味著毛刺可以通過鎖存器。若該電路與其它D 觸發(fā)器電路相連,則會影響這些觸發(fā)器的建立保持時間。除非有專用電路特別需要(其實(shí)總線鎖存之類的功能用373之類的小規(guī)模IC 更好,在設(shè)計內(nèi)部,不要使用鎖存器。QDENAD LE CLKQ圖1.24引入時鐘,可以實(shí)現(xiàn)鎖存器的功能。14 多級時鐘或多時鐘網(wǎng)絡(luò)由于時鐘建立-保持時間的限制,FPGA 設(shè)計中應(yīng)盡量避免采用多時鐘網(wǎng)絡(luò),或盡量減少時

19、鐘的個數(shù)。 圖1.25是有問題的電路,這是一個含有險象的多級時鐘的例子,多路選擇器的輸入是clk 和clk 的2分頻,時鐘是有SEL 引腳控制的多路選擇器輸出的,在這兩個時鐘均為邏輯1時,當(dāng)SEL 線的狀態(tài)改變時,存在靜態(tài)冒險競爭現(xiàn)象,冒險競爭險象的程度取決于工作的條件。 圖1.26是 改 進(jìn)后的 電 路。 圖1.25改進(jìn): 圖1.26總之,任何數(shù)字設(shè)計,為了成功地操作,時鐘是關(guān)鍵。設(shè)計不良的時鐘在極限的溫度、電壓或制造工藝的偏差下將導(dǎo)致錯誤的行為,而設(shè)計良好的時鐘應(yīng)用,則是整個數(shù)字系統(tǒng)長期穩(wěn)定工作的基礎(chǔ)。對于一個設(shè)計項(xiàng)目來說,全局時鐘(或同步時鐘是最簡單和最可預(yù)測的時鐘,在真正的同步系統(tǒng)情況

20、下,由輸入引腳驅(qū)動的單個主時鐘去鐘控設(shè)計項(xiàng)目中的每一個觸發(fā)器。幾乎所有的可編程邏輯器件中都有專用的全局信號引腳,它的特殊布線方式可以直接連到器件中的每一個寄存器。只要保證輸入數(shù)據(jù)的建立和保持時間滿足要求(相應(yīng)可編程器件的數(shù)據(jù)手冊中可查到,整個同步系統(tǒng)就可以在全局時鐘的驅(qū)動下可靠工作,所以在可能的情況下,一定要使用全局時鐘。1.3 不建議使用電路1 不建議使用組合邏輯時鐘或門控時鐘組合邏輯很容易產(chǎn)生毛刺,用組合邏輯的輸出作為時鐘很容易使系統(tǒng)產(chǎn)生誤動作。2 不建議使用行波時鐘3 盡量避免采用多個時鐘,多使用觸發(fā)器的使能端來解決。在可編程邏輯器件設(shè)計時,由于時鐘建立應(yīng)盡量避免采用多時鐘網(wǎng)絡(luò),或者采用

21、適當(dāng)?shù)拇胧p少時鐘的個數(shù),使用頻率低的時鐘盡量簡化消除。4 觸發(fā)器的置/復(fù)位端盡量避免出現(xiàn)毛刺,及自我復(fù)位電路等,最好只用一個全局復(fù)位信號。5 電路中盡量避免“死循環(huán)”電路,如RS觸發(fā)器等。6禁止時鐘在不同可編程器件中級連,盡量降低時鐘到各個器件時鐘偏差值。同一個時鐘在不同可編程器件中使用時不允許級連,而且應(yīng)該保證該時鐘到達(dá)不同可編程器件輸入引腳的時鐘偏差足夠小。因?yàn)榻?jīng)過多個可編程器件的延時后,難以估計該時鐘在鏈上各個觸發(fā)器時鐘 之間產(chǎn)生的大量時間偏移,如果這種時間偏移引起建立時間、保持時間難以滿足的話,那么設(shè)計的邏輯就極有可能要失敗了。2 SET和RESET信號處理在設(shè)計時應(yīng)盡量保證有一全局

22、復(fù)位信號,或保證觸發(fā)器、計數(shù)器在使用前已經(jīng)正確清零和狀態(tài)機(jī)處于確知的狀態(tài)。寄存器的清除和置位信號,對競爭條件和冒險也非常敏感。在設(shè)計時,應(yīng)盡量直接從器件的專用引腳驅(qū)動。另外,要考慮到有些器件上電時,觸發(fā)器處于一種不確定的狀態(tài),系統(tǒng)設(shè)計時應(yīng)加入全局復(fù)位/Reset。這樣主復(fù)位引腳就可以給設(shè)計中的每一個觸發(fā)器饋送清除或置位信號,保證系統(tǒng)處于一個確定的初始狀態(tài)。需要注意的一點(diǎn)是:不要對寄存器的置位和清除端同時施加不同信號產(chǎn)生的控制,因?yàn)槿绻霈F(xiàn)兩個信號同時有效的意外情況,會使寄存器進(jìn)入不定狀態(tài)。對于狀態(tài)機(jī)設(shè)計,由于有可能存在一些狀態(tài)對于系統(tǒng)而言是“非法的”(或稱“無關(guān)的”,所以除了在狀態(tài)機(jī)設(shè)計時充分

23、考慮各種可能出現(xiàn)的狀態(tài)以及一旦進(jìn)入“非法”狀態(tài)后可以強(qiáng)迫狀態(tài)機(jī)在下一個時鐘周期內(nèi)進(jìn)入“合法”狀態(tài)(一般時初始狀態(tài)外,一定要保證系統(tǒng)初始化時狀態(tài)機(jī)就處于“合法”的初始狀態(tài),這里最好的辦法仍然是使用全局主復(fù)位信號強(qiáng)迫狀態(tài)機(jī)進(jìn)入已知的“合法”狀態(tài)。下面給出一段包含狀態(tài)機(jī)的全局時鐘和復(fù)位的AHDL描述:exampleSUBDESIGN(INPUT;:clockINPUT;:/resetVARIABLE- State Machine declarationMACHINESTATESWITHpoll:(Idle,s1,s2;- Varible & Counter declarationvar1 :

24、 DFF;DFFE;:var2DFF;:counter5.0BEGIN- global reset & clock, initial set to 1 var1.clk = GLOBAL(clock;var1.prn = GLOBAL(/reset;- global reset & clock, initial set to 0var2.clk = GLOBAL(clock;var2.clrn = GLOBAL(/reset;- global reset & clock for counter, initial value set to 0(clock;GLOBAL=c

25、ounter.clkGLOBAL(/reset;=counter.clrnIF counter = 53 THEN0;=counterELSE1;+counter=counterEND IF;- state machine global clock & reset, initial state set to idlepoll.clk = GLOBAL (Clk25m;poll.reset = not GLOBAL (/Reset;CASE poll ISWHEN=>idle。=s1;poll。=>s1WHEN。=s2;poll。=>s2WHEN。s1;=poll。OT

26、HERS =>WHENidle;poll= END CASE;END3 時延電路處理時延電路是指在可編程器件的設(shè)計中,為了能夠滿足電路之間時序配合的要求,利用可編程器件的內(nèi)部資源而進(jìn)行時序調(diào)整,如:利用線延時或者若干串聯(lián) Buffer 電路,使時鐘或數(shù)據(jù)滯后一段時間。典型的,該時間即不能太長,又不能太短,以便滿足“特定”需要。然而,這種時延電路嚴(yán)重依賴器件工藝,也依賴每次的布線結(jié)果,給設(shè)計帶來許多麻煩,有時會引起嚴(yán)重后果。因此,必須正確處理時延電路:1 在設(shè)計中應(yīng)盡量避免時延電路,絕大多數(shù)時延電路是由設(shè)計者在設(shè)計之初考慮不完善造成的。例如,在設(shè)計中沒必要地存在多個時鐘電路,模塊劃分不合理

27、,關(guān)鍵電路關(guān)鍵時序考慮不周等。我們的設(shè)計經(jīng)常是在功能模塊劃分完成之后,就急急忙忙去做具體電路,許多關(guān)鍵時序并沒有考慮清楚,這不可避免的造成設(shè)計多次反復(fù)。正確的做法是:設(shè)計目標(biāo)分析功能模塊劃分設(shè)計電路,尤其是數(shù)字電路,最關(guān)鍵的一環(huán)是:設(shè)計各模塊間的接口時序,確定關(guān)鍵電路的時序。這個工作必須在具體電路設(shè)計之前確定下來?!皶r序是事先設(shè)計出來的,而不是事后測出來的,更不是湊出來的”。2 若實(shí)在無法,則盡量采用高頻電路,對所需信號加觸發(fā)器進(jìn)行延時。該延時只跟時鐘頻率和觸發(fā)器個數(shù)有關(guān),而與工藝基本無關(guān)。4 全局信號的處理方法全局信號處理的原則是:時鐘信號、異步清零、置位信號上不允許存在毛刺;不允許異步清零

28、、置位信號同時有效。在下述幾種情況下,時鐘信號、異步清零、置位信號上可能會有毛刺:(1時鐘信號、異步清零、置位信號為組合邏輯輸出由于組合邏輯是電平敏感的,比較容易產(chǎn)生毛刺,而組和邏輯的細(xì)小毛刺一旦經(jīng)過時序電路則其對電路的影響則會放大。因此在設(shè)計中對時鐘信號、異步清零、置位信號這些對時序電路來講非常重要的信號應(yīng)盡量采用同步電路,而對于非用組合邏輯不行的地方則必須用卡諾圖嚴(yán)格的分析時序電路,確定徹底消除競爭與冒險后才可引入到時序電路中使用。下面舉例說明: 對于必須用組合邏輯的輸出作為時鐘、異步清零、置位信號的電路,對其組合電路的輸出必須采用卡諾圖進(jìn)行嚴(yán)格的分析,保證徹底消除了競爭與冒險后才可引入到

29、時序電路中使用。對于時鐘信號、異步清零、置位信號是多個信號中選擇的情況可按下述方法同步化對組合電路產(chǎn)生的時鐘信號的處理:情況1:同一個時鐘源,通過組合邏輯控制它的通斷,如下圖:圖 1.27 通過組合邏輯控制它的通斷上面的圖中,觸發(fā)器的時鐘是由CLOCK與SEL相與后的輸出,目的是通過控制觸發(fā)器的時鐘的通斷達(dá)到控制觸發(fā)器的輸出的目的,這種情況下由于CLOCK與SEL不是嚴(yán)格同步的,則有可能會在觸發(fā)器的時鐘腳產(chǎn)生毛刺,而在FPGA中,觸發(fā)器對時鐘端的毛刺是敏感的,上述毛刺可能導(dǎo)致觸發(fā)器的誤動作。在下面的圖中,觸發(fā)器的時鐘是CLOCK,而將SEL信號與觸發(fā)器的使能端連接,這樣同樣達(dá)到了通過SEL信號

30、控制觸發(fā)器的輸出的目的,但由于CLOCK不會產(chǎn)生毛刺,可以保證觸發(fā)器的可靠觸發(fā)。情況2:通過組合邏輯對觸發(fā)器的時鐘在多個時鐘中選擇一個,如下圖所示: 圖1.28 組合邏輯在多個時鐘中選擇一個上圖中,標(biāo)為BAD的一個由于直接用組合邏輯實(shí)現(xiàn)在CLKA、CLKB兩個時鐘中二選一的功能,而組合電路由于不同路徑的延遲不同,所以在電路的時鐘輸出很容易產(chǎn)生毛刺;而標(biāo)為“GOOD”的一個由于對選擇信號SELECT分別用兩個觸發(fā)器進(jìn)行了同步化,所以在時鐘的輸出端不會產(chǎn)生毛刺。 SELECTREGAREGA_CLKREGB圖 1.29圖1.29是圖1.28中GOOD電路的原理時序圖。其中REGA表示接CLKA的觸

31、發(fā)器,其對應(yīng)的與門輸出為REGA_CLK;同樣定義REGB和REGB_CLKB。很顯然,當(dāng)REGA或REGB前后有限“漂移”時, OUT_CLK是不會出現(xiàn)毛刺得。對GOOD電路,有兩個問題:1. SELECT如果在CLK下降沿左右發(fā)生變化,該電路能否正常?2. 該電路的觸發(fā)器能采用上升沿觸發(fā)嗎?(2使用自我清除、自我置位和自我鐘控的寄存器;·建議盡量使用觸發(fā)器的使能端來達(dá)到鐘控的目的。對于自我清除、自我置位,最好通過組合邏輯將其轉(zhuǎn)變成對輸入端數(shù)據(jù)的置位與清除,從而提高電路的可靠性,具體說明如下二圖:圖1.30是一個自我清除的電路圖,當(dāng)輸出端均為“1”時,電路復(fù)位,這樣消除了產(chǎn)生毛刺的

32、隱患,但使輸出端體現(xiàn)出復(fù)位延遲了一個CLOCK。圖1.31是一個自我置位的電路圖,當(dāng)輸出端均為“0”時,電路置位,這樣做輸出端體現(xiàn)出置位延遲了一個CLOCK,但消除了產(chǎn)生毛刺的隱患。 圖 圖 1.31(3時鐘信號、異步清零、置位信號由外部輸入,輸入時有毛刺;對于由外部輸入的有毛刺的時鐘、異步清零、置位信號通常的處理方法是使用內(nèi)部觸發(fā)器鎖存,使之同步化。1 時序設(shè)計的可靠性保障措施(1時鐘偏差要加以控制同步電路設(shè)計技術(shù)及規(guī)則 秘密 請輸入文檔編號 在同步電路里,時鐘信號要連接到所有的寄存器,觸發(fā)器以及鎖存器等器件上。這些巨大的負(fù)載就 象一個大電容加在時鐘線上,再加上時鐘線本身的分布電容和電阻,這

33、樣時鐘線就象分布的RC線。由于 RC線的延時是線長的函數(shù), 這樣就使得連到同一根時鐘線上的時鐘由于距離時鐘源的遠(yuǎn)近不一而產(chǎn)生不 同的延時。 因而造成了同一時鐘到達(dá)各個器件的時間不一致, 使得各個以時鐘為基準(zhǔn)器件的動作也不一 致,而造成時序上的混亂。這就是同步電路時鐘偏差。 要讓同步電路可靠地運(yùn)行,就要對時鐘偏差進(jìn)行控制,以使時鐘偏差減小到可用的范圍。影響時鐘 偏差的主要有以下幾個因素: 1、用于連接時鐘樹的連線 2、時鐘樹的拓?fù)浣Y(jié)構(gòu) 3、時鐘的驅(qū)動 4、時鐘線的負(fù)載 5、時鐘的上升及下降時間 在通常的FPGA設(shè)計中對時鐘偏差的控制主要有以下幾種方法: 1、控制時鐘信號盡量走可編程器件的全局時鐘

34、網(wǎng)絡(luò)。在可編程器件中一般都有專門的時鐘驅(qū)動器 及全局時鐘網(wǎng)絡(luò),不同種類、型號的可編程器件,它們中的全局時鐘網(wǎng)絡(luò)數(shù)量不同,因此要根據(jù)不同的 設(shè)計需要選擇含有合適數(shù)量全局時鐘網(wǎng)絡(luò)的可編程器件。 一般來說, 走全局時鐘網(wǎng)絡(luò)的時鐘信號到各使 用端的延時小,時鐘偏差很小,基本可以忽略不計。 2、若設(shè)計中時鐘信號數(shù)量很多,無法讓所有的信號都走全局時鐘網(wǎng)絡(luò),那么可以通過在設(shè)計中加 約束的方法, 控制不能走全局時鐘網(wǎng)絡(luò)的時鐘信號的時鐘偏差。 如在UCF文件中加上: NET * MAXSKEW=3; 一般而言,時鐘偏差的控制值應(yīng)按保持時間要求來計算: T < T1 T_hold 。 注意:Xilinx器件應(yīng)用中,MAXSKEW約束必須直接加在觸發(fā)器的時鐘端上,MAXSKEW約束不能通過任 何門電路,尤其是對芯片PAD進(jìn)行約束時,應(yīng)對IBUF之后的信號加約束,許多人在初學(xué)時經(jīng)常忘記這一 點(diǎn)。 3、異步接口時序裕度要足夠大 局部同步電路之間接口都可以看成是異步接口,比較典型的是設(shè)計中的高低頻電路接口、I/O接口, 那么接口電路中后一級觸發(fā)器的建立-保持時間要滿足要求,時序裕度要足夠大。 4、在系統(tǒng)時鐘大于30MHz時,設(shè)計難度有所加大,建議采用流水線等設(shè)計方法。 采用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論