對本論文做最後的總結。
第二章 理論基礎與技術背景
第二章 理論基礎與技術背景
為了求出 FCM 演算法收斂後的 VQ 帄均失真值(average distortion),我們將收 斂後得到的一組質量中心點{v1,...,vc}代入以下計算公式:
第二章 理論基礎與技術背景
第二章 理論基礎與技術背景
2.2 SOPC 系統整合設計
隨著科技的進步與近年來微電子技術及其應用快速的發展,產品生命週期日 益下降,功能日益複雜,如何在短時間內開發出好的產品是個重要的議題。由於 在傳統的系統設計上,軟體與硬體是分開設計的,若在整合軟硬體時出現錯誤,
除錯是非常困難的,必須需花費大量的時間重新檢查軟硬體,也因此延遲了產品 開發時間,降低了競爭力。為了改善軟硬體分開設計的缺點,可程式化系統晶片 設計(SOPC)是一種新的軟硬體整合設計技術,SOPC 帶來的靈活性,使過去耗費、
刻板的硬體設計變得像軟體設計一樣容易除錯修改,可以加速產品的開發設計,
提升整體的競爭力,大大降低設計的時間與成本。
Altera 公司根據不同使用者的需求,開發出許多不同系列的 FPGA 開發板,並 且推出 PLD(programmable logic device)設計軟體 Quartus II 供使用者使用,Quartus
II 包括硬體描述語言的輸入、合成模擬工具、時序分析工具,繞線布局工具、產 品驗證工具等,是一個應用廣泛、非常受歡迎的 PLD 設計工具。本研究是在 NIOS
development kit 中的 Stratix II EP2S60 和 Cyclon III EP3C120 系統開發板上實現 我們所提出的硬體電路,在 NIOS 系統中提供了一套專門給 NIOS 處理器使用的 匯流排(Avalon bus),使用者可以利用此匯流排上的各個訊號線,將電路掛載在 Avalon bus 上與整個系統溝通,而使用者電路稱為使用者自訂邏輯(Custom User Logic)如圖 2.2 所示;整個系統的設計流程如圖 2.4 所示。
第二章 理論基礎與技術背景 NIOS 系統擁有下列優點:
1. Altera 公司所提供的 NIOSⅡ IDE 是視窗介面的軟體開發工具,設計者可 以在上面編寫程式碼、編譯、除錯及觀察程式執行結果。此開發工具除 了包含 C 語言的函式庫外,還包含 HAL(hardware abstraction layer)函式庫。
其中 HAL 函式庫提供設計者一個呼叫系統相關裝置的 API(Application
Program Interface),如圖 2.3 所示,所以設計者可以撰寫 C 語言程式並透 過 HAL API 呼叫來讓特定的裝置運作。
2. 提供 Compact Flash 卡存取功能,讓設計者可以將資料置於 CF 卡中,設 計者可透過 HAL API 進行讀取與寫入的動作。
3. 提供 DMA(direct memory access)機制讓設計者可加快資料在記憶體與系 統周邊元件的傳輸速度且不佔用 CPU 資源。
4. lwIP 提供基本的網路功能,除了符合嵌入式系統最基本的簡單、快速、
不佔用過多系統資源之外,也讓設計者更容易修改或增刪想要的功能而 不需有大量的修改或變更程式。
5. 設計者可依自己的需求增減電路的功能,製作一個專屬的系統。如需增 減裝置時,只要重新 build 系統並 compile 成硬體檔之後燒入板子即可。
第二章 理論基礎與技術背景
圖 2.2 Avalon System[15]
圖 2.3 HAL API
第二章 理論基礎與技術背景
圖 2.4 軟硬體共同設計流程圖
第三章 基礎電路架構介紹
第三章 基礎電路架構介紹
在本章中我們將詳細說明本論文所提出的 FCM 分群演算法基礎電路,及其 內部各單元架構。
3.1 簡介
由 於 FCM 分 群 演 算 法 需 要 大 量 的 運 算 成 本 , 且 必 須 儲 存 權 重 矩 陣
(membership coefficients matrix)以便計算公式(1)及公式(3),當權重矩陣的大小隨 著訓練向量與分群數目的乘積而快速上升時,不論是用軟體實現或者是硬體實 現,都必須付出相當大的代價,對於資源有限的 FPGA 開發板而言,無疑更是一 個沉重的負擔。
有鑑於此,本論文提出一個不需儲存權重矩陣的 FCM 分群演算法硬體架構,
此硬體架構具有管線化與帄行計算能力,由 pre-computation unit、membership
coefficients updating unit、centroid updating unit 及 cost function computation unit 四 個單元所組成,並如圖 3.1 所示;接下來的小節裡,我們將仔細介紹每個單元內 部電路。
第三章 基礎電路架構介紹
圖 3.1 FCM unit 架構圖
第三章 基礎電路架構介紹
pre-computation unit 先把 Pk算出來,再傳遞給 membership coefficients updating unit 計算權重,可以減少整體的計算複雜度。
第三章 基礎電路架構介紹 圖 3.2 為計算1 xk vi 2的第 i 層級硬體電路架構圖,如圖 3.2(a)所示,電路 可以簡單的分成兩個部分,第一個部分計算 xk vi 2,第二個部分計算 xk vi 2的 倒數值1 xk vi 2,因此我們的電路可以視為 2-stage 的管線化設計如圖 3.2(b)所 示。圖 3.2(b)中我們可以發現有兩個訓練向量 xk、xk-1同時在管線化電路中做運算,
在同一個時間點中,對 xk而言是計算 xk vi 2,對 xk-1而言則是計算1 xk1vi 2, 兩者是同時進行的,這樣的管線化架構使得我們的電路有較高的產能。
(a)
(b)
圖 3.2 計算1 xk vi 2的硬體電路架構圖:(a)基礎架構圖,(b)2-stage 的管線化架 構圖。
第三章 基礎電路架構介紹
第三章 基礎電路架構介紹 (lookup table)和簡單的減法、乘法運算即可完成 inverse unit,使我們的硬體電路 不會因為 inverse unit 而消耗太多資源。值得一提的是對齊單元將除數跟被除數位
第三章 基礎電路架構介紹 移到 0.5 與 1 之間,並且記錄其位移的位元數,使除數與被除數皆符合[12]所提出 來的演算法,並在結果輸出時根據之前記錄的位元數做相對應的處理,不會產生 溢位(overflow)的現象。
第三章 基礎電路架構介紹
3.3 Membership coefficients updating unit
當訓練向量 xk進入 pre-computation unit 並且算出 Pk後,即可將 Pk廣播給
membership coefficients updating unit 做運算,其目的是計算出 xk在每一群的權重 帄方值ui2,k,圖 3.4(a)為計算ui2,k的基礎電路。從公式(6)可以發現當 m = 2 時,我 們需要三個乘法運算及一個倒數運算。其中計算 xkvi 2Pk需要兩個乘法運算,
接著需要一個倒數運算以便求得ui,k,最後再進行一個乘法運算即可求得ui2,k。此 外,為了提高硬體電路的運算頻率,我們將 3.4(a)的基礎電路分成兩個 stage 的管 線化架構,如圖 3.4(b)所示。
接下來我們將詳細討論 membership coefficients updating unit 的架構與運作流 程,我們採用並行計算的方式,計算 xk在每一群的權重值ui,k,由於 m = 2,為了 方便往後公式(1)及公式(3)的運算,我們在 membership coefficients updating unit 直接計算出ui2,k值。而在 membership coefficients updating unit 中有 c 個獨立的 module,每個 module 會接收到來自 pre-computation unit 的 xk與 Pk,如圖 3.5 所 示,我們只需兩個 clock 即完成ui2,k,i1, ,c的運算。
第三章 基礎電路架構介紹
(a)
(b)
圖 3.4 計算ui2,k的硬體電路架構圖:(a) 基礎架構圖,(b)2-stage 的管線化架構圖。
其中每個 module 皆是 2-stage 的管線化架構,第一個 stage 有三個輸入埠與三 個輸出埠,三個輸入埠為訓練向量 xk的輸入埠、質量中心點 vi的輸入埠及 xk經由 pre-computation unit 計算出的 Pk輸入埠;三個輸出埠為訓練向量 xk的輸出埠、距 離帄方值 xkvi 2的輸出埠及 xk vi 2Pk的輸出埠。
第三章 基礎電路架構介紹 第一個 stage 由一個 squared distance unit 及一個 multiplier unit 所組成,當 xk
進入第一個 stage 後,會先經過 squared distance unit 計算出 xk vi 2,接著在 multiplier unit 進行 xk vi 2與 Pk的乘法運算,計算出 xkvi 2Pk。由於這是兩個 stage 的管線化架構,同一時脈中會有兩個訓練向量在此架構中同時運作,亦即 xk在第一個 stage 計算時,xk-1會在第二個 stage 同時做運算。
而第二個 stage 也是三個輸入埠與三個輸出埠,三個輸入埠為訓練向量 xk-1
的輸入埠、距離帄方值 xk1vi 2的輸入埠及 xk1vi 2Pk的輸入埠;三個輸出埠為 訓練向量 xk-1的輸出埠、距離帄方值 xk1vi 2的輸出埠及ui2,k1的輸出埠。第二個
stage 是由一個 inverse unit 和一個 multiplier unit 所組成。其中 inverse unit 負責計 算 xk1vi 2Pk的倒數值1 xk1vi 2Pk,此時1 xk1vi 2Pk 即為ui,k1,接著ui,k1進 入 Multiplier Unit 進行帄方計算,即可求出ui2,k1,方便接下來的 centroid updating
unit 及 cost function computation unit 運算。
由以上的描述可以知道,當訓練向量 xk及其伴隨的 Pk值廣播給 membership coefficients updating unit 內所有的 module 後,可以在兩個 clock 內算出 xk在每一 群的權重帄方值ui2,k,並傳遞到下個 unit 做運算,這將會提升我們電路的效能。
第三章 基礎電路架構介紹
圖 3.5 Membership coefficients updating unit 架構圖
第三章 基礎電路架構介紹
3.4 Centroid updating unit
為了不需儲存 xk在每一群的權重帄方值ui2,k,centroid updating unit 在每次 xk
Centroid updating unit 的基礎架構圖如圖 3.6 所示,此電路包含一個乘法器、
兩個累加器(accumulator)及一個除法器,其中乘法器用來計算 xk與ui2,k的乘積,累
第三章 基礎電路架構介紹
圖 3.7 Centroid updating unit 架構圖
第三章 基礎電路架構介紹
整體的 centroid updating unit 架構圖如圖 3.7 所示,包含了 c 個獨立的 module,
所有 module 都是並行(concurrent)的計算,每個 module 會計算出一組vi
k ,在最 後一筆訓練向量計算完成後得到vi
t ,我們利用最後算出來的質量中心點vi
t 去 更新 pre-computation unit 和 membership coefficients updating unit 的質量中心點,以便下一次計算。
第三章 基礎電路架構介紹
3.5 Cost function computation unit
如圖 3.1 所示,cost function computation unit 的運算與 centroid updating unit
是並行的,跟 centroid updating unit 一樣我們對公式(1)重新定義如下:
圖 3.8 Cost function computation unit 架構圖
第三章 基礎電路架構介紹
cost function computation unit 接收到來自 membership coefficients updating unit 輸出的資料後,即進入乘法器進行乘法運算,其中 xk v1 2與u1 k2, 進行乘法運算、
2
v2
xk 與u2 k2, 進行乘法運算,依此類推。所有的 multiplier 是並行計算的,計算 出結果後便直接到加法器做加總並且累加結果。當 k = t 時J
t 即是最後的累加結 果,等同於公式(1)的計算結果 J,如此,我們便能不需儲存權重矩陣即可算出 J 值。第四章 實驗結果與數據探討
第四章 實驗結果與數據探討
本章節主要是呈現並且討論我們提出之架構的一些實驗結果。
4.1 開發帄台與實驗環境介紹
本論文提出的架構主要是以 Altera 公司的 Stratix II EP2S60 FPGA 開發板及
Cyclone III EP3C120 FPGA 開發板為主要的實現帄台,如圖 4.1、圖 4.2 所示。而 選擇 FPGA 開發板來做為實現帄台,是因為可程式化系統晶片可以加速硬體架構 的實現與驗證,具備可重複修改與快速上市等優點,使得 FPGA 非常適合實現本 論文所提出的 FCM 硬體架構。表 4.1 是 Altera Stratix II EP2S60F672C5ES FPGA 開發板的詳細規格資訊;表 4.2 是 Altera Cyclone III EP3C120F780C8 FPGA 開發 板的詳細規格資訊。
圖 4.1 Altera Stratix II EP2S60 實驗開發板
第四章 實驗結果與數據探討
Feature Stratix II
Device EP2S60F672C5ES
Adaptive Logic Modules (ALMs) 24,176 Adaptive look-up tables (ALUTs) (1) 48,352 Equivalent Logic Elements (LEs) (2) 60,440 M512 RAM Blocks (512 bits + Parity) 329
M4K RAM Blocks (4 Kbits + Parity) 255 M-RAM Blocks (512 Kbits + Parity) 2
Total RAM bits 2,544,192
DSP Block 9-bit elements 288
Total PLLs 6
Total DLLs 2
Total Pins 493
Notes :
(1) One ALM contains two ALUTs. The ALUT is the cell used in the Quartus® II software for logic synthesis.
(2) This is the equivalent number of LEs in a Stratix device (four-input LUT-based architecture).
表4.1 Altera Stratix II EP2S60 FPGA開發板的規格[15]
第四章 實驗結果與數據探討
第四章 實驗結果與數據探討