數(shù)字電路設(shè)計盲點實例與對策_第1頁
數(shù)字電路設(shè)計盲點實例與對策_第2頁
數(shù)字電路設(shè)計盲點實例與對策_第3頁
數(shù)字電路設(shè)計盲點實例與對策_第4頁
數(shù)字電路設(shè)計盲點實例與對策_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)字電路設(shè)計盲點實例與對策時間:2008-01-23 來源: 作者:宇量 點擊:1036 字體大小:【大 中 小】 介紹有關(guān)數(shù)字電路設(shè)計盲點的內(nèi)容,將分別針對Tinning、數(shù)據(jù)傳輸、消耗電流、HDL編寫等項目,輔以實例進行現(xiàn)象、原因分析以及對策探討。首先要介紹的是二進制計數(shù)器(Binary Counter)的設(shè)計。 有關(guān)Tinning的設(shè)計盲點【二進制計數(shù)器】二進制計數(shù)器經(jīng)常被用來作外部輸入脈沖的同步化,此外計數(shù)器的輸出可負(fù)載(Load)到計數(shù)器本身,如果某種原因使得同步信號消失,可因為二進制計數(shù)器持續(xù)維持輸出Tinning,直到同步信號恢復(fù)正常再度取得同步為止,而且二進制計數(shù)器具有抗噪訊特

2、性,所以是種廣被使用的電路Block?,F(xiàn)象圖1-1是典型的二進制計數(shù)器電路,該電路是將05計數(shù)(Count),將6 Counter,不過由于某種原因使得同步信號與計數(shù)器(Counter)的輸出Tinning產(chǎn)生偏差,就會像產(chǎn)生如圖1-2所示的電路輸出持續(xù)偏差現(xiàn)象。 原因分析Flip Flop可keep已負(fù)載于二進制計數(shù)器LD的信號,因此若是忘記將Flip FlopReset就會發(fā)生上述現(xiàn)象。為了符合設(shè)計規(guī)格因此利用圖1-3的二進制計數(shù)器輸出,不過由于圖1-1的電路,負(fù)載之前已將Tinning譯碼(Decoder),并用D Flip Flop將該信號延遲一位(Bit)作成Load Tinning

3、,因此某種原因使得同步信號與后段Flip Flop判定(Assert)Tinning延遲一位時,Tinning就會持續(xù)維持輸出偏差狀態(tài)。 對策根據(jù)電路Block的動作特性進行延遲計算,通常設(shè)計上不會有任何問題,因此采用如圖1-4所示的對策,如果因為負(fù)載信號的傳輸延遲造成延遲(delay),祇需在圖1-4后面的D Flip Flop作Load就可解決上述問題。圖1-1的電路原先是與圖1-3的電路相同,不過可能是進行Bread Board評鑒測試時發(fā)生譯碼錯誤(miss),或者是負(fù)載信號傳輸?shù)腖ine Delay無法滿足Set Up與Hold Tinning,因此插入D Flip Flop作Car

4、eless Miss對策?!緤A雜延遲無法提高Clock頻率】現(xiàn)象這是經(jīng)常發(fā)生的典型失敗設(shè)計實例,主要原因是計數(shù)器的Illegal State對策不當(dāng)造成Clock頻率無法提高。在理論合成階段理論壓縮的PLD,有許多情況雖然不致構(gòu)成障礙,然而實際上卻潛伏許多無法厘清盲點。圖2-1是十進制計數(shù)器設(shè)計實例,圖中的3至8 Line Decoder相當(dāng)于74137的TTL Micro。 原因分析如上所述Clock頻率無法提高,主要原因是不當(dāng)?shù)腎llegal State對策所造成。由于Illegal State對策上因為某種因,使得必要的Counter以外的值插入State,為了順利回復(fù)原正常狀態(tài)因此設(shè)置

