• 沒有找到結果。

4.3 軟式解碼硬體電路

4.3.2 高斯硬體電路

傳統高斯電路使用喬登(Jordan)做法,圖 41 此 jordan 消去法的程序本篇已經 稍為作一些修改與原本高斯消去法有些不一樣,原始高斯消去法會先作下三角矩 陣消去法再來做上三角消去法,稱為高斯 LU 消去法,我只是將他消去法步驟稍為 改一下,將要執行消去法 LU 的動作改為先判斷逐行逐列是否合乎消去法規則,若 不是就透過交換方式(swapping)找到合乎高斯消去法規則的行(row)或列(column),

透過行交換,每一列皆還是獨立向量,透過行交換,則要透過暫存器或記憶體記 錄該位置,最後才能做消去法動作。

圖 41 Jordan 高斯消去法程序

但是無論怎麼將硬體改變都無法改變 jordan 高斯消去法在硬體的運算時間,

這是非常令人詬病的一個問題,碰到消去法運算的時間將會耗時很久,有時候有 些矩陣會讓 Jordan 不斷做交換行列動作甚至會在搜尋行或列中,沒有一個符合消 去法矩陣的時候,導致硬體運算會卡在這邊,所以在此本篇論文的高斯消去法將 會使用史密斯(SMITH)高斯消去法[24]電路,達到對硬體運算時間符合的需求。

史密斯高斯消去法的運算動作,它是由 A. Bogdanov, M.C. Mertens, C. Paar, J. Pelzl, A. Rupp 命名。下面程式敘述是以一個 A 矩陣 nxn 做說明,史密斯是透過 該矩陣行和列第一個值 a11做判斷是否需要做消去法或列平移,圖 42 史密斯消去 法與傳統 jordan 高斯消去法節省了至少一個迴圈。

52

For i = 1 : 單位矩陣寬度 while a11 = 0

搜尋第一列為 1 的行,將此列透過平移(shift)方式,放進第一行。

end while;

Eliminate(A);

End for 迴圈。

Start

Load Initial

Matrix Memory

Check a11 = 1 or 0?

Elimination

Shift (1clock

1row)

53

一般我們看到圖 43 在解高斯硬體運算法程序上的步驟變得更簡單,有效改善 硬體在高斯法所需要時間,但是與傳統 Jordan 高斯消去法還有一點不同就是消去 法在史密斯是以全部矩陣直接做做消去動作,這樣會佔硬體相當大空間,在本篇 論文會選擇史密斯架構做為軟式解碼演算法的高斯運算基礎架構,原因在於透過 定點模擬以及查表法有效並且利用訊息傳遞概念,使得原本高斯運算是在[104×

2100]單位長度做運算,現在修正成為[104×158],另外最主要原因是 jordan 消去 法碰到特殊矩陣將無法解決消去動作。

element(1,1)

element(2,1)

element(1,2)

element(2,2)

element(n,1) element(n,2)

element(1,3)

element(2,3)

element(n,3)

element(1,n)

element(2,n)

element(n,n)

add add

add add

add add

add

add

add

add

add

add

out1 out2

row_add

row_add

column_add column_add column_add

圖 44 史密斯高斯消去法架構

圖 44 史密斯高斯消去法是由[104×158]各個子方矩陣程式所組合而成,每一 筆子元素 e(n,n)(element)消去資料是由 e(n+1,n+1)子元素所得到,消去資料的輸出是 由每個元素定義的 out2 做輸出,平移資料是透 e(n+1,n)子元素 out1 得到。此架構在 數位硬體中被定義為流水線(pipeline),在硬體中的優點就是處理速度很快,缺點 就是因為所有指令都會在同一個時序進行所以相對佔據硬體空間也相當大。

在史密斯高斯消去法是以每一次消去的動作當作計算史密斯所需要的工作時 間,當時間等於單位矩陣的寬度就停止硬體動作,在每一個元素裡面都有一個暫 存器保存上一次消去法所做的資料,圖 45 就是史密斯消去法子元素的架構。

54

lock_row

add in2

gs_initial_load(bus

GS Element DataPath

in1 lock_lower_row gs_shift_dat

Internal Internal Internal

Internal

Internal

GS Element FSM

Smith_hold nclk

Internal Internal

shift

在子元素架構中,有兩條控制線是來自於 FSM 控制器為 gs_initial_load 和 Smith_hold,分別控制初始輸入排序後矩陣值和將史密斯動作完後的值保持住,

為了考慮每筆時序硬體皆要有動作避免有閒置發生,在此將資料輸出到後端記憶 體做儲存,表 8 說明子元素架構中的資料運算單元的訊號。

表 8 高斯消去法子元素控制訊號

消去法(Elimination)動作 平移(Shift)動作 add = ‘1’

lock_lower_row = add;

lock_row = ‘1’;

add = ‘0’;

lock_lower_row = add;

lock_row = ‘0’

圖 46 是史密斯高斯消去電路所規劃狀況,計數器 1 負責提供初始資料下載位 置,計數器 2 透過 add 做為平移行和控制每一行的 lock_lower_row、lock_lower 和單位矩陣控制訊號,本論文透過史密斯高斯架構運算時間會從 0.5us 到 13.65us

55

=104

<104 add_p clk

element element

element element 104 x

158 Matrix element

element

element element element

add(1)(1)

gs_cntinitial

_en

Counter1

gs_cntinitial

_en

1‘0’

0

Counter1: work on shift and Initial Status

clk

Load_initial Data

cnt_lock_enable

相關文件