<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 數(shù)字電路之時序電路

          數(shù)字電路之時序電路

          作者: 時間:2017-10-27 來源:網(wǎng)絡(luò) 收藏

            在之如雷貫耳的“邏輯電路”》、之?dāng)?shù)字集成電路IC》之后,本文是入門3,將帶來「」的講解,及其核心部件的工作原理。什么是?

          本文引用地址:http://www.ex-cimer.com/article/201710/368894.htm

            上期學(xué)過的「組合電路」是根據(jù)當(dāng)前輸入信號的組合來決定輸出電平的電路。換言之,就是現(xiàn)在的輸出不會被過去的輸入所左右,也可以說成是,過去的輸入狀態(tài)對現(xiàn)在的輸出狀態(tài)沒有影響的電路。

            這次講解的「」和「組合電路」不同?!笗r序電路」的輸出不僅受現(xiàn)在輸入狀態(tài)的影響,還要受過去輸入狀態(tài)的影響。

            那么,如何才能將過去的輸入狀態(tài)反映到現(xiàn)在的輸出上呢?「時序電路」到底需要些什么呢?人類總是根據(jù)過去的經(jīng)驗,決定現(xiàn)在的行動,這時我們需要的就是—記憶。同樣,「時序電路」也需要這樣的功能。這種能夠?qū)崿F(xiàn)人類記憶功能的元器件就是。按結(jié)構(gòu)和功能,可以分為RS型、JK型、D型和T型。在這里,我們只講解比較有代表性的類型,RS型和D型。

            觸發(fā)器就象一個蹺蹺板

            觸發(fā)器的工作方式與日本的“起坐親子游戲”很象。日本的“起坐親子游戲”,指的就是公園里的蹺蹺板。想起蹺蹺板,就能想象出RS觸發(fā)器的工作原理。

            圖2就是一個蹺蹺板。這個蹺蹺板有些生銹,即使沒有人坐,也不能恢復(fù)水平狀態(tài)。請記住它保持傾斜的樣子。假設(shè):

            ◇蹺蹺板的兩端是輸出Q和Q#。

            ◇左右的2個人是R君和S君,表示輸入。坐上蹺蹺板表示邏輯高H狀態(tài),沒有在蹺蹺板上表示邏輯低L狀態(tài)。

           ?。看沃辉试S一個人坐,兩人不能同時坐。)

            

            圖1: RS觸發(fā)器的電路圖

            

            圖2:蹺蹺板的初始狀態(tài)(Q=L、Q#=H、R=L、S=L)

            當(dāng)S君坐上蹺蹺板(S=H)時,輸出Q就變?yōu)镠(Q#變成L)(圖3)

            

            圖3:S君坐在蹺蹺板上的狀態(tài)(Q=H、Q#=L、R=L、S=H)

            因為蹺蹺板有些生銹了,動作不靈活,所以,即使S君下來了(S=L),Q#還是L,不改變(圖4)

            

            圖4:S君從蹺蹺板上下來的狀態(tài)(Q=H、Q#=L、R=L、S=L)

            當(dāng)R君坐上蹺蹺板時,Q變成L(Q#變成H)。當(dāng)R君從蹺蹺板上下來時,也會保持L狀態(tài)。從這個過程來看,我們是不是可以說蹺蹺板記住了以前坐過它的人呢。

            用真值表表示RS觸發(fā)器的工作過程的話,就象圖5所示一樣。表中Q0和Q0#表示的是輸入變化以前的輸出。

            RS觸發(fā)器是最簡單的觸發(fā)器。主要用于防止機(jī)械式開關(guān)的誤操作。

            

            圖5:RS觸發(fā)器的真值表

            按時鐘變化記憶的D觸發(fā)器

            D觸發(fā)器是在時鐘信號(CK)的上升沿(信號從L→H的變化)或下降沿(信號從H→L的變化)時,保持輸入信號狀態(tài),改變輸出信號的觸發(fā)器。

            

            圖6:D觸發(fā)器

            

            圖7:D觸發(fā)器的真值表

            現(xiàn)在,我們用蹺蹺板來說明D觸發(fā)器的工作原理。蹺蹺板的初始狀態(tài)如圖8所示。D君坐上蹺蹺板表示輸入為H,從蹺蹺板上下來表示輸入為L。蹺蹺板的另一邊,放一個比D君輕的重物。另外,這個蹺蹺板與一般的蹺蹺板不同,只有在時鐘CK上升沿時,才改變蹺起的方向。

            

            圖8:D觸發(fā)器的初始狀態(tài)(CK=L、D=H、Q=L、Q#=H)

            看著圖8,你不覺得有些奇怪嗎?D君坐在蹺蹺板上,卻沒有變化。按理說,由于D君比重物重,D君(Q#)應(yīng)該降下來,才對。為什么蹺蹺板沒有發(fā)生變化呢,這是因為CK還保持L狀態(tài)。當(dāng)CK變?yōu)镠(CK上升)時,蹺蹺板就蹺起來了,D君就下降了(圖9)。

            

            圖9: D觸發(fā)器的CK處于上升狀態(tài)(D=H、Q=H、Q#=L)

            然后,CK就穩(wěn)定在H狀態(tài)。這時,不管D君是從蹺蹺板上下來,還是再坐上去,蹺蹺板都不動。只要不在CK的上升狀態(tài),蹺蹺板就一直保持以前的狀態(tài)。

            這種動作的觸發(fā)器被稱為D觸發(fā)器,具有在時鐘上升瞬間,保持(記憶)輸入狀態(tài)的功能,是一種時鐘同步時序電路。D觸發(fā)器是時序電路的基本元件,用途廣泛。D觸發(fā)器的多級組合,可以做成移位寄存器、分頻電路等。也可用于CPU內(nèi)部的寄存器等。

            SRAM是觸發(fā)器構(gòu)成的嗎?

            觸發(fā)器可以記憶H或L,1位的信息。大量排列觸發(fā)器,并使之具有可選擇性后,就可以構(gòu)成SRAM。由于SRAM的輸入輸出速度比DRAM和閃存的訪問速度高得多,所以,常用作CPU的緩存和寄存器。

            盡管我們這樣說,實際上CPU中內(nèi)置的存儲器或寄存器并非使用的是RS觸發(fā)器這樣的邏輯門。由于使用邏輯門,會使電路規(guī)模變大,所以,一般使用4到6個FET,再經(jīng)過優(yōu)化,構(gòu)成存儲器的1位(圖A)。

            

            圖A:SRAM的基本電路

            時鐘同步電路的必要性

            我們分兩次,「組合電路」和「時序電路」,對邏輯電路的基礎(chǔ)進(jìn)行了講解。實際上,在設(shè)計邏輯電路時,有很多應(yīng)該注意的事項。其中特別重要的就是關(guān)于時鐘同步電路的注意事項。

            在「組合電路」中,微小的信號傳輸遲延,都有可能造成輸出毛刺。盡管毛刺是一個極其短暫的信號,但也可以引起邏輯電路的誤動作。為了回避這個問題,就要使用時鐘同步電路。

            

            圖10:時鐘同步電路的思路

            圖10給出了時鐘同步電路的概要。如圖所示,其構(gòu)造是在FF(觸發(fā)器)之間夾著「組合電路」。毛刺是「組合電路」在輸出穩(wěn)定之前,輸出的短暫信號。因此,在「組合電路」輸出穩(wěn)定以后,再改變時鐘,用觸發(fā)器保持這個輸出,就可以回避這種誤動作了。

            至此,數(shù)字電路入門的三次講座全部結(jié)束了。從「什么是數(shù)字?」開始,逐步講解了「基本邏輯電路」、「數(shù)字IC的基礎(chǔ)」、「組合電路」和「時序電路」。 實際上,方面還有很多很多必須學(xué)習(xí)的內(nèi)容。請大家一定要自己找時間繼續(xù)學(xué)習(xí)!

          上一頁123全文

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();