5、Illegal State,不過該對策卻會壓迫動作性能,造成本末倒置的反效果。對策將Illegal State對策降至最小范圍,根據(jù)State Machine的情況充分檢討,設(shè)法使Clock數(shù)能回復(fù)原正常狀態(tài),且不會產(chǎn)生其它問題。尤其是二進制計數(shù)器(Binary Counter),可以應(yīng)用過去Disc Lead IC設(shè)計手法,簡化Illegal Sta te的Decoder。圖2-2是根據(jù)上述方式設(shè)計的電路圖,如圖所示Illegal State(此時為Ah以上)的Decoder是由負(fù)載條件決定,并刻意使Flip Flop的輸出變成1,再使負(fù)載條件能完全成立進行Decoder(此時為Bh,Dh,

6、Fh),進而使電路恢復(fù)正常狀態(tài)。 【計數(shù)器切換造成分布不均】現(xiàn)象為制作時間分析儀因此在輸入端分別設(shè)置可儲存檢測中的數(shù)據(jù)的計數(shù)器,以及可將數(shù)據(jù)記憶至Memory的計數(shù)器(Counter),不過由于計數(shù)器產(chǎn)生分布不均現(xiàn)象,所以無法正確檢測。時間分析儀又稱為Multi Channel Analyzer,它的主要功能是將時間分割作信號分類。圖3-1是2頻時間分析儀的Counter Channel切換電路,圖中的InO Switch是用來作初期化,圖中的下半段是產(chǎn)生頻道切換時間的電路,本電路圖是美國Beige Bag Software公司設(shè)計的 Spice A-D 2000 Versi on3.0.2。

7、Sig主要用意是希望用時間分析儀檢測的脈沖,Out1是區(qū)分成Counter U6脈沖,它是用信號Sel進行區(qū)分,當(dāng)Sel為H時利用計數(shù)器(Count er)U4計數(shù)(Count),若是L時則利用計數(shù)器(Counter)U6計數(shù)(Count)。此外脈沖在區(qū)分成U4時會讀取U6的數(shù)據(jù),脈沖在區(qū)分成U6(Out3)時會讀取U4(Out2)的數(shù)據(jù)(位圖標(biāo))。U9與U10在切換計數(shù)器(Counter)時會將U4與U6清除(Clear)。此外從計數(shù)器讀取數(shù)據(jù)后會作清除動作,因此利用U13、U16、U14產(chǎn)生Tinning信號。 原因分析輸入至Counter Clock的Selector作異步切換,造成選擇

8、(Selector)切換與Coun ter的頻率特性同時出現(xiàn),如圖3-2所示更惡劣的情況是通過切換時的切換脈沖被分?jǐn)喑蒓ut 1與Out2,形成雙重計數(shù)(Double Count)現(xiàn)象,即使使用正確的時間選擇(Selector)做切換,都無法解決上述雙重計數(shù)的問題。 圖3-2 圖3-1電路的Time Chart對策由于上述電路是以Selector作切換,所以沒有簡易的對策可供參考,必需將被測信號與系列Clock同步化(圖3-3),同時Counter也需使用同步Type,并將Counter改成一個,使頻道(Channel)切換時前頻道的計數(shù)數(shù)據(jù)(Count Data)能被Latch同時還能清除C

9、ounter。由圖3-3可知它是利用Master Clock的Mck使U3、U4、U12、U14同步動作,并利用U3、U4、U12、U14輸出的的結(jié)果,使得Mck也作能同步動作。在被測Sig的脈沖,U2的Q一旦變成H時,與Mck同步化的Out 0就成為H,在此同時U3對Out 0反轉(zhuǎn),利用輸出Q將U2清除,其結(jié)果使得Out 0對Sig的站立發(fā)生反應(yīng),輸出脈沖信號Out 0,信號與Mck同步化而且可使Clock成為H,如此便可在Mast er Clock獲得同步的被測信號Out 0,因此用U4將信號Out 0 Counter,進而獲得輸出Out 2,隨著時間切換,利用脈沖Sel可以獲得時間內(nèi)的計

