type
status
date
slug
summary
tags
category
icon
password
Ch6 Digital Arithmetic: Operations & CircuitsBinary AdditionSign ExtensionoverflowBinary MultiplicationArithmetic CircuitsFull Adder/ Half Adder把register加上去的ALURegister NotationParallel AdderCh7 Counters and Registers Part 1Ripple Counter製作一個 <的計數器製作up/down counterPresettable counters一些實際的Counter ICDecoding a CounterCh7 Counters and Registers Part 2Shift-Register CountersRing CounterJohnson Counter
Ch6 Digital Arithmetic: Operations & Circuits
Binary Addition
相信二進位的加減不用複習了,但我們要介紹用二進為表達負數,用的sign notation怎麼計算

首先,為什麼下面的數字代表-52,是因為它跟上面的+52相加,剛好會是0,因此它被定為-52,應該沒有更快的計算方法了
他們是經過以下的方法計算

一看就懂:),又稱作negation
Sign Extension
以下在解釋,當我們的系統有8-bit,但是我們只需要表示5-bit的正數、負數該怎麼辦,剩下的三位數
- 假如是正數,那就補0
- 假如是負數,那就補1
overflow
就是你的加法爆掉了
酷酷的圖片補充說明

Binary Multiplication
有手就行

假如遇到負數,那就先把負數都negation回來,再把東西乘起來,再看是不是負的,把他complement回去
Arithmetic Circuits
以下是ALU的構造

- Accumulator, B register都是flip-flop,他們是快快的記憶體
步驟:
- Control Unit先去看一下 Memory unit,了解現在要做什麼
- Memory unit會把要被加的數字放到B register
- Logic circuits 負責把 Accumulator和 B register 加起來,並且放到 Accumulator
- 持續以上的步驟
- 如果加完了,那就把Accumulator放回 Memory unit

加法的詳細符號

實際上加法的流程
Full Adder/ Half Adder
了解以上的加法,我們就可以依照增值表把東西給生出來,十分暴力

增值表

實際畫出來的人
半加器(Half Adder):只有兩個input,通常是用LSB,因為沒有東西要進位
把register加上去的ALU

Register Notation
Transfer data from A to B
用Register來看ALU

Parallel Adder


Ch7 Counters and Registers Part 1
主要是課本的7-1到7-14,在說明Counter的部分
其中 7-9說明分析,7-10說明設計,7-11說明PLM的Library,7-12 to 14在說HDL
Ripple Counter
圖片:基本上看了一目了然,就是利用前一個JK ff下降的時候,下一個才會改變狀態

同時觀察,每一個ff它們的frequence是不一樣的
一個使用的Example,以及會出現propagation delay的地方


所以可以發現,當我們想要做很大的counter,利用ripple的結構會讓整體的delay非常嚴重,因此會使用到paralle的結構

基本上再多的FF我們的delay都是一樣的,但詳細這邊就不去思考了
製作一個 <的計數器
上面給的例子,都只會再進位的時候變成全部都是0,我們希望他可以更有彈性一點


用State Transition dagram來表達這個counter的狀態
製作up/down counter


Presettable counters

可以設定從哪個數字開始
不用為了設定另一個數字,重新改整個電路的配置
細一點的流程
這個預設操作也被稱為對計數器進行並行加載。
圖7-12顯示了一個三位預設並行上計數器的邏輯電路。J, K, 和CLK輸入端被連接以作為並行上計數器運行。異步的PRESET和CLEAR輸入被連接以執行異步預設。通過執行以下操作,可以在任何時候用任何期望的計數值來加載計數器:
- 將期望的計數值應用到並行數據輸入端,P2, P1, 和 P0。
- 向並行加載輸入,PL,應用一個低脈衝。
這個程序將會執行一個異步轉移,將P2, P1, 和P0的級別分別轉移到觸發器Q2, Q1, 和Q0中(參見第5-16節)。這個堵塞轉移的發生是獨立於J, K, 和CLK輸入的。只要PL處於其活動低狀態,CLK輸入的效果就會被禁用,因為當PL = 0時,每個FF都會有一個異步輸入被激活。
一旦PL返回高,FFs就能對它們的CLK輸入作出反應,並可以從加載到計數器中的計數值開始恢復計數上的操作。
一些實際的Counter IC

參考就好:)
Decoding a Counter
簡單的版本:偵測有沒有數到那個數字,只有兩個狀態(是或不是)
- Active-HIGH Decoding:用AND去實現
- Active-LOW Decoding:用NAND去實現
BCD Counter Decoding:就把它翻譯成人類看得懂的十進位
Ch7 Counters and Registers Part 2
主要是課本的7-15到7-22,在說明Registers
7-15在說無聊名詞,其他自己類推
- PIPO(平行進平行出)
- SISP(異進異出)
7-16在說明IC registers
Shift-Register Counters
Ring Counter
基於Shift-Register來達成的,如下圖,它就是把那個1一直送給下一個人

(計算數字的樣子)

(結構)
Johnson Counter
在設計上是Ring Counter的小修改版


Decode的方法

- 作者:Q蛇
- 链接:/article/35bb494e-9202-4a55-a33b-48c33f4575e6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。