###### tags: `數位系統設計` :::info [回共筆首頁](https://hackmd.io/zrsmsRtEQ-OrnGslDxT0NQ) [回科目首頁](https://hackmd.io/vXoSKbhKRV2nufoPIyxgyQ) ::: [TOC] # Lecture03: Synchronous Sequential Logic ## Sequential Circuits ![](https://i.imgur.com/bEsju0H.png =80%x) - Synchronous同步更新: 在幾個不連續彈特定的時間點 - Asynchronous非同步更新: 任何滿足條件的時間 :::info Synchronous同步更新 => Flip-Flop Asynchronous非同步更新 => Latch ::: ## Synchronous Sequential Circuits - Master-clock generator => 產生時脈 - Clocked sequential circuits => 透過時脈同步更新 - The memory elements: flip-flops - Each binary cell is capable of storing one bit of information - Two outputs: 一正一反 - Maintain state, until input signal to switch state 輸出會等到master-clock觸發,改變狀態 ## Clocked ![](https://i.imgur.com/BppneE7.png =50%x) - Latched => level-sensitive - Flip-flops => edge-sensitive ## Latches - Latches are asynchronous sequential circuit - 狀態會隨著輸出入改變而改變 - 建造Flip-flops - 不適用於同步循序電路 :::warning Latches的性質比Flip-flops還要差,所以實務上主流是Flip-flops,但是還是會在一些精密電子產品裡(像是電腦主機板)看到Latches,因為他還是有存在的必要。 ::: ## SR Latch with NOR Gates - **NOR 的 controling value = 1** ![](https://i.imgur.com/tofUPnd.png =90%x) ## SR Latch with NAND Gates - **NAND 的 controling value = 0** ![](https://i.imgur.com/FZNjGwU.png =90%x) ## SR Latch with Control - 用Enable腳,控制SR Latch要不要受輸入作動 ![](https://i.imgur.com/CvWqnNW.png =90%x) ## D Latch ![](https://i.imgur.com/Ena44rt.png) ## Master-slave D flip-flop - Negative-edge-triggered flip-flop - 負緣觸發 ![](https://i.imgur.com/UeL50Pc.png) ## Edge- Triggered D Flip-Flop - Clock Tree Synthesis: clock signal is distributed evenly to all sequential elements in a design :::info Clock Tree Synthesis(CTS) => 旨在將外部 clock 妥善分配給內部的各個元件。由於 CTS 需要精確各元件的位置以計算準確的延遲與可運行頻率,且 clock routing 是主要 power 耗損的主要來源 (30%附近) ,須優先於 signal routing,因此一般 CTS 在 place 之後 route 之前進行。 ::: ## Setup and Hold Time for Flip-Flop - The setup time - 在CK變換之前,需要有一段時間,資料要準備好(setup) - The hold time - 在CK變換之後,需要有一段時間,資料可以穩定(hold) - Flip-Flop delay - 當資料輸入到輸出的時間,稱為propagation delay ![](https://i.imgur.com/OsP5XeR.png =70%x) :::warning 在實務上,希望CK跟輸入信號不會同時變換,因為同時變換會使得無法分析,得出我們預期的結果,所以會要求setup跟hold的時間,盡量避免出錯。 ::: ## JK Flip-Flop :::danger 要記得JK正反器的Boolean Function,請記到期末考,在分析電路時,可以比較快速。 F = JQ' + K'Q ::: ![](https://i.imgur.com/VIW6BLD.png) ## T Flip-Flop - 若T=0,現在的輸出結果會是前一個輸出結果 - 若T=1,現在的輸出結果會是前一個輸出結果**的反相** ![](https://i.imgur.com/P35SOAs.png =40%x) ## 小小統整Characteristic tables - D Flip-Flop 輸入是什麼輸出就是什麼 - JK Flip-Flop F=JQ'+K'Q - T Flip-Flop 輸入為1會啟動反相,把前一個輸出反相後變成現在的輸出 ![](https://i.imgur.com/xEnVsZX.png =80%x) :::info 題外話: PUF晶片:一種晶片的指紋辨識(像是ID),簡單的應用是在悠遊卡。 逆向工程:可以拿來竊取重要技術,也可以保護公司本身的智慧財產權,能夠知道山寨產品有無竊取自己公司的重要技術。 ::: ## Analysis of Clocked Sequential Circuits - State equation: 重點在present states and inputs - State table: 把所有的轉換結果列出來,會有input、present states、output - State diagram ### Example - state equation ![](https://i.imgur.com/h1KhzGZ.png) - state table ![](https://i.imgur.com/JH8r7Jm.png =70%x) - state diagram ![](https://i.imgur.com/EQ049zN.png =80%x) :::info D Flip-Flop是電子產品較多的使用的Filp-Flop,因為較其他正反器還要直覺、單純。 D Flip-Flop的next state就是Input Equation ::: ## Analysis with Other Flip-Flop - 要分析Flip-Flop電路的結果,可以用以下兩種方法做 1. 第一種方法 1. 把input equation化簡出來 2. 列出所有的input情況,推導出Filp-Flop的input,透過Filp-Flop的特徵值,近一步推出所有情況next state table 3. 根據state table,就能夠畫state diagram 2. 第二種方法 1. 把input equation化簡出來 2. 利用Flip-Flop的Characteristic equation,把input equation 替換到Characteristic equation,就可以得到state equation了 3. 根據state equation,列出所有的情況,就能夠畫state diagram :::success 要記得D、JK、T的Characteristic equation ::: ## Mealy and Moore Models ### Mealy model - 當state改變或是input改變,output可能就會改變。 - 因為output的equation跟input有直接關係。 ![](https://i.imgur.com/tLQzFUT.png =50%x) ### Moore model - 只有state改變,output才可能會改變。 - 因為output的equation只有跟state有直接關係,而state是跟input有關係,output跟input沒有直接關係。 - ![](https://i.imgur.com/C1UvUoD.png =50%x) :::info - Mealy and Moore ![](https://i.imgur.com/MK2lrwz.png) 口訣:$Less\ is\ More$ 輸出比較少的,是Moore model ::: ## State Reduction and Assignment - State diagram 可能看化簡,只要輸入輸出的行為一樣,就不需要理會用到的Flip-FLop個數是多少 :::danger 課本的簡化方法,比較弱。 老師在Project中提供的化簡方法比較完整,也比較好。 ::: ## State Assignment - Binary,最直覺的樣子。 - Gray Code 因為現在的bits和下一個bits只會相差一個bit,代表在狀態轉換的時候,可以得到最佳的Power Consumption。 - One-Hot,可作為控制信號。雖然會增加Flip-Flop的數量,但是可以節省時間。 ![](https://i.imgur.com/KURhttn.png =80%x) :::info 不同的Assignment可以用來針對不同的需求,設計電路。 ::: ## Design Procedure - 從state equation或state tablec或state diagram,經過化簡後,設計出電路從state equation或state table,經過化簡後,設計出電路。 ## Excitation Tables - 原本我們知道input是什麼,output可以用Boolean Table推導出來。 - 現在。我們希望前一個狀態到下一個狀態是由我們定義,那們input的值要去推導出來,就會使用到Excitation Tables。 ![](https://i.imgur.com/m56hNEY.png) :::spoiler 小練習:如果Q(t)=0,Q(t+1)=1,則T跟JK的Excitation Table為何? T => 1 JK => (1,x) ::: ### Synthesis Progress - 從狀態機,設計電路 - 步驟 1. 畫出期望的狀態機變化 2. 畫出state table,從Present State和Next State回推Flip-Flop的input 3. 針對Flip-Flop的input用**卡諾圖**化簡 4. 畫出電路圖