10、數(shù)結(jié)果,同時還可清除(Clear)U,并開始下個檢測動作。不過必需注意的是Clear若有Out 0時會將它作1的初期化。雖然檢測脈沖在同步化后,祇檢測站立部分并將它計數(shù)(Coun t),然而實際上并非祇是單純的同步化,而是藉由Flip Flop的Clock的輸入,使得幅寬狹窄的脈沖也無法遺漏,不過作業(yè)上存有Dead Time,因此若是連續(xù)性的幅寬狹窄脈沖不斷出現(xiàn)時,上述方法就不適用,換句話說被測信號的脈沖幅寬必需是Master Clock的兩倍以上。 如圖3-4所示的Tinning,切換時的Data Latch與Clear是利用Mast Clock Mck下降執(zhí)行,所以不會影響檢測動作。Tin

11、ning除了Counter之外還具有Latch成份,因此會在下個頻道檢測中記錄(Memory)上個頻道的數(shù)據(jù)并列入計算范圍,如此一來理論上頻道之間就無任何不協(xié)調(diào),此外由于可檢測的頻率受到限制,因此可以進行正確的量測動作。 有關(guān)數(shù)據(jù)傳輸?shù)脑O(shè)計盲點【傳輸波形歪斜,通信不穩(wěn)】現(xiàn)象傳輸波形歪斜、通信狀況不穩(wěn)等問題,通常是發(fā)生在數(shù)據(jù)傳輸率極高的數(shù)字?jǐn)?shù)據(jù)傳輸線路,例如Line Drive與Receive等電路。該電路是經(jīng)由系統(tǒng)主機進行因特網(wǎng)數(shù)據(jù)傳輸,因此一般是利用包覆型電纜(Twist Pair Cable)以差動電壓作數(shù)據(jù)的收發(fā)。電壓規(guī)格則是根據(jù)EIA-485的規(guī)范,在同一傳輸線路作復(fù)數(shù)Node連接。T

12、opology是屬于包裹式Bus聯(lián)機,它的兩端是利用與Cable特性阻抗(Impedance)相同的Impedance Terminate作終端。由于傳輸距離在Net Work可能高達數(shù)公尺,機器內(nèi)部可能會遭受馬達、Solenoid等電洞(Surge)電壓的侵襲,連接器(Connector)必需承受反復(fù)插拔,基于保護Line Drive與Receive等考慮,因此插入如圖4-1所示的二極管(Diode)Clump電路,由于該二極管具備耐電洞沖擊特性,因此經(jīng)常被應(yīng)用于Switching Power Supply的電源整流。 原因分析二極管一旦被施加逆電壓時,二極管內(nèi)部的PN接合處會產(chǎn)生靜電容量,

13、進而造成Line Drive與Receive的阻抗(Impedance)受到影響。對策理論上利用Pulse Transformer作絕緣是最佳對策,不過事實上卻不易達成,因此改用PN接合處靜電容量較低的二極管作對策。由于Data Sheet并未記載有關(guān)二極管的靜電容量相關(guān)數(shù)據(jù),因此祇能依靠反復(fù)的實驗才能決定二極管的的型號。一般而言順電流的最大絕對定格值越大,相對的二極管的PN接合處面積也越大,靜電容量也隨著增大,換句話說基本上祇要選用最大絕對定格值較小的二極管即可,不過必需注意的是最大絕對定格值如果太小時,二極管較易受到電洞電壓的破壞,因此本對策采用ST Micro Electronics的D

14、A112S1 Diode Array。 【信號泄漏至鄰近頻道】現(xiàn)象隨著電路低電壓、高速化,使用傳統(tǒng)74LS系列TTL IC的機會逐年降低,不過未來仍有可能將72LS244 IC當(dāng)作輸出入的緩沖器(Buffer)。圖5-1是將72LS244 IC當(dāng)作Switch的Input使用,該電路為了減低外部噪訊混入Switch A,因此72LS244 IC附近插入防噪訊用電容(Condenser),不過當(dāng)該Switch A ON的瞬間,鄰近電路也會同時出現(xiàn)Output現(xiàn)象,最后變成設(shè)計失敗例。 原因分析原先懷疑是Switch A ON時,短暫(Transient)電流流成為Cross Talk,流入鄰近的

