天天看點

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

Very Low-Complexity Hardware Interleaver for Turbo Decoding

作者:Zhongfeng Wang, Senior Member, IEEE, and Qingwei Li
機構:Oregon State University, Corvallis, USA
期刊:IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS—II: EXPRESS BRIEFS
時間:JULY 2007
           

摘要

本文簡要介紹了一種在寬帶碼分多址(W-CDMA)系統中實作turbo碼的低複雜度硬體交織器。算法轉換被廣泛用于降低計算複雜度和延遲。開發了新穎的超大規模內建電路結構。硬體實作結果表明,整個turbo交織模式生成單元僅消耗4k門,比傳統設計小一個數量級。

關鍵詞

CDMA,交織器,turbo碼,VLSI架構

文章目錄

  • Very Low-Complexity Hardware Interleaver for Turbo Decoding
    • 摘要
    • 關鍵詞
    • 一. 介紹
    • 二. 基本參數的計算
      • A. R的計算
      • B. P,v和C的計算
    • 三. S數組與Q數組的計算
      • A. S數組的計算
      • B. Q數組的計算
    • 四. 存儲P,v和Q的無效索引
      • A. 存儲P值
      • B. 存儲v值
    • 五. 交織模式的線上計算
      • A. 排列順序的改變
      • B. S數組索引的計算
    • 六. VLSI實作
      • A. 狀态圖
      • B. 總體框圖
      • C. 實作結果
    • 七. 結論
    • 參考文獻

一. 介紹

1993年發明的turbo碼[1]由于其卓越的性能,已被第三代CDMA系統[2],[3]等多個工業标準采用。圖1示出了turbo編碼器結構和串行turbo解碼器結構,其中 u [ k ] , x s , x p 1 u[k],x_s,x^1_p u[k],xs​,xp1​和 x p 2 x^2_p xp2​分别代表源資訊比特、系統比特、奇偶校驗位-1和奇偶校驗位-2; y s , y p 1 y_s,y^1_p ys​,yp1​和 y p 2 y^2_p yp2​表示分别對應于 x s , x p 1 x_s,x^1_p xs​,xp1​和 x p 2 x^2_p xp2​的接收軟符号;RSC代表遞歸系統卷積編碼器;軟輸入軟輸出(SISO)解碼器在每個時間執行個體輸出兩個軟消息:對數似然比 L R ( k ) L_R(k) LR​(k)和外部資訊 L e x ( k ) L_ex(k) Le​x(k)。turbo碼的一個關鍵特征是交織。在編碼器端,一組資訊比特被交織并發送到RSC2,以生成奇偶校驗位-2。在解碼器端,外部資訊和 y s y_s ys​符号在第二解碼階段交織[4]。在實際實作中,交織過程是通過以交錯順序讀取資料來執行的(注意:去交織過程是通過将資料寫回加載它們的位置來完成的。這樣,去交織模式是不需要的)。是以,需要交織模式生成電路,其用作如圖1所示的位址生成器。

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

在WCDMA系統中,turbo碼塊大小從40到5114比特不等。不同的塊大小需要不同的交織模式。可以得出結論,基于隻讀存儲器(ROM)的解決方案需要超過100M bits的存儲空間來存儲所有交織模式,從硬體成本的角度來看,這是不可接受的。在[5]中,Cornell寬帶通信實驗室的研究人員提出了一種硬體交織器解決方案。總的硬體數量約30K門。[6]中提出的基于處理器的解決方案使用了略多的硬體,同時也支援CDMA2000系統中的turbo碼。

數字信号處理(DSP)系統的低功耗實作方法已在許多論文中進行了論述,如[7]。簡而言之,我們最大限度地利用聯合算法級、架構級和電路級超大規模內建電路優化方法來消除昂貴的乘法、除法和模運算,以降低目标系統的整體計算複雜性、計算延遲和功耗。我們的實作結果表明,所提出的設計比其他已釋出的設計具有低一個數量級的硬體複雜性。

