• 沒有找到結果。

1.3 全文架構

本篇論文主要分為五個章節,以下為各章節內容概述:

【第一章】緒論

說明本論文的研究背景、動機、目的、方法以及全文架構。

【第二章】基礎理論與技術背景介紹

介紹本論文所使用的演算法、理論基礎、技術背景、以及棘波分類系統 的運作流程。

【第三章】系統開發架構

介紹本論文所開發的系統架構、以及開發的流程,並對其進行說明。

【第四章】實驗數據與效能比較

主要包括實驗環境說明、以及相關的實驗數據分析、軟硬體效能比較以及 與現有的系統做比較。

【第五章】結論

對於此系統實驗結果進行總結。

第二章 基礎理論與技術背景介紹

在本章節將介紹棘波分類流程、與現有公開的兩套棘波分類軟體Wave_clus 與Osort,以及本論文所使用的 NoC 架構與棘波分類相關演算法,並說明其應 用。

2.1 棘波分類步驟

完整的棘波分類流程主要可以分為三個步驟:棘波偵測(Spike Detection)、

特徵擷取(Feature Extraction)、以及棘波分群(Clustering),以下將對這三個步驟做 一個詳細的介紹。

圖2.1 棘波分類流程圖

棘波偵測的目的是從棘波序列中找出棘波發生的位置。通常會先將棘波序 列經由帶通濾波器(Bandpass Filter),使得頻率調整在限定的範圍內,經由設定閥 值(Threshold)來偵測,如果超出了閥值就認定為是一個棘波。下圖 2.2 例子看出

6

是如何經由閥值認定而取得一個完整的棘波的,通常都是連續超過閥值後的幾 個點加上特定的維度來當作一個完整棘波的末端位置。而經由所紀錄的末端位 置向前取一個棘波維度的大小即將棘波完整的擷取出來,過濾掉雜訊了。

圖2.2 棘波偵測示意圖

棘波偵測後,一般都會做特徵擷取,降低棘波序列的資料維度,以利後續 的棘波分群。特徵擷取的部分在本論文是採用通用赫賓學習法則(Generalized Hebbian Algorithm , GHA)演算法,其避免了傳統主成分分析法則(Principal Component Analysis , PCA)需要計算共異數矩陣的複雜過程。棘波分群主要是利 用特徵擷取後結果,即利用訓練後的特徵值進行運算,計算出每一群的質心,

最後再利用質心將不同神經元所產生的棘波訊號加以分類。常見的棘波分群採 用非監督式分群演算法(Fuzzy C-Means , FCM),是經由 K-Means 演算法改良而 來的,可以經由判斷設定群的數量。

閥值(Threshold)

2.2 公開的棘波分類軟體

Wave_clus 為加州里工學院在西元 2004 年所開的棘波分類系統[10],作者為 Rodrigo Quian Quiroga,其開發目標為自動偵測棘波與棘波分類,在棘波偵測的 部分使用自動閥值(Automatic Threshold)來進行偵測,其特徵擷取是使用小波轉 換(Wavelets),而棘波分類是使用(Superparamagnetic clustering , SPC)分群演算法 則。相較於其它傳統的偵測與分類演算法,Wave_clus 有效的提高了其偵測與分 類效果。且當中提供了從人類腦中所紀錄的真實棘波數據。而下圖2.3 是

Wave_clus 的簡易操作,當中載入了真實的腦波數據並經過橢圓形濾波器後縮減 了其振幅大小。

圖2.3 Wave_clus 的簡易操作圖

8

OSort 為加州里工學院在西元 2005 年所開發的棘波分類系統,作者為 Ueli Rutishauser,其開發目標為做棘波分類,當中使用了一套自有的演算法來進行分 類處理,以下來做一個簡單棘波分類示意圖介紹:

圖2.4 棘波分類示意圖

假設示意圖(b)為第一個棘波時,第二個棘波(a)會與棘波(b)進行比對,其比 對結果為相似,因此結合成了棘波(c)。當棘波(d)與棘波(c)進行比對時明顯不一 樣,因此棘波(d)將變成一個新的比對的目標,即模板(Template)。假設經由多次 結合後,產生了棘波(e)模板,由於棘波(d)與棘波(e)兩塊模板相似,因此 OSort 演算法運算過程會將兩塊相似模板結合,以提供有效的正確分類。

(a) (b)

a.棘波示意圖

(c) b.棘波示意圖

(d) (e)

兩套棘波分類軟體都提供了一個簡易的操作介面,讓使用者能夠輕易的上 手並進行分析,且當中都有使用到從人類腦中所紀錄的真實棘波數據,而兩套 系統的最大不同點在於使用的棘波分類演算法,Wave_clus 使用小波轉換與 SPC 分群演算法,而OSort 則是使用一套自有的演算法,類似於模板的比對方式,而 詳細的差別可以參考下表2.1。

