第一章-FPPA簡介
History Key
- New content
Removed content
Recent Versions
Choose two versions to compare, or click the link to view it.
(本章教學簡報除圖片以外之文字內容保留所有版權~欲轉載請註明出處~謝謝)
P5
FPPA 的產品有很強的周邊功能彈性,可以像用堆積木的方式設計出周邊功能。您可以輕易的利用各個核心的獨立作業能力,輕鬆的寫出您所要的周邊應用功能。您要什麼功能的周邊介面,可以隨意的創造出來,不會被晶片供應商所提供的硬體功能給侷限住。如下圖所示,左上方系統功能為 1 個 UART TX、1 個 UART RX、1 個 PWM、1 個 I2C、1 個 IR、1 個 SPI Master 以及1 個 SPI Slave,右上方之系統功能為 4 個 UART TX、1 個 UART RX 以及 2 個I2C,這兩個不同功能的產品是由同一個 FPPA 控制晶片所設計出來的,不同之處只在於晶片內部的軟體不同。同理,利用同一個控制晶片,只要改變控制晶片程式也可以設計出如左下方或右下方功能規格的系統。
P6.
要了解平行處理以及及時反應問題,可以透過傳統 MCU 的分時多工作業系統來分析問題,如下圖上半部。該架構係利用內部時間中斷來產生分時多工的工作排序,所以不管有沒有事件( Event ) 發生,您的內部時間中斷會不斷的來詢問事件狀況。您的微處理器就不斷的被迫進入中斷、離開中斷,進中斷要 push stack、離開中斷要 pop stack。當事件多時,還必需把時間切的很細,屆時不是程式運算長度被侷限外,就是要把系統工作頻率加快。這就是個人電腦必需提高 CPU 工作頻率的原因。基本上,它並不是平行處理的架構,事件是依序處理的,緊急事件的處理只能透過提高事件的處理頻率以及優先權;但是事件的處理順序仍是固定的。另外,微控制器進入中斷 ` 離開中斷都有相當的 overhead,也會佔掉微控制器的效能。經由上述的分析,可以了解到傳統 MCU 是無法做到真正的平行處理,想要減少反應的時間也只有透過提高控制晶片的工作頻率或在控制晶片內部增加硬體電路。
上圖下半部為 FPPA 多核心微控制器單晶片架構在 task 處理的示意圖,FPPA 的一大重點就是多工處理能力,每個 FPP unit 可以平行獨立處理程式,不需要複雜的中斷處理程式就可以完成多工,還可以適時的調整每一個 FPP unit 的處理能力,用一個FPP unit 來處理多件不急的事件,也可以用一個 FPP unit 來專心處理緊急的事件。除了靈活彈性的周邊功能外,FPPA 多核心微控制器提供平行處理的架構,讓程式更精簡、反應時間更短。
P7.
系統設計師寫程式時,常常用到某個事件發生後需要處理其他許多的事件。圖的上半部,就是傳統 MCU 作法,等待事件發生後,進入 ISR,接著依序處理 TASK1、TASK2、TASK3 等事件;但是,FPPA 可以有完全不同的作法,卻能更有效率的處理事件,利用"wait1/wait0" 指令搭配各個 FPP unit 可獨立執行程式,FPP1、FPP2、FPP3 可以同時等待同一事件的發生,然後再各自執行所對應的 TASK1、TASK2、TASK3。大家可以發現,利用多核心單晶片的程式語法,可以很精簡的完成平行多工的事件處理,而且不會像傳統的單核心微控制器,只能依序的執行 TASK1 -> TASK2 -> TASK3。由於不依賴中斷來處理事件,所以不需花時間處理繁複的堆疊(stack)管理,讓多工的程式得以輕而易舉的完成。
P8.
另外,很重要的是 FPPA 的所有指令都是 1T(除了查表指令是 2T),這讓程式設計者在 timing 的計算更容易,當然也讓單晶片在較低的工作頻率下,卻能夠擁有較高的性能。下圖是 FPPA PDK80CXX 與一些常見微控制器在指令以及性能的比較表:
P9.
在電氣特性的表現上,PDK80CXX 雖然內含八核心,但是在耗電、抗干擾的表現上似乎又更勝一籌,下圖是在電氣特性上的比較表。
P10.
號稱近100個指令,可以參考FPPA指令集.doc或FPPA簡化指令表.txt
P13.
利用 FPPA 多核心微控制器來產生控制直流無刷馬達所需的六步方波,只用兩個 FPP unit 就完成該控制訊號了!產生六步方波的程式範例如下圖所示,在 FPPA 多核心微控制器架構中,FPP unit 是可以彼此互相控制,在本範例中就是利用 FPP6 去控制FPP7 的程式。FPP7 程式的寫法在傳統 MCU 是個死迴圈,一定會當機;但是 FPPA 是個多核心的架構,可以藉由控制每一 FPP unit的 PC( Program Counter)來作不同程式區段的跳躍,使得程式更有彈性與效率。您可以只用兩個 FPP unit 就可以完成不同時間執行不同模組的副程式,只要由一個 FPP unit 來 Enable 或 Disable 另一個 FPP unit,甚至執行完全不同的功能。本範例程式可以顯示出多核心架構的優勢,以及利用多核心特有的平行處理能力,可以遠遠超越傳統 MCU 所能提供的功能,在事件發生後之快速反應更是傳統 MCU所望塵莫及。