發表文章

目前顯示的是 10月, 2016的文章

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

音樂檔案格式的學習筆記

圖片
WAV(Waveform Audio File Format, WAVE) 是微軟與IBM公司所開發在個人電腦儲存音訊串流的編碼格式,在Windows平台的應用軟體受到廣泛的支援。大多數的WAV檔是用於CD儲存原聲帶的。 一般音樂的製作流程是歌手的音樂,經過錄音設備使用 96 KHz 的取樣頻率轉換成數位資料,再把每秒 96K 的資料量,壓縮到 44.1K 的資料量,再存到 CD。因此,一般的 CD 是以每秒 44.1K 的資料量,並且儲存兩個音道(左,右)的資料。 44.1KHz 的取樣頻率是因為人耳可接收的頻率在 2.05KHz 到 20KHz,以Nyquist Theorem 取樣頻率至少要大於 2 倍的目標頻率,所以取樣頻率等於 2 * ( 2.05 + 22) = 44.1 KHz   MP3 (MPEG-1/2 Audio Layer Ⅲ) 由 Moving Pciture Experts Group (MPEG) 在1991 年發表,MEPG-1 Audio Layer Ⅰ/Ⅱ/Ⅲ。 MP3 是將音源檔(WAV)使用 1/4  到 1/20 的比率做壓縮。一般是採用 1/10 的壓縮比率做壓縮。 MP3 的發展史 在 1980 年 - 德國太空中心( University of Erlangen-Nuremberg ) 的 Karlheinz Brandenburg 開始研究如何壓縮數位音樂資料,並於 1989 完成 MPEG-1 Audio Layer 2(MP2)。 在 1991 年 - 針對音樂壓縮提出兩個提案分別是 MUSICAM (Masking pattern adapter Universal Subband Integrated Coding And Multiplexing) 和 ASPEC (Adaptive Spectral Perceptual Entropy Coding)。由一個跨國的工作小組結合 MUSICAM 及 ASPEC,再加上自己的主意,宣告了 MPEG-1 Audio Layer 3(MP3)。 SPEC MPEG-1 Audio Layer Ⅲ MPEG-2 Audio Layer Ⅲ MPEG-2.5