本簡報組織如下。第二節描述了計算基本參數的方法。在第三節中,我們介紹了兩種新的計算S和Q數組的方法,這是交織器中最複雜的兩個部分。然後在第四部分,我們簡要介紹一些節省存儲空間的方法。在第五節中,我們提出改變排列順序,這樣可以節省一些計算硬體,并擺脫傳統排列方法的延遲。第六節說明了超大規模內建電路的設計細節,并提供了實作報告。最後,第七部分得出結論。應該提到的是,通過改變第五節中讨論的排列順序來動态生成位址的想法類似于[6]中提出的方法,盡管新的工作是獨立開發的。

以下讨論中使用的大多數變量都與标準[2]中使用的符号相比對。( N N N符合标準中的 K K K,并且, R R R符合 R R R, C C C符合 C C C, P P P符合 p p p, v v v符合 v v v, S S S符合 s s s, Q Q Q符合 q q q, U U U符合 U U U)。關于每個變量的詳細定義,請參考[2]。

二. 基本參數的計算

A. R的計算

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

使用(1)計算行數 R R R,其中 N N N是表示塊大小的輸入參數。為了低複雜度的目标,我們使用3個周期進行3次比較:周期1:檢查是否 N > 200 N>200 N>200,決策位表示為 D 1 D1 D1: D 1 = 1 D1=1 D1=1意味着 N > 200 N>200 N>200;周期2:檢查是否 N > 480 N>480 N>480,決策位為 D 2 D2 D2;周期3:如果周期2的答案為“是”,檢查 N > 530 N>530 N>530,否則檢查是否 N ≥ 160 N≥160 N≥160,決策位表示為 D 3 D3 D3。可以使用基于上述三個決策位的簡單組合邏輯來确定的最終值 R R R。為了降低即将到來的計算的複雜性,我們隻記錄了 R R R的索引: R = 5 R=5 R=5時為0, R = 10 R=10 R=10時為1以及 R = 20 R=20 R=20時為2。是以,我們隻需要一個3位輸入和2位輸出邏輯來确定索引。

B. P,v和C的計算

第二步是确定素數 P P P和列數 C C C

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

基于第一步的計算結果,如果( D 3 = 0 D3=0 D3=0)且( D 2 = 1 D2=1 D2=1),則 P = 53 P=53 P=53, C = P C=P C=P。如果這個條件不滿足,我們需要找到一個最小素數 P P P以緻于 P ∗ R ≥ N − R P*R≥N-R P∗R≥N−R。一個正常的方法是使用二分搜尋法。由于要考慮的素數總數為52(根據WCDMA标準[2,表2], P P P有52個可能值),我們需要執行6次乘法運算、6次記憶體通路和12次加法/減法運算來确定 P P P值。

簡而言之,我們考慮一種間接計算方法。假設我們将所有 P P P值(7,11,…,257)存儲在一個表中(用ROM實作,從位址“0”開始)。為了在表中尋址找到目标 P P P值,我們通過使用一些簡單的映射函數來計算一個近似索引。在這裡,我們構造這樣的映射函數,對于任何的 N N N和 R R R它保證真實 P P P值被存儲在由 P I 2 − 1 PI_2-1 PI2​−1, P I 2 PI_2 PI2​, P I 2 + 1 PI_2+1 PI2​+1和 P I 2 + 2 PI_2+2 PI2​+2索引的表的四個條目之一中。如果 P [ P I 2 ] ∗ R ≥ N − R P[PI_2]*R≥N-R P[PI2​]∗R≥N−R那麼檢查是否 P [ P I 2 − 1 ] ∗ R ≥ N − R P[PI_2-1]*R≥N-R P[PI2​−1]∗R≥N−R。如果 P [ P I 2 ] ∗ R < N − R P[PI_2]*R<N-R P[PI2​]∗R<N−R那麼檢查是否 P [ P I 2 + 1 ] ∗ R ≥ N − R P[PI_2+1]*R≥N-R P[PI2​+1]∗R≥N−R。2個時鐘周期後,我們将确定目标 P P P的索引。是以,如果我們在同一條目中存儲 P P P和對應的 v v v,我們可以獲得 P P P值和 v v v值(與素數 P P P相關聯的基元根,見标準[2,表2])。設計中使用的映射函數是分段線性函數,隻需加法和移位操作就可以簡單地實作。

