• 沒有找到結果。

在 DVB-T 中所採用的通道編碼的方式是採用連接碼(concatenated codes)及資 料交錯的方式來提供錯誤更正的效果,因此完整通道解碼器是由以下的四個主要 模組連接而成:

一. 內部解交錯器 inner deinterleaver

二. 內部解碼器 inner decoder (viterbi decoder) 三. 外部解交錯器 outer deinterleaver

四. 外部解碼器 outer decoder (Reed-Solomon decoder)

圖二顯示了相關 DVB 在不同傳播媒介所採用不同的通道解碼規格。解碼器 所接收輸入資料的格式是 MPEGⅡ運輸封包(transport packet)。在一般情況下,它 只會有一組資料流輸入(input stream)。但也可以擴充為兩組輸入,其中一組輸入 可用來傳送比較重要而需要較好的保護的資料。相對而言,另一組則用來傳送較 次要的資料而可接受較低的保護。此計畫也支援這模式,分為 non- hierarchical mode 和 hierarchical mode。由於如圖二所示各個 DVB 相近規格,包含歐洲 DVB-C (Cable)有線 TV 標準,DVB-S (Satellite)衛星 TV 標準及 DVB-T (Terrestrial)無線 TV 標準,其解碼的差異度有限,因此本計畫所設計的解碼器將提供這幾種不同 規格的解碼功能。

以下針對上述通道解碼器的四個主要模組的相關設計方法,依序討論如下:

1 Inner deinterleaver

在 DVB-T 系統中的內部交錯器包含了兩個階層的交錯,第一層是位元交 錯,第二層是符號交錯。因此在解交錯的架構上將包含了一個符號解交錯器,再 加上一個位元解交錯器。

