天天看點

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

文章目錄

  • 若幹常用的時序邏輯電路
    • 寄存器
      • 移位寄存器
    • 計數器
      • 同步計數器
        • 同步二進制計數器
          • 同步二進制加法計數器
            • 經典設計 74161
          • 同步二進制減法計數器
          • 同步二進制加減計數器
        • 同步十進制計數器
      • 異步計數器
        • 二進制計數器
        • 二進制加法計數器
        • 二進制減法計數器
      • 任意進制計數器的構成方法
        • 當N>M
          • 置零法
          • 預置數法
        • 當N<M
      • 計數器應用執行個體
        • 計數器+譯碼器----->順序節拍脈沖發生器
        • 計數器+資料選擇器----->序列脈沖發生器

若幹常用的時序邏輯電路

  • 主要有兩類:寄存器和計數器,沒有組合電路那麼豐富

寄存器

  1. 用于寄存一組二進制代碼,N位寄存器由N個觸發器組成,可存放一組N位二進制代碼
  2. 隻要求其中每個觸發器可置一置零

例:74HC175

(1)邊沿觸發

(2)提供了一個R端可以異步置零

移位寄存器

  • 具有儲存+移位功能
  • 在二進制中,有時候移位就相當于運算,是以移位寄存器在數字電路中有相當重要的地位
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 這個電路連接配接很簡單,采用的都是邊沿D觸發器
  • 資料從D1進來,一個節拍寫道Q0,下一個節拍到Q1,以此類推
  • !因為觸發器有Tpd和Tcd的存在,才使得這種寫法能夠穩定。Tpd的作用是數到達之後要經過多長時間才能寫到下一級。想把資料穩定地寫道第一個觸發器FF0的話,資料和CLK應該有一個配合,早來建立時間,晚走保持時間。而相對于FF1來說,上一級來的資料也應該早來晚走。早來沒有問題,隻要觸發邊沿不到,Q0的值就是穩定值。晚走就要靠上一級的Tcd了。
  • !也就是說從左向右,第一級的Tcd要大于第二級的Thold,依此類推。
  • 工作波形圖如下:
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • !!!用在哪?優化上一篇文章的這個模型
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 接到出來的Si上,移位寄存器的長度決定了加法器可以做多少位
  • !問題1:上面的依位寄存器用的是D觸發器,我可以換成其他觸發器麼?
  • 結論:無論換成JK或RS都可以(功能上)
  • !問題2:功能換完了,可以換觸發方式麼?
  • 電平觸發不可以,如果換了,當觸發信号到達時,一串都成直通得了,電平觸發不存在節拍的概念,是以不能用作移位;主從結構的脈沖觸發也可以
  • 應用:

    (1)代碼轉換,串—>并

    (2)資料運算

  • !問題3:如果我想并變串怎麼辦?
  • 目前的電路顯然不符合要求,因為每一位的資料不能獨立到達
  • 要求:左/右移,并行輸入,保持,異步置零等(還是四位)
  • 設計原理:

    (1)異步置零肯定要有異步信号接入端

    (2)左移右移或并行輸入或保持,都意味着每一位觸發器的資料來源有多個方向。資料來源有多個,任何時候隻搭在一個上-----資料選擇器。每一位觸發器的資料來源都需要加一個四選一的資料選擇器,而這個資料選擇器的位址端有兩位,相當于多功能依位寄存器的功能控制端。要明确一點:這四個資料選擇器要處在相同的功能下,是以可以直接把這兩位接出來,當作整個子產品的功能選擇端。

  • 通過設計原理再看這個電路就不是那麼複雜了。
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  1. 所有的觸發器都選擇了帶有異步置零端的觸發器(因為有這個需求),把異步置零端甩出來就是異步置零了
  2. 工作模式選擇就對應着左移,右移,并行,保持這四個功能
  3. 四選一資料選擇器
  4. 對FF1子產品的構成進行分析:

    (1)G2是個反相器,是以FF1看着是個SR,其實就是個D邊沿觸發器

    (2)資料選擇器四個資料來源:左1的最左邊(從左來),左二的最右邊(并行輸入),右二的最右邊(從右邊來),右1的最右邊(自保持)

    (3)通過S1,S0就可以控制左移右移還是保持還是并行輸入

    (4)直接封裝成子產品,不再打開

    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  5. 看到這個子產品

    (1)CLK的三角:邊沿觸發

    (2)S1,S0選擇功能,左移,右移,并行輸入,自保持

    (3)Dir,Dil:左移右移的最原始資料來源

  6. 功能表
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  7. 擴充應用(4位–>8位)
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 唯一一點就是確定左移右移資料不斷,就是把Dil接到右邊的Q0,把Q3接到右邊的Dir