三. S數組與Q數組的計算

A. S數組的計算

在 S [ 0 ] = 1 S[0]=1 S[0]=1時,數組 S S S計算如下:

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

S S S數組的直接計算将不可避免地涉及乘法和模運算,這不僅增加了硬體成本,而且增加了計算延遲。

注意 v v v僅隻有6個值:2,3,5,6,7和19。我們提出從 S [ k − 1 ] S[k-1] S[k−1]逐漸計算 S [ k ] S[k] S[k]。假設 X < P X<P X<P且 Y < P Y<P Y<P。我們有如下:

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

因為 S [ k − 1 ] < P S[k-1]<P S[k−1]<P, ( S [ k − 1 ] ∗ 2 m o d P ) = S [ k − 1 ] ∗ 2 (S[k-1]*2modP)=S[k-1]*2 (S[k−1]∗2modP)=S[k−1]∗2或 S [ k − 1 ] ∗ 2 − P S[k-1]*2-P S[k−1]∗2−P取決于 S [ k − 1 ] ∗ 2 < P S[k-1]*2<P S[k−1]∗2<P與否。讓 X = S [ k − 1 ] ∗ 2 m o d P X=S[k-1]*2modP X=S[k−1]∗2modP, Y = S [ k − 1 ] Y=S[k-1] Y=S[k−1],我們可以用(3)計算 S [ k − 1 ] ∗ 3 m o d P S[k-1]*3modP S[k−1]∗3modP。圖2顯示了對于任意 v v v從 S [ k − 1 ] S[k-1] S[k−1]用于計算 S [ k ] S[k] S[k]的電路。

這種設計的基本政策是對于不同的 v v v用不同的周期數來計算不同的新值 S S S。具體來說,我們用一個周期計算 ( S [ k − 1 ] ∗ 2 ) m o d P (S[k-1]*2)modP (S[k−1]∗2)modP,兩個周期計算 ( S [ k − 1 ] ∗ 3 ) m o d P (S[k-1]*3)modP (S[k−1]∗3)modP和 ( S [ k − 1 ] ∗ 4 ) m o d P (S[k-1]*4)modP (S[k−1]∗4)modP,三個周期用于 v = 5 v=5 v=5和 v = 6 v=6 v=6,四個周期用于 v = 7 v=7 v=7,且五個周期用于 v = 19 v=19 v=19。在 v = 19 v=19 v=19情況下,每次疊代需要五個周期從 S [ k − 1 ] S[k-1] S[k−1]來計算 S [ k ] S[k] S[k](即每 S S S條目需要五個周期)。在這五個周期,寄存器 D 0 D0 D0依次輸出 2 ∗ S [ k − 1 ] m o d P 2*S[k-1]modP 2∗S[k−1]modP, 4 ∗ S [ k − 1 ] m o d P 4*S[k-1]modP 4∗S[k−1]modP, 6 ∗ S [ k − 1 ] m o d P 6*S[k-1]modP 6∗S[k−1]modP, 12 ∗ S [ k − 1 ] m o d P 12*S[k-1]modP 12∗S[k−1]modP和 24 ∗ S [ k − 1 ] m o d P 24*S[k-1]modP 24∗S[k−1]modP。寄存器 D 1 D1 D1依次輸出 2 ∗ S [ k − 1 ] m o d P 2*S[k-1]modP 2∗S[k−1]modP, 3 ∗ S [ k − 1 ] m o d P 3*S[k-1]modP 3∗S[k−1]modP, 5 ∗ S [ k − 1 ] m o d P 5*S[k-1]modP 5∗S[k−1]modP, 7 ∗ S [ k − 1 ] m o d P 7*S[k-1]modP 7∗S[k−1]modP和 19 ∗ S [ k − 1 ] m o d P 19*S[k-1]modP 19∗S[k−1]modP。注意,這個電路隻需要4個加法器和4個寄存器以及一些簡單的開關/多路複用元件。多路複用器和的選擇信号 S 1 S1 S1, S 2 S2 S2和 S 3 S3 S3可以從如表1所示的小查找表中産生。

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

