###### tags: `數位系統設計`
:::info
[回共筆首頁](https://hackmd.io/zrsmsRtEQ-OrnGslDxT0NQ)
[回科目首頁](https://hackmd.io/vXoSKbhKRV2nufoPIyxgyQ)
:::
[TOC]
# Lecture03: Synchronous Sequential Logic
## Sequential Circuits

- 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

- 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**

## SR Latch with NAND Gates
- **NAND 的 controling value = 0**

## SR Latch with Control
- 用Enable腳,控制SR Latch要不要受輸入作動

## D Latch

## Master-slave D flip-flop
- Negative-edge-triggered flip-flop
- 負緣觸發

## 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

:::warning
在實務上,希望CK跟輸入信號不會同時變換,因為同時變換會使得無法分析,得出我們預期的結果,所以會要求setup跟hold的時間,盡量避免出錯。
:::
## JK Flip-Flop
:::danger
要記得JK正反器的Boolean Function,請記到期末考,在分析電路時,可以比較快速。
F = JQ' + K'Q
:::

## T Flip-Flop
- 若T=0,現在的輸出結果會是前一個輸出結果
- 若T=1,現在的輸出結果會是前一個輸出結果**的反相**

## 小小統整Characteristic tables
- D Flip-Flop 輸入是什麼輸出就是什麼
- JK Flip-Flop F=JQ'+K'Q
- T Flip-Flop 輸入為1會啟動反相,把前一個輸出反相後變成現在的輸出

:::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

- state table

- state diagram

:::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有直接關係。

### Moore model
- 只有state改變,output才可能會改變。
- 因為output的equation只有跟state有直接關係,而state是跟input有關係,output跟input沒有直接關係。
- 
:::info
- Mealy and Moore

口訣:$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的數量,但是可以節省時間。

:::info
不同的Assignment可以用來針對不同的需求,設計電路。
:::
## Design Procedure
- 從state equation或state tablec或state diagram,經過化簡後,設計出電路從state equation或state table,經過化簡後,設計出電路。
## Excitation Tables
- 原本我們知道input是什麼,output可以用Boolean Table推導出來。
- 現在。我們希望前一個狀態到下一個狀態是由我們定義,那們input的值要去推導出來,就會使用到Excitation Tables。

:::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. 畫出電路圖