用脈衝同步時序邏輯設計寄存器/計數器解答 |
送交者: 粱遠聲 2012年10月10日17:39:11 於 [靈機一動] 發送悄悄話 |
用脈衝同步時序邏輯設計寄存器/計數器解答
設計一個3位的寄存器/計數器。這個電路有3個數據輸入I2,I1,I0,有一個控制輸入S。 當S=0時,電路是個寄存器,下一個脈衝,把(I2,I1,I0)的值寫入寄存器。 當S=1時,電路是個計數器,下一個脈衝,把寄存器當前的內容加1。 例如: 當S=0,(I2,I1,I0) = (011),下一個脈衝後,寄存器的狀態是(011)。 然後S=1(被置成1), 下一個脈衝後,寄存器的狀態是(100),再下一個脈衝後, 寄存器的狀態是(101)。這時,如果讓S=0,(I2,I1,I0) = (001),下一個脈衝後, 寄存器的狀態是(001)。 解答: 一般地設計脈衝同步時序電路,要把輸入,當前狀態作為自變量來求輸入方程。也 就是說,輸入方程表達式是輸入和當前狀態的函數。以本題為例,輸入方程應該是 I2,I1,I0,S,Q2,Q1,Q0的函數。這裡有7個自變量。用卡諾圖化簡已經很困難 了。本題只是一個3位的例子。那麼,如果是16位,32位的寄存器/計數器,怎麼去 設計呢?有人可以說用計算機算法化簡。如果是這樣,我們就不在靈機一動出這道 題了。 假設用D觸發器設計這個電路。 現在,只討論n位的計數器。設第n位的當前狀態是Qn,下一個狀態Dn。 只有當(Qn-1,Qn-2,...,Q0) = (1,1,...,1)的時候,計數器最末位加1,才能使Qn改 變狀態。讓 X = Qn-1Qn-2...Q0 也就是說,只有 X=1的時候,Qn才能在計數器最末位加1的時候改變狀態。列表 Qn X Dn 0 0 0 0 1 1 1 0 1 1 1 0 很明顯是異或關係,下一個狀態 Dn = Qn(+)X = Qn(+)Qn-1Qn-2...Q0 ( D0 = Q0(+)1 = /Q0 ) 現在,只討論n位的寄存器。很明顯 Dn = In 把輸入方程按控制輸入S列表得: S Dn 0 In 1 Qn(+)Qn-1Qn-2...Q0 最終的輸入方程為: Dn = S(Qn(+)Qn-1Qn-2...Q0) + /SIn 按Dn接出的電路滿足寄存器/計數器的設計要求。 |
|
|
|
實用資訊 | |