15、Input Line,造成鄰近電路誤動作,然而確認(rèn)噪訊Margin并無任何不妥,因此調(diào)閱Data Book檢討內(nèi)部等價電路,認(rèn)為LS-TTL的設(shè)計才是問題的根源,所以采取如圖5-2的對策,利用負(fù)的輸入電壓產(chǎn)生寄生Transistor,不過Pattern的電感(Inductance)與噪訊去除用電容所形成的LC共振電路,卻因Switch ON的動作增加額外的Step電壓變化,進而發(fā)生衰減振動造成IC的輸入電壓變化負(fù)的時間,內(nèi)部的寄生Transistor引進鄰近Gate內(nèi)部的寄生Transistor,最后導(dǎo)致鄰近電路誤動作。 對策追加衰減(Damping)電阻就可以解決Switch A ON時的誤

16、動作問題,換言之設(shè)計數(shù)字電路時除了理論計算之外,更應(yīng)充分閱讀相關(guān)的Data Book。 有關(guān)消耗電流的設(shè)計盲點【CMOS標(biāo)準(zhǔn)IC構(gòu)成的電路,消耗電流偏高】現(xiàn)象為了使電池能長時間動作,因此采用74HC系列的CMOS標(biāo)準(zhǔn)邏輯IC設(shè)計電路,不過實際上電路的消耗電流卻比預(yù)期值高。原因分析如圖6-1所示1個Package具有復(fù)數(shù)個電路,由于未使用的電路Input Pin呈開放狀,造成開放狀的Input Pin受到鄰近Pin與噪訊的影響產(chǎn)生誤動作。主要原因是CMOS邏輯IC的輸入阻抗(Impedance)非常高,加上設(shè)計者誤認(rèn)為CMOS邏輯IC的消耗電流很低,當(dāng)輸出由ON變成OFF或是由OFF變成ON時,

17、會因Switching產(chǎn)生極大電流。為了檢討上述推論因此利用圖6-2電路作測試,該電路是由74HC00 CMO S邏輯IC所構(gòu)成,NAND Gate具有四個電路,并由電池提供 Vcc=3.0V的電壓,其中一個電路的輸入端呈開放狀,輸出Pin的電壓波形 (ch1)是利用插入 Vcc的100電阻的壓降 (ch2)特性觀測,圖6-3是觀測波形的結(jié)果,由圖可知輸出Pin (ch1)的Ham出現(xiàn)高頻波噪訊重迭形狀,此時74HC00 IC內(nèi)的電流值利用100電阻兩端的電壓 (ch2) 計算約為40mA,換言之由以上的檢測結(jié)果可知,Ham對電路具有強大影響,使的電路產(chǎn)生各種變化。 對策為了讓未使用的Inpu

18、t Pin電壓Level能維持一定Level,因此將Input Pin與GND連接,如此便可解決上述問題?!驹胗嵒烊肽MCMOS邏輯混載電路,耗電量偏高】現(xiàn)象圖7-1是利用電池驅(qū)動的感測(Sensor)電路的部分電路圖,基本上它是利用OP增幅器(Amplifier)使傳感器傳來的信號(正弦波)增幅,再用74HC04邏輯IC進行感測信號同步處理,然而實際上該電路卻面臨噪訊與耗電量偏高的困擾。 原因分析主要原因是設(shè)計者誤將邏輯IC當(dāng)作是以臨界(Threshold)電壓動作的Comparator,如果仔細(xì)查閱74HC04 IC的輸出特性就可發(fā)現(xiàn),事實上輸入電壓通過74HC04 IC的臨界值附近時會產(chǎn)

19、生Chattering。圖7-2是將10kHz正弦波施加于74HC04 In put端時的耗電量特性,圖中上半段是耗電量特性的波形,下半段是輸出的波形,正弦波的中央附近亦即74HC04 IC的臨界值附近,電源電流呈脈沖狀(3s,20mA)增加,而該脈沖狀電源電流就是造成耗電量過大與發(fā)生噪訊的主要原因,值得一提的是該狀態(tài)時的74HC04 IC的電源電流平均值為0.6mA。主要原因是設(shè)計者誤將邏輯IC當(dāng)作是以臨界(Threshold)電壓動作的Comparator,如果仔細(xì)查閱74HC04 IC的輸出特性就可發(fā)現(xiàn),事實上輸入電壓通過74HC04 IC的臨界值附近時會產(chǎn)生Chattering。圖7-