WaveClus OSort

Features Wavelet transform Raw data points Clustering method Superparamagnetic

clustering

Template matching

Open source Yes Yes

GUI available Yes Yes

Real Data Yes Yes

Sampling Frequency 32051 25000

表2.1 兩套棘波分類軟體比較圖

10

2.3 通用赫賓學習法則(GHA)

全名為Generalized Hebbian Algorithm,是棘波特徵擷取常用的法則之一,此 法則之輸入向量代表了一個棘波,GHA 經由輸入向量去訓練出權重向量,訓練

而在這為了降低計算時的複雜度,可將公式(5) 可以改寫成公式(6):

𝑤𝑗,𝑖(𝑛 + 1) = 𝑤𝑗,𝑖(𝑛) + 𝜂𝑦𝑗(𝑛)[𝑥𝑖(𝑛) − ∑𝑗𝑘=1𝑤𝑘,𝑖(𝑛)𝑦𝑘(𝑛)] (6) 由這些已訓練完成之突觸權重向量 𝐰𝑗 , 𝑗 = 1, … , 𝑝 ,使用已訓練完之突觸權 重向量與原本輸入之訓練向量做內積得到的特徵向量稱為 𝐟𝑛 ,如下式(8)(9):

𝐟𝑛 = [𝑓𝑛,1, … , 𝑓𝑛,𝑝]𝑇 (8) 當

𝑓𝑛,𝑗 = ∑ 𝑤𝑗,𝑖𝑥𝑖(𝑛) (9)

𝑚

𝑖=1

為 𝐟𝑛 中第 𝑗 個元素。而獲得的特徵向量集合 𝐹 = {𝐟1, … , 𝐟𝑡},可用於後續之棘波 分類,而更多關於GHA 的應用[6,7],將會在後續章節中討論。

在本論文實作中,我們設定採樣率(Sampling Rate)為 24000 採樣點/秒,由於 每個棘波訊號長度為2.67 毫秒,因此也代表著每個棘波訊號擁有 64 個採樣點 (Sample),也就是 m=64。我們同時讓主成份個數 p=2,且訓練向量總數為 t=800。

12

2.4 NoC 架構

NoC(Network on Chip)是一個將網路訊息傳遞應用於晶片上的一個新技術,

解決了傳統的SoC 通訊結構中有著延遲、通信效能、設計效率不佳的問題,

NoC 可以說是 SoC 的升級版。為了確保每個元件間資料傳輸與訊號溝通的正確 性,將網封包傳輸的概念應用於晶片上,讓不同元件間的資料能夠正確交換。

NoC 系統當中包含了 IP cores、網路介面、與路由器,下圖 2.5 即表示了 NoC 的基本架構:

圖2.5 NoC 的基本架構圖

主要是以封包的方式讓不同元件通訊,網路介面的功能是將資料做壓縮與 解壓縮,讓各個元件間建立起連線,即取代了以往的匯流排。Router 在 NoC 中 扮演著相當重要的角色,可以讓一些特定的元件來當Router,它能讓封包化後

的資料正確的傳送到目的地。採用NoC 架構間的各個元件可以獨立運作,相較

於SoC,可以節省傳遞資料過程中所造成的資源浪費,也可以節省傳遞所花費

的時間。NoC 相較於 SoC,對於實現多核心的嵌入式系統也有較好的效能。

SoC 使用了共用匯流排,同一時間只允許一個處理器進行存取,當處理器數

量多的情況下,會造成了整個系統的效能變低,而NoC 架構改善了這個缺點,

因此整個效能有大幅的提升。由以下圖2.6 與圖 2.7 中可以對於 NoC 有進一步了 解。

圖2.6 傳統 SoC 使用了共用匯流排

圖2.7 NoC 架構間的各個元件可以獨立運作

Core Core Core Memory

Memory Bus

……

14

第三章 系統架構

本章節會詳細介紹本論文所提出以區域網路實現跨平台之離線棘波分類 系統,將說明系統架構、其運作流程,以及如何在Network-On-a-Chip(NoC)平台 中建立客製化邏輯電路之相關元件,其主要包含了Triple-Speed Ethernet、On-Chip RAM、GHA 電路、以及 SG-DMA Controller、DMA Controller 兩個不同應 用之元件,並說明其軟體設計之方法。

3.1 實現跨平台棘波分類系統之架構

本論文實現方法必須分為MATLAB 軟體與 FPGA(Field-Programmable Gate Array)硬體兩個部分來設計,其目的為透過區域網路(Local Area Network, LAN)將棘波序列傳送至棘波分類法則中進行運算,最後將其運算結果傳回至