計數器

  • 用于計數,分頻,定時,産生節拍脈沖等
  • 分類

    (1)按時鐘分:同步,異步

    (2)按計數過程中數字增減分:加,減,可逆

    (3)按計數器的數字編碼分,二進制,二-十進制和循環碼…

    (4)按計數容量分:十進制,六十進制…

同步計數器

同步二進制計數器

分為加法和減法

同步二進制加法計數器
  • 原理:多位二進制末位加一,若第i位以下皆為1時,則第i位應翻轉
  • 由此得出規律,若用T觸發器構成計數器,則第i位觸發器輸入端Ti的邏輯式應為
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 也就是T0是恒等于1的,第i位的T取決于前面的Q相與,隻要前面沒記滿,第i位就不會翻轉
  • 得到電路圖
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • !!T觸發器沒有一個現成的觸發器,它是用我們學過的接出來的,最簡單的是把J和K捏在一起構成了T觸發器
  • C是計位信号,有了這個信号就可以進行下一步的擴充,也可以不丢資訊

經典設計 74161

  • 這是一個常用的四位二進制計數器
  • 通過讀功能表,知道晶片怎麼接
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

(1)CLK給上升沿

(2)Rd‘一定要接高電平,LD’一定要接高電平

(3)EP,ET一定要接高電平才可以計數

(4)由表格第一行,Rd‘是異步置零

(5)由表格第二行,當Rd’=1,LD’=0,CLK上升沿到達時,會把R0-R3寫入Q0-Q3(預置數)

(6)由表格三四行,當EP和ET有一個是零的時候,保持。注意,在觸發器中,說保持一定是保持的Q

  • 内部電路
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 選的是帶異步清零的JK觸發器,這是異步清零端的來源,但是它并沒有置一端,是以它的置數實際上不是通過異步來的,是通過JK觸發器寫進來的數。前面說過,JK觸發器想要構成一個四位二進制計數的時候,可以把它構成一個T觸發器來做。對着FF3來看,組成T觸發器可以通過G19,也可以通過G14和G15,當用後者時,J和K就可以輸入兩個不一樣的數,實作預置數
同步二進制減法計數器
  • 原理:在多位二進制末位減一,若第i位一下皆為0,則第i位應該翻轉
  • 由此得出規律,若用T觸發器構成計數器,則第i位觸發器輸入端Ti的邏輯式應為
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 也就是T0是恒等于1的,第i位的T取決于前面的Q’相與
  • 構成等和加法類似
同步二進制加減計數器
  • 兩種方案

    (1)來的脈沖是同一個脈沖源,和它配合的有另一個信号來表達這個脈沖是加還是減(碼盤計數)

    (2)加減計數是兩個脈沖源(進出圖書館)

  • 最根本的是解決編碼區分的問題
  • 同一個計數器—容易出問題,除非實體背景讓加兩個信号不同時來。而兩個脈沖源不會出現這個問題。
  1. 單時鐘的方式

    加/減脈沖用同一輸入端,由控制線的高低電平決定加減,執行個體:74LS191

    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • U’/D是一個信号,等于0是加技術,等于0是減計數
  • 功能表
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

    (1)使能端S‘一定為0

    (2)LD’是預置數,但是這裡是異步的,也就是對CLK沒有配合,一旦LD’等于0,直接寫入預置數(是以這個裡一定用的觸發器原有的異步置零置一端)

  1. 雙時鐘的方式

    執行個體:74LS193(采用T’觸發器,即T=1)

    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 加計數和減計數采用不同的時鐘源
  • 是一個假同步,因為所有的CLK并不是接在一起構成一個統一的時鐘
  • 實際上每一步的時鐘受控于外面的CLK,但是加了個運算
  • 最根本的使用,要有一個實體機制保證CLK(D)和CLK(U)不是同時來(這倆信号看晶片内部圖),如果同時來,一定就會有競争-冒險。