20、2是將10kHz正弦波施加于74HC04 In put端時的耗電量特性,圖中上半段是耗電量特性的波形,下半段是輸出的波形,正弦波的中央附近亦即74HC04 IC的臨界值附近,電源電流呈脈沖狀(3s,2 0mA)增加,而該脈沖狀電源電流就是造成耗電量過大與發(fā)生噪訊的主要原因,值得一提的是該狀態(tài)時的74HC04 IC的電源電流平均值為0.6mA。 對策模擬信號必需通過Comparator才能輸入至74HC04 IC,不過卻不可使High或是Low以外的信號流入邏輯電路內(nèi)。圖7-1的電路更換兩個OP增幅器(Amplifier)替代品,其中一個使用Comparator,類似如此的設(shè)計可能是基于用途上的

21、考慮。在一個封裝Package設(shè)有兩個OP增幅IC,可使用MAX951之類OP增幅器與Comparator合成的標(biāo)準(zhǔn)組件,也可以利用Schmidt Trigger Input組件,不過這類組件具備兩種臨界(Threshold)電壓,因此對要求精密Tinning的場合,必需考慮圖7-3的 信號延遲問題。 【Schmidt Input IC耗電量過高】現(xiàn)象基本上它是使用多顆74HC系列的IC進行Tinning電路測試,不過實際上卻發(fā)生耗電量過高問題,耗電量過高對電源為3V定格鋰離子電池而言,可說是致命性的困擾,然而簡討導(dǎo)線Layout卻未發(fā)現(xiàn)任何不妥,因而懷疑是IC初期特性不良所造成,然而更換IC

22、后情況并未改善。原因分析主要原因是該電路內(nèi)設(shè)有使用Schmidt Input Gate IC所構(gòu)成的低頻振蕩電路(圖8-1),因此祇要將該Gate IC拔除,耗電量立即大幅下降。換句話說利用單一的Gate制作振蕩電路,如何避免頻率與Duty比的變化不會造成問題,成為設(shè)計上的重點。由于該振蕩電路的復(fù)歸阻抗為1M,因此即使作短路處理理論上祇能獲得3V,3A的電流,不過經(jīng)過電路振蕩后上述電流會提高近100倍左右。 對策為了要驗證該振蕩電路是造成耗電量增加的推論,因此另外組裝電路作測試,該電路使用74HC14與4584 IC,復(fù)原阻抗為1M,輸入Pin的Tinning電容為0.1F。表8-1是電源電壓

23、變化時的振蕩頻率變化特性。由于輸入Pin的電壓非常接近臨界(Threshold)電壓Level,因此輸出反轉(zhuǎn)之前的電流會變大,換句話說以往CMOS低消耗電流的觀念,在類似振蕩電路等具有模擬要素的電路上未必適用,有鑒于此利用4000號系列標(biāo)準(zhǔn)CMOS臨界(Threshold)Input IC4093,取代74HC 132 IC構(gòu)成的振蕩電路,雖然4000號系列標(biāo)準(zhǔn)CMOS邏輯IC的最低動作電壓為3V,不過即使該IC的電氣特性惡化,電壓低于3V也能動作。事實上并非祇有利用臨界(Threshold)Input IC構(gòu)成的振蕩電路消耗電流會增加,例如附有大CR時定數(shù)的Chartering去除電路,或是

24、將臨界(Threshold)Input IC當(dāng)作無法確定H/L的模擬信號轉(zhuǎn)換成數(shù)字信號的Comparator使用時更需注意上述問的題。23個Inverter直列并排,再用電阻與電容施加于復(fù)歸振蕩電路,如此一來在振蕩的同時就可作模擬性的動作,且74HC系列的IC電流值往往大于預(yù)期值。 有關(guān)HDL編寫的盲點【異步信號輸入State Machine,信號就遷移至Illegal State】現(xiàn)象利用PDL設(shè)計State Machine時,如果未將State Machine的信號與Clock作同步直接連接的話,當(dāng)Input信號的遷移接近Clock的有效Edge時,Input信號經(jīng)常會遷移至Illegal

