AVR CPU Core 學習筆記
AVR CPU Core AVR 的核心處理器為了獲得最大的效能和並行處理,因此採用哈佛架構( Harvard architecture ) 的設計,哈佛架構的程式指令儲存空間和資料儲存空間是分開的,程式指令儲存和資料儲存可以並行處理 。在程式指令的架構的指行階段有配置一階的 Pipeline,當指令執行時,同時可以去提取(Fetched)下個的指令碼,一般程式執行需要三階段(Fetch,Decode,Execute) 也就是三個時脈時間,加入 Pipeline 後,每個程式指令還是需要三個時脈的流程,但是在執行階段,每個時脈都會有一個指令被執行,等同於每個指令只需要一個時脈。程式碼就儲存在晶片內部的可以重覆程式化的記憶體空間 (Flash)。 快速儲存的區塊包含了 32 個 8-bit 的工作暫存器,資料儲存只需要一個時脈時間。Arithmetic Logic Unit (ALU) 接收兩個暫存器的輸出,經過處理後,再寫回目的暫存器也只需要一個時脈時間。在 32 個 8-bit 的工作暫存器,其中有 6 個 8 位元的暫存器可以將兩個暫存器的值,組成一個 16-bit 的位址來儲存記憶體的空間。這三個組成 16-bit 位址的暫存器,其中有一個是用來儲存重覆程式化的記憶體空間 (Flash)。 ALU可以做算術運算和邏輯運算。運算輸入可以都是暫存器或者是暫存器和常數的運算,狀態暫存器內的旗標會依據運算結果變更旗標的值。 在程式流程的控制方式包含有條件和無條件的跳越及呼叫副程序的指令,這些指令都可以存取 16-bit 的位址空間。 在程式指令方面,大部分的 AVR 指令長度是 16-bit 的,但是也有 32-bit 長度的。有部分的晶片僅只支援部分的指令集而已。 中斷服務程式及副程序的呼叫的返迴位址 (Program Counter“PC”) 都儲存在堆疊(Stack) 裡面。堆疊位於靜態記憶體 (SRAM) 裡面的一塊連續空間,堆疊空間大小的限制在於靜態記憶體的大小和靜態記憶體的使用情況。堆疊的大小,起始位址都在程式碼的一開端就要規畫完成(切記一定要在呼叫任何副程式或中斷之前,因為它們會使用到堆疊的空間)。堆疊指標 (Stack Pointer “SP”) 位放I/O的記憶體空間,用來指示堆疊空間的使用情況。AV