同步十進制計數器

  • 問題:同步二進制計數如果是0-9沒問題,如果再多了,可讀性不是特别好,是以有同步十進制計數器
  • 希望用二進制的結構實作十進制
  • 問題:計數器的容量是多少?
  • 容量就是10,是以如果要用二進制結構實作的話,4位二進制就是一個底,用它打基礎,在它的基礎上,我隻用到它的十個(會造成浪費,但是可讀性好)
  • 有兩件事需要做
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

(1)對電路進行改動,讓1001的下個狀态指向0000,讓這之間的狀态組成主循環圈

  • 用0000對比之前1001的下個狀态,1010。發現隻有T1和T3的變化規則需要改
  • 原來T3 = Q2Q1Q0,過去規則儲存(因為在主循環圈的前面還要用到),而且要在Q3Q0時發生跳變。是以T3 = Q2Q1Q0 + Q3Q0
  • 同理T1 = Q0Q3’

(2)剩餘的項就成了無效态,要處理好無效态

  • 問題:如果改成六進制,十二進制能改麼?
  • 可以

異步計數器

二進制計數器

二進制加法計數器

  • 在末位+1時,從低位到高位逐位進位
  • 原則:每一位從“1”變到“0”,向高位發出進位,使高位翻轉
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 所有的J,K都接成1,那就意味着是T觸發器,而且T恒等于1,是以見時鐘就翻轉
  • Q0和CLK0就存在一個二分頻的關系,Q1和Q0又是一個二分頻,而且是Q0從1變0的時候翻轉,也就是Q1計滿了,天然的把自己作為一個進位給了下一位
  • 時序圖如下
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 在波形圖當中,Q0的變化是以CLK0作為基準點,也就是CLK0的下降沿到達之後,Q0發生翻轉。Q1的基準點是Q0,Q2的基準點是Q1
  • 是以Q0的Tpd一定小于Q1的Tpd,Q1的Tpd一定小于Q2的Tpd,而且随着位數增加,Tpd會越來越大
  • 也就是在Q3的Tpd之内,會出現一個我不希望的組合,這個給到下面的組合電路就會出現競争-冒險,這也是異步電路我們不喜歡的地方

二進制減法計數器

把加法C前面的圈抹去

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

任意進制計數器的構成方法

用已有的N進制晶片,組成M進制的計數器,是常用的方法

  • 兩種可能

    (1)N>M

    (2)N<M

當N>M

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  1. 異步置零法,同步置零法(每次計數的初态都以000開始)
  2. 異步預置數法,同步預置數法(隻要狀态數夠,滿足我進制需要就可以i,不必000開始)

例:用十進制的74160接成六進制計數器

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 可以置零也可以預置數。
  • 異步和同步的差別:異步如果置零信号來了,馬上就置零,同步要等上升沿
