• 沒有找到結果。

里德所羅門軟體解碼器之硬體加速器設計

N/A
N/A
Protected

Academic year: 2021

Share "里德所羅門軟體解碼器之硬體加速器設計"

Copied!
75
0
0

加載中.... (立即查看全文)

全文

(1)

國立交通大學

國立交通大學

國立交通大學

國立交通大學

電機與控制工程學系

電機與控制工程學系

電機與控制工程學系

電機與控制工程學系

里德所羅門軟體解碼器之硬體加速器設計

Hardware Accelerator Design for Processor-based

Reed-Solomon Decoder

研 究 生:簡嘉宏

指導教授:董蘭榮 博士

(2)

里德所羅門軟體解碼器之硬體加速器設計

Hardware Accelerator Design for Processor-based

Reed-Solomon Decoder

研 究 生:簡嘉宏 Student:Chia-Hung Chien

指導教授:董蘭榮 博士 Advisor:Lan-Rong Dung

國 立 交 通 大 學

電 機 與 控 制 工 程 學 系

碩 士 論 文

A Thesis

Submitted to Department of Electrical and Control Engineering College of Electrical Engineering and Computer Science

National Chaio-Tung University in Partial Fulfillment of the Requirements

for the Degree of Master in

Eletrical and Control Engineering October 2008

Hsinchu, Taiwan, Republic of China

(3)

里德所羅門軟體解碼器之硬體加速器設計

研 究 生:簡嘉宏

指導教授:董蘭榮 博士

國立交通大學電機與控制工程學系

摘要

摘要

摘要

摘要

本篇論文提出了一套里德所羅門解碼器以處理器為基礎外掛硬體加速器的 架構,主要是為了適應於各種不同的里德所羅門碼的規格,也是為了解決使用處 理器運算里德所羅門碼裡的伽羅瓦場乘法花費太多的時間。因為處理器的處理速 度越來越快,使得一些不需要高處理效率(Throughput)的功能可以由處理器來做 運算,也可以達到要求。也因此以前需要使用許多的 ASIC 才能做許多不同的工 作,而處理器卻只需一個就可以做不同的工作。所以現在的趨勢也慢慢的將許多 功能交由處理器來運算。在里德所羅門碼中所有的運算都是建立在伽羅瓦場中, 然而處理器對於伽羅瓦場的乘法運算沒有特別的方法可以使用,因此處理器在做 伽羅瓦場的乘法運算相當耗時。因為這個原因,所以將在里德所羅門解碼中使用 到最多伽羅瓦場乘法運算的方塊以硬體加速器處理以增加運算速度。由於硬體有 一套特殊的伽羅瓦場乘法運算,因此加快了運算的速度。在里德所羅門解碼中的 尋找錯誤症狀和尋找錯誤位置這兩部份使用到了許多伽羅瓦場的乘法運算,因此 將這兩部份以硬體加速器的方式實現,又因為這兩部份的運算很類似,所以將這 兩部份以同一套硬體來實現,並且使用摺疊硬體架構,減少外掛硬體加速器的面 積,也讓外掛硬體加速器更具有擴充性。

(4)

Hardware Accelerator Design for Processor-based

Reed-Solomon Decoder

Student:Chia-Hung Chien Advisor:Dr. Lan-Rong Dung

Department of Electrical and Control Engineering

National Chiao Tung University

ABSTRACT

This thesis presents a processor-based with hardware accelerator for Reed-Solomon decoder. The main reason doing this is to adapt different types of Reed-Solomon code, also to solve the problem of using too much time do the multiply of Galois field in Reed-Solomon code. Now with one processor could complete many works which needed many ASIC before. But processor operate multiplication of Galois field is very slow. So we need hardware accelerator speed up multiplication of Galois field. The reconfigurable Reed-Solomon decoder is targeted on xDSL applications. Under the requirement of the throughput rate, we fold the Reed-Solomon decoding with the minimal number of processing elements (PEs) while the complexity of scheduler is low. The folded architecture is suitable for array processors whose processing rate is not necessary to be optimal. The proposed reconfigurable decoder is highly scalable as the application parameters change.

(5)

誌謝

本篇論文得以順利完成,首先要感謝的是我的指導教授──董蘭

榮教授,在碩士班的兩年間,董教授不厭其煩地指導我,當我陷入瓶

頸時,董教授亦適時地指點我正確的方向,讓我不至於常常失焦,並

且及時做出修正,並且提供非常豐富的資源,讓我能好好潛心於學習

研究,讓我在這兩年間獲益良多。

感謝整個實驗室研究團隊的支持與幫助,無論是精神上的鼓勵,

或是研究上的協助,都讓我在這段研究的日子裡得以堅持。謝謝學長

們的指導,謝謝同學們的陪伴,謝謝學弟們的加油打氣,這些都是我

心靈上最溫暖的寄託,研究上最堅強的後盾。最後要感謝我的家人的

支持,有了你們的鼓勵,使我無後顧之憂,才能夠安心地完成碩士班

學業。

謹將此論文獻給所有關心我的人,在此致上最深的謝意。

(6)

章節目錄

章節目錄

章節目錄

章節目錄

中文摘要...i 英文摘要...ii 誌謝...iii 章節目錄...iv 圖目錄...vi 表目錄...viii 第一章 第一章 第一章 第一章 簡介簡介...1 簡介簡介 1-1 研究動機...1 1-2 章節規劃...2 第二章 第二章 第二章 第二章 研究背景研究背景...3 研究背景研究背景 2-1 伽羅瓦場(Galois Field)定義介紹...3 2-1.1 本質多項式與伽羅瓦場的建立...3 2-1.2 伽羅瓦場的乘加運算...5 2-2 里德所羅門(Reed-Solomon)碼定義介紹...5 2-3 里德所羅門(Reed-Solomon)編碼演算法...6 2-4 里德所羅門(Reed-Solomon)編碼演算法...7 2-4.1 收到信號的錯誤症狀(Syndrome)計算...10 2-4.2 尋找錯誤位置多項式之方法...10 2-4.3 尋找錯誤位置之方法(Chien Search)...15 2-4.4 尋找錯誤大小的佛尼(Forney)演算法...16 第三章 第三章 第三章 第三章 摺疊演算法之推導與設計及摺疊演算法之推導與設計及 Xilinx EDK 摺疊演算法之推導與設計及摺疊演算法之推導與設計及Xilinx EDK Xilinx EDK Xilinx EDK 整合系統環境介紹整合系統環境介紹整合系統環境介紹 ...17 整合系統環境介紹 3-1 摺疊演算法的硬體架構介紹...17

(7)

3-3 Xilinx EDK 整合系統背景...23

3-4 MicroBlaze 架構...24

3-5 On-chip peripheral Bus(OPB)...25

第四章 第四章 第四章 第四章 硬體實現架構硬體實現架構...29 硬體實現架構硬體實現架構 4-1 整合里德所羅門解碼器與完整電路架構...29 4-2 伽羅瓦場乘法器...30 4-3 處理錯誤症狀(Syndrome)之硬體摺疊架構...33 4-3.1 乘加運算器及暫存器檔案...34 4-3.2 位址產生器的設計...38 4-4 尋找錯誤位置之硬體摺疊架構...40 4-4.1 一般方法之尋找錯誤位置硬體摺疊架構...40 4-4.2 一般方法之尋找錯誤位置硬體摺疊架構之乘加運算器及暫存器 規劃...41 4-4.3 變形之尋找錯誤位置硬體摺疊架構...44 4-4.4 變形之尋找錯誤位置硬體摺疊架構之乘加運算器及暫存器規劃 ...45 4-5 尋找錯誤症狀硬體架構與尋找錯誤位置硬體架構的合併...50 4-5.1 尋找錯誤症狀-位置(Syndrome-Chien search)的硬體架構...50 4-5.2 尋找錯誤症狀-位置(Syndrome-Chien search)硬體架構之乘加運 算器與暫存器規劃...51 4-6 尋找錯誤位置多項式及錯誤大小評估多項式之軟體實現...54 4-7 尋找錯誤大小之軟體實現...56 4-8 里德所羅門解碼之軟、硬體系統整合...56 4-9 實現結果...58 第五章 第五章 第五章 第五章 結論與未來發展結論與未來發展...62 結論與未來發展結論與未來發展 參考文獻 參考文獻 參考文獻 參考文獻::::...64

(8)

圖目錄

圖目錄

圖目錄

圖目錄

圖 1 非二進位環狀碼(Cyclic code)的編碼(Encoding)電路 ...7 圖 2 里德所羅門解碼流程圖 ...9 圖 3 錯誤症狀運算電路 ...10 圖 4 LFSR 架構迴圈形式...11 圖 5 基本運算單元(Processing Element)...18 圖 6 基本運算單元陣列 ...19 圖 7 基本運算單元陣列之時序規劃...20 圖 8 基本運算單元陣列之摺疊架構 ...21 圖 9 摺疊架構之乘加器與暫存器規劃 ...21 圖 10 摺疊架構之暫存器定址 ...22 圖 11 MicroBlaze 處理器架構圖...25 圖 12 MicroBlaze 系統的 OPB 仲裁器示意圖...26 圖 13 OPB 讀取時序圖...28 圖 14 OPB 寫入時序圖...28 圖 15 里德所羅門解碼器軟、硬體概略圖 ...30 圖 16 兩種互斥樹狀架構 ...32 圖 17 建立在 GF(24 )之非規則全平行乘法器硬體架構 ...33 圖 18 錯誤症狀計算之陣列硬體架構 ...34 圖 19 更正能力 t=8 之錯誤症狀計算陣列 ...35 圖 20 錯誤症狀計算陣列之時序規劃 ...36 圖 21 錯誤症狀計算陣列之摺疊架構 ...37 圖 22 錯誤症狀計算硬體之乘加器與暫存器規劃 ...38