25、 State。例如根據(jù)List 9-1設(shè)計成圖9-1的電路,圖9-2就成為該電路的狀態(tài)遷移圖,在圖9-2以State名稱敘述值是程序編寫器(Compiler)將Sta te Encoding轉(zhuǎn)寫的結(jié)果。上述設(shè)計由于兩個Resistor都成為1的狀態(tài)無法使用,因此該狀態(tài)成為Illegal State。 原因分析圖9-1的電路中具有復(fù)數(shù)個sw輸入信號傳輸至Resistor的路徑,各路徑的傳輸延遲時間即使是極微小差異,Resistor的Set Up時間就會產(chǎn)生極大的不同。例如圖9-1的電路,當(dāng)sw信號為1 (H Level)時,假設(shè)某個Tinning的Clock的有效Ed ge可使上方的Resist

26、or保持0,使下方的Resistor保持1,如此一來1會傳輸至上方的Resistor,0會傳輸至下方的Resistor,理論上在下個Clock的有效Edge ,Resistor會將該值Keep住,不過若在這之前如果sw信號變成0(L Level ),上方Register輸入端子的信號會從1變成0,下方Resistor輸入端子的信號則從0變成1,此時如果上方Resistor輸入端子的信號變化,因Clock的有效Edge發(fā)生微小的延遲,則上方Resistor會維持1,使的上、下方的Resistor都變成1,這種現(xiàn)象稱為Illegal State,直到sw信號回復(fù)成為1為止持續(xù)維持Illegal S

27、tate狀態(tài)。對策上述現(xiàn)象是因為輸入信號與Clock變化非常接近所造成,因此對策上必需使輸入信號與Clock同步,其結(jié)果如List9-2所示。實際上這種現(xiàn)象并非祇有State Mac hine才會發(fā)生,一般而言同步電路都有可能發(fā)生相同問題,換句話在說同步電路中如何使輸入信號與Clock同步化是同步設(shè)計的基本原則(Rule)。【利用PLD制作One Shot Timer的輸出,在PLD內(nèi)部再利用時發(fā)生Tinning偏差】 現(xiàn)象List10-1是將電阻與電容器連接于PLD的外部,作成One Shot Timer時,利用ABEL編寫的程序部份摘要,圖10-1是根據(jù)該程序合成的電路。該電路可以檢測CL

28、K端子的站立Edge,再輸出一定時間的脈沖,由于CLK端子的站立,D Flip F lop的輸出變成H Level,如此一來由于CR端子變成高阻抗(High Impedance),因此電容器通過電阻進行充電,當(dāng)電容的電位上升后D Flip Flop的ACLR成為Active,D Flip Flop被Reset輸出Q成為H Level,R端子也成為H Level,電容器(Capacitor)開始放電。雖然電路單獨狀態(tài)時的動作都很正常,不過該電路的Output信號在內(nèi)部再使用時就發(fā)生困擾(Trouble)。PLD的Macro cell的Output信號經(jīng)常會在內(nèi)部再度被使用時,而實際上到底使用多少

29、的Product Term,若不詳閱程序編寫器(Compiler)的Report根本無法清楚掌握重點。正因如此上述Trouble是因為再度使用Output信號的各電路,針對Output信號動作的Tinning產(chǎn)生偏差所造成。 原因分析10-1是根據(jù)程序編寫器(Compiler)合成的復(fù)數(shù)電路,是造成上述Trouble主要原因,具體而言由于Source Code并非敘述單一程序,而且還將Output信號應(yīng)用于復(fù)數(shù)電路,再將這些電路跨越其它邏輯Block,最后當(dāng)然會形成如圖10-1所示的復(fù)數(shù)電路。由于CR端子祇有一個,與外部連接的電阻與電容也都祇有一個,也就是說CR端子的Feed Back必需與復(fù)