B. Q數組的計算

根據标準[2], Q Q Q數組如下計算:計算 Q [ j ] , j = 1 , 2 , … , R − 1 Q[j],j=1,2,…,R-1 Q[j],j=1,2,…,R−1,使得 G C D ( Q [ j ] , P − 1 ) = 1 GCD(Q[j],P-1)=1 GCD(Q[j],P−1)=1且 Q [ j ] Q[j] Q[j]是一個素數, Q [ 0 ] = 1 , Q [ j ] > Q [ j − 1 ] Q[0]=1,Q[j]>Q[j-1] Q[0]=1,Q[j]>Q[j−1]且 Q [ j ] > 6 Q[j]>6 Q[j]>6,其中GCD代表最大公約數函數。

直接計算GCD是一個遞歸的過程,比執行幾個除法運算還要複雜。從仿真中,我們發現數組 Q Q Q是一組序列素數 W ′ W' W′(即1,7,11,13,…,83,89)的子集。特别地,對于 P P P, Q Q Q數組的任何值,都是 R + 2 R+2 R+2序列素數 W W W的子集( W ′ W' W′的第一個 R + 2 R+2 R+2條目),其中 R R R是對應于給定 N N N值的行數。由于 Q Q Q數組恰好包含 R R R元素,我們最多需要為每個 P P P記錄兩個空索引。這些空索引可以很容易地從仿真中識别出來,這參考了順序素數數組 W W W的索引,數組的條目不屬于數組 Q Q Q。例如,當 P = 53 , R = 20 , P − 1 = 52 = 2 ∗ 2 ∗ 13 P=53,R=20,P-1=52=2*2*13 P=53,R=20,P−1=52=2∗2∗13,13是素數組 W W W的第四條目,而不是數組 Q Q Q的一個元素。是以空索引是3。從我們的仿真中,我們知道最大空索引是20。是以,我們需要5bits來存儲一個空索引。如果沒有空索引,我們存儲0。隻有一種情況 Q Q Q有兩個空索引。當 P = 239 , R = 20 , P − 1 = 238 = 2 ∗ 7 ∗ 17 P=239,R=20,P-1=238=2*7*17 P=239,R=20,P−1=238=2∗7∗17;數組 Q Q Q中不包括兩個質數7和17。是以,兩個空索引是1和4。對于這種特殊情況,我們在表中存儲 0 × 01 _ 100 0×01\_100 0×01_100(十進制12)。既然我們知道12不是任何其他 P P P值的空索引,我們就把它用于這種特殊情況。當然,我們可以存儲另一個不用于任何情況的數字。但是這個提議的設定将導緻最小的硬體成本,因為我們可以很容易地将 0 × 01 _ 100 0×01\_100 0×01_100分成 0 × 01 0×01 0×01和 0 × 100 0×100 0×100。

