# 微算機 Chapter2 Microcontroller Basics ###### tags: `microcontroller` ## Basic Blocks 1. ### CPU 2. ### input/output unit - 透過I/O ports (一種 registers )來和microcontroller去交換傳遞data, status, and control signals. 3. ### memory unit - 儲存intructions和data。 - 包含ROM和RAM。 ## Basic Buses ![](https://i.imgur.com/ADdZyBP.png) 1. ### Address Bus: - 由CPU單方面的丟address到各處,也被稱為 *unidirectional bus*。 - address bus 的大小取決於 microcontroller 可取的 memory address。 - eg. 一個CPU with 16 address bits 可以產生 $2^{16} = 64536\ bytes$ 的不同 address,也就是可能在 address bus 上跑的 address。 2. ### Data Bus: - 除了ROM因為不能寫之外,其他都是雙向可通的,也被稱為 *bidirectional bus*。 3. ### Control Bus: - 不論是CPU或I/O device都可丟,但RAM和ROM都只能接收。 - 由數字和訊號組成,用來同步化各個微算機的元件。 - 包含 **clock signals** --- ## Microcontroller architectures 前導知識: - Program memory : 包含 instructions 和 immediate data - Data memory : 包含 data 而他們的 address 會被 instructions 所使用 兩者的大小可能會不一樣 - ### Havard architecture: program memory 和 data memory 兩者的 buses 是分開的,所以可以同時執行 instructions 和 access data。這種 architecture 需要 4 個 buses: 1.data bus for instructions 2.data bus for data 3.address bus for addresses of instructions 4.address bus for addresses of data --- ## CPU 1. ### Basic CPU Register: - instruction register(IR):用來儲存 instruction。 - program counter(PC):用來儲存下一個應該要被執行的 instruction,且program memory一個是16bit,所以PC一次就+2。 - memory address register(MAR):用來儲存 data 的 address。 - accumulator:用來儲存大部分 ALU 執行完的結果。(即WREG) :::warning accumulator 使用addressing mode 去拿取資料(使用index register) ::: - index register:當使用addressing mode的時候會用到。 - status register:當中每個bit代表一個flag表示目前的狀態。 - stack pointer register:在rcall的時候去存原本要執行的下一行。 2. ### control unit - purpose:去翻譯(decode)instuctions from program memory. - 主要就去翻譯instruction然後發出對應的signals去發動正確的ALU logic blocks達到instruction要的目的。 - two basic operations: 1. instruction interpretation:先從instruction register去讀instruction,然後去執行適當的functional units。 2. instruction sequencing:產生下一個要被執行的instruction的地址,然後放入program counter. 3. ### arithmetic-logic unit(ALU) - size:取決於這個微算機是幾bit的。 - typical function: 1. Binary addition and logic operations. 2. Finding the one's complement of data. 3. Shifting or rotating the contents of a general-purpose register 1 bit to the left or right through carry. --- ## RISC vs. CISC | RISC | CISC | | -------- | -------- | | 適合嵌入式系統 | 實作pipeline困難 | | 適合應用於影像處理、機器人技術與儀器技術| 執行相同複雜的操作,能使用較少的指令即可完成 | 因為指令短少,執行速度比CISC快|