30、數(shù)個D Flip Flop的ACLR連接,CR端子的電壓是屬于緩慢變化的信號,因此被各D Flip Flop Reset的Tinning就產(chǎn)生差異。對策最簡單的對策就是不將Out信號當(dāng)作Feed Back應(yīng)用于內(nèi)部,在外部與其它Input Pin連接,如此一來Out put信號祇對外部輸出,進而形成一個合成電路?!纠肅PLD設(shè)計的Port執(zhí)行位操作指令時,機器發(fā)生誤動作】現(xiàn)象利用PLD設(shè)計如圖11-1所示的Micro Computer外部擴充I/O Port,PLD的內(nèi)部電路是用VHDL編寫,List11-1是部份程序摘要,圖11-2是是根據(jù)該程序合成的電路,Output Port是用Clo

31、ck同步方式設(shè)計,相當(dāng)于第6行到第6行的Process敘述,同步Clock主要是應(yīng)用于CPU周邊電路的Output System,因此信號的名稱又稱為CLK。該Output Port被設(shè)計成可作Lead Back,相當(dāng)于第20行到第41行的Process敘述。 上述設(shè)計主要是針對機器的控制器,因此輸出入信號的名稱直接使用機器的驅(qū)動器(Actuator)名稱,例如第9行的DCM1CW_fb信號名稱,是使DC馬達初始朝時鐘方向(CW)旋轉(zhuǎn)的信號。不過實際上電路動作時,DC馬達初始動作卻經(jīng)常發(fā)生問題(Trouble)。原因分析主要原因是利用CPLD制成的Lead Back電路的程序敘述有瑕疵(Bug

32、)。具體而言在第9行Output Port的Data位0,分配有DCM1CW_fb信號,然而在第31行Input Port的的DATA的位0,卻又分配DCM1CCW_fb信號,也就是說Output Port與Inp ut Port的位0與位1信號名稱分配不一致,所以當(dāng)MicroComputer執(zhí)行位操作指令時便發(fā)生問題,因為位操作指令會從指定的地址(Address)將數(shù)據(jù)讀入Resistor,接著針對Resistor的數(shù)據(jù)將指定的位Set至指定值,之后便執(zhí)行將Resistor的數(shù)據(jù)寫入原地址的動作,亦即進行與Memory的位操作相同的Lead Modify Light動作 。對策最根本的對策是

33、修改Source Code,將第31行的DCM1CW_fb與DCM1CCW_fb兩者對調(diào)使動作恢復(fù)正常。為了防范未然HDL(Hardware Description Language)的敘述方式盡可能單純化,具體實例如下: 信號名稱不要太復(fù)雜以上述的例子而言盡量避免使用與機器組件相關(guān)的名稱,改用地址與位等單純的信號名稱。 盡量避免將std_logic連結(jié)代入std_logic_vector,不得以時則用元方式替代,就可避免發(fā)生上述的錯誤?!綜lock同步式的Latch經(jīng)常發(fā)生怪異值,如何Latch】現(xiàn)象List12-1是利用ABEL設(shè)計PLD的程序產(chǎn)生Clock同步式Latch的實例,理論上根

34、據(jù)該List應(yīng)該可以合成如圖12-1所示的電路,然而實際上電路卻不動作。 原因分析List12-1的敘述中第19行代入式右邊Q0信號名稱卻未添加擴充子,造成未明示到底是Register Feed Back或是Pin Feed Back的困擾。由于程序編寫器(Compi le)解釋成Pin Feed Back,依此合成圖12-1的電路是造成問題的主要原因。List12-2是Therinks公司的WebPackISE,經(jīng)過程序編寫(Compile)時的部份Report File,由該List可知Q0.D的代入式右邊使用Q0.PIN。在圖12-2的電路為0(L Level)時,Resistor Fe

