版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章設(shè)計(jì)中的常見(jiàn)問(wèn)題10.1信號(hào)毛刺的產(chǎn)生及消除10.2時(shí)鐘問(wèn)題10.3復(fù)位和清零信號(hào)
10.1信號(hào)毛刺的產(chǎn)生及消除
10.1.1信號(hào)毛刺的產(chǎn)生
信號(hào)在可編程器件內(nèi)部通過(guò)連線和邏輯單元時(shí),會(huì)有一定的延時(shí),延時(shí)的長(zhǎng)短與信號(hào)通道上的連線長(zhǎng)短和邏輯單元的數(shù)目有關(guān),同時(shí)還受器件的制造工藝、工作電壓、溫度等條件的影響。信號(hào)的高低電平轉(zhuǎn)換也需要一定的過(guò)渡時(shí)間。由于存在這兩方面的因素,多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào)變化的瞬間,組合邏輯的輸出狀態(tài)不確定,往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為“毛刺”。如果一個(gè)組合邏輯電路中有“毛刺”出現(xiàn),就說(shuō)明該電路存在“冒險(xiǎn)”。由于信號(hào)路徑長(zhǎng)度的不同,多級(jí)組合電路、譯碼器、數(shù)值比較器以及狀態(tài)計(jì)數(shù)器等器件本身容易出現(xiàn)冒險(xiǎn)現(xiàn)象,時(shí)鐘端口、清零和置位端口對(duì)毛刺信號(hào)十分敏感,這些端口出現(xiàn)的任何毛刺都可能會(huì)使系統(tǒng)出錯(cuò),因此判斷邏輯電路中是否存在冒險(xiǎn)以及如何避免冒險(xiǎn)是設(shè)計(jì)人員必須要考慮的問(wèn)題。
如圖10.1所示的電路就是一個(gè)會(huì)出現(xiàn)冒險(xiǎn)的電路,根據(jù)電路結(jié)構(gòu)原理,3位計(jì)數(shù)器對(duì)時(shí)鐘信號(hào)“clk”進(jìn)行計(jì)數(shù),計(jì)數(shù)值通過(guò)一個(gè)兩級(jí)與門邏輯,控制一個(gè)D觸發(fā)器的強(qiáng)制置位端,當(dāng)信號(hào)“q0”、“q1”、“q2”均為“1”時(shí),輸出端“out”輸出為“1”,其余時(shí)刻輸出端“out”輸出為“0”。
圖10.1存在“冒險(xiǎn)”的組合邏輯電路的期望時(shí)序如圖10.2所示。圖10.2電路的期望時(shí)序?qū)嶋H上,按照如圖10.1所示的電路,使用QuartusⅡ進(jìn)行時(shí)序仿真后,獲得的實(shí)際時(shí)序仿真波形如圖10.3所示。圖10.3實(shí)際時(shí)序仿真波形當(dāng)計(jì)數(shù)器的計(jì)數(shù)值由“4”變?yōu)椤?”時(shí),“out”信號(hào)產(chǎn)生了意外的脈沖輸出,顯然此時(shí)序無(wú)法滿足設(shè)計(jì)要求。對(duì)信號(hào)線“PROBE1”的時(shí)序進(jìn)行分析,獲得如圖10.4所示的時(shí)序波形。圖10.4“PROBE1”的時(shí)序波形當(dāng)信號(hào)“q[2..0]”的值由“3”變?yōu)椤?”以及由“5”變?yōu)椤?”時(shí),在信號(hào)“PROBE1”上會(huì)出現(xiàn)兩個(gè)毛刺,從而導(dǎo)致了輸出信號(hào)“out”的異常脈沖輸出,顯然毛刺是由信號(hào)“q[2..0]”與“PROBE1”間的如圖10.5所示的組合邏輯電路產(chǎn)生的。圖10.5產(chǎn)生毛刺的組合邏輯電路查看編譯報(bào)告中的“ClassicTimingAnalyzer”模塊,分析如圖10.5所示的組合邏輯部分的延時(shí),獲得如圖10.6所示的延時(shí)矩陣。圖10.6獲得的延時(shí)矩陣信號(hào)q[2..0]由“000”變到“111”的過(guò)程如表10.1所示。當(dāng)信號(hào)q[2..0]由“011”變?yōu)椤?00”和由“101”變?yōu)椤?10”時(shí),由于器件延時(shí)的不同,會(huì)出現(xiàn)在某一個(gè)時(shí)間段內(nèi)信號(hào)“q2”、“q1”和“q0”同時(shí)為“1”的情況。
表10.1信號(hào)q[2..0]的狀態(tài)變化表q2q1q000000101001110010111011110.1.2信號(hào)毛刺的解決方法
常用的消除信號(hào)毛刺的方法有兩種:一是通過(guò)對(duì)后續(xù)電路的改進(jìn),避免毛刺對(duì)后續(xù)電路的影響;二是在計(jì)數(shù)過(guò)程和組合邏輯中就避免毛刺的產(chǎn)生。
采用第一種方法,使用如圖10.7所示的同步電路設(shè)計(jì),在信號(hào)“PROBE1”與觸發(fā)器“PRN”端之間添加一個(gè)新的D觸發(fā)器,由“clk”信號(hào)下降沿控制觸發(fā),保證在觸發(fā)的時(shí)刻組合邏輯輸出的信號(hào)已經(jīng)穩(wěn)定,同時(shí)該觸發(fā)器輸出信號(hào)Q通過(guò)一個(gè)延遲門與“PRN”端組成正反饋回路,保證足夠的脈寬。圖10.7添加D觸發(fā)器的電路圖10.8改進(jìn)后的電路的仿真時(shí)序改進(jìn)后的電路的仿真時(shí)序如圖10.8所示。在如圖10.8所示的時(shí)序過(guò)程中,電路毛刺并沒(méi)有被消除,只是通過(guò)添加觸發(fā)器將毛刺對(duì)后續(xù)電路的影響消除了。
這種方法也存在不足,即增加了輸出信號(hào)與時(shí)鐘信號(hào)之間的延時(shí);另外,當(dāng)系統(tǒng)的時(shí)鐘頻率很高時(shí),毛刺在時(shí)鐘信號(hào)的下降沿時(shí)刻可能還沒(méi)有消失,仍然會(huì)影響后續(xù)電路。
另一種能完全避免毛刺產(chǎn)生的方法就是使用格雷碼計(jì)數(shù)器,在每次計(jì)數(shù)狀態(tài)變化過(guò)程中只有一位信號(hào)發(fā)生變化,如表10.2所示,這樣就避免了毛刺產(chǎn)生的可能。表10.2信號(hào)q[2..0]的狀態(tài)變化表qcqbqa101100000001011010110111圖10.9采用格雷碼計(jì)數(shù)器后的電路采用格雷碼計(jì)數(shù)器后的電路如圖10.9所示。圖10.9中的“modcount”是一個(gè)自定義的3位格雷碼計(jì)數(shù)器模塊,其描述如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYmodcountIS
PORT(clk:INSTD_LOGIC;
reset:INSTD_LOGIC;
q:OUTSTD_LOGIC_VECTOR(2DOWNTO0)
);
ENDENTITYmodcount;
ARCHITECTUREbehavOFmodcountIS
SIGNALrr:STD_LOGIC_VECTOR(2DOWNTO0); --狀態(tài)變量
?CONSTANTst0:STD_LOGIC_VECTOR(2DOWNTO0):="101"; --狀態(tài)常數(shù)設(shè)置
CONSTANTst1:STD_LOGIC_VECTOR(2DOWNTO0):="100";
CONSTANTst2:STD_LOGIC_VECTOR(2DOWNTO0):="000";
CONSTANTst3:STD_LOGIC_VECTOR(2DOWNTO0):="001";
CONSTANTst4:STD_LOGIC_VECTOR(2DOWNTO0):="011";
CONSTANTst5:STD_LOGIC_VECTOR(2DOWNTO0):="010";
CONSTANTst6:STD_LOGIC_VECTOR(2DOWNTO0):="110";
CONSTANTst7:STD_LOGIC_VECTOR(2DOWNTO0):="111";
BEGIN
PROCESS(clk)
BEGIN
IF(clk'eventANDclk='1')THEN
CASErrIS
WHENst0=>rr<=st1;
WHENst1=>rr<=st2;
WHENst2=>rr<=st3;
WHENst3=>rr<=st4;
WHENst4=>rr<=st5;
WHENst5=>rr<=st6;
WHENst6=>rr<=st7;
WHENst7=>rr<=st0;
ENDCASE;
q<=rr;
ENDPROCESS;
ENDbehav;
使用格雷碼計(jì)數(shù)器后,系統(tǒng)仿真時(shí)序如圖10.10所示。圖10.10使用格雷碼計(jì)數(shù)器后的仿真時(shí)序在如圖10.10所示的系統(tǒng)時(shí)序中,由于使用了格雷碼計(jì)數(shù)器,每次只改變一位輸出值的狀態(tài),因此從根本上消除了毛刺的產(chǎn)生,系統(tǒng)更為穩(wěn)定。
在數(shù)字電路中,采用格雷碼計(jì)數(shù)器、同步電路等可以大大減少毛刺,但它并不能完全消除所有的毛刺。毛刺并不是對(duì)所有的輸入都有危害。例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,一般不會(huì)對(duì)系統(tǒng)造成危害。因此,在設(shè)計(jì)數(shù)字電路時(shí),需要綜合考慮毛刺的影響,在保證電路穩(wěn)定的情況下,盡量簡(jiǎn)化設(shè)計(jì)。10.2時(shí)鐘問(wèn)題
在時(shí)序電路的設(shè)計(jì)中,時(shí)鐘信號(hào)常常用來(lái)對(duì)各類信號(hào)進(jìn)行同步采樣,以實(shí)現(xiàn)電路的同步,從而保證系統(tǒng)的穩(wěn)定性。在極限溫度、電壓或制造工藝存在偏差的情況下,設(shè)計(jì)不良的時(shí)鐘將導(dǎo)致系統(tǒng)錯(cuò)誤的行為,因此穩(wěn)定的時(shí)鐘設(shè)計(jì)非常關(guān)鍵。在FPGA設(shè)計(jì)時(shí)通常采用全局時(shí)鐘、門控時(shí)鐘、多級(jí)邏輯時(shí)鐘和波動(dòng)式時(shí)鐘這4種時(shí)鐘類型。多時(shí)鐘系統(tǒng)是這4種時(shí)鐘類型的任意組合。10.2.1信號(hào)的建立和保持時(shí)間
在設(shè)計(jì)時(shí)鐘前,設(shè)計(jì)者需要考慮的第一件事就是信號(hào)的建立和保持時(shí)間。所謂信號(hào)的“建立時(shí)間”,是指在時(shí)鐘的上升沿或下降沿之前數(shù)據(jù)必須保持穩(wěn)定(無(wú)跳變)的時(shí)間?!氨3謺r(shí)間”是指在時(shí)鐘跳變后數(shù)據(jù)必須保持穩(wěn)定的時(shí)間。建立時(shí)間與保持時(shí)間的關(guān)系如圖10.11所示。為了保證在時(shí)鐘信號(hào)翻轉(zhuǎn)時(shí)采集數(shù)據(jù)的正確性,一般在數(shù)據(jù)信號(hào)發(fā)生時(shí)間的中間段進(jìn)行采集,這就要求有足夠的信號(hào)建立和保持時(shí)間,所有采用時(shí)鐘和數(shù)據(jù)輸入的同步數(shù)字電路都要求提供這兩個(gè)時(shí)間參數(shù)。圖10.11建立時(shí)間與保持時(shí)間的關(guān)系要求數(shù)據(jù)穩(wěn)定接收就必須滿足建立和保持時(shí)間的要求,否則在時(shí)鐘上升沿或下降沿讀取的數(shù)據(jù)就可能有錯(cuò)誤,從而使電路變得不穩(wěn)定。在FPGA設(shè)計(jì)中,應(yīng)該盡量避免在數(shù)據(jù)建立時(shí)間內(nèi)或其附近讀取數(shù)據(jù)。對(duì)于級(jí)聯(lián)的功能模塊或者數(shù)字邏輯器件,后一模塊或器件的工作時(shí)鐘一般取前一模塊或器件工作時(shí)鐘的反相信號(hào),這樣就可以保證時(shí)鐘的邊沿位于數(shù)據(jù)的保持時(shí)間內(nèi)。10.2.2全局時(shí)鐘
在一個(gè)數(shù)字系統(tǒng)中,如果每一個(gè)順序邏輯單元(SequentialLogicElement)都是用同一個(gè)參考時(shí)鐘脈沖來(lái)驅(qū)動(dòng)的,則可稱該系統(tǒng)為同步系統(tǒng),驅(qū)動(dòng)同步系統(tǒng)的參考時(shí)鐘就是全局時(shí)鐘。全局時(shí)鐘驅(qū)動(dòng)的同步系統(tǒng)可以小到一個(gè)簡(jiǎn)單的邏輯芯片,大到一個(gè)多插槽式模組,其包含的順序邏輯單元可以是寄存器(Register)、先進(jìn)先出(FIFO)緩沖器、同步內(nèi)存(Memory)等。對(duì)于一個(gè)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘是最簡(jiǎn)單和最可預(yù)測(cè)的時(shí)鐘。在FPGA設(shè)計(jì)中,最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)單個(gè)主時(shí)鐘去控制設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。FPGA芯片一般都具有專用的全局時(shí)鐘引腳,在設(shè)計(jì)項(xiàng)目時(shí)應(yīng)盡量采用全局時(shí)鐘,它能夠提供器件中最短的時(shí)鐘到輸出的延時(shí)。
圖10.12所示的是全局時(shí)鐘的一個(gè)典型實(shí)例。
圖10.12中的全局時(shí)鐘控制三級(jí)組合電路的運(yùn)行,每次得到的結(jié)果被全局時(shí)鐘控制的D觸發(fā)器鎖存,使運(yùn)行過(guò)程與全局時(shí)鐘同步。圖10.12全局時(shí)鐘實(shí)例10.2.3門控時(shí)鐘
在許多應(yīng)用中,整個(gè)設(shè)計(jì)項(xiàng)目都采用外部的全局時(shí)鐘是不可能的,所以通常用陣列時(shí)鐘構(gòu)成門控時(shí)鐘。門控時(shí)鐘常常同微處理器接口有關(guān),例如用地址線去控制寫脈沖。每當(dāng)用組合邏輯來(lái)控制觸發(fā)器時(shí),通常都存在著門控時(shí)鐘。在使用門控時(shí)鐘時(shí),應(yīng)仔細(xì)分析時(shí)鐘函數(shù),以避免毛刺的影響。如果設(shè)計(jì)滿足下述兩個(gè)條件,則可以保證時(shí)鐘信號(hào)不出現(xiàn)危險(xiǎn)的毛刺,門控時(shí)鐘就可以像全局時(shí)鐘一樣可靠工作:
(1)直接驅(qū)動(dòng)時(shí)鐘的邏輯中只允許包含一個(gè)“與門”或一個(gè)“或門”,如果采用其他的附加邏輯,就會(huì)在某些工作狀態(tài)下出現(xiàn)由于邏輯競(jìng)爭(zhēng)而產(chǎn)生的毛刺。
(2)邏輯門的一個(gè)輸入作為實(shí)際的時(shí)鐘,而該邏輯門的所有其他輸入必須當(dāng)成地址或控制線,它們遵守相對(duì)于時(shí)鐘的建立和保持時(shí)間的約束。
圖10.13所示為一個(gè)使用與門的門控時(shí)鐘電路。
將門控時(shí)鐘與全局時(shí)鐘同步能改善設(shè)計(jì)項(xiàng)目的可靠性。使用帶有使能端的D觸發(fā)器可以實(shí)現(xiàn)門控時(shí)鐘與全局時(shí)鐘的同步。帶有使能端的D觸發(fā)器的符號(hào)如圖10.14所示。
圖10.13使用與門的門控時(shí)鐘電路圖10.14帶有使能端的D觸發(fā)器的符號(hào)使用時(shí),將門控時(shí)鐘接D觸發(fā)器的使能端,全局時(shí)鐘接D觸發(fā)器的時(shí)鐘輸入端,這樣就能保持門控時(shí)鐘與全局時(shí)鐘的同步。
當(dāng)產(chǎn)生門控時(shí)鐘的組合邏輯超過(guò)一級(jí),即超過(guò)單個(gè)的“與門”或“或門”時(shí),該設(shè)計(jì)項(xiàng)目的可靠性將變得很差。在這種情況下,即使樣機(jī)或仿真結(jié)果沒(méi)有顯示出靜態(tài)險(xiǎn)象,但實(shí)際上仍然可能存在危險(xiǎn),所以我們不應(yīng)該用多級(jí)組合邏輯去作為觸發(fā)器的時(shí)鐘端。多級(jí)邏輯的險(xiǎn)象可以通過(guò)插入“冗余邏輯”到設(shè)計(jì)項(xiàng)目中去除,但是FPGA編譯器在邏輯綜合時(shí)會(huì)去掉這些冗余邏輯,這就使得驗(yàn)證險(xiǎn)象是否真正被去除變得十分困難。為此,設(shè)計(jì)人員應(yīng)尋求其他方法來(lái)實(shí)現(xiàn)電路的功能,盡量避免使用多級(jí)門控時(shí)鐘。10.2.4多時(shí)鐘系統(tǒng)
在設(shè)計(jì)中常常會(huì)碰到多時(shí)鐘系統(tǒng),即在一個(gè)系統(tǒng)中存在多個(gè)時(shí)鐘信號(hào),例如異步通信接口或者兩個(gè)不同時(shí)鐘信號(hào)驅(qū)動(dòng)的微處理器之間的接口。由于兩個(gè)時(shí)鐘信號(hào)之間要求一定的建立和保持時(shí)間,因此上述應(yīng)用引進(jìn)了附加的定時(shí)約束條件,要求接口系統(tǒng)將某些異步信號(hào)同步化。如圖10.15所示即為一個(gè)雙時(shí)鐘系統(tǒng)的實(shí)例。該系統(tǒng)有兩路彼此獨(dú)立的時(shí)鐘信號(hào):clk_a信號(hào)為3MHz,用于驅(qū)動(dòng)觸發(fā)器A;clk_b信號(hào)為6MHz,用于驅(qū)動(dòng)觸發(fā)器B。兩個(gè)觸發(fā)器的輸出信號(hào)要進(jìn)行邏輯與操作,這樣就要求兩路觸發(fā)器輸出的信號(hào)能夠同步,以保證兩信號(hào)在進(jìn)行與操作之前均處于穩(wěn)定狀態(tài),避免出現(xiàn)不可預(yù)料的毛刺。由于clk_a和clk_b是相互獨(dú)立的,分別由這兩路時(shí)鐘信號(hào)驅(qū)動(dòng)的data_a和data_b信號(hào)的建立時(shí)間和保持時(shí)間的要求不能得到穩(wěn)定的保證,因此必須添加如圖10.16所示的同步電路來(lái)實(shí)現(xiàn)兩路信號(hào)的同步化。圖10.15雙時(shí)鐘系統(tǒng)圖10.16添加同步電路后的雙時(shí)鐘系統(tǒng)圖10.16所示的電路是在圖10.15的基礎(chǔ)上增加了一個(gè)新的觸發(fā)器,它由clk_b控制,從而保證了經(jīng)過(guò)觸發(fā)器處理后的data_a信號(hào)符合data_b信號(hào)的建立時(shí)間要求。
以上的例子中,兩個(gè)時(shí)鐘信號(hào)的頻率之間是整數(shù)倍關(guān)系,即clk_b的頻率是clk_a頻率的兩倍,兩者之間可
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 居家養(yǎng)老服務(wù)合同3篇
- 教育培訓(xùn)校長(zhǎng)派遣服務(wù)合同3篇
- 房屋買賣合同范本版僅供3篇
- 施工保溫合同樣本3篇
- 數(shù)碼攝影器材購(gòu)銷合同范本3篇
- 數(shù)據(jù)服務(wù)合同深入數(shù)據(jù)采集3篇
- 房屋買賣定金合同書格式3篇
- 文明交通我是小學(xué)生3篇
- 擋水墻工程承包協(xié)議樣本3篇
- 房屋買賣合同解除訴訟的法律依據(jù)3篇
- 管網(wǎng)工程施工方案
- 商店進(jìn)銷存管理系統(tǒng)
- 《mc入門教程》課件
- 泡沫瀝青就地冷再生
- 汽車概論論文-混合動(dòng)力汽車的發(fā)展現(xiàn)狀和發(fā)展趨勢(shì)
- 分布式光伏發(fā)電項(xiàng)目投標(biāo)技術(shù)方案(純方案)
- 增強(qiáng)指數(shù)策略
- 能源中國(guó)學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 寧夏困難殘疾人生活補(bǔ)貼申請(qǐng)審批表
- 2023湖南省永州市七年級(jí)上學(xué)期語(yǔ)文期末試卷及答案
- 昌建明源銷售系統(tǒng)上線培訓(xùn)
評(píng)論
0/150
提交評(píng)論