正如将在後面的讨論(第五節)中顯示的,我們真正關心的是 Q [ j ] m o d ( P − 1 ) Q[j]mod(P-1) Q[j]mod(P−1)而不是 Q [ j ] Q[j] Q[j]它本身。我們引入了一個 Q R O M Q ROM QROM具有22個條目并存儲 Q [ j ] − Q [ j − 1 ] Q[j]-Q[j-1] Q[j]−Q[j−1],即第一個條目存儲1、第二個條目存儲 7 − 1 = 6 7-1=6 7−1=6、第三個條目存儲 11 − 7 = 4 11-7=4 11−7=4等。我們将使用以下電路進行遞歸計算 Q [ j ] m o d ( P − 1 ) Q[j]mod(P-1) Q[j]mod(P−1),而不引入模運算。

應該注意的是,當無效索引與運作索引 j j j比對時,電路的輸出将被丢棄。

四. 存儲P,v和Q的無效索引

從上面的讨論中,很明顯我們需要存儲52個連續的質數 P P P,它們對應的v值,以及對應數組 Q Q Q的空索引。因為 P m a x = 257 , v m a x = 19 , Q v o i d m a x = 20 P_{max}=257,v_{max}=19,Q_{voidmax}=20 Pmax​=257,vmax​=19,Qvoidmax​=20,一個簡單的方法需要每個條目19位。但是,可以采取一些方法來節省存儲空間。

A. 存儲P值

最大素數257,需要9位。如果我們不存儲最低有效位,我們需要8位來存儲每個 P P P值。如果我們存儲 P ′ = ( P − 3 ) / 2 P'=(P-3)/2 P′=(P−3)/2在表中,每個條目隻需要7位。在這種情況下,我們需要一次加法和一次移位操作來恢複 P P P。更激進的方法是存儲 P ′ ′ = ( P − 1 ) / 2 − 3 ∗ i + 27 P''=(P-1)/2-3*i+27 P′′=(P−1)/2−3∗i+27在表中,其中 i i i表示表中 P P P值的索引。從仿真中,我們知道 P ′ ′ P'' P′′取值從0到30。是以,對于每個 P P P我們每個隻需要存儲5位。我們可以從 P ′ ′ P'' P′′中按以下恢複 P P P:

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

上述計算涉及三個加操作和一個移位操作。在這種設計中,我們為每個條目配置設定8位(通過删除最低有效位),以節省恢複實際值時的進一步計算。

B. 存儲v值

因為 v v v隻有6個值:2、3、5、6、7和19。我們使用3位來記錄 v v v的索引,即0代表2,1代表3,3代表5,4代表6,6代表7,7代表19。這裡我們沒有選擇連續索引,原因是我們的選擇是為數組 S S S的計算而優化的(參見第三節-A)。具體來說,現在通過一個簡單的等式,計算 S S S數組條目的每次疊代的循環數與 v v v索引值(表示為)直接相關

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

其中" ≫ \gg ≫"表示右移操作。例如,當 v = 3 v=3 v=3,我們需要 ( v _ i d x + 3 ) ≫ 1 = 2 (v\_idx+3)\gg 1=2 (v_idx+3)≫1=2周期從 S [ k − 1 ] S[k-1] S[k−1]計算 S [ k ] S[k] S[k],當 v = 19 v=19 v=19時,我們需要5個周期。

正如第三節所讨論的,我們需要5位來記錄每一個 P P P的無效索引。總之,我們每個條目需要 8 + 3 + 5 = 16 8+3+5=16 8+3+5=16位(如果我們每個 P P P使用5位,那麼每個條目需要13位),并且我們有52個條目用于ROM。

五. 交織模式的線上計算

我們之前讨論的是重要參數( R , P , v , C , S R,P,v,C,S R,P,v,C,S數組和 Q Q Q數組)的計算,這些參數用于計算每個位的精确置換位址。這裡我們稱上述計算這些參數的過程為“預計算”。在本節中,我們将逐一讨論計算有效交織位址的方法。我們稱這個過程為“線上計算”。實際上,我們幾乎每個周期都輸出一個有效的交織位址。

A. 排列順序的改變

