




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、深圳市華為技術(shù)有限公司研究管理部文檔中心文檔編號(hào) 產(chǎn)品版本 密級(jí)V1.0 秘密產(chǎn)品名稱:同步電路設(shè)計(jì)技術(shù)及規(guī)則共27頁同步電路設(shè)計(jì)技術(shù)及規(guī)則(僅供內(nèi)部使用FPGA GROUP文 檔 作 者: 周志堅(jiān)日期:1999/11/18 研 究 部: 日期: 文檔管理員:日期: 深圳市華為技術(shù)有限公司版權(quán)所有 不得復(fù)制 日期修訂版本描述作者1999/11/18 1.00 初稿完成周志堅(jiān) 目 錄1 設(shè)計(jì)可靠性42 時(shí)序分析基礎(chǔ)4 3同步電路設(shè)計(jì)53.1同步電路的優(yōu)越性53.2 同步電路的設(shè)計(jì)規(guī)則63.3 異步設(shè)計(jì)中常見問題及其解決方法63.4 不建議使用電路17 4SET和RESET信號(hào)處理185 時(shí)延電路
2、處理196 全局信號(hào)的處理方法207 時(shí)序設(shè)計(jì)的可靠性保障措施24 8ALTERA參考設(shè)計(jì)準(zhǔn)則25 同步電路設(shè)計(jì)技術(shù)及規(guī)則1 設(shè)計(jì)可靠性為了增加可編程邏輯器件電路工作的穩(wěn)定性,一定要加強(qiáng)可編程邏輯器件設(shè)計(jì)的規(guī)范要求,要盡量采用同步電路設(shè)計(jì)。對(duì)于設(shè)計(jì)中的異步電路,要給出不能轉(zhuǎn)換為同步設(shè)計(jì)的原因,并對(duì)該部分異步電路的工作可靠性(如時(shí)鐘等信號(hào)上是否有毛刺,建立-保持時(shí)間是否滿足要求等作出分析判斷,提供分析報(bào)告。2 時(shí)序分析基礎(chǔ)電路設(shè)計(jì)的難點(diǎn)在時(shí)序設(shè)計(jì),而時(shí)序設(shè)計(jì)的實(shí)質(zhì)就是滿足每一個(gè)觸發(fā)器的建立/保持時(shí)間的要求。 REG2(DREG2(Q圖1.1如上圖所示,以REG2為例,假定 觸發(fā)器的建立時(shí)間要求為
3、:T_setup,保持時(shí)間要求為:T_hold,路徑延時(shí)為:T1,路徑延時(shí)為:T2,路徑延時(shí)為:T3,時(shí)鐘周期為:T_cycle,Ts =(T_cycle + T-T1,Th =T1-T,令 T =T3-T2,則條件1.如果T_setup < Ts ,即 T_setup < (T_cycle + T-T1,這說明信號(hào)比時(shí)鐘有效沿超過T_setup 時(shí)間到達(dá)REG2的D端,滿足建立時(shí)間要求。反之則不滿足;條件2.如果T_hold < Th ,即T_hold < T1-T ,這說明在時(shí)鐘有效沿到達(dá)之后,信號(hào)能維持足夠長的時(shí)間,滿足保持時(shí)間要求。反之則不滿足。從條件1和2我們
4、可以看出,當(dāng)T > 0 時(shí),T_hold受影響;當(dāng)T < 0 時(shí),T_setup 受影響。如果我們采用的是嚴(yán)格的同步設(shè)計(jì)電路,即一個(gè)設(shè)計(jì)只有一個(gè)CLK,并且來自時(shí)鐘PAD或時(shí)鐘BUFF (全局時(shí)鐘,則T對(duì)電路的影響很小,幾乎為0;如果采用的是異步電路,設(shè)計(jì)中時(shí)鐘滿天飛,無法保證每一個(gè)時(shí)鐘都來自強(qiáng)大的驅(qū)動(dòng)BUFF(非全局時(shí)鐘,如下圖所示,則T影響較大,有時(shí)甚至超過人們想象。這就是為什么我們建議采用同步電路進(jìn)行設(shè)計(jì)的重要原因之一。 CLK圖1.23 同步電路設(shè)計(jì)3.1 同步電路的優(yōu)越性1.同步電路比較容易使用寄存器的異步復(fù)位/置位端,以使整個(gè)電路有一個(gè)確定的初始狀態(tài);2.在可編程邏輯器
5、件中,使用同步電路可以避免器件受溫度,電壓,工藝的影響,易于消除電路的毛刺,使設(shè)計(jì)更可靠,單板更穩(wěn)定;3.同步電路可以很容易地組織流水線,提高芯片的運(yùn)行速度,設(shè)計(jì)容易實(shí)現(xiàn); 下圖是一個(gè)設(shè)計(jì)中所要準(zhǔn)備采用的電路,該設(shè)計(jì)采用Xilinx的FPGA器件4062xla來實(shí)現(xiàn),工作頻率是32.768MHz(即圖中CLK頻率。設(shè)計(jì)原打算在每隔60ns輸出一個(gè)數(shù)據(jù),即DATA。然而,我們?cè)谠O(shè)計(jì)之前,考慮到256x7的同步RAM延時(shí)可能比較大,如果在加上其后的同步RAM延時(shí)的話,估計(jì)在60ns 之內(nèi)很難完成。該部分電路是整個(gè)設(shè)計(jì)中的一個(gè)關(guān)鍵路徑,因此,我們?cè)谶M(jìn)行具體設(shè)計(jì)之前,先對(duì)這種電路結(jié)構(gòu)進(jìn)行了驗(yàn)證,事實(shí)證
6、明我們的擔(dān)心是對(duì)的。正確的做法是,采用流水線方法,在256x7的RAM 之后再加一個(gè)觸發(fā)器,每個(gè)RAM都按60ns的速度讀取數(shù)據(jù),整個(gè)流程滯后60ns輸出DATA。其它相關(guān)信號(hào)(在其它模塊中也隨之滯后60ns輸出。 CLK圖1.34.同步電路可以很好地利用先進(jìn)的設(shè)計(jì)工具,如靜態(tài)時(shí)序分析工具等,為設(shè)計(jì)者提供最大便利條件,便于電路錯(cuò)誤分析,加快設(shè)計(jì)進(jìn)度。1.1 同步電路的設(shè)計(jì)規(guī)則1.盡可能在整個(gè)設(shè)計(jì)中只使用一個(gè)主時(shí)鐘,同時(shí)只使用同一個(gè)時(shí)鐘沿,主時(shí)鐘走全局時(shí)鐘網(wǎng)絡(luò)。2.在FPGA設(shè)計(jì)中,推薦所有輸入、輸出信號(hào)均應(yīng)通過寄存器寄存,寄存器接口當(dāng)作異步接口考慮。3.當(dāng)全部電路不能用同步電路思想設(shè)計(jì)時(shí),即需
7、要多個(gè)時(shí)鐘來實(shí)現(xiàn),則可以將全部電路分成若干局部同步電路(盡量以同一個(gè)時(shí)鐘為一個(gè)模塊,局部同步電路之間接口當(dāng)作異步接口考慮。4.當(dāng)必須采用多個(gè)時(shí)鐘設(shè)計(jì)時(shí),每個(gè)時(shí)鐘信號(hào)的時(shí)鐘偏差(T要嚴(yán)格控制。5.電路的實(shí)際最高工作頻率不應(yīng)大于理論最高工作頻率,留有設(shè)計(jì)余量,保證芯片可靠工作。 6.電路中所有寄存器、狀態(tài)機(jī)在單板上電復(fù)位時(shí)應(yīng)處在一個(gè)已知的狀態(tài)。 1.2 異步設(shè)計(jì)中常見問題及其解決方法異步電路設(shè)計(jì)主要體現(xiàn)在時(shí)鐘的使用上,如使用組合邏輯時(shí)鐘、級(jí)連時(shí)鐘和多時(shí)鐘網(wǎng)絡(luò);另外還有采用異步置位、復(fù)位、自清零、自復(fù)位等。這些異步電路的大量存在,一是增加設(shè)計(jì)難度,二是在出現(xiàn)錯(cuò)誤時(shí),電路分析比較困難,有時(shí)會(huì)嚴(yán)重影響設(shè)
8、計(jì)進(jìn)度。很多異步設(shè)計(jì)都可以轉(zhuǎn)化為同步設(shè)計(jì),對(duì)于可以轉(zhuǎn)化的邏輯必須轉(zhuǎn)化,不能轉(zhuǎn)化的邏輯,應(yīng)將異步的部分減到最小,而其前后級(jí)仍然應(yīng)該采用同步設(shè)計(jì)。下面給出一些異步邏輯轉(zhuǎn)化為同步邏輯的方法:1.組合邏輯產(chǎn)生的時(shí)鐘QD組合邏輯.輸入圖1.4 組合邏輯產(chǎn)生的時(shí)鐘組合邏輯的時(shí)鐘如果產(chǎn)生毛刺,易使觸發(fā)器誤翻轉(zhuǎn)。 2.行波計(jì)數(shù)器/行波時(shí)鐘QDQDQDclkQ1Q2Q0·····圖1.5 行波計(jì)數(shù)器 行波記數(shù)器雖然原理簡(jiǎn)單,設(shè)計(jì)方便,但級(jí)連時(shí)鐘(行波時(shí)鐘最容易造成時(shí)鐘偏差(T,級(jí)數(shù)多了,很可能會(huì)影響其控制的觸發(fā)器的建立/保持時(shí)間,使設(shè)計(jì)難度加大。轉(zhuǎn)換的方法是采用
9、同步記數(shù)器,同步計(jì)數(shù)器用原理圖描述可能較難,但用VHDL很簡(jiǎn)單就可以描述一個(gè)4位計(jì)數(shù)器: Counter4:Process(nreset,clkBeginIf nreset = '0' thenCnt <= ( others => "0" ;Elsif clk = '1' and clk'event thenCnt <= cnt + 1;End if;End process counter4;通常邏輯綜合工具都會(huì)對(duì)上述描述按不同器件的特點(diǎn)進(jìn)行不同的優(yōu)化,我們并不需要關(guān)心它是逐位進(jìn)位計(jì)數(shù)器還是超前進(jìn)位計(jì)數(shù)器。4.不規(guī)則
10、的計(jì)數(shù)器 這是一個(gè)53計(jì)數(shù)器,采用計(jì)到53后產(chǎn)生異步復(fù)位的辦法實(shí)現(xiàn)清0,產(chǎn)生毛刺是必然的。然而最嚴(yán)重的是,當(dāng)計(jì)數(shù)器所有bit或相關(guān)bit均在翻轉(zhuǎn)時(shí),電路有可能出錯(cuò),例如:計(jì)數(shù)器從“110011”->“110100”,由于電路延時(shí)的原因,中間會(huì)出現(xiàn)“110101”狀態(tài),導(dǎo)致計(jì)數(shù)器誤清0。采用同步清0的辦法,不僅可以有效地消除毛刺,而且能避免計(jì)數(shù)器誤清0。電路如下圖所示。 QDclk+1=526位二進(jìn)制計(jì)數(shù)器Q5:0"000000"圖1.7 規(guī)則的計(jì)數(shù)器5.分頻器這是3和4的特例,我們推薦使用同步計(jì)數(shù)器最高位的方法,如果需要保證占空比,可以使用圖1.8所示電路進(jìn)行最后一次
11、二分頻。下圖是19.44MHz 分頻到8kMHz(分頻數(shù)為2430的電路:QDclk+1=121411位二進(jìn)制計(jì)數(shù)器 QDENAclkout··圖1.8 分頻數(shù)為2430的電路若是奇數(shù)分頻,則處理比較特殊,以5分頻器為例,其要求產(chǎn)生的時(shí)序關(guān)系如下圖所示,MCLKDIV5_CLK很顯然,該電路要用上MCLK 的上沿和下研,對(duì)上圖時(shí)序進(jìn)行分解,得下圖 123444123012344401230MCLK COUNTO DIVO COUNT1DIV1DIV5_CLK圖1.9 5分頻信號(hào)時(shí)序分解圖中,COUNT0采用上沿計(jì)數(shù),COUNT1采用下沿計(jì)數(shù),DIV0和DIV1是分別是上沿觸
12、發(fā)器和下沿觸發(fā)器的輸出,DIV5_CLK 是DIV0和DIV1的或門輸出。讀者可根據(jù)該時(shí)序圖,畫出相應(yīng)的原理圖,或者用HDL 語言進(jìn)行描述。在使用該電路時(shí),需要注意:(1DIV0和DIV1到DIV5_CLK 的約束要嚴(yán),越快越好。不然,無法保證1:1的占空比。 (2MCLK 頻率要求較高,盡量不要出現(xiàn)窄脈沖,尤其是在高頻電路里。 (3COUNT1可有可無,視時(shí)鐘頻率高低而定。頻率越高,COUNT1越需要。6.多時(shí)鐘的同步化我們?cè)谠O(shè)計(jì)中,經(jīng)常預(yù)見這種情況:一個(gè)控制信號(hào)來自其它芯片(或者芯片其它模塊,該信號(hào)相對(duì)本電路來講是異步的,即來自不同的時(shí)鐘源。其模型可用圖1.10表示。 CLK1圖1.10在
13、圖1.10中,CLK1與CLK2來自不同的時(shí)鐘源,該電路即可能出現(xiàn)在同一芯片里,又可能出現(xiàn)在不同芯片里。但效果是一樣的,即存在危險(xiǎn)性:由于時(shí)鐘源不同,對(duì)REG2和REG3來講,在同一時(shí)刻,一個(gè)“認(rèn)為”REG1的輸出是“1”,另一個(gè)認(rèn)為是“0”。這必定造成電路判斷出現(xiàn)混亂,導(dǎo)致出錯(cuò)。 這種錯(cuò)誤的實(shí)質(zhì)是內(nèi)部其它電路對(duì)輸入控制信號(hào)(也可認(rèn)為是狀態(tài)信號(hào)認(rèn)識(shí)不一致,導(dǎo)致不同的電路進(jìn)入不同的狀態(tài)。正確的做法是在REG1之后再加一個(gè)觸發(fā)器,用CLK2的時(shí)鐘沿去采樣,然后用該觸發(fā)器的輸出參與其后同步電路“活動(dòng)”。如圖1.11所示。 圖1.11如果輸入信號(hào)是兩根以上信號(hào)線,如下圖所示,則該處理方法不準(zhǔn)確。應(yīng)引入
14、專門的同步調(diào)整電路或其它特殊處理電路。我們?cè)谠O(shè)計(jì)時(shí),會(huì)對(duì)總線數(shù)據(jù)進(jìn)行同步調(diào)整,卻往往忽略了對(duì)一組控制信號(hào)進(jìn)行同步調(diào)整。 CLK1圖1.12 問題電路7.RS觸發(fā)器 R SQQ圖1.13RS 觸發(fā)器是一種危險(xiǎn)的觸發(fā)器,R=S=1會(huì)導(dǎo)致不穩(wěn)定態(tài),初始狀態(tài)也不確定。在設(shè)計(jì)時(shí)盡量避免采用這種電路,或用如圖1.14電路改進(jìn) 圖1.14 可編程邏輯器件一般選用結(jié)構(gòu)中的D 觸發(fā)器來完成設(shè)計(jì)。我們認(rèn)為,設(shè)計(jì)時(shí)最好從系統(tǒng)的角度來考慮,實(shí)現(xiàn)電路的功能,建議使用用VHDL 直接描述所需要的設(shè)計(jì)。這樣作,既安全,又具有極大的靈活性: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.上升沿檢測(cè)Q D CLRN outIn'1'。clrn圖1.15 上升沿檢測(cè)不建議采用這種電路檢測(cè)信號(hào)的上升沿,因?yàn)镮N為數(shù)據(jù)信號(hào),上邊容易有毛刺,使觸發(fā)器誤動(dòng)作。 out圖1.16采用時(shí)鐘檢測(cè)信號(hào),出現(xiàn)0->1的變化即為上升沿。當(dāng)被測(cè)信號(hào)與時(shí)鐘相關(guān)時(shí),可以不用第一個(gè)觸發(fā)器。9.下降沿檢測(cè) QDCLRNIn'1'。圖1.17同上升沿檢測(cè)電路,這種電路對(duì)毛刺、干擾極為敏感。 out圖1.18采用時(shí)鐘檢測(cè)信號(hào),出現(xiàn)1->0的變化即為下降沿。 當(dāng)被測(cè)信號(hào)與時(shí)鐘相關(guān)時(shí),可以不用第一個(gè)觸發(fā)器。1
17、0.上升/下降沿檢測(cè) 圖1.19采用時(shí)鐘檢測(cè)信號(hào),出現(xiàn)變化即為上升/下降沿。 當(dāng)被測(cè)信號(hào)與時(shí)鐘相關(guān)時(shí),可以不用第一個(gè)觸發(fā)器。11.對(duì)計(jì)數(shù)器的譯碼 clk圖1.20對(duì)計(jì)數(shù)器譯碼,可能由于競(jìng)爭(zhēng)冒險(xiǎn)產(chǎn)生毛刺。如果后級(jí)采用了同步電路,我們完全可以對(duì)此不予理會(huì)。如果對(duì)毛刺要求較高,推薦采用Gray 編碼(PLD或One-hot 編碼(FPGA的計(jì)數(shù)器,一般不要采用二進(jìn)制碼.具體描述中,我們可以用狀態(tài)機(jī)來描述,而利用邏輯綜合工具來編碼,有經(jīng)驗(yàn)的選手可以自己強(qiáng)制定義狀態(tài)機(jī)的編碼。12.門控時(shí)鐘QD組合邏輯input clk圖1.21 門控時(shí)鐘門控時(shí)鐘是非常危險(xiǎn)的,極易產(chǎn)生毛刺,使邏輯誤動(dòng)作。 在可編程邏輯器
18、件中,一般使用觸發(fā)器的時(shí)鐘使能端,而這樣,并不增加資源,只要保證建立時(shí)間,可使毛刺不起作用。QD組合邏輯inputclkENA圖1.2213.鎖存器 圖1.23鎖存器是較危險(xiǎn)的電路,沒有確定的初始狀態(tài),輸出隨輸入變化,這意味著毛刺可以通過鎖存器。若該電路與其它D 觸發(fā)器電路相連,則會(huì)影響這些觸發(fā)器的建立保持時(shí)間。除非有專用電路特別需要(其實(shí)總線鎖存之類的功能用373之類的小規(guī)模IC 更好,在設(shè)計(jì)內(nèi)部,不要使用鎖存器。QDENAD LE CLKQ圖1.24引入時(shí)鐘,可以實(shí)現(xiàn)鎖存器的功能。14 多級(jí)時(shí)鐘或多時(shí)鐘網(wǎng)絡(luò)由于時(shí)鐘建立-保持時(shí)間的限制,FPGA 設(shè)計(jì)中應(yīng)盡量避免采用多時(shí)鐘網(wǎng)絡(luò),或盡量減少時(shí)
19、鐘的個(gè)數(shù)。 圖1.25是有問題的電路,這是一個(gè)含有險(xiǎn)象的多級(jí)時(shí)鐘的例子,多路選擇器的輸入是clk 和clk 的2分頻,時(shí)鐘是有SEL 引腳控制的多路選擇器輸出的,在這兩個(gè)時(shí)鐘均為邏輯1時(shí),當(dāng)SEL 線的狀態(tài)改變時(shí),存在靜態(tài)冒險(xiǎn)競(jìng)爭(zhēng)現(xiàn)象,冒險(xiǎn)競(jìng)爭(zhēng)險(xiǎn)象的程度取決于工作的條件。 圖1.26是 改 進(jìn)后的 電 路。 圖1.25改進(jìn): 圖1.26總之,任何數(shù)字設(shè)計(jì),為了成功地操作,時(shí)鐘是關(guān)鍵。設(shè)計(jì)不良的時(shí)鐘在極限的溫度、電壓或制造工藝的偏差下將導(dǎo)致錯(cuò)誤的行為,而設(shè)計(jì)良好的時(shí)鐘應(yīng)用,則是整個(gè)數(shù)字系統(tǒng)長期穩(wěn)定工作的基礎(chǔ)。對(duì)于一個(gè)設(shè)計(jì)項(xiàng)目來說,全局時(shí)鐘(或同步時(shí)鐘是最簡(jiǎn)單和最可預(yù)測(cè)的時(shí)鐘,在真正的同步系統(tǒng)情況
20、下,由輸入引腳驅(qū)動(dòng)的單個(gè)主時(shí)鐘去鐘控設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。幾乎所有的可編程邏輯器件中都有專用的全局信號(hào)引腳,它的特殊布線方式可以直接連到器件中的每一個(gè)寄存器。只要保證輸入數(shù)據(jù)的建立和保持時(shí)間滿足要求(相應(yīng)可編程器件的數(shù)據(jù)手冊(cè)中可查到,整個(gè)同步系統(tǒng)就可以在全局時(shí)鐘的驅(qū)動(dòng)下可靠工作,所以在可能的情況下,一定要使用全局時(shí)鐘。1.3 不建議使用電路1 不建議使用組合邏輯時(shí)鐘或門控時(shí)鐘組合邏輯很容易產(chǎn)生毛刺,用組合邏輯的輸出作為時(shí)鐘很容易使系統(tǒng)產(chǎn)生誤動(dòng)作。2 不建議使用行波時(shí)鐘3 盡量避免采用多個(gè)時(shí)鐘,多使用觸發(fā)器的使能端來解決。在可編程邏輯器件設(shè)計(jì)時(shí),由于時(shí)鐘建立應(yīng)盡量避免采用多時(shí)鐘網(wǎng)絡(luò),或者采用
21、適當(dāng)?shù)拇胧p少時(shí)鐘的個(gè)數(shù),使用頻率低的時(shí)鐘盡量簡(jiǎn)化消除。4 觸發(fā)器的置/復(fù)位端盡量避免出現(xiàn)毛刺,及自我復(fù)位電路等,最好只用一個(gè)全局復(fù)位信號(hào)。5 電路中盡量避免“死循環(huán)”電路,如RS觸發(fā)器等。6禁止時(shí)鐘在不同可編程器件中級(jí)連,盡量降低時(shí)鐘到各個(gè)器件時(shí)鐘偏差值。同一個(gè)時(shí)鐘在不同可編程器件中使用時(shí)不允許級(jí)連,而且應(yīng)該保證該時(shí)鐘到達(dá)不同可編程器件輸入引腳的時(shí)鐘偏差足夠小。因?yàn)榻?jīng)過多個(gè)可編程器件的延時(shí)后,難以估計(jì)該時(shí)鐘在鏈上各個(gè)觸發(fā)器時(shí)鐘 之間產(chǎn)生的大量時(shí)間偏移,如果這種時(shí)間偏移引起建立時(shí)間、保持時(shí)間難以滿足的話,那么設(shè)計(jì)的邏輯就極有可能要失敗了。2 SET和RESET信號(hào)處理在設(shè)計(jì)時(shí)應(yīng)盡量保證有一全局
22、復(fù)位信號(hào),或保證觸發(fā)器、計(jì)數(shù)器在使用前已經(jīng)正確清零和狀態(tài)機(jī)處于確知的狀態(tài)。寄存器的清除和置位信號(hào),對(duì)競(jìng)爭(zhēng)條件和冒險(xiǎn)也非常敏感。在設(shè)計(jì)時(shí),應(yīng)盡量直接從器件的專用引腳驅(qū)動(dòng)。另外,要考慮到有些器件上電時(shí),觸發(fā)器處于一種不確定的狀態(tài),系統(tǒng)設(shè)計(jì)時(shí)應(yīng)加入全局復(fù)位/Reset。這樣主復(fù)位引腳就可以給設(shè)計(jì)中的每一個(gè)觸發(fā)器饋送清除或置位信號(hào),保證系統(tǒng)處于一個(gè)確定的初始狀態(tài)。需要注意的一點(diǎn)是:不要對(duì)寄存器的置位和清除端同時(shí)施加不同信號(hào)產(chǎn)生的控制,因?yàn)槿绻霈F(xiàn)兩個(gè)信號(hào)同時(shí)有效的意外情況,會(huì)使寄存器進(jìn)入不定狀態(tài)。對(duì)于狀態(tài)機(jī)設(shè)計(jì),由于有可能存在一些狀態(tài)對(duì)于系統(tǒng)而言是“非法的”(或稱“無關(guān)的”,所以除了在狀態(tài)機(jī)設(shè)計(jì)時(shí)充分
23、考慮各種可能出現(xiàn)的狀態(tài)以及一旦進(jìn)入“非法”狀態(tài)后可以強(qiáng)迫狀態(tài)機(jī)在下一個(gè)時(shí)鐘周期內(nèi)進(jìn)入“合法”狀態(tài)(一般時(shí)初始狀態(tài)外,一定要保證系統(tǒng)初始化時(shí)狀態(tài)機(jī)就處于“合法”的初始狀態(tài),這里最好的辦法仍然是使用全局主復(fù)位信號(hào)強(qiáng)迫狀態(tài)機(jī)進(jìn)入已知的“合法”狀態(tài)。下面給出一段包含狀態(tài)機(jī)的全局時(shí)鐘和復(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í)延電路處理時(shí)延電路是指在可編程器件的設(shè)計(jì)中,為了能夠滿足電路之間時(shí)序配合的要求,利用可編程器件的內(nèi)部資源而進(jìn)行時(shí)序調(diào)整,如:利用線延時(shí)或者若干串聯(lián) Buffer 電路,使時(shí)鐘或數(shù)據(jù)滯后一段時(shí)間。典型的,該時(shí)間即不能太長,又不能太短,以便滿足“特定”需要。然而,這種時(shí)延電路嚴(yán)重依賴器件工藝,也依賴每次的布線結(jié)果,給設(shè)計(jì)帶來許多麻煩,有時(shí)會(huì)引起嚴(yán)重后果。因此,必須正確處理時(shí)延電路:1 在設(shè)計(jì)中應(yīng)盡量避免時(shí)延電路,絕大多數(shù)時(shí)延電路是由設(shè)計(jì)者在設(shè)計(jì)之初考慮不完善造成的。例如,在設(shè)計(jì)中沒必要地存在多個(gè)時(shí)鐘電路,模塊劃分不合理
27、,關(guān)鍵電路關(guān)鍵時(shí)序考慮不周等。我們的設(shè)計(jì)經(jīng)常是在功能模塊劃分完成之后,就急急忙忙去做具體電路,許多關(guān)鍵時(shí)序并沒有考慮清楚,這不可避免的造成設(shè)計(jì)多次反復(fù)。正確的做法是:設(shè)計(jì)目標(biāo)分析功能模塊劃分設(shè)計(jì)電路,尤其是數(shù)字電路,最關(guān)鍵的一環(huán)是:設(shè)計(jì)各模塊間的接口時(shí)序,確定關(guān)鍵電路的時(shí)序。這個(gè)工作必須在具體電路設(shè)計(jì)之前確定下來?!皶r(shí)序是事先設(shè)計(jì)出來的,而不是事后測(cè)出來的,更不是湊出來的”。2 若實(shí)在無法,則盡量采用高頻電路,對(duì)所需信號(hào)加觸發(fā)器進(jìn)行延時(shí)。該延時(shí)只跟時(shí)鐘頻率和觸發(fā)器個(gè)數(shù)有關(guān),而與工藝基本無關(guān)。4 全局信號(hào)的處理方法全局信號(hào)處理的原則是:時(shí)鐘信號(hào)、異步清零、置位信號(hào)上不允許存在毛刺;不允許異步清零
28、、置位信號(hào)同時(shí)有效。在下述幾種情況下,時(shí)鐘信號(hào)、異步清零、置位信號(hào)上可能會(huì)有毛刺:(1時(shí)鐘信號(hào)、異步清零、置位信號(hào)為組合邏輯輸出由于組合邏輯是電平敏感的,比較容易產(chǎn)生毛刺,而組和邏輯的細(xì)小毛刺一旦經(jīng)過時(shí)序電路則其對(duì)電路的影響則會(huì)放大。因此在設(shè)計(jì)中對(duì)時(shí)鐘信號(hào)、異步清零、置位信號(hào)這些對(duì)時(shí)序電路來講非常重要的信號(hào)應(yīng)盡量采用同步電路,而對(duì)于非用組合邏輯不行的地方則必須用卡諾圖嚴(yán)格的分析時(shí)序電路,確定徹底消除競(jìng)爭(zhēng)與冒險(xiǎn)后才可引入到時(shí)序電路中使用。下面舉例說明: 對(duì)于必須用組合邏輯的輸出作為時(shí)鐘、異步清零、置位信號(hào)的電路,對(duì)其組合電路的輸出必須采用卡諾圖進(jìn)行嚴(yán)格的分析,保證徹底消除了競(jìng)爭(zhēng)與冒險(xiǎn)后才可引入到
29、時(shí)序電路中使用。對(duì)于時(shí)鐘信號(hào)、異步清零、置位信號(hào)是多個(gè)信號(hào)中選擇的情況可按下述方法同步化對(duì)組合電路產(chǎn)生的時(shí)鐘信號(hào)的處理:情況1:同一個(gè)時(shí)鐘源,通過組合邏輯控制它的通斷,如下圖:圖 1.27 通過組合邏輯控制它的通斷上面的圖中,觸發(fā)器的時(shí)鐘是由CLOCK與SEL相與后的輸出,目的是通過控制觸發(fā)器的時(shí)鐘的通斷達(dá)到控制觸發(fā)器的輸出的目的,這種情況下由于CLOCK與SEL不是嚴(yán)格同步的,則有可能會(huì)在觸發(fā)器的時(shí)鐘腳產(chǎn)生毛刺,而在FPGA中,觸發(fā)器對(duì)時(shí)鐘端的毛刺是敏感的,上述毛刺可能導(dǎo)致觸發(fā)器的誤動(dòng)作。在下面的圖中,觸發(fā)器的時(shí)鐘是CLOCK,而將SEL信號(hào)與觸發(fā)器的使能端連接,這樣同樣達(dá)到了通過SEL信號(hào)
30、控制觸發(fā)器的輸出的目的,但由于CLOCK不會(huì)產(chǎn)生毛刺,可以保證觸發(fā)器的可靠觸發(fā)。情況2:通過組合邏輯對(duì)觸發(fā)器的時(shí)鐘在多個(gè)時(shí)鐘中選擇一個(gè),如下圖所示: 圖1.28 組合邏輯在多個(gè)時(shí)鐘中選擇一個(gè)上圖中,標(biāo)為BAD的一個(gè)由于直接用組合邏輯實(shí)現(xiàn)在CLKA、CLKB兩個(gè)時(shí)鐘中二選一的功能,而組合電路由于不同路徑的延遲不同,所以在電路的時(shí)鐘輸出很容易產(chǎn)生毛刺;而標(biāo)為“GOOD”的一個(gè)由于對(duì)選擇信號(hào)SELECT分別用兩個(gè)觸發(fā)器進(jìn)行了同步化,所以在時(shí)鐘的輸出端不會(huì)產(chǎn)生毛刺。 SELECTREGAREGA_CLKREGB圖 1.29圖1.29是圖1.28中GOOD電路的原理時(shí)序圖。其中REGA表示接CLKA的觸
31、發(fā)器,其對(duì)應(yīng)的與門輸出為REGA_CLK;同樣定義REGB和REGB_CLKB。很顯然,當(dāng)REGA或REGB前后有限“漂移”時(shí), OUT_CLK是不會(huì)出現(xiàn)毛刺得。對(duì)GOOD電路,有兩個(gè)問題:1. SELECT如果在CLK下降沿左右發(fā)生變化,該電路能否正常?2. 該電路的觸發(fā)器能采用上升沿觸發(fā)嗎?(2使用自我清除、自我置位和自我鐘控的寄存器;·建議盡量使用觸發(fā)器的使能端來達(dá)到鐘控的目的。對(duì)于自我清除、自我置位,最好通過組合邏輯將其轉(zhuǎn)變成對(duì)輸入端數(shù)據(jù)的置位與清除,從而提高電路的可靠性,具體說明如下二圖:圖1.30是一個(gè)自我清除的電路圖,當(dāng)輸出端均為“1”時(shí),電路復(fù)位,這樣消除了產(chǎn)生毛刺的
32、隱患,但使輸出端體現(xiàn)出復(fù)位延遲了一個(gè)CLOCK。圖1.31是一個(gè)自我置位的電路圖,當(dāng)輸出端均為“0”時(shí),電路置位,這樣做輸出端體現(xiàn)出置位延遲了一個(gè)CLOCK,但消除了產(chǎn)生毛刺的隱患。 圖 圖 1.31(3時(shí)鐘信號(hào)、異步清零、置位信號(hào)由外部輸入,輸入時(shí)有毛刺;對(duì)于由外部輸入的有毛刺的時(shí)鐘、異步清零、置位信號(hào)通常的處理方法是使用內(nèi)部觸發(fā)器鎖存,使之同步化。1 時(shí)序設(shè)計(jì)的可靠性保障措施(1時(shí)鐘偏差要加以控制同步電路設(shè)計(jì)技術(shù)及規(guī)則 秘密 請(qǐng)輸入文檔編號(hào) 在同步電路里,時(shí)鐘信號(hào)要連接到所有的寄存器,觸發(fā)器以及鎖存器等器件上。這些巨大的負(fù)載就 象一個(gè)大電容加在時(shí)鐘線上,再加上時(shí)鐘線本身的分布電容和電阻,這
33、樣時(shí)鐘線就象分布的RC線。由于 RC線的延時(shí)是線長的函數(shù), 這樣就使得連到同一根時(shí)鐘線上的時(shí)鐘由于距離時(shí)鐘源的遠(yuǎn)近不一而產(chǎn)生不 同的延時(shí)。 因而造成了同一時(shí)鐘到達(dá)各個(gè)器件的時(shí)間不一致, 使得各個(gè)以時(shí)鐘為基準(zhǔn)器件的動(dòng)作也不一 致,而造成時(shí)序上的混亂。這就是同步電路時(shí)鐘偏差。 要讓同步電路可靠地運(yùn)行,就要對(duì)時(shí)鐘偏差進(jìn)行控制,以使時(shí)鐘偏差減小到可用的范圍。影響時(shí)鐘 偏差的主要有以下幾個(gè)因素: 1、用于連接時(shí)鐘樹的連線 2、時(shí)鐘樹的拓?fù)浣Y(jié)構(gòu) 3、時(shí)鐘的驅(qū)動(dòng) 4、時(shí)鐘線的負(fù)載 5、時(shí)鐘的上升及下降時(shí)間 在通常的FPGA設(shè)計(jì)中對(duì)時(shí)鐘偏差的控制主要有以下幾種方法: 1、控制時(shí)鐘信號(hào)盡量走可編程器件的全局時(shí)鐘
34、網(wǎng)絡(luò)。在可編程器件中一般都有專門的時(shí)鐘驅(qū)動(dòng)器 及全局時(shí)鐘網(wǎng)絡(luò),不同種類、型號(hào)的可編程器件,它們中的全局時(shí)鐘網(wǎng)絡(luò)數(shù)量不同,因此要根據(jù)不同的 設(shè)計(jì)需要選擇含有合適數(shù)量全局時(shí)鐘網(wǎng)絡(luò)的可編程器件。 一般來說, 走全局時(shí)鐘網(wǎng)絡(luò)的時(shí)鐘信號(hào)到各使 用端的延時(shí)小,時(shí)鐘偏差很小,基本可以忽略不計(jì)。 2、若設(shè)計(jì)中時(shí)鐘信號(hào)數(shù)量很多,無法讓所有的信號(hào)都走全局時(shí)鐘網(wǎng)絡(luò),那么可以通過在設(shè)計(jì)中加 約束的方法, 控制不能走全局時(shí)鐘網(wǎng)絡(luò)的時(shí)鐘信號(hào)的時(shí)鐘偏差。 如在UCF文件中加上: NET * MAXSKEW=3; 一般而言,時(shí)鐘偏差的控制值應(yīng)按保持時(shí)間要求來計(jì)算: T < T1 T_hold 。 注意:Xilinx器件應(yīng)用中,MAXSKEW約束必須直接加在觸發(fā)器的時(shí)鐘端上,MAXSKEW約束不能通過任 何門電路,尤其是對(duì)芯片PAD進(jìn)行約束時(shí),應(yīng)對(duì)IBUF之后的信號(hào)加約束,許多人在初學(xué)時(shí)經(jīng)常忘記這一 點(diǎn)。 3、異步接口時(shí)序裕度要足夠大 局部同步電路之間接口都可以看成是異步接口,比較典型的是設(shè)計(jì)中的高低頻電路接口、I/O接口, 那么接口電路中后一級(jí)觸發(fā)器的建立-保持時(shí)間要滿足要求,時(shí)序裕度要足夠大。 4、在系統(tǒng)時(shí)鐘大于30MHz時(shí),設(shè)計(jì)難度有所加大,建議采用流水線等設(shè)計(jì)方法。 采用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村河道橋梁承建合同標(biāo)準(zhǔn)文本
- lpr利率貸款合同樣本
- 公司承包飛機(jī)合同樣本
- 修路工程合伙合同標(biāo)準(zhǔn)文本
- 幼兒園科學(xué)活動(dòng)教案
- 串貨合同標(biāo)準(zhǔn)文本標(biāo)準(zhǔn)文本
- 年部編版小學(xué)語文六年級(jí)上冊(cè)教案設(shè)計(jì)全冊(cè)
- 世界的人口教案
- 企業(yè)風(fēng)險(xiǎn)管理方案:以員工宿舍為例
- 講文明樹新風(fēng)主題班會(huì)教案
- 校長在中考復(fù)習(xí)備考研討會(huì)上講話:聚焦中考命題核心!靶向突破薄弱環(huán)節(jié)
- 2025年湖北省八市高三(3月)聯(lián)考化學(xué)
- 健康管理師的心理健康指導(dǎo)試題及答案
- 3.2《做自尊的人》課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 德育測(cè)試試題及答案
- 設(shè)計(jì)院掛靠合作協(xié)議書范本
- 2025年中國電子信息產(chǎn)業(yè)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025年江蘇省職業(yè)院校技能大賽高職組(智慧物流)參考試題庫資料及答案
- 上海市松江區(qū)屆2024-2025學(xué)年高三上學(xué)期一模考試歷史試題(解析版)
- 2025年浙江省高職單招《職業(yè)適應(yīng)性測(cè)試》高頻必練考試題(附答案)
- 《影視照明技術(shù)》課件:照亮影視作品的靈魂
評(píng)論
0/150
提交評(píng)論