• 沒有找到結果。

應用於空時籬柵碼搜尋之維特比演算法

第四章 空時籬柵碼之搜尋演算法

4.3 應用於空時籬柵碼搜尋之維特比演算法

當我們選定一組籬柵空時碼編碼器時,我們要針對所有可能information bits 產生出來的 coded symbols,兩兩做距離比較;此部分,目的是為了簡化比較時的複雜度。Viterbi algorithm 是降低 ML algorithm 的一種方法,我們將運用 trellis 的特性,用 Viterbi algorithm 爭取時間,來快速獲得結果。方法如下:

Step 1:

選定一組籬柵空時碼時,我們隨即可以製造所對應的trellis。

Step 2:

於時間t,從 State 0 出發,輸入一組 information bits X 至籬柵空時碼編碼器,在籬柵上,

對應一條path,獲得一組 coded symbol 的組合。例如: information bits=(0000000),從 state0 出發,得到的 path 如下(實線表示)

不失其一般性,產生error 的 codes 為

{ } ˆ X

,在某一時間

{ } ˆ X

State 0 開始與X 分離,注 意這裡所定義的

{ } ˆ X

為一個集合,代表所有的error codes 都是在 State 0 開始與

X

有分歧。

如下圖所示:

{ } ˆ X

用虛線表示,X 用實線表示。

Step 3:

經過constraint length 時間過後,

{ } ˆ X

裡存在與X 相交會,並存在與 X 的歐式距離很小 的error codes,如上圖一。此外,在比較的過程中,我們盡可能避免不必要的”兩兩比較”。

使用 VA,即可達到我們的需求。在此計算距離時,皆是計算

{ } ˆ X

X 的距離。如下圖

所示:

2 4

2

圖(三) 圖(四)

圖(二)

圖(一)

經由上面幾個簡單的步驟,很快就可以找到STTC 的最小 trace,不必將全部的 coded symbol 做兩兩比較。在執行 Viterbi 的過程中,我們必須注意下列準則:

ƒ 在

t

時間從state 0 發散,在 t+1、t+2...時,不需再計算從 state 0 發散出去的 branch,

因為這個動作與在時間t 從 state 0 發散的作用相同,將會得到相同的結果。如下圖,

列舉一個不必要的例子:

ƒ 我們期望發散出去的 path

{ } ˆ X

,能夠盡快與 X 再結合,這樣才能盡快計算出最短距 離。所以當

{ } ˆ X

X 結合在一起的時候,就可以決定可能的最小距離。尚未結合在 一起的path,儘管此 path 比目前暫存的最小距離短,但不能用它來決定最小距離。

因為後續延伸的branch 仍有可能影響結果。以下面的例子,來觀察:

t=3 時,與X 結合的 branch 中,最小的為 8;state 1、state 2、state3 的 survivor

8 4 6

6 12 8

8

= 1

t t = 2 t = 3 t = 4

redundancy!!

10 8 4 4 10 6

6 12 8

8 6 6 2

4 2

4

4

X 距離分別為 4、6、6,以上三個值,皆小於目前最小的 trace→8,但我們不可 將這些值(例如:4),誤以為是最小的 trace。一切的值要在與X 結合後,才能做決 定;例如本來在t=3 的所有 survivor path,在 t=4 與X 結合後,皆大於或等於 8,假 如在t=3 即決定最小 trace 為 4,就會出錯。一定要與X 結合之後,才能決定最小 trace 的原因,是由於我們預先知道 STTC 的編碼方式,在籬柵中最後勢必走到 all zero state,碼與碼間,在籬柵上所代表的路徑一定會有交會重疊的時候,假如還沒有與 X 結合之前,就判斷碼與碼間的 trace,是不合理的做法,甚至不存在此錯誤的 trace 值。

ƒ 當 survivor 的 cost 大於目前所決定出的最小 trace,我們就不必對此 survivor 做延伸 了。如下圖所示

不過上面,僅單究對State 0 發散的

{ } ˆ X

做處理,還要考慮其他狀況,比如從State 1、

State 2、State 3 發散的

{ } ˆ X

做處理。如下面的例子:

所以我們必須回到step 2,對於

X

{ } ˆ X

分別在State 1、State 2、State 3 發散的情 況,做討論;此外,對於非all zero input 的 information bits 也要做比較,如下圖。

Go Ahead!!

End!!

2

4

2

10 8

8 8 =

8 12 >

8 10 >

8 10 >

8 4 <

8 12 >

8 8 =

8 10 >

8 12 >

10

= 1

t t = 2 t = 3 t = 4 t = 1 t = 2 End!! t = 3 t = 4

利用籬柵的特性,使用 Viterbi 演算法去搜尋最佳籬柵空時碼編碼方式,簡化全域搜尋 方法中,phase 2 的複雜度,大幅加速搜尋的速度。