(9)

圖 23 錯誤症狀計算硬體之位址產生器...39 圖 24 更正錯誤能力 t 之尋找錯誤位置的硬體架構 ...40 圖 25 更正錯誤能力 t=8 之尋找錯誤位置的硬體架構 ...41 圖 26 八次尋找錯誤位置器陣列之時序規劃 ...42 圖 27 八次尋找錯誤位置器之摺疊架構 ...43 圖 28 尋找錯誤位置器硬體之乘加器與暫存器規劃 ...44 圖 29 變形之尋找錯誤位置陣列硬體架構 ...45 圖 30 更正錯誤能力 t 之變形尋找錯誤位置的硬體架構...46 圖 31 更正錯誤能力 t 之變形尋找錯誤位置陣列之時序規劃...47 圖 32 更正錯誤能力 t 之變形尋找錯誤位置之摺疊架構...48 圖 33 變形尋找錯誤位置硬體之乘加運算器與暫存器規劃 ...48 圖 34 變形尋找錯誤位置之位址產生器 ...50 圖 35 尋找錯誤症狀-位置陣列之摺疊架構 ...51 圖 36 尋找錯誤症狀-位置硬體之乘加運算器與暫存器規劃 ...52 圖 37 位址產生器 ...54 圖 38 BM 與 ME 演算法運算時間比較...55 圖 39 控制暫存器 ...57 圖 40 狀態暫存器...57 圖 41 控制&狀態暫存器的連接 ...58 圖 42 尋找錯誤症狀之 RTL 模擬 ...59 圖 43 尋找錯誤位置模擬...59 圖 44 尋找錯誤位置模擬...59 圖 45 利用狀態暫存器和處理器溝通...60

(10)

表目錄

表目錄

表目錄

表目錄