1.1符號解交錯器(Symbol deinterleaver

符號交錯、解交錯為通道編解碼的一個主要部分,此一信號交錯是採區塊交錯

( Block interleaving ), 將 每 一 個 OFDM ( Orthogonal Frequency Division Multiplexing)符號所產生之 1512 筆資料(2K 模式)或 6048 筆資料(8K 模式)以亂 數交錯的方式重新排列信號順序。在硬體的設計上因此有兩點須要特別處理的部 分,一是由於交錯順序在規格書上是由一排列函數 H(q)所定義,如將此資料重 排序的亂數位置存在一個表,顯然會浪費很大的記憶空間。而 H(q) 此一函數雖 然可以由一個基於移位暫存器架構之近似亂數產生器實現,但由於此一類似移位 暫存器的亂數產生器產生位置的總數為 2 的冪次方,為了符合區塊大小,因此亂 數產生器的結果得再進一步調整,但這也造成設計上的困難,可能無法達到即時 產生的功能必須加以克服。此外,多大的記憶區塊也是一個問題,因為對於奇偶 符號的排序方式各不相同,文獻[2]之解交錯器是採用兩塊 1512 或 6048 的記憶 體及兩個亂數位址產生器,此一方式雖然單純,但是所耗費的記憶體大小將是個 問題。

1.2位元解交錯器(Bit deinterleaver

位元解交錯器是採用區塊交錯的方法,大小是 126 位元,位元交錯的資料排 列順序會依照調變的方式而不同。此一區塊資料交錯的排列方式是按照[1]所定 義的 He(w)函數。符號交錯器送出 126 個 v 位元的字元,yout = [ a0,a1... av-1 ],到 位元交錯器,每一個交錯器只收到一個位元,位元 a0送到編號 I0 的位元交錯器,

位元 av-1送到編號 I(v-1)的位元交錯器,對每一個位元交錯器輸入位元向量如下:

A (e) = (ae.0,ae.1,ae.2... ae.125) 其中 e = 0, 1, 2….. v-1 位元交錯器的輸出向量如下

B (e) = (be.0,be.1,be.2... be.125) 是被定義如下 be. He(w)= ae.w 其中 w = 0,1,2………125 其中 He(w)是個排列函數並且定義如下 I0:H0(w)=w

I1:H1(w)=(w + 63) mod 126 I2:H1(w)=(w + 105) mod 126 I3:H1(w)=(w + 42) mod 126 I4:H1(w)=(w + 21) mod 126 I5:H1(w)=(w + 84) mod 126

位元交錯器的步驟在 2k mode 每一個 OFDM 符號會重複 12 次,在 8k mode 會重 複 48 次。

2 Inner decoder

信號經過內部解交錯後,則進行下一步內部解碼,也就是腓特比解碼。腓特 比的演算法乃是從 state 轉換圖中找出最接近的狀態轉換順序,可以針對迴 旋編碼(convolutional code)而得到最近似解的解碼方式。其計算上包含了 state metric 的累加與比較,以及回溯(traceback)找出 survivor 的路徑。而 就 DVB 所使用之 Viterbi 編碼而言,針對不同傳輸條件而衍生因應之不同的 傳送資料速率,乃採用一如圖三所示之基本母迴旋編碼器,具有 1/2 碼率 (code rate)與 7 個限制長度(constraint length),並加上 DVB 特定的穿刺 (puncturing)功能,以提供 2/3、3/4、5/6 與 7/8 四種不同碼率的迴旋碼。因此 要完成一多重碼率的迴旋碼解碼器,需使用解穿刺法再搭配原先碼率 1/2 的 Viterbi 解碼器,設計出一多重碼率 Viterbi 解碼器(Rate Compatible Viterbi

Decoder);並考慮如何有效率地在狀態數目為 64 的情況下,完成每個遞迴

腓特比演算法搜尋狀態轉換圖中最可能路徑乃是先根據累加 branch metric 所得之 state metric 值來決定進入每一 state 之路徑,並將此一最可能之路徑以 decision bit 記錄下來,最後則由每一階段之 decision bit 來回溯找出整體的 survivor 路徑。因此,在硬體架構上如圖 4 包含了三個部份:branch metric unit(BMU)、

add compare select (ACS) unit 和 survivor memory unit(SMU)。其中以 ACS unit

(ACSU)及 SMU 之設計最複雜,分別敘述如下。

VA 中的一個很重要的步驟就是計算 state metric,對於一個 rate-1/2 的 Viterbi

解碼器,計算的公式如下:

( )

state-serial[4]。其中 state-serial 只用少數 ACS pair 來循序完成所有 states 的 ACS 運算,此一方法的優點是所需要的 ACS 硬體較少,然而其速度很慢。而 state-parallel 的方法中,若有 N 個 states,就需要 N 個 ACS units,每個 ACS unit 負責固定一個 state 的 ACS 運算。這種方法的好處是速度快,儲存 state metric 和 decision bit 的硬體較簡單;然而當 constraint 長度很大時,如 CDMA 及許多 TV broadcasting 的 應 用 如 HDTV ( High Definition TV )、 DVB ( Digital Video Broadcasting),其架構需要很多的 ACS 運算元,耗費許多的硬體面積;更重要 的,因著 Viterbi 的演算特性需要許多整體訊號的聯結,因此繞線的複雜度會非 常的高。這是在設計 ACSU 中得注意的。

除了 ACSU 之外,SMU 的設計在 Viterbi 解碼器上更為重要,尢其是當 constraint 的長度很大時,survivor 路徑需要更長的距離收歛,也導致所需儲存 decision 結果的記憶體及相對應的操作增加。Register-Exchange(RE)和 Trace-Back

(TB)是目前最常使用的 SMU 的設計架構。其中 Trace-Back 的方式乃將某一特 定時間儲存所有組態其來源組態的訊息(i.e. decision bit) ,若要尋找出整體路徑 則須要做回溯(TraceBack)的動作。在 Viterbi 解碼動作一般定義了 L 及 D 分別 代表了 survivor path 及 decode path 的長度,當從任意組態回溯 L 個長度時會收 歛(converge)到一組態;而從此一組態再回溯的 D 個長度所得即為正確解碼輸 出。D 的大小則牽涉到 TB 的效率,也就是說,當 D 愈大代表得到一筆解碼結果 所需要的 TB 次數愈少;但是,另一方面則是代表了儲存 decision bit 所須要的 survivor path 記憶體愈大。

另一得到 survivor 路徑的方法是 RE,當每一階段從 ACSU 得到 decision 結 果時即動態的決定了 survivor 路徑;換句話說,RE 每一時間都更新整體的 survivor 路徑。RE 的優點在於操作上比較直接,而且解碼的 latency 最短,每當接受到一 新的輸入訊號就可得到一個解碼輸出;然而此一方法最主要的缺點在於需要大量 的暫存器和多工器,以及衍生而來繞線的問題;此外,每一時間各組暫存器都需

要有移位的操作帶來許多的電路交換的動作(switching activity),這都會導致所 消耗很大的功率。因此 TB 及 RE 各有其優缺點,一般而言在 constraint 長度小的 情況多半使用 RE,而當 constraint 長度大的情況則使用 TB。

R0

Branch Metric Decision Bit VITOUT

BMU ACSU SMU

D

Branch Metric Decision Bit VITOUT

BMU ACSU SMU

D 3. Outer deinterleaver

Outer deinterleaver 使用迴旋交錯的方式,所以又稱迴旋交錯器,迴旋交錯 器是由 12 個分支組成的,分支的輸入端有一個開關周期的循環連接輸入的位元 組資料流,每一個分支都可以用深度 M x j (j=0,1,…,11) First-In,First-Out (FIFO) 移位暫存器來實現,其中 M=17,且每一個移位暫存器 8 位元寬。並且輸入和輸

就會有 12 個位址產生器,和控制單元,所以如果能將 12 個記憶體合併為一個單 一的記憶體,則只需要一個位址產生器。一個以 6 個記憶體為架構的設計在[5],

其架構如圖 6。

圖 5 外部交錯器 FIFO 移位暫存器架構

圖 6 外部解交錯器記憶體架構 4. Outer incoder & decoder

禮德-所羅門(Reed-Solomon)codes 最早於 1960 年由 Reed 跟 Solomon 提出,

屬於線性方塊編碼(block codes)的一種,除了可以更正隨機錯誤之外,更可以 有效的更正叢集式錯誤(burst error),因此成為相當普遍的一種 Forward error correction 編碼方式。故此,Reed-Solomon (RS)codes 被廣泛的應用在通訊、

數位影音設備例如 CD、HDTV、xDSL 等等。也常與一般之 Convolutional code 結合成為連接碼(Concatenated code)應用在無線通訊之產品,如本計畫所探討

之 DVB-T 之應用。也因著如此廣泛之用途,無論如何解碼 Reed-Solomon codes 之演算法推導,或是設計適當高效率之解碼器架構,一直吸引相關產學界之注視。

圖 7 區塊編碼

Reed-Solomon code 是區塊碼的一種,所謂的區塊碼是將資料分成一各固定 大小的區塊,並對這個區塊作保護編碼的動作,如圖 7 所示。Reed-Solomon code 一般以區塊碼( n,k,t)的格式代表:k 是每個 block 的 information symbol 數,

n 是經過編碼後每個 block 的 symbol 數,symbol 可以表示一個到數個位元。

n-k=2t 代表每個 block 所加上的 parity symbol 數目,而 t=(n-k)/2 則是一個 (n,k,t) RS code 所能更正的最大 symbol 數量,考慮 erasure 的情況則能成功 的更正最多 2t=n-k 個 erasures。在 error 跟 erasure 同時存在的狀況下,則更 正錯誤能力可以nk≥2v+ f 表示,其中 v 是 error 的數目,f 是 erasure 的數 目。如本計畫所探討之 DVB-T 之通道編碼器之使用,在 DVB 系統中所使用的是(204, 188, 8)Reed-Solomon code,symbol 之大小為一個 byte,可以有效的更正 8 個 symbol 錯誤

RS code 的編碼原理乃建構在 Galois field GF(2 ),因此原始資料跟編碼m 後的資料乃以 polynomial 的方式來表示,polynomial 的項次代表每個 block 的

symbol 個數,而 polynomial 的係數為 GF(2 ) 上之元素,對應到傳輸資料的m Symbol,而 polynomial 的 x 變數的冪次方數(power)則表示編碼跟解碼的先後順 序。傳輸的資料以m x( )=m0 +m x1 +m x2 2⋅⋅⋅mk1xk1表示,經由 generator 送端之資料在傳送過程可能因為 channel noise 的原因而被修改,因而接收端接收 到的 polynomial R(x),可以表示成 c(x)跟 error polynomial E(x)的總合,也就是:

0 是從 R(x)找出對於 generator polynomial 的根之反應(二) 找出錯誤多項式(error locator polynomial) (三) 找出錯誤多項式的根以確認信號的錯誤位置 (四) 計算 錯誤的值(error values)以更正信號。其中,尢以如何找出錯誤多項式最為關鍵。

Berlekamp 提出遞迴的方式找尋此一方程式,並且在 1969 年由 Massey 以 Linear feedback shift register(LFSR) 方式來解釋與實現,後來被稱為

Berlekamp-Massey(BM)演算法[6]。1975 年 Sugiyama 發現 error locator polynomial 也可以利用 Euclid’s greatest common divisor(GCD)最大公因數求解之演算法來得 到[7]。直到如今基於 Berlekamp-Massey(BM)演算法及 Euclid’s 演算法仍是最 主要找尋方程式的演算法。至於尋找多項式根的方法一般都採用 Chien 的搜尋法

Berlekamp-Massey(BM)演算法[6]。1975 年 Sugiyama 發現 error locator polynomial 也可以利用 Euclid’s greatest common divisor(GCD)最大公因數求解之演算法來得 到[7]。直到如今基於 Berlekamp-Massey(BM)演算法及 Euclid’s 演算法仍是最 主要找尋方程式的演算法。至於尋找多項式根的方法一般都採用 Chien 的搜尋法

相關文件