用書:Digital Number WITH AN INTRODUCTION TOTHE VERILOG 5thEdition
作者:Mani Ciletti
習題解答:第四版解答(注意版本不一樣)
筆記作者:曾理碩/啾咪喵
分享模式:創用cc 姓名標示-相同方式分享 (cc分享限筆記,不包括連外文件、投影片、作業、作業解答)
歡迎分享本文
部格相關連結:
前言:
因為是筆記,通常以自己不會的地方做加強
主要寫概念
而較多複雜邏輯推理的地方會略過
因此使用時請作為導引手冊
請務必搭配課本使用(上方有連結)
內文提到頁碼以紙本課本為主與電子書誤差為16頁[建議以章節翻找]
計數器&暫存器
暫存器是一系列的Flip flop
計數器就是暫存器的一種
只是資訊順序已經被決定了
6-1, 6-2 暫存器
Parallel
register(並聯):
Register:
就是一系列Flip Flop
無計算功能
狹義上是並聯
Register with parallel load:
在前者並聯的register加入load功能
跟前者一樣沒有計算功能
方法: 當load=1時,將資料衝入D Flip Flop (LOAD)
當load=0時,將D Flip Flop反饋 (維持資訊)
Serial register(串聯):
Shift register:
即串聯的Flip Flop
可執行”shift right”或”shift left”來將資訊向左右傳遞
(Shitt right/left:依照畫圖方向判斷)
執行時最邊緣的Flip Flop會將資訊丟出去
另一邊則接受新的input
假設要將A傳進B裡 (A, B接指shift register)
將A的輸出設成”A的輸入”跟”B的輸入”
在適當執行多次shift即可
Serial adder
用此類型的A, B register,將其中所存資訊相加(存回A)
本例中因為要存回A,因此將sum連至A的input
D Flip flop+加法器實作
而額外加入的Flip flop的用途在於:計住進位
如果沒有它,很可能在啟動瞬間FA的z輸入也跟著改變而導致錯誤
JK Flip flop實作
由第五章的實作方法畫出state table
輸入:present state[前一位進位], input(x,y)[各位的數值] [排列組合吧]
輸出:next state[進位], output[和]
推導出:Flip flop input J/K[應當JK Flip Flop適當的輸入讓next state正確(ch5)]
Ring counter
將shift counter的輸出作為自身輸入
其計算就會不停重複相同的狀態
結合組合電路能達到”改變時脈”功能
而且比一般counter來的容易控制時脈
缺點是會花比較多的Flip flop
Johnson
counter(switch ring counter)
Ring
counter加強版
希望狀態更多卻又不想增加Flip flop
那麼將shift counter的輸出作為自身輸入的”反向”
狀態至多能為原先的兩倍
Universal
shift register(萬能):
技能點滿的傢伙
能parallel transfer, shift transfer, clear
方法乃用MUX控制(控制閥因電路而有所不同)
MUX輸出的四個選項分別為:
不變: 輸入為register自己的輸出
Shift
right: 輸入為左邊register的輸出
Shift
left: 輸入為右邊register的輸出
Parallel
load: 輸入為平行輸入口
6-3, 6-4 計數器
依同步性分類
Ripple counter
非共用同一個clock
Flip flop各自的output可以當作其他的Flip flop的clock
可以做為放慢clock的方法
Synchronous counter
接受同一個clock
依功能區分
Binary
counter
用二進位計算次數
完全不需要input,因為現在的state就決定了next
state
性質上會發現只要AND比較小的所有位數就知道該不該轉態了
[用ch5方法實作]
Up-down counter
利用up, down兩條資訊線來控制該上升或下降
up函式同上,down亦能用ch5的方法實作
up
= 0, down = 0保持不變
up
= 0, down = 1 下數
up = 1, down = 0 上數
up = 1, down = 1 (設定優先)[投影片設定為上數]
設定優先的方式是較高位要用其”反向”與另一個資訊做AND
就能屏避掉該訊息
Binary counter with parallel load
Load
= 1的時候將輸入開啟
投影片因為用JK Flip flop因此複雜了一些
BCD
counter
跟前者差不多
不過不會用到全部的state
亦能用ch5來實現
另一種做法是用” Binary counter with parallel load”來實作:
數到”9”[1001]讓next state = 0
數到”10”[1010]同時執行clear
該注意
沒用到的state 的next state應當指向任一有用的狀態
以免因意外導致在沒有意義的狀態中繞圈圈
沒有留言:
張貼留言