用書:Digital Number WITH AN INTRODUCTION TOTHE VERILOG 5thEdition
作者:Mani Ciletti
習題解答:第四版解答(注意版本不一樣)
筆記作者:曾理碩/啾咪喵
分享模式:創用cc 姓名標示-相同方式分享 (cc分享限筆記,不包括連外文件、投影片、作業、作業解答)
歡迎分享本文
部格相關連結:
前言:
因為是筆記,通常以自己不會的地方做加強
主要寫概念
而較多複雜邏輯推理的地方會略過
因此使用時請作為導引手冊
請務必搭配課本使用(上方有連結)
內文提到頁碼以紙本課本為主與電子書誤差為16頁[建議以章節翻找]
...後面位置都跑掉了喵...
5-1 簡介 (其實是上一章複製貼上的XD)
組合式邏輯電路Combinational logic (chapter
4)
一切Output只與Input有關,無記憶體元件
循序電路Sequential logic (chapter
5)
包含記憶元件(storage element)(用狀態來儲存資料)
Output是由狀態和Input組合而成
相當於Output也受過去的Input影響
5-2 循序電路與分類
一種”回授(feedback)”的概念,將某電路輸出再作為其輸入
(input, current
state) → (output, next state)
clock generator:信號製造器
clock pulses(時脈訊號)
以”Clock是否同步”分類:
同步(synchronous):狀態改變在clock進來時(同一個控制時脈控制)
最常使用且穩定
非同步(asynchronous):狀態改變在任何時候(不同的控制時脈控制)
以”何時可以改變”分類(P.212
[FIGURE5.8])
Level triggered :En狀態決定可否改變資訊
Positive-level triggered:高電位觸發
Negative-level triggered:低電位觸發
Edge triggered :只有在狀態改變時才能改變資訊
Positive-edge triggered:由低至高電位觸發
Negative-edge triggered:由高至低電位觸發
>Edge trigger 跟level trigger圖示差別在箭頭跟符號輸入名(En, Clk)<
以”Output輸出所需參數”分類(p.232
[FIGURE5.21]):
Output與自己的狀態(State)跟Input都有關
Output只與自己的狀態(State)有關
跟Input無關
5-2.5 名詞解釋(源自5-5)
狀態篇:
狀態(State): 一個儲存位元內所存的值,可為1, 0
分為present state, next state
狀態方程(State Equation) 又稱轉移方程(Transition equation)
決定”next state”的方程式
參數包含Input跟present state
狀態表(State Table) 有點像Truth Table
將Input跟present state所有可能列出
並對應Output, next state所產生的輸出
狀態圖(State Diagram) 將一種可能狀態畫成一個圓
當Input分別為0, 1時畫向下一個狀態
(Moore
Machine會直接畫向下一個狀態,無參數)
輸入方程(Input equation) 又稱激發方程式 (Excitation equation)
由於我們使用不同的Flip Flop來實現電路
傳給Flip Flop的資料不一定就是我們原始的資料
參數有Input, present state
狀態方程(State Equation)、狀態表(State Table)、狀態圖(State Diagram)可互推
創作電路時常先釐清問題、畫出狀態圖再推其他兩者(5-7 減態&分配時一起寫)
備註:考試會考一題互推題
方程表(Function Table) 講述Latches時對”輸入對應之輸出結果”之列表
有點像Truth Table
特性表(Characteristic Tables) 講述Flop Flop時對”輸入對應之輸出結果”之列表
好啦好啦!叫Table的都是列表將情形寫出來啦XD
>考試時會出一個新的電路考<
特徵方程(Characteristic Equations) 跟狀態方程相似
差別在於這是針對一種Flip Flop整體的特性方程式
狀態方程式對於一組電路數個Flip Flop整體方程
Excitation table 利用present state到Next state變化來得知input
5-3 儲存位元:鎖存器(Latches)
SR
Latch:S, R分別代表Set / Reset
用NOR實現:高電位設定(雙高禁用)
(S,R)
= (0,0):不改變(No operation)
(S,R)
= (0,1):清除狀態(reset) (reset成0)
(S,R)
= (1,0):設定(set)(set成1)
(S,R)
= (1,1):禁用(forbidden)(因為無法確認結束時會跳成哪一種類型)
用NAND實現:低電位設定(雙低禁用)
(S,R) = (0,0):禁用(forbidden)(因為無法確認結束時會跳成哪一種類型)
(S,R)
= (0,1):設定(set) (set成0)
(S,R)
= (1,0):清除狀態(reset) (reset成1)
(S,R)
= (1,1):不改變(No operation)
D Latch(透明鎖存器):解決禁用問題
為解決禁用問題而造成不確定結果的電路風險
我們發現(不管NAND或NOR實現電路)只要讓S跟R相反則必定有解
然而該如何做出No
change?那就加上一個Enable來控制吧!
加上我們習慣使用”Enable
High”的電路
在不多使用邏輯匣的情況下用NAND來實現是最好的
用NAND實現:Enable High
En
|
D
|
Q
|
0
|
X
|
No change
|
1
|
0
|
0
|
1
|
1
|
1
|
用NOR實現:Enable low
En
|
D
|
Q(EXIT-1)
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
X
|
No change
|
Latch符號:
正反器(flip-flops):記憶儲存單位
兩個輸出:正常值、反值
有人命令他改變狀態他才改變(通常為時脈),有不任意改變的特性
往後大多將以edge trigger為主
D
Flip-Flop
Master-slave D Flip-Flop
En是正的時候,Y = D,Y跟Q斷開
而在轉換的瞬間,該瞬間的Y傳入Q
故其為edge trigger
D-type positive-edge-triggered
Flip-Flop
幹!為啥要這麼複雜!
因為用到的邏輯匣比上面少了整整兩個(25%!)
NAND實現
因為用NAND Latch
因此假定現在的情形S = 1, R = 1(No
change)
接著將Clk數值由0→1→0來觀察變化
會發現只有0→1的瞬間D的值才會衝入Q
如果是negative-edge-triggered呢?
給我在Clk加個inverter結束這回合
NOR實現
因為用NOR Latch
因此假定現在的情形S = 0, R = 0(No change)
會發現只有1→0的瞬間D的值才會衝入Q
圖瑱直接將上圖的NAND改成NOR
JK Flip Flop
J\K
|
0
|
1
|
0
|
Q
|
0
|
1
|
1
|
Q’
|
注意:這裡事先設定結果,再決定電路
先決定Characteristic Table後觀察
如最右方表格
向左則+ Q;向下則+ Q’,以此推出方程式
D Flip-Flop實現
Q(t+1)
= JQ’ + K’Q
NAND實現
Q(t+1) = JQ’ + K’Q
NOR實現
將NAND改成NOR
因為J, K, Q, Q’, CLK都被反向
因此結果不變,不過時脈變成negative-edge-triggered
T Flip Flop
D Flip-Flop實現
Q(t+1) = TQ’ + T’Q
JK Flip Flop實現
Q(t+1) = TQ’ + T’Q = JQ’ + K’Q
J, K同輸入
NAND實現
唉呀!把輸入相連就OK啦!
NOR實現
同上
Q(t+1) = D
|
|
D
|
Q(t+1)
|
0
|
0
|
1
|
1
|
特點:
D Flip-Flop
Next
state = Input
可以控制成”0”, “1”
Q(t+1) = T♁Q
|
|
T
|
Q(t+1)
|
0
|
Q(t)
|
1
|
Q’(t)
|
T Flip Flop
Next
state用Input來決定”是否要改變”
結果是”Q(x)”改變, “Q’(x)”不改變
Q(t+1)
= TQ’ + T’Q = T♁Q
將JK Flip Flop輸入相同,使其結果為”Q”或”Q’”
Q(t+1) = JQ’ + K’Q
|
|||
J
|
K
|
Q(t+1)
|
|
0
|
0
|
Q(t)
|
No change
|
0
|
1
|
0
|
Reset
|
1
|
0
|
1
|
Set
|
1
|
1
|
Q’(t)
|
inverter
|
也可以用D Flip Flop實現,將T XOR Q作為input
JK Flip Flop
用兩個輸入來控制Next state的四種狀態
結果包含上面的兩種
圖示:
Asynchronous
reset(非同步重設)
非特定時間點,只要特定信號進來就會改變
加入”reset”,可以設定初始判斷
當reset = 0,可以將Q值重置為0
注意圖示上的符號reset有圈圈
5-5 分析電路圖
步驟:
由電路圖寫出State table跟State equation跟Ouput inquation
對應不同Flip Flop的Characteristic Table寫出Input inquation
畫出狀態圖
D
Flip Flop的分析
因為Input = Next State
Input
equation = State equation
JK、T Flip Flop的分析
在寫State table時
記得將Input轉成Flip Flop的Input
每筆Flip Flop的Input都是一個Input
equation
5-6 被忽略的章節是沒有名字的
5-7 減少狀態(State reduction)
我們為了解決問題而製作電路
在成效不變(做完state reduction 後input, out不能改變)的情況下
用最少的狀態(Flip Flop)來完成是最好的(跟Kmap很像)
即便state數量不同,只要input, out不變,就視同相同的電路
Unused stste 視為don’t care
State 像是當作CH1的位元來編碼一樣
步驟
將state diagram 化成state table
觀察,若有完全相同的”next state”, “output”,這兩個”相等”
刪掉其中一條,整個state table的代數都改掉(改成其一)
重複3, 4
狀態分配
如同CH1的位元來編碼
我們也可以決定不同狀態要用哪種分配方式
Biniary
一般的位元編碼
Gray碼
相鄰差一個做為位元編碼
One
hot
有幾個State就要幾個Flip Flop
雖然用較多的Flip flop,卻有機會減少其他電路需要的邏輯匣
5-8 設計流程
Excitation table
利用present state到Next state變化來得知input
Q(t)
|
Q(t+1)
|
J
|
K
|
0
|
0
|
0
|
x
|
0
|
1
|
1
|
x
|
1
|
0
|
x
|
1
|
1
|
1
|
x
|
0
|
Q(t)
|
Q(t+1)
|
T
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
流程
釐清問題,可能的狀態有幾種(可先用, 表示),畫出State diagram
執行State reduction
分配狀態
建State table
選擇哪類型的Flip flop寫出Input equation
D
Flip flop
因為Input = Next State
Input
equation = State equation
JK, T Flip flop
寫出state table,填上Excitation table對應的J, K的input值
畫邏輯電路圖
沒有留言:
張貼留言