表 1 利用本質多項式 2 3 4 8 1 ) (x x x x x h = + + + + 建立之GF(28) ...4 表 2 OPB 介面訊號一覽表...27 表 3 三種硬體使用的邏輯閘個數 ...61 表 4 里德所羅門解碼的各功能方塊所花時間表 ...61

(11)

第一章

第一章

第一章

第一章 簡介

簡介

簡介

簡介

1-1 研究動機

隨著時代不斷的改變與進步,科技越來越發達,無線通訊應用到的地方也越 來越多,不僅在是在音訊方面的傳輸,甚至在視訊方面的傳輸也越來越多,例如 數位電視廣播(DVB)及視訊電話等等。 數位訊號處理器(DSP Processor)大部分用作於處理影像資料,但是隨著科 技的快速發展,處理器的速度一直提升,就有人提出利用數位訊號處裡器來做通 訊方面的運算,而以往通訊方面的運算都是以 ASIC 來實現,假設一個系統需要 很多個功能方塊,就必須要有不同功能的硬體,如果有些時候只會有其中一部分 的功能方塊在使用,則在這個時間其他沒運作的硬體就佔了空間。因此有人提出 利用數位訊號處理器,當要運算怎樣的功能時,只要把該功能的程式送到數位訊 號處理器就可以達到要的功能,這樣一個數位訊號處理器就可以做許多種的功 能,在硬體的使用上可以減少很多。 由於使用軟體做某些運算會花許多時間去處理,而讓系統的大部份的時間 都浪費在這些運算,大大的降低了系統整體的效能。像是本篇論文主要討論的里 德所羅門解碼用到的伽羅瓦場乘法,必須先建立兩個表,當兩數要做伽羅瓦場乘 法時,則要先去查表轉換成指數形式後,做相加動作,這樣才完成一個伽羅瓦場 的乘法;而當是做伽羅瓦場的乘累加運算,要先查表轉換成指數形式,做相加動 作,接著還要轉回原本的形式,然後做 XOR,這樣才完成一個乘累加的動作。光 是計算一次乘累加就要來來回回轉換,浪費許多運算時間。 因此我們希望將這部分用硬體的方式來實現,提高軟體的效能,但是又不 需使用太多空間的硬體,因此有了本篇論文的研究,利用摺疊的方法以及修改硬

(12)

體架構讓硬體可以共同使用,降低硬體的空間。

1-2 章節規劃

在此小節中先對本篇整個論文架構作個概略性的介紹。

第一章

第一章

第一章

第一章 緒論

緒論

緒論

緒論

提出論文主題、想要解決的問題及其主要應用所在。

第二章

第二章

第二章

第二章 研究背景

研究背景

研究背景

研究背景

介紹里德所羅門碼(Reed-Solomon Code)之基本運作原理:包含了編碼與 解碼,但焦點在於解碼過程中的定義與不同演算法之間的比較,並提出一些相關 硬體實現時所要考慮的問題。

第三章

第三章

第三章

第三章 摺疊

摺疊

摺疊

摺疊演算法之推演與建立

演算法之推演與建立

演算法之推演與建立

演算法之推演與建立及

及 Xilinx EDK 整合系統環境介紹

整合系統環境介紹

整合系統環境介紹

整合系統環境介紹

提出一套摺疊演算法之理論,經由圖論上的推導,讓人擁有明確的流程可 以遵循,並指出採用摺疊演算法後的架構,展現了可重複使用的特性。

第四章

第四章

第四章

第四章 硬體實現

硬體實現

硬體實現

硬體實現

先架構我們要的里德所羅門解碼器,包然軟體、硬體部分,接著介紹解碼 器中硬體部分的架構,及軟體部份的架構,再來是整合軟、硬體使得解碼器動作 無誤,最後將模擬結果呈現出來。

第五章

第五章

第五章

第五章 結論

結論

結論

結論

本篇論文之結語與未來展望。

(13)

第二章

第二章

第二章

第二章 研究背景

研究背景

研究背景

研究背景

在 深 入 探 討 本 篇 研 究 論 文 之 前 , 本 章 先 介 紹 一 些 基 本 的 里 德 所 羅 門 (Reed-Solomon)的編解碼方式,還有一些將會運用到的基本數學理論。首先, 第一節提到的是里德所羅門編解碼所建立在伽羅瓦場(Galois Field)其構成的 原理,以及在場中的乘加運算;第二節則開始介紹里德所羅門編解碼的基本定 義,進而分別在第三節和第四節中介紹其編碼與解碼的演算法,其中尤其以解碼 較為複雜,必須由許多步驟接續處理完成。

2-1 伽羅瓦場(Galois Field)定義介紹

[1]若有一個場,其中所存在的元素數目是有限值,則稱之為有限場或伽羅 瓦場。有限場是整個錯誤更正碼(Error-Control Coding)最有用、最基本且最 重要的觀念。若一個場 F 為有限,則將 F 場的元素個數定義為 F 的階數。一個 q 階的有限場表示為 GF(q)。 在這節中主要探討伽羅瓦場的構成方法,這將運用一些實數系中較不會用到 的數學定義及定理。另外,在此場中乘加運算的動作原理,也會一併作個簡介。

2-1.1 本質多項式與伽羅瓦場的建立

定義 定義 定義 定義 2.1 2.1 2.1 2.1 不可化簡多項式(Irreducible polynomial) 假設一個多項式 f(x)除了 1 和本身之外沒有其他因式,則稱這種多項式為 不可化簡的多項式。 定義 定義 定義 定義 2.2 2.2 2.2 2.2 本質多項式(Primitive polynomial) 一個 n 大於一階的不可化簡多項式,假若符合m<2 −n 1且其並不是 m x + 1 之 因式,則將其稱之為本質多項式。

(14)

表 表表 表 1111 利用本質多項式 2 3 4 8 1 ) (x x x x x h = + + + + 建立之GF(28)

Word

Polynomial in x (modulo h(x))

Power of

α

00000000

0

---

10000000

1

α0

01000000

x α1

00100000

x2 α2

00010000

3 x α3

00001000

4 x α4

00000100

x5 α5

00110000

2 3 27 x x x + ≡ α27

00011000

3 4 28 x x x + ≡ α28

00001100

4 5 29 x x x + ≡ α29

00011011

3 4 6 7 251 x x x x x + + + ≡ α251

10110101

2 3 5 7 252 1+x +x +x +x ≡ x α252

11100010

2 6 253 1+x+x +x ≡ x α253

01110001

x+x2 +x3 +x7 x254 α254 [1]利用本質多項式(Primitive polynomial)去建立一個GF(2n)伽羅瓦 場比利用非本質多項式(Non-primitive polynomial)來的容易許多。令α 代表 x 對 h(x)取餘數結果的字元(i.e. x mod h(x)),其中 h(x)必須是 n 階的本質 多項式,則在同一數系下所有非零的字元都可以被表示成α 次方的形式: ) ( modh x xi i α ,而α 稱為伽羅瓦場GF(2n)之本質元素,這個特性讓伽羅瓦場 的乘法運算變的更為簡單。除此之外,在這個有限的伽羅瓦場中一共會有2 −n 1個 截然不同的非零元素,可以表示為2 −n 1個α 的連續次方,即為{1, α , α2, … ,

(15)

2 2n− α }。表表表表 1111 即是一個利用本質多項式 2 3 4 8 1 ) (x x x x x h = + + + + 所建立出GF(28) 的對照表。

2-1.2 伽羅瓦場的乘加運算

伽羅瓦場的乘法運算,簡單來說,就是直接將伽羅瓦場裡的代表字元作一般 實數系相乘的動作,所得到的字元再依照二進位與伽羅瓦場的轉換對照表,找出 其相對應的二進位值。例:α⋅α2 =α3 =00010000。 反之,伽羅瓦場的加法運算就沒有像乘法運算這麼單純,可以直接利用該字 元進行類似實數系的運算,而是必須先找出運算字元所對應到的二進位表示法的 數,然後將兩個二進位表示法的數作 XOR 的運算,再利用所得到的值去尋找其所 對應的伽羅瓦場的字元。例:α3 +α4 =0001000000001000=00011000=α28

2-2 里德所羅門(Reed-Solomon)碼定義介紹

里德所羅門碼是在西元 1960 年由 I. Reed 以及 G. Solomon 在麻省理工學 院(M.I.T.)實驗室所共同發明的,這是一個建立在伽羅瓦場的編碼方式,並可 以將其視為另一種 BCH 編碼的特殊情況,自從里德所羅門碼被發明之後,近幾年 來已經被廣泛的應用在各種方面。 定義 定義定義 定義 2.3 2.3 2.3 里德所羅門碼(建立於 2.3 GF(2m)之元素) 假設α 為GF(2m)之本質元素,對任意一個正整數t ≤2 −m 1,必定存在一組 建立於伽羅瓦場GF(2m)可去除 t 個錯誤符號(Symbol)的里德所羅門碼[2],其 各項參數如下: 1 2 − = m n (式 2-1) t k n− =2 ( 式 2-2) k n t dmin −1=2 = − (式 2-3)

(16)

其中 m 表示字碼長度,n 為編碼後字碼數目,k 則是來源字碼數目。 以 RS (255, 223)這組里德所羅門碼為例:經由 n = 255、k = 223 進而可 得知 m = 8、t = 16、dmin = 33。同時,這一組規格的里德所羅門碼也是美國太 空總署(NASA)給衛星和太空通訊所採用的標準編碼。

2-3 里德所羅門(Reed-Solomon)編碼演算法

當開始進行編碼之前,首先介紹字碼產生多項式(Codeword generator polynomial),表示如下: t t t t i i m x x g x g g x x g 0 1 2 1 2 1 2 1 2 0 ) ( ) ( = + 0 = + +⋅⋅⋅+ − + − − = +

α ) 2 ( gi GF m where ∈ (式 2-4) 一般來說,m0的典型值為 0 或 1。此外,值得一提的是連續 2t 個α的次方αm0、 1 0+ m α 、…、αm0+ t2−1均為字碼產生多項式 g(x)的根。 假設需要編碼的 k 個 m 位元的來源訊息的多項式表示為: 1 1 1 0 ) (x =m +m x+⋅⋅⋅+mkxk− m where mi∈GF(2m) (2.5) 然 而 這 其 中 的 k 就 是 訊 息 長 度 , 並 且 根 據 前 小 節 里 德 所 羅 門 碼 的 定 義: t n k = −2 ,即原先的訊息長度 k 等於編碼後長度 n 扣掉兩倍的除錯能力 t。 接著,將訊息多項式乘上 t x2 ,再除上里德所羅門碼其專屬的字碼產生多項 式 g(x),則可得到一個餘式 b(x)如下: ) ( ) ( ) ( ) ( 2 x b x g x a x m x t = + 1 2 1 2 1 0 ) ( = + +⋅⋅⋅+ t− t x b x b b x b where (式 2-6) 其中x2tm(x)的最低次方為 2t,而 b(x)的最高次方為 2t-1,則x2tm(x)+b(x) 組成的 2t +k-1=n-1 次方多項式,就是編碼完成的字碼多項式 c(x),且編碼後

(17)

長度即為 n。此外,由於c(x)=x2tm(x)+b(x)=a(x)g(x),為 g(x)的因式,所以 連續 2t 個α 的次方αm0、αm0+1、…、αm0+ t2−1也均為 c(x)的根。編碼電路的電路 圖如圖 1 所示[2]。 圖 1 非二進位環狀碼(Cyclic code)的編碼(Encoding)電路

2-4 里德所羅門(Reed-Solomon)編碼演算法

整個里德所羅門碼比較煩瑣的步驟及主要的問題都是出現在解碼的過程, 再加上本篇論文所提出的主要是解碼器架構,故在此小節作個較為詳盡的解碼演 算法介紹。 一開始先簡介一下整個解碼的過程。令傳送的碼和接收到的碼分別表示為: ) 2 ( , ) (x c0 c1x cn 1xn 1 ci GF m c = + +⋅⋅⋅+ − ∈ (式 2-7) ) 2 ( , ) (x r0 r1x rn 1xn 1 ri GF m r = + +⋅⋅⋅+ − ∈ (式 2-8) 故因為傳輸而產生的雜訊就可以表示為: 1 1 2 2 1 0 ) ( ) ( ) (x =r x −c x =e +ex+e x +⋅⋅⋅+enxn− e (式 2-9) 其中 ei =ri −ci 也是屬於 GF(2m )中的元素。假設這個錯誤多項式有 v 個根,即

(18)

代表存在有 v 個錯誤位置的訊息,其錯誤位置和相關大小的表示法定義如下: Error Values (式 2-10) Error Locators (式 2-11) 也就是說,在錯誤位置Xl處出現錯誤值Yl,而以錯誤位置為根所形成的錯誤位 置多項式可以表示成: ) 1 ( ) 1 )( 1 ( ) (x = −X1x −X2x ⋅⋅⋅ −Xvx Λ

= − = v i ix X 1 ) 1 ( v vx x x+Λ +⋅⋅⋅+Λ Λ + Λ = 2 2 1 0 (式 2-12) 有一種解碼 BCH Code 或是 RS Code 的方式[1],其整個解碼過程就好比去解出兩 個關鍵的方程式:                 − − − =                 Λ Λ Λ ⋅                 + + − − − + + − t t t t t t t t t t t t t S S S S S S S S S S S S S S S 2 2 1 1 1 1 2 2 2 1 1 3 2 1 2 1 : : : : ... : : : : ... ... (式 2-13)                 =                 ⋅                 − − − v v v v v v v v v v v v S S S Y Y Y X X X X X X X X X X X X : : : : ... : : : : ... ... 2 1 2 1 1 2 1 2 2 1 2 2 2 1 1 2 1

(式 2-14) 從方程式(2.13)中可以清楚看出,假若能夠從接受到的信號中找出錯誤的 症狀(Syndrome),便可以利用方程式(2.13)求出剛提到的錯誤位置多項式 (Error-Locator Polynomial)的係數。有了這些係數,利用土法煉鋼的方式, 把所有伽羅瓦場裡的元素都代入檢查,找出能夠使其為零的元素,便為其根,這 v l for X jl l =α =1,2,..., v l for e Y l j l = =1,2,...,

(19)

也就是 Chien Search 的演算法。利用 Chien Search 找出錯誤位置( Xl )之後,

便可以利用方程式(2.14)找出錯誤的大小( Yl ),而後再把找出來錯誤的大小

和位置加回原先收到信號上,整個解碼過程才算完整結束。其實這整個觀念就是 熟知的 Peterson-Gorenstein-Zierler Decoding Algorithm(P-G-Z 解碼演算 法),整個解碼流程圖如圖圖圖圖 2222 所示。

圖 2 里德所羅門解碼流程圖

(20)

2-4.1 收到信號的錯誤症狀(Syndrome)計算

在解碼的過程中,錯誤症狀的計算是所要進行的第一步驟。由前面的章節 得知,接收到的信號可表示為 1 1 1 0 ) (x =r +rx+⋅⋅⋅+rn xn− r ,從 2.2 小節得知字

碼產生多項式(Codeword Generator Polynomial)的根為 αm0 ~αm0+ t2−1,其中

t 代表除錯的能力,又因為 c(x)=m(x)g(x),所以便可以得到以下的關係: 1 2 ,..., 2 , 0 , ) ( ) ( ) ( ) ( 1 0 ) ( 0 0 0 0 0 = + = =

= − − = + + + + + t i e e e c r n j j i m j i m i m i m i m α α α α α (式 2-15) 因此,所收信號的錯誤症狀即為 ( m0 i) i r S = α + ,其多項式表示法如下:

− = ⋅ =2 1 0 ) ( t j j j x S x S

= − + − ⋅ = n i i n j m i n j r S where 1 ) ( α 0 (式 2-16) 整個過程就如同乘累加運算一樣,運算電路如圖 3 所示。 (a) (b) 圖 3 錯誤症狀運算電路 (a) 在 GF(2m )表示法 (b)二進位表示法

2-4.2 尋找錯誤位置多項式之方法

由於前述之 P-G-Z 解碼演算法,在求錯誤位置多項式的運算過程關係到一 些逆矩陣的運算,所以較沒效率,速度也會減慢,相對變的比較複雜,其複雜度

(21)

是跟 t3 成正比,故這種方法只比較適用於較小的除錯能力架構中。而後人想了幾 種加快這部分速度的辦法,包括:Berlekamp-Massey 疊代演算法,以及最大公 因式演算法(Euclidean Algorithm)。 2-4.2.1 Berlekamp-Massey 疊代演算法 西元 1967 年 E. Berlekamp 提出一種極有效率之演算法,同時適合使用於 解碼 BCH code 及 RS code,再加上後來 Massey 進一步的改良,其複雜度僅隨著 t2 成長[1],所以是一個求取錯誤位置多項式比較有效率的演算法,因此適宜用 來處理較大除錯能力的里德所羅門解碼架構。 根據 2.4 節方程式(2.13),可以把其表示成此種迴圈形式: , ) ( 1 1 1 1 1 − + − − − = − =− Λ +Λ +⋅⋅⋅+Λ Λ − =

v v j v v j v j i i j i j S S S S S t v v 1, 2,...,2 j for = + + (式 2-17) 這個迴圈形式在實際硬體上,可以表示成線性迴授移位暫存器(Linear Feedback Shift Register),如圖 4 所示。故原先求錯誤位置多項式之係數的問題,可以 將其轉變成找出最短長度的線性迴授移位暫存器,因而使其輸出的前 2t 個值就 是之前錯誤症狀多項式的係數,此時乘法器上所乘的值(tap),就是所要求的錯 誤位置多項式之係數。 圖 4 LFSR 架構迴圈形式

(22)

整 個 演 算 法 的 流 程 是 以 遞 迴 的 形 式 , 其 最 主 要 的 精 神 就 在 於 讓 1 ) ( 1 1 1 ) ( =Λ +Λ ++Λ + Λ − −x x x x k k k k k 成 為 一 個 最 短 長 度 為 k 的 連 接 多 項 式 (Connection Polynomial),且可滿足 2t 個錯誤症狀多項式的係數。剛開始先 找出Λ(1),其相對應的輸出即為第一個錯誤症狀。之後再拿第二個輸出來和第二 個錯誤症狀做比較,假如兩者中間有差異值(Discrepancy),就用這個差異值來 建立一個新的連接多項式;相反的,假如兩者中間沒有差異,就繼續拿此連接多 項式去產生第三個輸出值,再與第三個錯誤症狀做比較。如此循環運作,直到此 線性迴授移位暫存器可以產生 2t 個之前所得到的錯誤症狀。 此演算法有幾個重要的變數符號定義,以及整個演算法的歸納,將敘述如 下[2]: 1. 從收到的信號求出 2t 個錯誤症狀。 2. 對演算法中的各項變數初始化: x x T L x k =0 ,Λ(0)( )=1 , =0 , ( )= 3. 令 k = k + 1,計算差異值( k)

= − − Λ − = ∆ L i i k k i k k S S 1 ) 1 ( ) ( 4. 假若∆(k) =0,直接跳到 8.。 5. 更新先前之連接方程式: ) ( ) ( ) ( ( 1) ( ) ) (k x =Λk x kT x Λ − 6. 假若2L≥k,直接跳到 8.。 7. 令 L= k – L 且T(x)=Λ(k−1)(x) (k) 8. 令 T(x)= x⋅T(x)。 9. 假若 k < 2t,直接跳到 3.。 10. 找出 Λ(x)=Λ(2t)(x)的根。

(23)

 連接多項式(Connection Polynomial)Λ(k)(x)  更正多項式(Correction Polynomial)T(x)  差異值(Discrepancy)( k)  線性迴授移位暫存器長度 L 由上述步驟,可以清楚的了解里德所羅門解碼器是利用錯誤症狀多項式 1 2 1 2 1 0 ) (x =S +S x+⋅⋅⋅+S t x t− S 去計算錯誤位置。根據已知的錯誤位置多項式,可 以進一步計算出錯誤大小評估多項式(Error-Evaluator Polynomial)而求得該 錯 誤 位 置 相 對 應 之 錯 誤 大 小 。 定 義 一 組 錯 誤 位 置 多 項 式 t tx x x =Λ +Λ +⋅⋅⋅+Λ Λ( ) 0 1 ,則錯誤大小評估多項式可得知定義如下: 1 1 1 0 ) (x =ω +ω x+⋅⋅⋅+ωt xt− ω (式 2-18) t x x x S x) ( ) ( )mod 2 ( ≡ω Λ (式 2.19) 方程式(2.19)稱為關鍵方程式(key equation)。後面的章節裡將會提到的佛 尼(Forney)演算法,就是利用錯誤大小評估多項式以及找到的錯誤位置去求出 相關位置之錯誤大小。 2-4.2.2 最高公因式演算法(Euclidean Algorithm) 這個演算法主要是應用到數學裡求最高公因式的輾轉相除法,只是額外作 一些改變而已,其方法比較淺顯易懂,但過程較為複雜,運算量也較 Berlekamp 的方法大。 假設有兩個多項式a( x)和b( x),其最高公因式(GCD)為rn( x),則必定存 在兩組多項式u(x)和v( x),符合rn(x)=u(x)a(x)+v(x)b(x)。一般所看到的輾轉 相除法必定以下面的形式呈現: ) ( ) ( ) ( ) ( 1 1 x a x q x b x r = − ⋅ ) ( ) ( ) ( ) ( 2 1 2 x b x q x r x r = − ⋅

(24)

) ( ) ( ) ( ) ( 1 3 2 3 x r x q x r x r = − ⋅ (式 2-20) : ) ( ) ( ) ( 0=rn1 x −qn+1 x ⋅rn x 值得注意的是此遞迴方法不僅找出rn( x),同時也會找到u(x)及v( x)。 根據上述演算法的流程,可以定義一些變數,並延續這些定義,將演算法 歸納出一個遞迴的形式: 1 0 1 1 1 0 1 0 ( ) ( ), ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 1, ( ) 0 ( ) 0, ( ) 1 k k k k k k r x a x r b x r x q x r x r x u x a x v x b x u x u x v x v x − − + − − = =   =  = + = = = = (式 2-21) ) ( )) ( ) ( ) ( ( ) ( )) ( ) ( ) ( ( )) ( ) ( ) ( ) ( )( ( )) ( ) ( ) ( ) ( ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( 1 1 1 1 1 1 1 1 1 1 1 1 x b x v x q x v x a x u x q x u x b x v x a x u x q x b x v x a x u x r x q x r x b x v x a x u x r k k k k k k k k k k k k k k k k k + − + − + − − + − + + + − + − = + − + = − = + = (式 2-22) 因此,藉由這些定義及推導,可以統整出一些關係式: ) ( ) ( ) ( ) ( 1 1 1 x r x q x r x rk+ = kk+ k (式 2-23) ) ( ) ( ) ( ) ( 1 1 1 x u x q x u x uk+ = kk+ k (式 2-24) ) ( ) ( ) ( ) ( 1 1 1 x v x q x v x vk+ = kk+ k (式 2-25)     = − + ( ) ) ( ) ( 1 1 r x x r x q k k k (式 2-26) 只要一直重複計算(2.23)(2.24)(2.25)和(2.26)四式,直到rn+1(x)=0, 就可以找到最大公因式 rn(x)=un(x)a(x)+vn(x)b(x),以及相對應的u(x)及v( x) 兩個多項式。

(25)

Euclidean 演算法就是要用這種精神去計算前面所提到的關鍵方程式(Key Equation): t x x S x x) ( ) ( )mod 2 ( =Λ ω ,將這個關鍵方程式轉變為另一種類似最高 公因式的描述方式: t x x u x S x x) ( ) ( ) ( ) 2 ( =Λ ⋅ + ⋅ ω ,由此可見,只要擁有錯誤症狀 多項式S(x),接下來就可以採用 Euclidean 演算法來求出最高公因式ω(x),也 就是錯誤大小評估多項式,而且還可以一併得到錯誤位置多項式Λ(x)。 最後針對用於里德所羅門解碼器的 Euclidean 演算法作一個總結,令 ) ( 2 a x x t S(x)b(x),則 (x) r (x) GCD(a(x),b(x)) k = ≡ ω ,以及 Λ(x)≡v(x), 終止的條件為deg(rk(x))<t[1],完整演算法的歸納如下。 1. 從收到的信號求出 2t 個錯誤症狀。 2. 對變數做初始化: t x x x 2 1 -1( )=0, r ( )= Λ ) ( ) ( r , 1 ) ( 0 0 x = x =S x Λ 3. 遞迴方式從 i = 1 到deg(ri(x))<t: ) ( ) ( ) ( ) (x i 2 x Qi 1 x i 1 x i =Λ− − − Λ− Λ ) ( ) ( ) ( ) (x r 2 x Q 1 x r 1 x ri = ii i     = − − − ( ) ) ( ) ( 1 2 1 r x x r x Q i i i

2-4.3 尋找錯誤位置之方法(Chien Search)

Chien 尋根演算法說穿了其實很容易,可以說是很系統化的一種方法,也可 以形容為土法煉鋼法,其精神就是把建在的伽羅瓦場中所有的元素代入錯誤位置 多項式測試,假如有一個元素使得Λ(α− j)=0,代表α 即為錯誤的位置,也就j 是接收信號中的rj發生錯誤,找到錯誤的位置之後,就可以利用下一小節所要介 紹的佛尼(Forney)演算法去找出其相關位置之錯誤大小,然後加以修正。

(26)

2-4.4 尋找錯誤大小的佛尼(Forney)演算法

此演算法主要也是從錯誤症狀(Syndrome)和關鍵方程式(Key Equation) 推導得來[2]: 1 0 0 0 ) ( ' ) ( ) ( ' ) ( ) 1 ( ) ( 1 1 ) 1 ( , 1 1 1 ) 1 ( − = − − − − ≠ = − − − − Λ − = Λ − = − =

x Xi m i i m i v i j j i j i i m i i x x x x X X X X X X X X Y ω ω ω (式 2-27) 其中Yi是錯誤大小、Xi是錯誤位置,Λ' x( )是錯誤位置多項式Λ(x)的微分,所以 整個演算法要配合著 Chien 尋根演算法所找出的錯誤位置後,再代入求出錯誤大 小。 這中間有一個比較值得注意的地方是,伽羅瓦場裡的微分,會使多項式裡 的二次項等於零,因為伽羅瓦場裡的加法相當於 XOR 的動作,才會產生這種效果。 ⋯ ⋯ ⋯ + Λ + Λ = + Λ + Λ = + Λ + Λ + Λ = Λ 3 3 1 2 3 1 2 3 2 1 ) ( ) 3 2 ( ) ( ' x x x x x x x x x (式 2-28) 所以xΛ' x( )相當於Λ(x)奇數次方項的總和。

(27)

第三章

第三章

第三章

第三章 摺疊演算法之推導與設計

摺疊演算法之推導與設計

摺疊演算法之推導與設計

摺疊演算法之推導與設計及

及 Xilinx EDK

Xilinx EDK

Xilinx EDK 整

Xilinx EDK

合系統環境介紹

合系統環境介紹

合系統環境介紹

合系統環境介紹

3-1 摺疊演算法的硬體架構介紹

現今許多的硬體架構設計為了達到簡單化和規律性,大多採用運算單元(PE) 陣列的形式,Systolic 陣列是其中最著名並且被廣泛運用的。Systolic 陣列是 由 Kung[3]在 1980 年所提出來的一種硬體架構,這種架構是由一些簡單的基本 運算單元所連接組成,所以具有簡單且規則的特性,適合用在超大型積體電路的 設計上。此外,Systolic 陣列用到了大量的管線化(Pipelining)以及多重運作 (Multiprocessing),因此,它可以達到高速的運算效能以及維持很高的處理速 率(Throughput)。

在 1995 年 Keiichi Iwamura[4]提出一篇利用 Systolic 陣列架構為基礎的 里德所羅門解碼器硬體,其主要的特色就是只使用一種相同基本運算單元來實現 解碼器架構,並且利用了管線化的技巧,不僅讓整個硬體非常的簡單且有規律, 也可以有很高的處理速率。 從另外一個角度來看,假如在整個系統中,在里德所羅門解碼區塊的下一級 並不需要很高的處理速率,那麼這個高處理速率的優點則可以拿來交換一些其他 的好處。摺疊硬體架構[14]就是一個以降低處理速率而換取減少硬體面積的一個 方法。這個方法是將一連串基本運算單元的陣列經由摺疊方法,使用較少的運算 單元,分時完成原本的所需的運算量,雖然整體的運算時間變長,但運算單元卻 可以減少。這樣對於不必要很高處理速率的系統,不僅速度能夠達到要求,還可 以減少硬體面積,不失為一個好方法,而其最大的好處除了以時間上的優勢取得 空間上的改善外,摺疊後的架構也有可重複使用性,增加了硬體的彈性。

(28)

一般傳統運算單元陣列,對於訊號傳遞的路徑,可分為兩種:向前路徑 (Forward Path)以及回授路徑(Feedback Path)。向前路徑上的訊號,在兩個相 鄰的運算單元之間互有關係,而回授路徑上的訊號,則只有在本體運算單元中有 影響。在陣列中的每個基本運算單元,主要區分成兩部份:乘加器(MAC)與暫存 器(Register),圖 5 即為一個常見的基本運算單元。為了在演算法上的推導方 便,在這裡將乘加器和暫存器分開表示,而在往後運算單元的表示上,也皆以此 方式呈現。 圖 5 基本運算單元(Processing Element) 現在就以一個例子來說明摺疊演算法的推導。假設有一個串接 12 個基本運 算單元的陣列,首先要決定所需要使用的運算單元個數,至於要採用幾個基本運 算單元,則取決於系統的需求。這裡我們採用三個基本運算單元來做說明,因此 可以將 12 個基本運算單元分成四列,每一列的基本運算單元必須完整的排列對 齊,這樣的目的是打算將原本在一個回合內就可以完成的資料計算,分成三個時 間點來運算,每一列為進行一個時間點。圖 6 所示為基本運算單元的排列方式。

(29)

圖 6 基本運算單元陣列 決定好需要幾個基本運算單元後,我們開始對整體的架構做一些改變。首先 將每個基本運算器裡的暫存器變成原本的三倍大小,接著在列與列之間的每個向 前路徑上加入資料銜接的暫存器,也就是每個時間點最後運算的值暫存起來以傳 遞給下個一時間點處理,如此一來,在每回合的第一個時間點時,Ain 與 Bin 送 入資料,僅第一列的四個乘加器開始動作,且將計算後的結果存入該列各暫存器 的第一個位置,在此時,第四個向前路徑上暫存器的值,也會傳遞至第一列與第 二列之間的銜接暫存器中,而第二、三列的基本運算單元則沒有動作;到了第二 個時間點,銜接暫存器的值開始送入第二列的乘加器,第二列的基本運算單元開 始運作,且將計算後的結果存入該列各暫存器的第二個位置,同時第四個向前路 徑上暫存器的值傳遞至第二列與第三列之間的銜接暫存器中,其餘二列的基本運 算單元均不動作;到了第三個時間點,銜接暫存器的值開始送入第三列的乘加 器,第三列的基本運算單元則開始運作,並將計算後的結果存入該列各暫存器的 第三個位置,其他二列的基本運算單元也均不動作;到此一個回合的運算就結

(30)

束,之後進入下一個新的回合,如此一直反覆循環。圖 7 顯示各暫存器的變動以 及銜接暫存器連接的位置。 圖 7 基本運算單元陣列之時序規劃 由此可以知道,每一列中的第一個乘加器,在每回合的三個動作時間點是不 重疊的,也就是每一列的第一個乘加器不會在同一個時間點同時動作,而在每一 列的第二、三、四個乘加器也是如此。由於每一列中相對位置的乘加器在不同工 作時間點是互相不衝突的,所以可以將三列的基本運算單元摺疊成一列,如圖 8 所顯示。於是,只要在一個新的回合中,送入 Ain 和 Bin 資料,並且在這一個回 合裡,依照不同的時間點,調整每個乘加器各自所需輸入的來源暫存器,以及將 每個乘加器輸出所需儲存的計算結果存入正確的暫存器位置,就可以得到正確的 運算,和未摺疊前的硬體架構所得到的運算結果是一樣的。經過摺疊後的硬體架 構雖然把整體的運算時間拉長,但是卻減少了三分之二的乘加器數目,這也達到 了我們摺疊所期望的效果。

(31)

圖 8 基本運算單元陣列之摺疊架構

原先 12 個基本運算單元的陣列,經過摺疊演算法的調整後,可以清楚的分 出乘加器群(MAC Group)及暫存器檔案(Register File),要使整個運算流程正確 的動作,需要在每個時間點調整暫存器檔案所需要輸出及儲存的資料,以及正確 的切換在最前端的多工器(MUX),使其在 Addr=00 時,也就是新的一回合開始的 時候,由外部 Ain 及 Bin 當輸入,其餘時間點則由銜接暫存器當輸入,就可以完 成我們要求達到的工作,至於乘加器群只要不停的運算接收到的資料就可以了。 圖 9 表示經過摺疊演算法所產生的架構圖。 圖 9 摺疊架構之乘加器與暫存器規劃

(32)

從圖 9 的摺疊架構可以知道,在暫存器檔案中的每一行(Column)共有三個暫 存器,也就是先前推導過程中三倍暫存器(3D)大小所代表的意思。另外,暫存器 檔案每一列(Row)中也有四個暫存器,同一列的四個暫存器是需要在同一個時間 點送資料到乘加器群做運算,因此將每一列的四個暫存器設定為一組,給予同一 個暫存器定址名稱,到時只需要正確的控制暫存器位址,整個架構就會正常運 作,圖 10 即為暫存器組合及定址的示意圖。 摺疊演算法最只要的精神就是在於時脈上的規劃,將一個回合的動作分時完 成,而依此演算法所推演出的硬體架構,擁有可重複使用的特性。在下一章節中 會更詳細的說明套用摺疊演算法時基本運算單元個數的選擇,以及摺疊硬體架構 的好處。 圖 10 摺疊架構之暫存器定址

3-2 摺疊演算法實現硬體之方法與特色

在上一節中有提到,在使用摺疊演算法之前,首要的工作就是決定要使用的 乘加器個數及暫存器檔案的大小。至於如何決定乘加器個數及暫存器檔案大小,

(33)

可以依據系統的需求然後按照以下的數學式子簡單的得到,接著就來說明這些數 學式子如何產生。假設現在系統中有一個方塊,其硬體架構由 N 個基本運算單元 所組成,且延遲時間(Latency)為tmac,而這個 方塊的規格所需的處 理速率 (Throughput)為Xput,於是重複週期(Iteration Period)IP 及所採用的乘加器 數目 m 各為: mac put t X IP= −1 (式3-1)

N IP

m = (式3-2) 藉由上列的式子計算,可以估計出新摺疊架構採用的乘加器數目 m,且將原本一 回合中的計算,分為

 

IP ,個時間點來達成,而摺疊後的架構不僅符合規格,也 比原先乘加器的數目少。 摺疊演算法非常適合於處理速率不需要很高的陣列硬體,尤其是對於陣列的 基本運算單元個數會因規格不同而有數目上變化的架構。以里德所羅門解碼器架 構為例,解碼器方塊的內部大多數的構成部分是由基本運算單元陣列所組成,而 且陣列的長度是根據不同的解碼器更正能力規格來改變,更正能力越大,基本運 算單元個數需要越多。當對於這種硬體架構來實行摺疊時,則以最差狀況的處理 速率及陣列長度來估計所採用的基本運算單元個數,摺疊後的架構對於更正能力 較小的規格,只需要減短重複週期,調整每個時刻所指定的輸出及輸入暫存器檔 案即可,這樣的硬體架構展現了硬體可重複使用的特性。此外,摺疊後的硬體架 構在處理速率規格符合的前提下,若要提升最大更正能力,加長陣列長度,只需 要擴充暫存器檔案大小,增加重複週期,如此也使得摺疊後的硬體更具有彈性。

3-3 Xilinx EDK 整合系統背景

隨著科技進步,嵌入式系統廣泛的被應用在各類的產品中,嵌入式系統的研 究也不再只是純軟體或純硬體的設計,而以軟、硬體整合的趨勢為主。早期的系 統都是先做好硬體的部份,下線實作成晶片後,才交由軟體設計者做軟體的設 計,而軟體設計者若是在設計過程中,硬體部分有問題,則需要跟硬體設計者做

(34)

溝通,這樣才能設計出一套系統。由於軟體設計者必須等到硬體設計者完全設計 好硬體才能開始工作,並且在軟體設計者與硬體設計者之間的溝通又會浪費許多 時間,導致產品生產速度減慢。所以就有人提出軟、硬體共同設計的作法,加快 產品的生產速度。 基於軟硬體共同設計的想法 Xilinx EDK 整合系統,提供一個讓使用者快速 開發嵌入式系統的介面。EDK 整合系統提供了設計者硬體設計元件,其中包括了 MicroBlaze 處 理 器 和 PowerPC 處 理 器 [5][6] , 和 可 程 式 化 晶 片 (Field Programmable Gate Arrays,FPGA),以及記憶體和一些外部 I/O 周邊設備。由 於 FPGA 可重複程式化的優點,方便用來當做測試驗證平台。另外此系統還提供 了軟體設計的編譯器(compiler),提供了部份標準 C 的支援,以及 Xilinx 特殊 的嵌入式 C[7]的支援,可以讓使用者快速的自我設計一套軟體驅動硬體。

3-4 MicroBlaze 架構

MicroBlaze 處理器是屬於標準的 32 位元哈佛精簡指令集處理器(Harvard Reduced Instruction Set Computer,Harvard RISC)的架構。因此特性為:將資 料與指令匯流排分開;可以再一個時序週期內同時對資料及指令作存取;執行一 道指令只需要一個時序即可完成。而此處理器所有的指令和資料都是以位元(bit) 為處理的最小單元,寬度為 32 位元,也支援 word、half word、byte access。 MicroBlaze 處理器擁有高效能的可規劃性,可依照使用者設計需求而提供 了許多特色,包含如下:

1. 擁有 32 個 32 位元的一般用途暫存器(general purpose register)以及 5 個 32 位元的特殊用途的暫存器(special purpose register)。 2. 提供了 32 位元的指令集,擁有三個運算元和兩種位址模式。 3. 分別提供資料流和指令流技術,彼此之間是各自獨立作業的。 4. 擁有 32 位元的位址線

(35)

5. 提供重置(reset)、中斷(interrupts)、例外處理(expections)等服務 6. 管線化 MicroBlaze 處理器包括了運算單元、浮點數運算單元、暫存器、快速緩衝 儲存體(cache)、以及匯流排(bus),如圖 11 為 MicroBlaze 處理器架構圖。 圖 11 MicroBlaze 處理器架構圖 在傳輸方面,MicroBlaze 提供了三種匯流排,用於 MicroBlaze 和硬體電路 的溝通及資料的傳遞,分別為 On-chip Peripheral Bus(OPB)、Fast Simplex Link(FSL)和 Processor Local Bus(PLB)。在此我們只介紹 OPB 的協定。

3-5 On-chip peripheral Bus(OPB)

On-chip peripheral Bus[8]是 Xilinx 嵌入式系統中最主要的一條匯流排, 提供了外部 I/O 周邊設備、中斷控制、DMA、以及處理器和使用者設計硬體電路 的溝通。目前 OPB 是採用 IBM 的匯流排標準 CoreConnect 架構,且利用 Xilinx 的 CoreGen 提供了很方便的設計流程來驅動 OPB,所以使用者必須符合其匯流排 協定,即可以輕易的連接在晶片裡的硬體。圖 12 為 MicroBlaze 系統的 OPB 示意 圖。此匯流排擁有幾項特色:

1. 完全的同步單一時脈

(36)

3. 一個週期時間就可以完成在 OPB master 與 OPB slave 之間的資料傳送 4. 擁有仲裁機制,用來控制處理器與周邊硬體電路的溝通

5. 提供 Master byte enables 和 Slave 的 timeout supress、request retry

圖 12 MicroBlaze 系統的 OPB 仲裁器示意圖

在 OPB 仲裁器中,外部 I/O 周邊設備皆為 Slave,唯讀 DMA 可以是 Master, 所以訊號線有分 Master 和 Slave 的不同,下面是 OPB 介面訊號線的描述,表 3.1 為 OPB 介面訊號一覽表:

OPB_Clk:由外界加入 OPB 的工作時脈。 OPB_Rst:由 OPB 送出去的重置 Reset 訊號。

OPB_ABus:由 OPB 送出的位址匯流排,來選擇 OPB 匯流排上的裝置,寬度為 0~31。 OPB_DBus:由 OPB 送出的資料匯流排,寬度為 0~31。

OPB_BE:由 OPB 送出的位元組致能訊號,用來控制 OPB 傳輸是以 byte 來傳輸。 OPB_RNW:由 OPB 送出的讀、寫控制訊號,用來控制 OPB Master 和 OPB Slave 之

間的關係,當此訊號為高位準時,即是 OPB Master 可以讀取 OPB Slave 資料而不能寫入,當訊號為低位準時則相反。

OPB_select:由 OPB 送出的選擇訊號,表示選到要的裝置。 OPB_seqAddr:由 OPB 送出的順序位址訊號。

(37)

表 2 OPB 介面訊號一覽表 訊號名稱 寬度(位元) 方向 OPB_Clk 1 輸入 OPB_Rst 1 輸入 OPB_ABus 32 輸入 OPB_DBus 32 輸入 OPB_BE 5 輸入 OPB_RNW 1 輸入 OPB_select 1 輸入 OPB_seqAddr 1 輸入 <Sln>_DBus 32 輸出 <Sln>_xferAck 1 輸出 <Sln>_retry 1 輸出

由 OPB Slave 裝置送到 OPB 仲裁器的訊號如下,訊號前面的<Sln>為硬體電 路名稱: <Sln>_DBus:讀取資料的資料線,寬度為 0~31。 <Sln>_xferAck:Slave 裝置的轉換認可訊號,當高位準時代表傳送或是接收的 動作已經完成,當為低位準時則相反。 <Sln>_retry:Slave 裝置的重試訊號。 有了上述的 OPB 訊號線,接著我們來說明 OPB 是如何做讀取和寫入的動作。 當要讀取時,OPB Master 會拉起 OPB_select 訊號,並且選擇有效的位址線 OPB_ABus,且 OPB_RNW、OPB_BE 均拉起來維持穩定狀態,Slave 裝置將資料準備 好要傳送並且拉起 OPB_xferAck 告訴 Master 可以從匯流排取資料,然後將 OPB_select 訊號拉下來。圖 13 為 OPB 讀取時序圖。

(38)

圖 13 OPB 讀取時序圖

當要寫入時,OPB_Select 會被拉起來,並且選擇有效的位址線 OPB_ABus, 且 OPB_BE 均會拉起來維持穩定狀態,而 OPB_RNW 在低位準才可以將資料寫入, 直到資料寫入完畢 OPB_xferAck 會發送一訊號告知。圖 14 為 OPB 寫入時序圖。

(39)

第四章

第四章

第四章

第四章 硬體實現架構

硬體實現架構

硬體實現架構

硬體實現架構

在介紹這麼多里德所羅門相關演算法以及摺疊理論推導之後,再來就是要考 慮里德所羅門解碼硬體實現的部分。有些在演算法上看似簡單的問題,在硬體實 現上不見得相對單純,在接下來的內容之中,會作較為詳盡的探討。主要焦點會 集中在應用摺疊演算法所架構的硬體部分,以及將尋找錯誤症狀和尋找錯誤位置 的硬體架構合併。 首先,第一節中會概括的提到整個里德所羅門解碼的完整電路架構。第二節 會提出一種低功率消耗及低延遲的伽羅瓦場乘法器。接下來的幾個小節會分別介 紹尋找錯誤症狀及尋找錯誤位置的摺疊硬體架構,以及如何將這兩塊硬體架構合 併,還有軟、硬體之間如何溝通,都會做仔細的介紹。最後就是將模擬的結果呈 現出來。

4-1 整合里德所羅門解碼器與完整電路架構

由第二章的里德所羅門解碼基本原理中,可以知道整個解碼過程是經由: (一)尋找錯誤症狀 (二)尋找錯誤位置多項式及錯誤大小評估多項式 (三)尋找錯誤位置 (四)尋找錯誤大小 由於(二)跟(四)的部分由軟體處理器來完成,因為使用的是不同演算法,因此還 是分為兩個方塊,而(一)跟(三)我們會做在同一套硬體裡面,因此整個系統定義 成五個區塊:

(一)尋找錯誤症狀及錯誤位置方塊(Syndrome_Chine Search Block) (二)尋找錯誤位置多項式及錯誤大小評估多項式方塊(BM Block) (三)尋找錯誤大小方塊(Forney Block)

(40)

(四)控制暫存器(Control register) (五)狀態暫存器(Status register) 收到的信號先經由尋找錯誤症狀及錯誤位置方塊找到錯誤症狀,接著再將錯誤症 狀送入尋找錯誤位置多項式及錯誤大小評估多項式方塊,找出相對應的錯誤位置 多項式以及錯誤大小評估多項式。接著再送入尋找錯誤症狀及錯誤位置方塊找錯 誤位置,最後將錯誤位置送回尋找錯誤大小方塊即可找到錯誤的值。整體電路概 略圖如圖 15 所示。 圖 15 里德所羅門解碼器軟、硬體概略圖

4-2 伽羅瓦場乘法器

在許多的參考文獻之中,提出了很多不同架構的伽羅瓦場乘法器,而由 K. K. Parhi[9]在 2001 年所提出的一篇專門為了里德所羅門碼而設計的有限場乘法器 具有低功率且低延遲時間(Latency)的特性,因此被廣為使用。以下就來介紹此 有限場乘法器的架構。 假設現有二多項式A ,B∈GF(2m),則 A 與 B 可以表示為基底形式:

− = − = = = 1 0 1 0 , m k k k m k k k B b a A α α (式 4-1) 若 C 為 A 與 B 之乘積,則:

(41)

= − − = − = = + = ⋅ = k i i k i k m k k k m m k k k d where d a b d B A C 0 1 0 2 2 α α (式 4-2) 其中α 是 GF(2k m )中的元素,且一定含有獨特的 (k) i g 使得:

− = = 1 0 ) ( m i i k i k g α α 2 2 1 0 ≤i≤m− and m≤k≤ m− where (式 4-3) 這些 (k) i g 都是可以事先算好的。 因此 C 可以經由推導化簡為:

− = − = − = − = − = + = + = 1 0 2 2 1 0 ) ( 1 0 2 2 ) ( m k k k m m k m i i k i k m k k k m m k k k d d g d d C α α α α

− = − = − = = + = 1 0 1 0 2 2 ) ( ) ( m k k k m k m m j j k j k k c g d d α α (式 4-4)

− = + = 2 2 ( ) m m j j k j k k d d g c where

經由上面的推導我們不難發現整個乘法的過程包含了兩個步驟: (一) 兩數相乘(Multiplication) (方程式(式 4-2)得知) (二) 模數的化簡(Modular Reduction) (方程式(式 4-4)得知) 這兩個步驟之間沒有所謂資料依賴(Data Dependence)的關係,所以兩者之 間可以平行處理。值得注意的是,在這兩部分之中,平衡的互斥樹狀架構 (Balanced XOR Tree)可以達到最短之邏輯路徑效果。例如:

) ( ) ( ) ( )

(42)

(a) 平衡的互斥樹狀架構 (b) 非平衡的互斥樹狀架構 圖 16 兩種互斥樹狀架構

從圖 16 中可以看出假如使用(a)平衡的互斥樹狀架構,邏輯路徑只需要經過 一個 AND 和兩個 XOR 邏輯閘的時間;相反地,假如使用(b)非平衡的互斥樹狀架 構,邏輯路徑就需要經過一個 AND 和三個 XOR 邏輯閘的時間,整體時間較(a)多 出了一個邏輯閘的時間,所以我們當然採用平衡的互斥樹狀架構。

圖 17 是當非規則全平行乘法器建立在 GF(24

)時之硬體架構,我們可以看到 上半部就是前面所提到的第一個步驟:兩數相乘;下半部就是第二個步驟:模數 的化簡。其中gi(k) (0≤i≤3 ,4≤k ≤6)是事先就算好的。

(43)

圖 17 建立在 GF(24 )之非規則全平行乘法器硬體架構

4-3 處理錯誤症狀(Syndrome)之硬體摺疊架構

由 2-4.1 小節我們可知道錯誤症狀的計算可以被視為是一連串伽羅瓦場的 乘加運算,根據定義:

− = ⋅ =2 1 0 ) ( t j j j x S x S

= − + − ⋅ = n i i n j m i n j R S where 1 ) ( α 0 (式 4-5) 為了使得在硬體設計上有規律性,所以把 Sj化成下面的形式: 0 3 2 1 0 0 0 ) ) ) (( ( R R R R Sj = ⋅⋅⋅ n ⋅αm+j + n ⋅αm+j + n ⋅⋅⋅αm+j + (式 4-6) 這一連串的乘累加運算,進而以演算法之 Pseudo-code 表示如下:

(44)

由 許 多 陣 列 處 理 器 的 參 考 書 中 , 不 難 發 現 到 只 要 能 夠 將 類 似 上 述 之 Pseudo-code 找出來,就能夠有辦法依照變數將其硬體化成一維或二維之陣列的 形式。故依照上述關於錯誤症狀之 Pseudo-code,整理出其相對應之硬體架構, 如圖 18 所示,每一個基本運算單元負責處理一個錯誤症狀的計算。 圖 18 錯誤症狀計算之陣列硬體架構

4-3.1 乘加運算器及暫存器檔案

這一節就以上述的陣列硬體架構為基礎,開始設計出錯誤症狀的硬體架 構,並且利用第三章所推導的摺疊演算法,將硬體架構做摺疊處理,讓摺疊硬體 架構套用在里德所羅門解碼器上。 在開始摺疊錯誤症狀的硬體架構之前,首先必須考慮要採用的基本運算單

end

j

n

z

end

R

j

i

z

j

i

z

do

n

to

i

for

j

z

begin

do

to

j

for

begin

i n j m

]

,

[

:

S

;

]

,

1

[

:

]

,

[

1

:

;

0

:

]

,

0

[

1

2t

0

:

j 0

=

+

=

=

=

=

− +

α

(45)

元個數。根據錯誤症狀演算法的定義,假設更正能力為 t,則必須計算出 2t 個 錯誤症狀,因此處理錯誤症狀的硬體為 2t 個基本運算單元形成的陣列。我們現 在就以更正能力最大為 8 作例子,希望使用 4 個基本運算單元來架構處理錯誤症 狀的硬體。由於更正能力最大為 8,所以原先由基本運算單元形成的陣列長度為 16。因為我們剛剛假設希望用 4 個基本運算單元來得到更正能力最大為 8 的錯誤 症狀的值,所以先將原本 16 個基本運算單元分成 4 列,每列有 4 個基本運算單 元,如圖 19 所示。 圖 19 更正能力 t=8 之錯誤症狀計算陣列 決定好要使用幾個基本運算單元後,接著要對暫存器的大小做改變,以及 加入銜接暫存器使得電路正常運作。由於打算將一個回合的資料分為 4 個時間點 來運算,每一列各在一個時間點完成。因此將陣列中每個暫存器變成 4 倍大小, 接著每一列在向前路徑上的連接處加入一個資料銜接的暫存器。做了適當的改變

(46)

後,當在第一個時間點時,送入資料 Rn-i,僅第一列的 4 個乘加器開始動作,且 將計算後的結果存入該列各暫存器的第一個位置中,而此筆 Rn-i資料也會傳送至 第一列與第二列的銜接暫存器中,而其他第二、三、四列的各個乘加器均沒有動 作;到了第二個時間點,讀入銜接暫存器中的 Rn-i值,第二列開始動作,並將計 算結果存入該列各暫存器的第二個位置,Rn-i也繼續傳送至第二列與第三列的銜 接暫存器中,而其餘第一、三、四列的各個乘加器也是均沒有動作;到了第三個 時間點,讀入銜接暫存器的 Rn-i值,第三列開始動作,並將計算結果存入該列各 暫存器的第三個位置,Rn-i也繼續傳送至第三列與第四列的銜接暫存器中,而其 餘第一、二、四列的各個乘加器也是均沒有動作;到了最後第四個時間點也是如 此,讀入銜接暫存器中的 Rn-i值,第四列開始動作,並將計算結果存入該列各暫 存器的第四個位置,到此,結束了一個回合的運算。圖 20說明了上述的這些動 作。 圖 20 錯誤症狀計算陣列之時序規劃

(47)

經由上述的推導我們可以清楚了解,每列中相對應位置的乘加運算器,在 四個動作時間點中是兩兩互斥的,也就是列與列中相對位置的乘加器不會再同一 個時間點同時有動作;而每列中所使用的暫存器,因為變成原本的4倍大小,所 以在四個動作時間點是存入不同的位置,互相不干擾,也就是在任一時間點時不 會讀取或寫入其他時間點的值;最後,銜接暫存器所存的值,都是該回合一開始 輸入的值,由於這三個重要的元素在各個時間點都互不干擾,所以可以將這四列 摺疊成一列。於是只要在一個新的回合中送入一個 Rn-i資料,且在這一回合裡將 四個時間點各自所需的計算結果存入正確的暫存器就可以得到正確的運算。因此 接下來的工作就是根據不同的時間點,調整每個時間點乘加器所需的輸入來源及 輸出目的地,而讓整體架構正確工作,達到和未摺疊前一樣的功能。圖 21所示 為摺疊後的硬體架構。 圖 21 錯誤症狀計算陣列之摺疊架構 將經過摺疊演算法調整後的硬體架構之乘加器群及暫存器檔案所連接的輸 入端以及輸出端明顯的表示出來,其中每個乘加器擁有三個輸入端及兩個輸出 端,從各自的暫存器中讀取上一個回合所乘累加的結果,乘上該運算器在該時間 點各自對應的α值,再加上此回合外部輸入的 Rn-i後,再存回暫存器。因此三個 輸入來源分別為累加暫存器、相對應的α值以及 Rn-i;輸出則是存入累加暫存器, 並將 Rn-i送入銜接暫存器。如圖22所顯示。

(48)

圖 22 錯誤症狀計算硬體之乘加器與暫存器規劃 由圖22中可以看出,α資料表及暫存器檔案在每個時間點各會輸出四筆資 料分別送入四個乘加器中,因此在α資料表及暫存器檔案中可以將同一時間點的 四筆資料設定為同一組,由 Addr 來給予定址命名。舉例來說,當第一個時間點 時,Addr 送入 00 值,因此α資料表會送出α ~m0 αm0+3到四個乘加器;同理,暫 存器檔案也會送出上一回合儲存在 R0~R3 中的乘累加結果到乘加器中做運算;然 而在第二、三、四個時間點時亦是如此,只要控制不同的 Addr 值就可以完成想 要達到的工作。然後如此經過數回合的計算後,Sout 所輸出的值即為錯誤症狀, 依照 Addr 的變換,一個時脈可以輸出四筆錯誤症狀,連續四個時脈即可得到全 部 16 筆的錯誤症狀。另外,一般典型的參數 m0值為 0 或 1,所以α資料表可經 由 m0值的輸入,選擇輸出α ~0 α 或15 α ~1 α 兩種模式。 16

4-3.2 位址產生器的設計

位址產生器(Address Generator)是用來規劃每個時間點所應送入資料表位

(49)

址的一個控制機制,依據時脈(Clock)對位址訊號做遞增的動作,其作用就如同 一個有計數上限的計數器。每當一個發生,位址訊號就會向上加 1,而達到摺疊 係數(Fold Factor)這個計數上限時則歸零。以第三章推導的架構為例子來看, 當更正能力 t 為 6 時,原先應該使用 12 個基本運算單元,現在只想使用 4 個基 本運算單元來完成,所以必須摺成 3 摺,因此摺疊係數為 3。當知道了摺疊係數 是多少後,可以來了解位址計數是如何動作。位址訊號會從 00 開始計數,隨著 時脈的觸發,經過 01 到 10,而達到了摺疊係數這個上限,然後回歸到 00。如果 是 4-3.1 的架構,更正能力為 8 時,則摺疊係數等於 4,也就是位址計數器會從 00 開始計數,經過 01、10、11 達到摺疊係數上限後又回歸到 00。 圖23是位址產生器的方塊圖,其內部有兩個計數器,一個用作位址訊號遞 增的計數,另一個則是紀錄硬體運作的回合數,進而了解錯誤症狀計算的完成時 間。在圖中的輸入訊號ini是一個具重置功能的訊號,能夠讓位址訊號歸零,此 外這個訊號也會送給暫存器檔案,將累加暫存器做重置歸零的動作。CLK 則為 整個系統所使用的時脈。Fold_factor 訊號是用來規定計數的上限。輸出的 Done 訊號則是告知錯誤症狀的計算已經完成,當Done訊號升為高位準時,就是告知 此時的資料是可以截取的,其餘時間Done訊號均為低位準,也就是錯誤症狀的 計算還未完成,資料是不可取的。 圖 23 錯誤症狀計算硬體之位址產生器

(50)

4-4 尋找錯誤位置之硬體摺疊架構

從演算法及數學運算式子可以發現,計算錯誤症狀(Syndrome)和尋找錯誤 位置(Chien Search)的計算很類似,所以希望利用這個共同點把兩塊硬體合併成 一塊硬體,進而減少硬體的使用。在此先介紹一般尋找錯誤位置的作法以及其硬 體架構,然後在往後的章節再介紹如何改變尋找錯誤位置的硬體,使得其硬體架 構能夠和計算錯誤症狀共用。

4-4.1 一般方法之尋找錯誤位置硬體摺疊架構

由 2-4.3 小節可知,錯誤位置的尋找是將伽羅瓦場中所有的元素代入由 BM 演算法所計算出的錯誤位置多項式而得到。假設我們的更正錯誤能力為 t,則由 BM 演算法求出的錯誤位置多項式如下: 2 0 1 2

( )

t t

f x

=

f

+

f x

+

f x

+ ⋅⋅⋅ +

f x

(式 4-7) 然而為了使硬體規則化,我們把 f x( )改變成下面的形式: 1 1 0

( )

(((

t t

)

)

)

f x

=

f x

+

f

x

+

x

+

f x

+

f

(式 4-8) 接著將伽羅瓦場中所有的元素α ~0 α254 代入 x ,每個元素α 從輸入端開始經過i t+1 個係數的乘累加,存到最後一個暫存器的值就是f(α 。這整體的架構是i) 以運算陣列的形式管線化(Pipeline)進行,所以輸入端可以連續的輸入,而當 此時刻最後一個暫存器得到某一元素計算結果的值,下一個元素的計算結果將 會在下一個時刻就得到。上述的硬體架構如圖 24。 圖 24 更正錯誤能力 t 之尋找錯誤位置的硬體架構

(51)

4-4.2 一般方法之尋找錯誤位置硬體摺疊架構之乘加運算器及暫存

器規劃

以 4-4.1 所介紹的硬體架構為基礎,開始建立出尋找錯誤位置的硬體架構, 接著再利用摺疊演算法的推導,把原本的硬體架構做摺疊處理,接著再將修改過 後的摺疊架構取代原本尋找錯誤位置的硬體架構。 在開始摺疊尋找錯誤位置的硬體架構之前,首先一樣必須考慮採用的基本 運算單元個數。由上述的介紹可以得知,如果更正錯誤的個數為 t,則需要 t+1 個基本運算單元的陣列才能夠完成我們要的工作。我們現在以更正錯誤能力最大 為 8 來說明,所以必須要有 9 個基本運算單完。要做摺疊之前,首先決定要使用 幾個基本運算單元來完成,我們也是像計算錯誤症狀一樣採用四個基本運算單元 為一組,也就是希望摺疊後的硬體,只使用四個基本運算單元。於是可以將 9 個 乘加器分成三列,每列都具有四個基本運算器,而第三列卻只需要用到一個基本 運算器就足夠了。如圖 25 所示。 圖 25 更正錯誤能力 t=8 之尋找錯誤位置的硬體架構

(52)

現在將 9 個基本運算單元分成三列,也就是打算將原本一個回合內必須完 成的動作分成三個時間點來運算,每一列各在一個時間點完成。因此每個暫存器 必須變成三倍大小,接著在列與列之間的每個向前路徑上加入資料銜接的暫存 器,儲存此刻時間點最後運算的值,等到下個時間點使用。當第一個時間點時, 僅有第一列的四個乘加器會動作,並且將運算後的值存入該列各暫存器的第一個 位置中,而第二、三列均不動作;當第二個時間點時,只有第二列的四個乘加器 會動作,並且將運算後的值存入該列各暫存器的第二個位置中,而第一、三列均 不動作;當第三個時間點時,只有第三列的乘加器會動作,並且將運算後的值存 入該列暫存器的第三個位置中,而第一、二列均不動作。由於只要經過九個乘累 加運算就可以得到我們要的值,也就是在第三列的第一個基本運算單元計算存入 的值,所以在第三個時間點時,只需要一個基本運算單元,經由這個基本運算單 元所算出來的值就是我們要的結果。因為摺疊的關係,在第三個時間點時,還是 有四個基本運算單元可以使用,但是只會使用到一個,我們只要注意控制這個基 本運算單元即可。圖 26 表示了上面的敘述。 圖 26 八次尋找錯誤位置器陣列之時序規劃

數據

表 1 11 1   利用本質多項式 h ( x ) = 1 + x 2 + x 3 + x 4 + x 8 建立之 GF ( 2 8 )
圖 2 里德所羅門解碼流程圖
圖 6 基本運算單元陣列  決定好需要幾個基本運算單元後,我們開始對整體的架構做一些改變。首先 將每個基本運算器裡的暫存器變成原本的三倍大小,接著在列與列之間的每個向 前路徑上加入資料銜接的暫存器,也就是每個時間點最後運算的值暫存起來以傳 遞給下個一時間點處理,如此一來,在每回合的第一個時間點時,Ain 與 Bin 送 入資料,僅第一列的四個乘加器開始動作,且將計算後的結果存入該列各暫存器 的第一個位置,在此時,第四個向前路徑上暫存器的值,也會傳遞至第一列與第 二列之間的銜接暫存器中,而第二、三列的基本運算
圖 8 基本運算單元陣列之摺疊架構
+7

參考文獻

相關文件

第四章: 中學報稅的設計 第五章: 初中諒程主建議 第六章: 高中諒我建議,..

關於宋代寺院的合法性,日本的高雄義堅先生《宋代教史の研究》第三章的第一節、竺

„ „ 利用電腦來安排與整合多種媒體,可產生 利用電腦來 更多樣化的作品。如某一段背景配樂在影 片中的哪個時間點開始播放、新聞播報中 子母畫面的相對位置、文字字幕出現在畫

第一篇 國際安全與軍事情勢 第一章 國際安全環境 第二章 全球軍事情勢 第三章 亞洲軍事情勢 第四章 中共軍事情勢.. 第二篇

其硬體架構如圖 9.3 所示。本實驗最主要的目的是要將之前學長所做的 GPS/INS 整合 部分中的加速儀用

在與 WINS 有關的研究之中,除了研發感測器硬體這個領域之外,其它的領域均需要

第二章是介紹 MEMS 加工製程,包括體型微加工、面型微加工、LIGA、微 放電加工(Micro-EDM)、積體電路相容製造技術 CMOS MEMS 製程等。製作微 加速度感測器。本研究是選用台積電 0.35μm

靜態意義: 「組織是由許多不同的部 分建構 完成 的一個整體」 ,例如部