根據3GPP标準,線上運算順序為:1.行内置換,2.行間置換,3.按列讀出,4.删除無效位。然而,對于實際實作,這個順序不是最有效的順序,并且引入了不必要的硬體和計算複雜性。在随後的讨論中,我們提出了一種對較小的硬體面積和較高的速度更有效的方法。

假設輸入比特流是 A 0 , A 1 , … , A N − 1 A_0,A_1,…,A_{N-1} A0​,A1​,…,AN−1​,在插入虛拟位并按行寫入後,它變成

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

并且我們有關系 X i , j = A i ∗ C + j X_{i,j}=A_{i*C+j} Xi,j​=Ai∗C+j​。如果是 i ∗ C + j ≥ N i*C+j≥N i∗C+j≥N,那麼 X i , j X_{i,j} Xi,j​就是一個虛拟位。

對于行内置換,它計算參數 U i , j U_{i,j} Ui,j​,該參數是第 i i i行的第 j j j置換比特的原始比特位置,如下所示

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

其中 γ \gamma γ數組定義為 γ T ( i ) = Q i , i = 0 , 1 , … , R − 1 \gamma_{T(i)}=Q_i,i=0,1,…,R-1 γT(i)​=Qi​,i=0,1,…,R−1,并且 T ( i ) i ∈ 0 , 1 , … , R − 1 T(i)_{i\in{0,1,…,R-1}} T(i)i∈0,1,…,R−1​是根據不同 R R R值定義的行間置換模式[2]。行内置換後,模式變為

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

其中 Y i , j = X i , U i , j Y_{i,j}=X_{i,U_{i,j}} Yi,j​=Xi,Ui,j​​,這種操作可以表示為

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

行間置換根據 T ( i ) T(i) T(i)對行進行置換,其中 T ( i ) T(i) T(i)是第 j j j個置換行的原始位置。行間置換後,模式變為

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

并且 Z i , j = Y T ( i ) , j = X T ( i ) , U T ( i ) j = A T ( i ) ∗ C + U T ( i ) j Z_{i,j}=Y_{T(i),j}=X_{T(i),U_{T(i)j}}=A_{T(i)*C+U_{T(i)j}} Zi,j​=YT(i),j​=XT(i),UT(i)j​​=AT(i)∗C+UT(i)j​​,行間置換可以表示為

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

是以,行内和行間置換可以組合為

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

置換後, Z Z Z序列按列 Z 0 , 0 , Z 1 , 0 , … , Z R − 1 , 0 , Z 0 , 1 , Z 1 , 1 , … , Z R − 1 , 1 , … , Z 0 , C − 1 , … , Z R − 1 , C − 1 Z_{0,0},Z_{1,0},…,Z_{R-1,0},Z_{0,1},Z_{1,1},…,Z_{R-1,1},…,Z_{0,C-1},…,Z_{R-1,C-1} Z0,0​,Z1,0​,…,ZR−1,0​,Z0,1​,Z1,1​,…,ZR−1,1​,…,Z0,C−1​,…,ZR−1,C−1​輸出。一個簡單的方法是先計算 Z Z Z矩陣,存儲值,然後按列讀出。然而,一個更明智的方法是置換将 j j j作為外環, i i i作為内環。那麼的 Z Z Z計算順序與輸出順序相同。這樣,我們可以計算一個位址,檢查它是否有效(不是虛拟位),并輸出它。是以,這裡沒有額外的存儲空間為 Z Z Z且沒有引入延遲。

我們的方法可以表示為

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

我們在實作中使用了這種更快的方法。另一件值得注意的事情是:在排列順序改變之後, U i , j U_{i,j} Ui,j​的計算變成了計算 U T ( i ) j U_{T(i)j} UT(i)j​。根據(6),我們有

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

是以,我們的轉換的另一個好處是:我們避免了計算數組 γ \gamma γ的步驟,這既節省了計算時間,也節省了存儲 γ \gamma γ值所需的記憶體。應該提到的是[6]中基于處理器的turbo交織器設計以類似的方式改變了排列順序,以降低複雜性。

