08基础电路设计八数位电路设计盲点实例与对策Word格式.docx
- 文档编号:20329734
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:46
- 大小:998.96KB
08基础电路设计八数位电路设计盲点实例与对策Word格式.docx
《08基础电路设计八数位电路设计盲点实例与对策Word格式.docx》由会员分享,可在线阅读,更多相关《08基础电路设计八数位电路设计盲点实例与对策Word格式.docx(46页珍藏版)》请在冰豆网上搜索。
二進位計數器經常被用來作外部輸入脈衝的同步化,此外計數器的輸出可負載(Load)到計數器本身,如果某種原因使得同步信號消失,可因為二進位計數器持續維持輸出Tinning,直到同步信號恢復正常再度取得同步為止,而且二進位計數器具有抗噪訊特性,所以是種廣被使用的電路Block。
※現象
圖1-1是典型的二進位計數器電路,該電路是將0~5計數(Count),將6Counter,不過由於某種原因使得同步信號與計數器(Counter)的輸出Tinning產生偏差,就會像產生如圖1-2所示的電路輸出持續偏差現象。
※原因分析
FlipFlop可keep已負載於二進位計數器LD的信號,因此若是忘記將「FlipFlop」Reset就會發生上述現象。
為了符合設計規格因此利用圖1-3的二進位計數器輸出,不過由於圖1-1的電路,負載之前已將Tinning解碼(Decoder),並用DFlipFlop將該信號延遲一位元(Bit)作成LoadTinning,因此某種原因使得同步信號與後段FlipFlop判定(Assert)Tinning延遲一位元時,Tinning就會持續維持輸出偏差狀態。
※對策
根據電路Block的動作特性進行延遲計算,通常設計上不會有任何問題,因此採用如圖1-4所示的對策,如果因為負載信號的傳輸延遲造成延遲(delay),祇需在圖1-4後面的DFlipFlop作Load就可解決上述問題。
圖1-1的電路原先是與圖1-3的電路相同,不過可能是進行BreadBoard評鑑測試時發生解碼錯誤(miss),或者是負載信號傳輸的LineDelay無法滿足SetUp與HoldTinning,因此插入DFlipFlop作CarelessMiss對策。
【夾雜延遲無法提高Clock頻率】
這是經常發生的典型失敗設計實例,主要原因是計數器的IllegalState對策不當造成Clock頻率無法提高。
在理論合成階段理論壓縮的PLD,有許多情況雖然不致構成障礙,然而實際上卻潛伏許多無法釐清盲點。
圖2-1是十進位計數器設計實例,圖中的3至8LineDecoder相當於74137的TTLMicro。
如上所述Clock頻率無法提高,主要原因是不當的IllegalState對策所造成。
由於IllegalState對策上因為某種因,使得必要的Counter以外的值插入State,為了順利回復原正常狀態因此設置IllegalState,不過該對策卻會壓迫動作性能,造成本末倒置的反效果。
將IllegalState對策降至最小範圍,根據StateMachine的情況充分檢討,設法使Clock數能回復原正常狀態,且不會產生其它問題。
尤其是二進位計數器(BinaryCounter),可以應用過去DiscLeadIC設計手法,簡化IllegalState的Decoder。
圖2-2是根據上述方式設計的電路圖,如圖所示IllegalState(此時為Ah以上)的Decoder是由負載條件決定,並刻意使FlipFlop的輸出變成1,再使負載條件能完全成立進行Decoder(此時為Bh,Dh,Fh),進而使電路恢復正常狀態。
【計數器切換造成分佈不均】
為製作時間分析儀因此在輸入端分別設置可儲存檢測中的資料的計數器,以及可將資料記憶至Memory的計數器(Counter),不過由於計數器產生分佈不均現象,所以無法正確檢測。
時間分析儀又稱為「MultiChannelAnalyzer」,它的主要功能是將時間分割作信號分類。
圖3-1是2頻時間分析儀的CounterChannel切換電路,圖中的InOSwitch是用來作初期化,圖中的下半段是產生頻道切換時間的電路,本電路圖是美國BeigeBagSoftware公司設計的SpiceA-D2000Version3.0.2。
Sig主要用意是希望用時間分析儀檢測的脈衝,Out1是區分成CounterU6脈衝,它是用信號Sel進行區分,當Sel為「H」時利用計數器(Counter)U4計數(Count),若是「L」時則利用計數器(Counter)U6計數(Count)。
此外脈衝在區分成U4時會讀取U6的資料,脈衝在區分成U6(Out3)時會讀取U4(Out2)的資料(位圖示)。
U9與U10在切換計數器(Counter)時會將U4與U6清除(Clear)。
此外從計數器讀取資料後會作清除動作,因此利用U13、U16、U14產生Tinning信號。
輸入至CounterClock的Selector作非同步切換,造成選擇(Selector)切換與Counter的頻率特性同時出現,如圖3-2所示更惡劣的情況是通過切換時的切換脈衝被分斷成Out1與Out2,形成雙重計數(DoubleCount)現象,即使使用正確的時間選擇(Selector)做切換,都無法解決上述雙重計數的問題。
圖3-2圖3-1電路的TimeChart
由於上述電路是以Selector作切換,所以沒有簡易的對策可供參考,必需將被測信號與系列Clock同步化(圖3-3),同時Counter也需使用同步Type,並將Counter改成一個,使頻道(Channel)切換時前頻道的計數資料(CountData)能被Latch同時還能清除Counter。
由圖3-3可知它是利用MasterClock的Mck使U3、U4、U12、U14同步動作,並利用U3、U4、U12、U14輸出的的結果,使得Mck也作能同步動作。
在被測Sig的脈衝,U2的Q一旦變成H時,與Mck同步化的Out0就成為H,在此同時U3對Out0反轉,利用輸出Q將U2清除,其結果使得Out0對Sig的站立發生反應,輸出脈衝信號Out0,信號與Mck同步化而且可使Clock成為H,如此便可在MasterClock獲得同步的被測信號Out0,因此用U4將信號Out0Counter,進而獲得輸出Out2,隨著時間切換,利用脈衝Sel可以獲得時間內的計數結果,同時還可清除(Clear)U,,並開始下個檢測動作。
不過必需注意的是Clear若有Out0時會將它作1的初期化。
雖然檢測脈衝在同步化後,祇檢測站立部分並將它計數(Count),然而實際上並非祇是單純的同步化,而是藉由FlipFlop的Clock的輸入,使得幅寬狹窄的脈衝也無法遺漏,不過作業上存有DeadTime,因此若是連續性的幅寬狹窄脈衝不斷出現時,上述方法就不適用,換句話說被測信號的脈衝幅寬必需是MasterClock的兩倍以上。
如圖3-4所示的Tinning,切換時的DataLatch與Clear是利用MastClockMck下降執行,所以不會影響檢測動作。
Tinning除了Counter之外還具有Latch成份,因此會在下個頻道檢測中記錄(Memory)上個頻道的資料並列入計算範圍,如此一來理論上頻道之間就無任何不協調,此外由於可檢測的頻率受到限制,因此可以進行正確的量測動作。
有關資料傳輸的設計盲點
【傳輸波形歪斜,通信不穩】
※現象
傳輸波形歪斜、通信狀況不穩等問題,通常是發生在資料轉送率極高的數位資料傳輸線路,例如LineDrive與Receive等電路。
該電路是經由系統主機進行網際網路資料傳輸,因此一般是利用包覆型電纜(TwistPairCable)以差動電壓作資料的收發。
電壓規格則是根據EIA-485的規範,在同一傳輸線路作複數Node連接。
Topology是屬於包裹式Bus連線,它的兩端是利用與Cable特性阻抗(Impe
dance)相同的ImpedanceTerminate作終端。
由於傳輸距離在NetWork可能高達數公尺,機器內部可能會遭受馬達、Solenoid等電洞(Surge)電壓的侵襲,連接器(Connector)必需承受反覆插拔,基於保護LineDrive與Receive等考量,因此插入如圖4-1所示的二極體(Diode)Clump電路,由於該二極體具備耐電洞衝擊特性,因此經常被應用於SwitchingPowerSupply的電源整流。
二極體一旦被施加逆電壓時,二極體內部的PN接合處會產生靜電容量,進而造成LineDrive與Receive的阻抗(Impedance)受到影響。
理論上利用PulseTransformer作絕緣是最佳對策,不過事實上卻不易達成,因此改用PN接合處靜電容量較低的二極體作對策。
由於DataSheet並未記載有關二極體的靜電容量相關資料,因此祇能依靠反覆的實驗才能決定二極體的的型號。
一般而言順電流的最大絕對定格值越大,相對的二極體的PN接合處面積也越大,靜電容量也隨著增大,換句話說基本上祇要選用最大絕對定格值較小的二極體即可,不過必需注意的是最大絕對定格值如果太小時,二極體較易受到電洞電壓的破壞,因此本對策採用STMicroElectronics的DA112S1DiodeArray。
【信號洩漏至鄰近頻道】
隨著電路低電壓、高速化,使用傳統74LS系列TTLIC的機會逐年降低,不過未來仍有可能將72LS244IC當作輸出入的緩衝器(Buffer)。
圖5-1是將72LS244IC當作Switch的Input使用,該電路為了減低外部噪訊混入SwitchA,因此72LS244IC附近插入防噪訊用電容(Condenser),不過當該SwitchAON的瞬間,鄰近電路也會同時出現Output現象,最後變成設計失敗例。
原先懷疑是SwitchAON時,短暫(Transient)電流流成為CrossTalk,流入鄰近的InputLine,造成鄰近電路誤動作,然而確認噪訊Margin並無任何不妥,因此調閱DataBook檢討內部等價電路,認為LS-TTL的設計才是問題的根源,所以採取如圖5-2的對策,利用負的輸入電壓產生寄生Transistor,不過Pattern的電感(Inductance)與噪訊去除用電容所形成的LC共振電路,卻因SwitchON的動作增加額外的Step電壓變化,進而發生衰減振動造成IC的輸入電壓變化負的時間,內部的寄生Transistor引進鄰近Gate內部的寄生Transistor,最後導致鄰近電路誤動作。
追加衰減(Damping)電阻就可以解決SwitchAON時的誤動作問題,換言之設計數位電路時除了理論計算之外,更應充分閱讀相關的DataBook。
有關消耗電流的設計盲點
【CMOS標準IC構成的電路,消耗電流偏高】
為了使電池能長時間動作,因此採用74HC系列的CMOS標準邏輯IC設計電路,不過實際上電路的消耗電流卻比預期值高。
如圖6-1所示1個Package具有複數個電路,由於未使用的電路InputPin呈開放狀,造成開放狀的InputPin受到鄰近Pin與噪訊的影響產生誤動作。
主要原因是CMOS邏輯IC的輸入阻抗(Impedance)非常高,加上設計者誤認為CMOS邏輯IC的消耗電流很低,當輸出由ON變成OFF或是由OFF變成ON時,會因Switching產生極大電流。
為了檢討上述推論因此利用圖6-2電路作測試,該電路是由74HC00CMOS邏輯IC所構成,NANDGate具有四個電路,並由電池提供Vcc=3.0V的電壓,其中一個電路的輸入端呈開放狀,輸出Pin的電壓波形(ch1)是利用插入Vcc的100Ω電阻的壓降
(ch2)特性觀測,圖6-3是觀測波形的結果,由圖可知輸出Pin
(ch1)的Ham出現高頻波噪訊重疊形狀,此時74HC00IC內的電流值利用100Ω電阻兩端的電壓(ch2)計算約為40mA,換言之由以上的檢測結果可知,Ham對電路具有強大影響,使的電路產生各種變化。
為了讓未使用的InputPin電壓Level能維持一定Level,因此將InputPin與GND連接,如此便可解決上述問題。
【噪訊混入類比CMOS邏輯混載電路,耗電量偏高】
圖7-1是利用電池驅動的感測(Sensor)電路的部分電路圖,基本上它是利用OP增幅器(Amplifier)使感測器傳來的信號(正弦波)增幅,再用74HC04邏輯IC進行感測信號同步處理,然而實際上該電路卻面臨噪訊與耗電量偏高的困擾。
主要原因是設計者誤將邏輯IC當作是以臨界(Threshold)電壓動作的Comparator,如果仔細查閱74HC04IC的輸出特性就可發現,事實上輸入電壓通過74HC04IC的臨界值附近時會產生Chattering。
圖7-2是將10kHz正弦波施加於74HC04Input端時的耗電量特性,圖中上半段是耗電量特性的波形,下半段是輸出的波形,正弦波的中央附近亦即74HC04IC的臨界值附近,電源電流呈脈衝狀(3μs,20mA)增加,而該脈衝狀電源電流就是造成耗電量過大與發生噪訊的主要原因,值得一提的是該狀態時的74HC04IC的電源電流平均值為0.6mA。
類比信號必需通過Comparator才能輸入至74HC04IC,不過卻不可使High或是Low以外的信號流入邏輯電路內。
圖7-1的電路更換兩個OP增幅器(Amplifier)替代品,其中一個使用Comparator,類似如此的設計可能是基於用途上的考量。
在一個封裝Package設有兩個OP增幅IC,可使用MAX951之類OP增幅器與Comparator合成的標準元件,也可以利用SchmidtTriggerInput元件,不過這類元件具備兩種臨界(Threshold)電壓,因此對要求精密Tinning的場合,必需考慮圖7-3的信號延遲問題。
【SchmidtInputIC耗電量過高】
基本上它是使用多顆74HC系列的IC進行Tinning電路測試,不過實際上卻發生耗電量過高問題,耗電量過高對電源為3V定格鋰離子電池而言,可說是致命性的困擾,然而簡討導線Layout卻未發現任何不妥,因而懷疑是IC初期特性不良所造成,然而更換IC後情況並未改善。
主要原因是該電路內設有使用SchmidtInputGateIC所構成的低頻振盪電路(圖8-1),因此祇要將該GateIC拔除,耗電量立即大幅下降。
換句話說利用單一的Gate製作振盪電路,如何避免頻率與Duty比的變化不會造成問題,成為設計上的重點。
由於該振盪電路的復歸阻抗為1MΩ,因此即使作短路處理理論上祇能獲得3V,3μA的電流,不過經過電路振盪後上述電流會提高近100倍左右。
為了要驗證該振盪電路是造成耗電量增加的推論,因此另外組裝電路作測試,該電路使用74HC14與4584IC,復原阻抗為1MΩ,輸入Pin的Tinning電容為0.1μF。
表8-1是電源電壓變化時的振盪頻率變化特性。
由於輸入Pin的電壓非常接近臨界(Threshold)電壓Level,因此輸出反轉之前的電流會變大,換句話說以往CMOS低消耗電流的觀念,在類似振盪電路等具有類比要素的電路上未必適用,有鑑於此利用4000號系列標準CMOS臨界(Threshold)InputIC4093,取代74HC132IC構成的振盪電路,雖然4000號系列標準CMOS邏輯IC的最低動作電壓為3V,不過即使該IC的電氣特性惡化,電壓低於3V也能動作。
事實上並非祇有利用臨界(Threshold)InputIC構成的振盪電路消耗電流會增加,例如附有大CR時定數的Chartering去除電路,或是將臨界(Threshold)InputIC當作無法確定H/L的類比信號轉換成數位信號的Comparator使用時更需注意上述問的題。
2~3個Inverter直列並排,再用電阻與電容施加於復歸振盪電路,如此一來在振盪的同時就可作類比性的動作,且74HC系列的IC電流值往往大於預期值。
有關HDL編寫的盲點
【非同步信號輸入StateMachine,信號就遷移至IllegalState】
利用PDL設計StateMachine時,如果未將StateMachine的信號與Clock作同步直接連接的話,當Input信號的遷移接近Clock的有效Edge時,Input信號經常會遷移至IllegalState。
例如根據List9-1設計成圖9-1的電路,圖9-2就成為該電路的狀態遷移圖,在圖9-2以State名稱敘述值是程式編寫器(Compiler)將StateEncoding轉寫的結果。
上述設計由於兩個Resistor都成為1的狀態無法使用,因此該狀態成為IllegalState。
圖9-1的電路中具有複數個sw輸入信號傳輸至Resistor的路徑,各路徑的傳輸延遲時間即使是極微小差異,Resistor的SetUp時間就會產生極大的不同。
例如圖9-1的電路,當sw信號為1(HLevel)時,假設某個Tinning的Clock的有效Edge可使上方的Resistor保持0,使下方的Resistor保持1,如此一來1會傳輸至上方的Resistor,0會傳輸至下方的Resistor,理論上在下個Clock的有效Edge,Resistor會將該值Keep住,不過若在這之前如果sw信號變成0(LLevel),上方Register輸入端子的信號會從1變成0,下方Resistor輸入端子的信號則從0變成1,此時如果上方Resistor輸入端子的信號變化,因Clock的有效Edge發生微小的延遲,則上方Resistor會維持1,使的上、下方的Resistor都變成1,這種現象稱為「IllegalState」,直到sw信號回復成為1為止持續維持IllegalState狀態。
上述現象是因為輸入信號與Clock變化非常接近所造成,因此對策上必需使輸入信號與Clock同步,其結果如List9-2所示。
實際上這種現象並非祇有StateMachine才會發生,一般而言同步電路都有可能發生相同問題,換句話在說同步電路中如何使輸入信號與Clock同步化是同步設計的基本原則(Rule)。
【利用PLD製作OneShotTimer的輸出,在PLD內部再利用時發生Tinning偏差】
※
現象
List10-1是將電阻與電容器連接於PLD的外部,作成OneShotTimer時,利用ABEL編寫的程式部份摘要,圖10-1是根據該程式合成的電路。
該電路可以檢測CLK端子的站立Edge,再輸出一定時間的脈衝,由於CLK端子的站立,DFlipFlop的輸出變成HLevel,如此一來由於CR端子變成高阻抗(HighImpedance),因此電容器通過電阻進行充電,當電容的電位上升後DFlipFlop的ACLR成為Active,DFlipFlop被Reset輸出Q成為HLevel,R端子也成為HLevel,電容器(Capacitor)開始放電。
雖然電路單獨狀態時的動作都很正常,不過該電路的Output信號在內部再使用時就發生困擾(Trouble)。
PLD的Macrocell的Output信號經常會在內部再度被使用時,而實際上到底使用多少的ProductTerm,若不詳閱程式編寫器(Compiler)的Report根本無法清楚掌握重點。
正因如此上述Trouble是因為再度使用Output信號的各電路,針對Output信號動作的Tinning產生偏差所造成。
10-1是根據程式編寫器(Compiler)合成的複數電路,是造成上述Trouble主要原因,具體而言由於SourceCode並非敘述單一程式,而且還將Output信號應用於複數電路,再將這些電路跨越其它邏輯Block,最後當然會形成如圖10-1所示的複數電路。
由於CR端子祇有一個,與外部連接的電阻與電容也都祇有一個,也就是說CR端子的FeedBack必需與複數個DFlipFlop的ACLR連接,CR端子的電壓是屬於緩慢變化的信號,因此被各DFlipFlopReset的Tinning就產生差異。
最簡單的對策就是不將Out信號當作FeedBack應用於內部,在外部與其它InputPin連接,如此一來Output信號祇對外部輸出,進而形成一個合成電路。
【利用CPLD設計的Port執行位元操作指令時,機器發生誤動作】
利用PLD設計如圖11-1所示的MicroComputer外部擴充I/OPort,PLD的內部電路是用VHDL編寫,List11-1是部份程式摘要,圖11-2是是根據該程式合成的電路,OutputPort是用Clock同步方式設計,相當於第6行到第6行的Process敘述,同步Clock主要是應用於CPU周邊電路的OutputSystem,因此信號的名稱又稱為CLK。
該OutputPort被設計成可作LeadBack,相當於第20行到第41行的Process敘述。
上述設計主要是針對機器的控制器,因此輸出入信號的名稱直接使用機器的驅動器(Actuator)名稱,例如第9行的DCM1CW_fb信號名稱,是使DC馬達初始朝時鐘方向(CW)旋轉的信號。
不過實際上電路動作時,DC馬達初始動作卻經常發生問題(Trouble)。
主要原因是利用CPLD製成的LeadBack電路的程式敘述有瑕疵(Bug)。
具體而言在第9行OutputPort的Data位元0,分配有DCM1CW_fb信號,然而在第31行InputPort的的DATA的位元0,卻又分配DCM1CCW_fb信號,也就是說OutputPort與InputPort的位元0與位元1信號名稱分配不一致,所以當MicroComputer執行位元操作指令時便發生問題,因為位元操作指令會從指定的位址(Address)將資料讀入Resistor,接著針對Resistor的資料將指定的位元Set至指定值,之後便執行「將Resistor的資料寫入原位址」的動作,亦即進行與Memory的位元操作相同的LeadModifyLight
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 08 基础 电路设计 数位 盲点 实例 对策
![提示](https://static.bdocx.com/images/bang_tan.gif)