做運算呢?該如何將計算完後的特徵向量傳回到MATLAB 進行處理呢?其必須 的元件,其主要包含函了MAC Controller、DMA Controller 與 GHA 客製化邏輯 電路。(2)在 Nios II 上使用 C 語言設計 Socket Server,將訓練向量傳送至客製化

16

SG-DMA Controller 網路與On-Chip RAM 之 資料傳送

DMA Controller On-Chip RAM 與 GHA 之資料傳送

GHA 將棘波進行特徵擷取 否

表3.1 本系統所採用的元件名稱以及其功能

3.2.1 建立 NIOS II 元件

首先,在這必須先打開Quartus II 10.1 後的版本,因為是 Altera 所推出的 新工具。在這點取選單Tools 裡的 Qsys:

圖3.2 Quartus II 10.1 後版本中提供了 Qsys 工具

在Component Library 中輸入關鍵字 NIOS II,將會出現 Nios II Processor 供點選以進行參數設定。

圖3.3 透過 Library 新增 Triple-Speed Ethernet 元件

18

點選上方Core Nios II 欄位,由圖 3.4 可見 Reset Vector 與 Exception Vector 欄位所設定的相關參數,選擇ext_flash.uas 即可將程式放於 Flash 中,正常情況 下由起始0x1720000 位址開始執行,而發生例外的情形將經由所選擇之

ssram.uas 而去 SSRAM 中的 0x00000120 位址執行。

圖3.4 Nios II Processor 之 Core Nios II 欄位相關參數設定

在Caches and Memory Interfaces 欄位中,經由 Instruction cache 去設定為 4Kbytes,而 Data cache 設定為 2Kbytes,Data cache line size 設定為 32Bytes。

圖3.5 Nios II Processor 之 Caches and Memory Interfaces 欄位相關參數設定

3.2.1 建立 SSRAM Controller 元件

同步靜態隨機存取記憶體(Synchronous Static Random Access Memory , SSRAM),其功能為儲存程式,在 Component Library 中輸入關鍵字 Generic Tri-State Controller,將會出現 Generic Tri-Tri-State Controller 供點選以進行參數設定。

圖3.6 透過 Library 新增 Generic Tri-State Controller 元件

20

在Signal Selection 欄位中設定 Address width 為 32、Data width 為 16、

Byteenable width 為 2、Bytes per word 為 2,在 Enable the following signals 中勾選 設定資料可以讀寫以及一些額外的設定訊號。

圖3.7 Generic Tri-State Controller 中 Signal Selection 的參數設定

在Signal Timing 中設定其 Read wait time 為 4、Write wait time 為 1,以及 其相關參數設定。

圖3.8 Generic Tri-State Controller 中 Signal Timing 的參數設定

3.2.2 建立 On-Chip RAM 元件

在Component Library 中輸入關鍵字 On-Chip Memory,將會出現 On-Chip Memory(RAM or ROM)供點選以進行參數設定。

圖3.9 透過 Library 新增 On-Chip Memory(RAM or ROM)元件

22

在這先新增實際所存放資料的On-Chip RAM,在 Size 欄位的 Data with 與 Total memory size 中,可以設定接收的字串長度與設定其 Memory 總共的大小。

而在Memory initialization 欄位勾選 Initialize memory content 則可以初始化其記 憶體,在每個區段位址的值為設定為0。

圖3.10 設定 On-Chip Memory 參數

3.2.3 建立 JTAG 元件

其主要為發展系統連接主電腦與NOC 平台的重要元件,首先在在

Component Library 中輸入關鍵字 JTAG,將會出現 JTAG UART 供點選以進行參 數設定。

設定接收字串長度為32 位 元,且設定總共的記憶體 大小為524288 位元組

設定其內容初始值為0

圖3.11 透過 Library 新增 JTAG UART 元件

在Write FIFO(Data from Avalon to JTAG)中設定 Buffer depth 為 512 位元 組,而IRQ threshold 設定為 8,在 Read FIFO(Data from JTAG to Avalon)中設定 Buffer depth 為 512 位元組,而 IRQ threshold 設定為 8。

圖3.12 設定 JTAG 元件之參數

24

3.2.4 建立 Triple-Speed Ethernet 元件

元件中包含了傳送和接收的FIFO Buffer,其 Memory 的寬度在這設定為 32Bits,其 FIFO Buffer 的大小會依據 Memory 寬度呈倍數成長,所以這邊設定 傳送和接收的FIFO Buffer 大小為 1024×32Bits,即 4096 位元組。

圖3.13 設定 Triple-Speed Ethernet 元件之參數

圖3.13 設定 Triple-Speed Ethernet 元件之參數

相關文件