35、ed Back與Pin Feed Back的值不一致,因此即使LE變成1(H Level),Resistor的值無法被Latch,因為隨著與Q0連接的外部電路電壓Level變化,Resistor的值也跟著改變。 List12-2 Therinks公司的WebPackISE經(jīng)過 對策正確的敘述方法如List12-3所示,添加擴充子明示Resistor Feed Back,具體內(nèi)容是在第19行代入式右邊Q0的信號名稱,.fb就是該信號名稱。圖12-2是根據(jù)該程序合成的電路,List12-4是用WebPackISE將List12-3 Compile時的部份Re port File,由該List可知Q

36、0.D的代入式右邊使用Q0.Q,所謂的.Q是明示Resistor Feed Back的擴充子,這種方式經(jīng)常出現(xiàn)在ABEL的Source Code。.Q與.fb最大差異是.Q祇能用于Resistor Output的Feed Back,而.fb卻可用Combina tion Output的Feed Back,所謂的Combination是指組合理論電路的輸(Output),例如List12-1的第12行的istypereg雖然是表示Resistor Output,然而Combination Output的場合卻變成istypecom 【算數(shù)演算Package變成Compile】現(xiàn)象利用VHDL設(shè)計

37、PDL將List13-1的Source Code Compile時發(fā)生錯誤(Error)。List13-2是Therinks公司的WebPackISE,經(jīng)過程序編寫(Compile)時的部份Rep ort File,由該List可知錯誤的原因可能是利用第25,26,31,32行的程序進行算數(shù)演算時出現(xiàn)Error,不過第3行卻可叫出算數(shù)演算Package std_logic_ arith。 List13-2 用WebPackISE將List13-1 Compile時的部份Report File原因分析雖然std_logic_arith是屬于可以演算signed與unsigned兩者的算數(shù)演算Pa

38、ckage,不過卻無法直接處理std_logic_vector的數(shù)據(jù)形式(Data Type),是發(fā)生問題的主要原因。對策最簡單的對策是在第3行將呼叫Package,變更成std_logic_unsigned或是std_ logic_signed。以List13-1為例如果要將Input的A與B、Output的C以無碼方式處理,祇需將第3行的敘述更改成如下所示即可。 Use IEEE.std_logic_unsigned.all;另一種對策是將算數(shù)演算的信號從std_logic_vector的數(shù)據(jù)形式變更成signed或是unsigned。以List13-3而言是在第17行以unsigned宣

39、示算數(shù)演算的信號,接著在第21行與第22行代入A與B,由于無法直接將std_logic_vector直接代入unsigned,所以連結(jié)std_logic后才代入。實際上進行算數(shù)演算時是使用第28,29,34,35右邊unsigned的信號,此時未作數(shù)據(jù)形式轉(zhuǎn)換直接將unsigned代入std_logic_vector,不過由于進行理論演算的3033行無法使用unsigned,因此改用std_logic_vector。 還有一種對策是使用Type變換關(guān)數(shù)法,List13-4就是使用變換關(guān)數(shù)法的例子,具體方法是利用25,26,31,32行所謂的unsigned Type變換關(guān)數(shù),將std_lo g

40、ic_vector變換成unsigned,由于這些關(guān)數(shù)包含在std_logic_arith Package內(nèi),所以并不需要呼叫其它的Package。 【利用16進位敘述Counter值就發(fā)生錯誤】現(xiàn)象接著要介紹利用VHDL設(shè)計邏輯電路經(jīng)常發(fā)生的錯誤。List14-1是敘述Counter的實例,由于Counter的位數(shù)非常多,如果用2進位敘述Counter相當(dāng)煩瑣,所以改用16進位敘述,例如List14-1的第31行ADD_fb信號是16位std_logic_vect or,如果用2進位敘述則多達16行,而16進位祇有4行,不過將List14-1Compile會因用Compiler會產(chǎn)生Error。原因分析主要原因是std_logic_vector祇允許2進位敘述,雖然某些程序編寫器(Compil er)允許這種方式,不過卻很容易發(fā)生錯誤(Error)。std_logic_vector祇允許2進位主要原因是std_logic的抓取值是0與1之外的數(shù)字,List14-1表示std_logi c的抓取值,由List可知該值表示邏輯

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論