置零法
  • !!如果用置零法:應該在計數到5的時候跳回0。如果用異步置零會有一個問題,第六個狀态隻會持續74160整個晶片的Tpd,但是前五個狀态會持續一個CLK,也就是說,如果用異步置零,需要用0110,這個0110就成了一個暫态,它的出現就是為了回到0000
  • 實際的狀态轉換圖如下(注意兩個虛線)
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
    注意:隻有1001,1000,0111是你十進制改六進制造成的無效态,其他的無效态是這個晶片16進制改10進制造成的
  • 晶片引腳圖
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • !!引出了進位信号,表達了你這個計數器是可以擴充的
  • 建議不要單獨畫進位信号,就用跳轉的信号當作進位信号是最理想的,因為跳轉了就證明計滿了
  • 問題1:如果像上圖那樣引出進位信号在0100就出了進位信号,這個進位信号會持續0100和0101兩個CLK長,是一個很長的高電平(能這麼引的原因是,如果後面電路認下降沿就可以用,如果認上升沿就取反還可以用,原理是隻要一個周期裡隻有一個進位信号就能用,但是不建議這麼引)
  • 問題2:在這個電路中,這麼引會有問題,Rd’平時一直是1,隻有Rd’=0才讓他清零,清完零又回去了,這個信号會出現一個電平,但是大概就是傳輸延遲時間級别的,太短,如果用Rd’作為進位信号可能會被認為是競争-冒險帶來的毛刺,用個濾波電容就濾掉了
  • 改進上面的電路
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 接了一個基本的RS鎖存器,G2是Sd’,G3是Rd‘,Sd’=0的時候進位輸出置一,如果想清零的話,必須讓Rd’=0,而Rd‘接在了CLK上。
  • 晶片是上升沿工作的,也就是寫進位的時候Rd’=1,是以寫入的信号會一直保持,直到CLK變到0
預置數法
數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 這時候,我們譯的是0101,因為LD是同步信号,是以得等到下一個CLK到達的時候,才能把數置進去,是以這時候0101這個狀态就能呆一個時鐘了
  • 是以如果用置零法的話建議用同步的方法,置入0000
  • 方案不唯一,可以用各種方法,甚至可以用1111,隻要在0110的時候置數跳回1111就可以
  • 書上給的例子是在74160有效循環圈裡面最大的一個
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 同理,置1001,保證自己的有效循環圈即可
  • 是以,有效循環的個數就是進制,兩個點的連接配接,一個作為譯碼,還有一個作為置數

當N<M

  1. 方法一:分解
  • M = N1 * N2
  • 先用前面的方法分别接成N1和N2兩個計數器
  • N1和N2有兩種連接配接方式

    (1)并行進位:用同一個CLK。低位片的進位輸出作為高位片的計數控制信号

    (2)串行進位:低位片的進位輸出作為高位片的CLK,兩片始終處于計數狀态

例:用74160接成100進制

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

隻有EP,ET同為1時才允許進位,是以直接把前面的進位信号接到EP,ET上就可以了

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 問題:串行進位為什麼接反相器?
  • 前面那個的C是記到1001的時候會有一個高電平,如果不加反相器,那前面是9的時候,後面就加一了,也就是顯示的話是1,2,3,4,5,6,7,8,19,10,11…
  1. 方法二:M不可分解
  • 采用整體置零和整體置數法
  • 先用兩片接成M’ > M的計數器,然後采用置零或置數的方法

例:用74160接成29進制

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 整體異步置零:找出29,圖上不是全譯碼,找了2和9的第一次出現方式,實驗中可以這麼做,但是實際中盡量使用全譯碼
數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 整體同步置數:一出現28就回去

計數器應用執行個體

計數器+譯碼器----->順序節拍脈沖發生器

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 把一個計數器和38譯碼器放在一起
  • 前端是74161,而且Rd‘和LD都接了高電平,EP,ET接1,CLK給了一個始終,是以74161一直在16位計數循環,16個狀态一直在跑
  • 138取了它的低位,那麼138的輸出,每個CLK這些都會出現一個低電平,而且在循環跑,CLK是高電平的時候不工作,低電平的時候才工作,是以是CLK的後半段工作,前半段沒工作
  • 電路工作起來會相當穩定,因為前面發生變化的時候後面不變,把時間錯開了
  • 這個電路如果和前面三态總線的電路接在一起,總線就構成了循檢的方式
    數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路

計數器+資料選擇器----->序列脈沖發生器

數電學習(六、時序邏輯電路)(二)若幹常用的時序邏輯電路
  • 152是八選一的資料選擇器
  • 當CLK不斷進來,161循環計數,Y’就得到不斷循環的脈沖序列00010111

繼續閱讀