B. S數組索引的計算

注意在(7)中,為了計算 U U U, S I d x = ( j ∗ Q i ) m o d ( P − 1 ) SIdx=(j*Q_i)mod(P-1) SIdx=(j∗Qi​)mod(P−1)是需要的,這裡 S I d x SIdx SIdx表示 S S S索引。圖4展示了我們用來計算 S S S索引的電路。為了避免乘法運算,我們遞歸地從 S I d x ( i , j − 1 ) SIdx(i,j-1) SIdx(i,j−1)計算 S I d x ( i , j ) SIdx(i,j) SIdx(i,j)

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding
Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding
Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

是以,根據這個等式,數組 Q Q Q的值在儲存和使用之前需要取模 P − 1 P-1 P−1。這就是為什麼我們設計圖3中的電路來計算 Q Q Q的原因。應該指出的是,類似于(8)的增量計算已經在[6]中看到。然而,這部分工作是由第一作者獨立開發的。

六. VLSI實作

A. 狀态圖

請參考圖5。

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

B. 總體框圖

圖6示出了turbo交織器位址生成器的總體框圖,其中 N N N是turbo碼塊大小。 T a s k _ b e g i n Task\_begin Task_begin号訓示計算開始, t a s k _ k i l l task\_kill task_kill信号強制任務停止并傳回空閑狀态。信号“ a d d r e s s address address”是交錯位址輸出。“ a d d r e s s v a l i d address valid addressvalid”表示輸出位址是否來自虛拟位。“ I n d e x Index Index”代表計算輸入位的位址。例如, i n d e x = 0 , a d d r e s s = 33 index=0,address=33 index=0,address=33表示第一位将被交織到第34位。 S _ R A M S\_RAM S_RAM、 Q _ a r r a y Q\_array Q_array和 S I d x _ a r r a y SIdx\_array SIdx_array是分别用于存儲陣列 S S S、陣列 Q Q Q和陣列 S I n d e x SIndex SIndex的RAMs。 T _ R O M T\_ROM T_ROM存儲行間置換模式 T T T。 p v Q R O M pvQ_ROM pvQR​OM存儲 P , v P,v P,v的值和數組 Q Q Q的空索引。 Q R O M Q_ROM QR​OM存儲22個微分素數序列。計算核心包含主有限狀态機和其他組合和時序邏輯,以進行控制和計算。

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

C. 實作結果

請參考表2和表3。上面讨論的架構已經使用 V e r i l o g Verilog Verilog硬體描述語言進行了模組化。通過将輸出結果與C程式進行比較,對設計邏輯進行了仿真和驗證。我們進行了綜合、優化和布局布線。綜合的目标是SMIC 0.18μm标準CMOS工藝。優化目标設定為面積。總硬體成本約為4.03門。最大時鐘頻率為130 MHz。所需的時鐘頻率為 2 M ∗ 6 ∗ 2 = 24 M H z 2 M * 6 * 2 = 24 MHz 2M∗6∗2=24MHz,其中我們假設對turbo解碼執行六次疊代。這意味着我們設計中真正的關鍵路徑比要求的要短得多。是以,我們可以使用明顯更低的電源電壓來驅動電路,以便二次降低功耗。簡而言之,與[5]和[6]中給出的設計相比,所提出的設計在面積和功耗方面都要高效一個數量級。

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding
Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

七. 結論

在這篇文章中,我們提出了一種新的硬體交織器結構和3G WCDMA系統的實作。各種優化技術,特别是明智的算法轉換和新穎的超大規模內建電路架構,已經被引入并應用于這一設計。實作結果證明了這些技術的好處,并表明這種設計比現有技術的效率高一個數量級。

參考文獻

Very Low-Complexity Hardware Interleaver for Turbo DecodingVery Low-Complexity Hardware Interleaver for Turbo Decoding

繼續閱讀