專利名稱:維特比譯碼器的高速相加-比較-選擇的制作方法
背景技術:
I.發(fā)明領域本發(fā)明一般涉及Viterbi(維特比)算法的應用,尤其涉及一種經改進的系統(tǒng)與方法,用于在執(zhí)行Viterbi算法時完成高速率相加-比較-選擇(ACS)蝶形操作。
II.相關技術的說明Viterbi算法作為一種卷積編碼信號的譯碼方法于1967年首次出現(xiàn),以后在數(shù)據(jù)通信、數(shù)據(jù)記錄與數(shù)字信號處理領域中得到廣泛采納。該算法已成功地解決了各種數(shù)字估算問題,包括減少了存貯媒體的記錄誤差、消除了碼元間于擾,增強了字符與文本識別能力。
這樣,Viterbi算法已成為卷積編碼數(shù)據(jù)最主要的糾錯譯碼方法。對于這樣的應用,根據(jù)一連串觀察,Viterbi算法決定了以最小誤差量度通過表征所有可能編碼器狀態(tài)格構的路徑。這一最短路徑例示了卷積編碼器最可能生成的序列。
圖1A示出一種典型的卷積編碼器。卷積編碼器100包括一個8位分接的移位寄存器110和一對異或型加法器120,后者把輸入數(shù)據(jù)位U(D)105序列轉換成輸出碼元C0(D)、C1(D)125序列。具體而言,圖1A是一例1/2速率代碼,對每個輸入數(shù)據(jù)位U(D)105產生兩個輸出碼元C0(D)、C1(D)25。注意,圖示的特定碼率與卷積編碼器100的配置僅為舉例,并不限制本發(fā)明各實施例的操作或范圍,因而本發(fā)明諸實施例可以使用1/3或3/4等不同的碼率。
根據(jù)發(fā)生器碼多項式G0(D)、G1(D)限定的特定移位寄存器結構,編碼器100對輸入位流U(D)105通過移位和異或相加而產生各輸出碼元C0(D)、C1(D)125。在此情況下,圖1A示出的移位寄存器互連,提供1/2速率發(fā)生器碼多項式 多項式G0(D)的系數(shù)與輸入數(shù)據(jù)序列U(D)105卷積而生成輸出卷積碼元C0(D)125。同樣地,圖1A示出了1/2速率發(fā)生器碼多項式 其系數(shù)與輸入數(shù)據(jù)序列U(D)105卷積后,生成輸心卷積碼元C1(D)125。編碼器100的約束長度K大于寄存器110中的延遲單元數(shù);對于編碼器100,K為9。對于輸入編碼器100的每一數(shù)據(jù)位,輸出碼元C0(D)、C1(D)125取決于輸入的位和前一K-1輸入位。因此,編碼器100產生的輸出碼元C0(D)、C1(D)125,能跨越2k-1個可能的編碼器狀態(tài)。
在一典型通信系統(tǒng)中,輸出碼元C0(D)、C1(D)125接著調制并通過噪聲信道(未示出)發(fā)送。譯碼器最終收到含噪的卷積編碼數(shù)據(jù)流,并應用利用卷積碼特性的Viterbi算法最終確定輸入數(shù)據(jù)序列U(D)105。
卷積碼的一個優(yōu)點是其可為對稱碼樹提供高度重復的結構。從理論上講,卷積碼能生成無限的碼元序列。然而,由于其對稱性,在確定最可能路徑時要求估算狀態(tài)數(shù),導致輸入數(shù)據(jù)序列U(D)105減少為2k-1(此時為256)種狀態(tài)。另外,在譯碼這種對稱碼時,只關心進入256種可能編碼器狀態(tài)中每種狀態(tài)的最可能(即保存)的局部路徑,所有其它路徑可能不再深究。這是由于通過某一狀態(tài)的最可能全局路徑必須跟隨通過該狀態(tài)的保存局部路徑的緣故。
為了起到具有一組狀態(tài)轉換的有限狀態(tài)機的作用,Viterbi譯碼器依賴于這些碼特征。根據(jù)從收到的噪雜卷積編碼數(shù)據(jù)流得到的觀察結果,譯碼器假設每一種可能的編碼器2k-1狀態(tài),確定編碼器從其中的每一種狀態(tài)轉換到下一組可能的2k-1編碼器狀態(tài)的概率。
轉換概率用稱為量度的量表示,這種量度正比例于概率值的負算法。顯然,量度越小,則出現(xiàn)的概率越大。量度有兩類狀態(tài)量度與分支量度。狀態(tài)量度也稱為路徑量度,代表發(fā)送的碼元組通過特定狀態(tài)的相對概率。分支量度代表從一特定源狀態(tài)到一發(fā)送的特定目標狀態(tài)轉換的條件概率(假定源狀態(tài)正確)。
Viterbi算法可以歸納如下把時間分成d個樣本,每一時間樣本K有n個可能的狀態(tài)SiK(其中i是來自
的整數(shù),K為來自
整數(shù))。對于K>1,路徑可從任一p個先前狀態(tài)Sjk-1(j為來自
的整數(shù))到達各狀態(tài)。對每種狀態(tài),在這些P條可能的路徑中間識別量度最小的路徑,并連同量度值存貯起來。
初始化對開始的時間樣本(K=1),對各狀態(tài)Si1存貯的量度初始化。在開始狀態(tài)已知的情況下,可將此時的量度置零,其它狀態(tài)Si1的量度置成大的數(shù)。這一方法迫使算法后面的迭代只選擇從期望的開始狀態(tài)出發(fā)的路徑。迭代對每個時間樣本
訪問所有的狀態(tài)Sik。在每一狀態(tài)Sik,把導向該狀態(tài)的每條路徑j的量度計算為(a)先前狀態(tài)Sjk-1的量度與(b)從狀態(tài)Sjk-1導向狀態(tài)Sjk的分支的量度bmjk之和。導向各狀態(tài)Sjk的P路徑,在該狀態(tài)選擇并存貯最低量度的路徑(即幸存者路徑),還把該路徑的量度存貯為該狀態(tài)的量度smik。
回鏈在訪問了最后時間樣本的所有狀態(tài)時,識別出最低狀態(tài)量度的狀態(tài)Sik。從存儲器里讀出該狀態(tài)的幸存者路徑,由此識別出時間樣本d-1的相應狀態(tài)。從存儲器里讀出這后一種狀態(tài)的幸存者路徑,重復回鏈過程,直到識別出包含導向狀態(tài)Sid的路徑(即最可能通過狀態(tài)時間陣列的路徑)的所有狀態(tài)。
這樣,在任何時間k,Viterbi算法都計算導向狀態(tài)Snk的路徑的量度,確定幸存者路徑(n個狀態(tài)Snk的每個狀態(tài)有一條),并且存貯n條幸存者路徑及它們各自的量度。對于每個考慮的目標狀態(tài)而言,這樣相當于存貯導向它的源狀態(tài)。因此,任何一種Viterbi算法的實施,都要求應用圖1B所示的相加-比較-選擇(Add-Compare-Select)(ACS)單元150來執(zhí)行這些操作。ACS單元150負責計算狀態(tài)量度值,還運用ACS蝶形操作表征源與目標狀態(tài)間的關系。圖2示出了單次ACS蝶形操作155。
蝶形操作155包括可能對編碼器100中兩個特定源狀態(tài)出現(xiàn)的唯一可能的狀態(tài)轉換。這部分是由于這樣一個事實,即在任一指定時刻,編碼器100的狀態(tài)是編碼器前一狀態(tài)右移1位。下一(右移)信息位決定了從源狀態(tài)作何種轉換,并將呈現(xiàn)為目標狀態(tài)的最高有效位(MSB)。這樣,只有兩個可能的源狀態(tài)可轉換的目標狀態(tài)。因此,由圖2可以看出,根據(jù)輸入數(shù)據(jù)位U(D)的值,編碼器100只能從源狀態(tài)“x0”轉換到目標狀態(tài)“0x”或“1x”,和從源狀態(tài)“x1”轉換到目標狀態(tài)“0x”或“1x”。要注意,記號“x0”與“x1”表示該源狀態(tài)的最低有效位(LSB)分別為“0”與“1”,上位用“x”表示;記號“0x”與“1x”分別表示目標狀態(tài)的MSB為“0”或“1”,下位用“x”表示。項“x”不管包含在源狀態(tài)里還是目標狀態(tài)里,都代表同一值(如7位值)。
圖2還揭示,從源狀態(tài)到目標狀態(tài)的每次轉換,都會產生一組假設碼元H0(D)、H1(D)
其實當編碼器100沿ACS蝶形155的平行分支工作時(如從“x0”轉換到“0x”,或從“x1”轉換到“1x”),都對兩條平行分支產生碼元H0(D)、H1(D)125。這一特征的部分原因是一般卷積碼的重復特征,而且使用了將其MSB和LSB置成1(即對G0(D)與G1(D)兩者而言,g0與g8都等于1)的發(fā)生器碼多項式。以同樣方式,在編碼器100沿ACS蝶155任一對角分支操作時(如從“x0”轉換到“1x”,或從“x1”轉換到“0x”),就生成碼元
如上所述,ACS150單元計算目標狀態(tài)量度tm0x、tm1x。ACS150邏輯存貯源狀態(tài)量度Smx0、Smx1,它們與接收的一組碼元導向源狀態(tài)“x0”與“x1”的概率有關。再看圖1B,在收到一組碼元后,分支量度單元140計算分支量度值bmij與bmij。ACS150把對應于兩種導向特定目標狀態(tài)的每一種轉換的分支量度bmij、bmij同相應的源狀態(tài)量度Smx0、Smx1“相加”。分支量度bmij、bmij代表從一特定源狀態(tài)轉換到一出現(xiàn)的特定目標狀態(tài)的條件概率。分支量度bmij表明收到的碼元與ACS150假設的碼元H0(D)、H1(D)125匹配得如何緊密,而分支量度bmij則表明收到的碼元與
匹配得如何緊密。分支量度bmij、bmij的值只取決于收到的碼元對與假設的碼元對H0(D)、H1(D)之間的距離。
對兩種目標狀態(tài)的每種狀態(tài),ACS150對導向該目標狀態(tài)的源狀態(tài)量度-分支量度對之和作比較。然后,ACS150“選擇”由最小量度和代表的最可能對各目標狀態(tài)的轉換,并把它分配給該目標狀態(tài)作為目標狀態(tài)量度tm0x、tm1x。
如上所述,對導向目標狀態(tài)的兩種轉換的每一種,ACS150邏輯都把分支量度bmij、bmij加到源狀態(tài)量度Smx0、smx1里,并判定從產生更小量度和的轉換進入該目標狀態(tài)的最可能的路徑。于是,選擇該更小的量度和,并變成新的目示狀態(tài)量度tm0x、tm1x。ACS150還把該狀態(tài)量度(即與導向各目標狀態(tài)的最可能路徑有關的代價)存入狀態(tài)RAM145里。如圖1B所示,在回鏈存儲單元160的路徑存儲器中,選擇最小量度和會導致存貯1位的量,稱為判定位。由獲勝源狀態(tài)量度的LSB指示的判定位,識別出在兩種轉換中被選擇的一種轉換。
回鏈存儲單元160存貯對應于最可能進入各目標狀態(tài)的轉換的判定位。對于約束長度k=9的編碼器100,將生成2k-1或256個對應于編碼器100各256個可能狀態(tài)的判定位。一旦產生和存貯預定狀態(tài)數(shù)量所有這類信息的陣列,后鏈單元160就在最有可能向正確路徑行進的狀態(tài)(即其中對應于最小代價的最新時間單位的狀態(tài))起動,然后通過讀到最后的PX256(即P×2k-1)判定位及時后鏈選擇P位,P是路徑存儲器的有效回鏈深度。由于判定位代表假設為已通過編碼器100的最可能一組位,所以是譯碼器能輸出的最佳數(shù)據(jù)。結果,鏈路在判定歷史中返回得更深,則選擇的路徑與正確路徑歸并的可能性更大。因此,回鏈深度P越高,性能就越佳,不過流水線與存貯延遲也更大。因此,通常把回鏈深度P設置為編碼器100約束長度K的3~10倍。對于K=9的編碼器,一般把回鏈深度P設置為64。
ACS處理循環(huán)規(guī)定了ACS單元150對收到的預定數(shù)量的碼元計算新目標狀態(tài)量度tm0x、tm1x的周期。對于1/2速率卷積碼,每對收到的碼元要求1個處理循環(huán)作量度計算。處理循環(huán)的長度等于對兩組收到的碼元的所有編碼器狀態(tài)作ACS蝶形操作所需的時鐘循環(huán)數(shù)。例如,如圖2所示,為了執(zhí)行編碼器100所有256個狀態(tài)的操作,具有單個ACS蝶形的Viterbi譯碼器,一般要求每一收到的碼元有128次時鐘循環(huán)。為了提高處理速度,可以使用部署了多個ACS蝶形的ACS蝶形陣列結構減少一個處理循環(huán)的時鐘循環(huán)次數(shù)。
一例這樣的結構就是圖3所示的8×1ACS蝶形陣列300。通過構建8個并聯(lián)的平行ACS蝶形單元155,陣列300將處理速度提高到8倍。對一組收到的碼元,在單次時鐘循環(huán)中,8×1蝶形陣列300用所有8個蝶形單元155讀出16個源狀態(tài),并計算16個相應的目標狀態(tài)量度tm0x、tm1x。如上所述,ACS單元155接收每個源狀態(tài)的狀態(tài)量度和四種可能的轉換的每一種的分支量度bmij、bmij。分支量度bmij、bmij只取決于收到碼元對和假設符號對H0(D)、H1(D)或 的值,而且是兩者之間距離的測量值。圖3中作為源與目標狀態(tài)一部分包括在內的“X”,代表通過從0計算到15的16次時鐘循環(huán)記錄的四位數(shù)位保持符(即X=(X0,X1,X2,X3)。這樣,對于兩組收到的碼元,8×1蝶形陣列300在32次時鐘循環(huán)中(即每個收到的碼元為16次時鐘循環(huán)),對編碼器100所有256個可能的狀態(tài)計算目標狀態(tài)量度tm0x、tm1x。
8×1蝶形陣列結構300的一個缺點在于,對每組收到的碼元,必須讀出16個源狀態(tài)量度,而且必須對16次時鐘循環(huán)的每次循環(huán)同時產生要求的分支量度。這樣,為適應這種操作,8×1蝶形陣列300要求極大的存儲器帶寬。
另一例陣列結構是圖4的4×2ACS蝶形陣列400。該陣列400可像8×1蝶形陣列300那樣同樣程度地提高速度,卻是用2組并聯(lián)的4只ACS蝶形單元155實現(xiàn)的。蝶形陣列400通過暫存中間目標狀態(tài)量度tm0x、tm1x,緩和了存儲器帶寬問題。例如,在單次時鐘循環(huán)內,陣列400的第一級讀出8種源狀態(tài)并計算8個相對的目標狀態(tài)量度tm0x、tm1x。然而,蝶形陣列400并不立即存貯中間目標狀態(tài)量度tm0x、tm1x。相反地,仍在該時鐘循環(huán)內,蝶形陣列400將中間目標狀態(tài)重新排列,作為源狀態(tài)饋入第二級,接著對下一組收到的碼元計算8個相應的目標狀態(tài)量度tm0x、tm1x。這樣,像8×1蝶形陣列300一樣,在32次時鐘循環(huán)范圍內,蝶形陣列400能對兩組收到的碼元計算目標狀態(tài)量度tm0x、tm1x。
由于無需向ACS150狀態(tài)存儲器讀或寫中間目標狀態(tài)量度(即第一級目標量度tm0x、tm1x),所以4×2ACS蝶形陣列400具有縮減ACS150狀態(tài)存儲器帶寬的顯著優(yōu)點。再者,中間目標狀態(tài)值聯(lián)合流入下一級,避免了延遲,帶寬要求最小。
然而,4×2ACS蝶形陣列400并非沒有局限性。例如,縮減狀態(tài)存儲器帶寬的優(yōu)點完全依賴于這樣一個事實,即陣列400在單次時鐘循環(huán)內執(zhí)行2級ACS150操作。這條嚴格的路徑嚴重限制了更高的時鐘速度。
另外,無論是8×1ACS蝶形陣列300還是4×2ACS蝶形陣列400,在回鏈操作方面都存在性能問題。如上所述,回鏈單元160負責存貯ACS陣列產生的判定位,并且通過存貯的判定位作回鏈而產生譯碼的判定位。對于約束長度k=9的編碼器(如編碼器100),譯碼器里的ACS陣列將對每組收到的碼元生成2k-1或256個判定位(即對256個可能的編碼器狀態(tài)的每個狀態(tài)生成1個判定位),而回鏈存儲單元160通常包含深度p=64字組(塊)的后鏈路徑存儲器。
在32次處理循環(huán)后,每次循環(huán)計算兩組收到碼元的目標狀態(tài)量度,回鏈單元160從最新的處理循環(huán)開始(如64個路徑存儲字組最右邊的存儲字組B0)如圖5A所示?;劓渾卧?60從回鏈存儲字組B0內的256個判定位里識別出對應于最低量度值R0狀態(tài)的判定位。該狀態(tài)定義為最佳狀態(tài)BS0,具有一個8位地址,如圖5B所示?;劓渾卧?60讀出該最佳狀態(tài)判定位,然后把它左移入BS0最低有效位(即bs0)而將該值引入BS0地址,如圖5所示。圖5B示明,BS0地址中的其它位值(即bs6-bs1)也被左移,導致丟失BS0最高有效位(即bs7)而表示一新地址BS1。如圖5A所示,BS1是回鏈存儲器塊B1中最佳狀態(tài)值R1的地址。接著,回鏈單元160讀出對應于BS1地址的判定位值,將該值左移入BS1地址而生成下一地址BS2,它對應于回鏈存儲器塊B2的最佳狀態(tài)。
重復這種讀與左移操作,直到處理了所有的回鏈存儲字組(即P=64字組)。一般而言,回鏈操作像規(guī)定的回鏈長度P那樣作多次讀出,此時,例如要作64次讀出,以便回跟蹤期望的路徑并生成譯碼的判定位。然而,這種多次讀出會影響譯碼處理的效率與性能。
因此,要求有一種在實施Viterbi算法時能有效地作高速ACS蝶形操作的系統(tǒng)與方法。
發(fā)明內容
與本發(fā)明原理相符的系統(tǒng)與方法,針對上述提出的要求,提供的系統(tǒng)與方法在實施Viterbi算法時可執(zhí)行高速ACS蝶形操作。
按本發(fā)明原理在這里實施并概括描述的系統(tǒng)與方法,包括存貯多個源狀態(tài)量度的第一存儲單元。第一存儲單元耦合至復用器,后者根據(jù)奇偶次時鐘循環(huán)能在第一與第二操作路徑之間作選擇。該復用器耦合至相加-比較-選擇機構,后者對每個源狀態(tài)量度計算目標狀態(tài)量度。第二存儲單元耦合至相加-比較-選擇機構和復用器,用于暫存目標狀態(tài)量度,而第三存儲單元存貯的預定邏輯位對應于導致最低值目標狀態(tài)量度的源狀態(tài)。因此,復用器在偶數(shù)時鐘循環(huán)期間選擇第一操作路徑,并把源狀態(tài)量度從第一存儲單元供給相加-比較-選擇機構,以生成目標狀態(tài)量度。在奇數(shù)時鐘循環(huán)期間,復用器選擇第二操作路徑訪問第二存儲單元,把上次計算的目標狀態(tài)量度用作中間源狀態(tài)量度,使相加-比較-選擇機構根據(jù)該中間源狀態(tài)量度生成目標狀態(tài)量度。
附圖簡介結合在此并構成本說明書一部分的諸附圖,示出了本發(fā)明一實施例,并與說明書一起說明本發(fā)明的目的、優(yōu)點和原理。附圖中圖1A是字組級的示意圖,示出K=9、速率=1/2的卷積編碼器。
圖1B是示出ACS和回鏈單元的系統(tǒng)級框圖。
圖2是示出ACS蝶形操作的轉換圖。
圖3是示出8×1ACS蝶形陣列的轉換圖。
圖4是示出4×2ACS蝶形陣列的轉換圖。
圖5A、5B是示出回鏈操作的功能框圖。
6A、6B是示出本發(fā)明一實施例的示意圖。
較佳實施例的詳細描述以下對本發(fā)明作詳細描述所參照的附圖,示出了符合本發(fā)明的較佳實施例。在不違背本發(fā)明的精神與范圍的情況下,其它實施例也可行,并且可對這些實施例作修改。因此,以下詳述并不限制本發(fā)明,本發(fā)明的范圍由所附權項規(guī)定。
本領域的技術人員很清楚,下述的本發(fā)明可在圖示實例中以許多不同的軟件、固件與硬件實施例來實施。用于實施本發(fā)明的實際軟件代碼或專用控制硬件并不限制本發(fā)明。因此,在描述本發(fā)明的操作與行為時,并不特指實際的軟件代碼或專用硬件元件,本領域的技術人員應該理解,可以按這里的描述設計出軟件和控制硬件來實施本發(fā)明較佳的實施例。
圖6A、6B示出本發(fā)明一實施例。該例利用了一種8×1ACS蝶形陣列600,運用8個平行ACS蝶形單元155提供8倍的處理速度。與如此提高速度的其它方式不同,蝶形陣列600在不同的時鐘循環(huán)內工作,既限制了每次時鐘循環(huán)的計算量,又降低了存儲器帶寬要求。
參照圖6A,在偶數(shù)時鐘循環(huán)期間,蝶形陣列600用所有8個蝶形單元155讀出由4位計數(shù)器X標識的16個新的源狀態(tài),然后對當前格構層計算16個對應的目標狀態(tài)量度tm0x、tm1x。在偶數(shù)時鐘循環(huán)以后(即在奇數(shù)時鐘循環(huán)期間),蝶形陣列600對下一格構層把偶數(shù)循環(huán)目標狀態(tài)用作奇數(shù)源狀態(tài)。這樣,蝶形陣列600就將偶數(shù)循環(huán)目標狀態(tài)量度tm0x、tm1x采納為奇數(shù)源狀態(tài)量度值Smx0、Smx1,然后根據(jù)量度值Smx0、Smx1,對相應的格構層計算奇數(shù)目標狀態(tài)量度tm0x、tm1x。
這樣,圖6A所示改進8×1ACS蝶形陣列600,要完全處理兩組收到的由K=9編碼器生成的碼元,需要32次時鐘循環(huán)。在偶數(shù)時鐘循環(huán)期間,蝶形陣列600讀出用增數(shù)的4位計數(shù)X標識的16個新的源狀態(tài),并對第一組收到的碼元計算16個對應的目標狀態(tài)量度tm0x、tm1x。對奇數(shù)時鐘循環(huán),蝶形陣列600把偶數(shù)循環(huán)目標狀態(tài)用作新的源狀態(tài),并對第二組收到的碼元計算奇數(shù)目標狀態(tài)量度tm0x、tm1x。這樣,蝶形陣列600每一時鐘循環(huán)只執(zhí)行一層的ACS,從而克服了4×2蝶形陣列400的單次時鐘循環(huán)多層ACS計算問題。
圖6B示出支持圖6A所示8×1改進型ACS蝶形陣列600的Viterbi譯碼器電路650。所有狀態(tài)的源狀態(tài)量度Smx0、Smx1都存貯在狀態(tài)RAM145中。根據(jù)圖示情況,從偶數(shù)時鐘循環(huán)期間讀狀態(tài)RAM145開始描述Viterbi譯碼電路650的操作。一般技術人員很容易明白,該實施例同樣可從奇數(shù)時鐘循環(huán)期間讀狀態(tài)RAM145開始描述。同樣地,可在奇數(shù)循環(huán)期間作所有讀操作,在偶數(shù)循環(huán)期間作所有寫操作,反之亦然。
這樣,在偶數(shù)時鐘循環(huán)期間,將復用器MUX670配置成從對應于第一組收到碼元的RAM145中選擇16個連續(xù)狀態(tài)的源態(tài)量度信息。源狀態(tài)信息直接供給ACS單元150,后者包括8×1ACS蝶形陣列600。然后,蝶形陣列600計算相應的16個目標狀態(tài)量度tm0x、tm1x,這些量度反饋給狀態(tài)RAM145和MUX670。接著,把計算的目標狀態(tài)信息暫存在寄存器680中,蝶形陣列600防止存貯的狀態(tài)信息返回存儲器,從而改善了8×1ACS蝶形陣列300的存儲器帶寬問題。
在奇數(shù)時鐘循環(huán)期間,復用器MUX670選擇前一時鐘循環(huán)計算并鎖存在寄存器680里的目標狀態(tài)量度信息。該目標狀態(tài)量度信息然后被8×1ACS蝶形陣列600用作新的源狀態(tài)量度Smx0、Smx1。接著,蝶形陣列600處理該源狀態(tài)量度信息,產生對應于第二組收到碼元的目標量度信息。然后,把該目標量度信息存入狀態(tài)存儲器RAM145,將被用作下一迭代的源狀態(tài)量度。這種處理對第一與第二組收到碼元重復32次時鐘循環(huán),以對其中每二組收到碼元生成256個判定值。在32次時鐘循環(huán)后,Viterbi譯碼電路650以下面兩組收到碼元啟動該全過程。
通過減少生成譯碼判定位所需的讀次數(shù),Viterbi譯碼電路650還提高了回鏈操作的性能。如上所述,回鏈單元160負責存貯ACS陣列生成的判定位。再者,在二次時鐘循環(huán)(即奇偶次時鐘循環(huán))后,改進的8×1ACS蝶形陣列600生成32個判定位。Viterbi譯碼電路650讓這32個判定位以單個32位存儲字存貯,這樣就把奇偶時鐘循環(huán)期間生成的判定位以同一存儲字存貯。
因此,如相對回鏈操作描述的那樣,為了建立回鏈時間的開始點,首先用最佳狀態(tài)從最后一次處理循環(huán)開始識別最低量度的狀態(tài)(即最佳狀態(tài)判定位值)。由于每個存儲字有32位,所以每次處理循環(huán)有16個字(兩組收到的碼元),每個32位存儲字有一獨特的8位地址。一實施例用最佳狀態(tài)地址的4位選擇要讀的存儲字,另外4位則確定在該32位存儲字中要讀的16位。具體而言,若最佳狀態(tài)BS0有8位地址(bs7~bs1、bs0),該實施例就選用位(bs5、bs4、bs3、bs2)在存儲字組B。內選擇一特定存儲字,并依靠位(bs7、bs6、bs1、bs0)選擇最佳狀態(tài)判定位R0。將最佳狀態(tài)判定位R0左移入BS0LSB(bs6、bs5、bs4、bs3、bs2、bs1、bs0、R0),形成新的最佳狀態(tài)地址BS1。
由于ACS計算對兩組收到碼元進行,因而對剛讀出的判定位而言,導向目標狀態(tài)的源狀態(tài)具有它們貯存在同一32位存儲字內的判定位。因此,該實施例選用位(bs6、bs1、bs0、R0)來選擇另一半32位存儲字的下一個最佳狀態(tài)判定位R1。所以,該最佳狀態(tài)判定位從32位存儲字的一半位中選出,而選出的位有助于確定在另一半32位存儲字中哪一個判定位是下一個最佳狀態(tài)判定位。因此,正確地回鏈到期望的路徑并生成譯碼的判定位所需的讀次數(shù)可減少一半。這樣,對一路徑存儲器深度P=64存儲字組的回鏈單元160而言,只要求讀32次。
上述描述的本發(fā)明較佳實施例提供了示例與說明,但并非將本發(fā)明限制于揭示的精確形式。根據(jù)上述技術或通過本發(fā)明的實踐,可以作出更改與變化。如很容易把這里揭示的實施例結構擴展成16×1陣列或32×1陣列,每次時鐘循環(huán)可以生成32或64種狀態(tài)。另外,不是對兩組收到的碼元操作,實施例還能對若干組收到的碼元操作。因而要指出,本發(fā)明的范圍由權項及其等同物限定。
權利要求
1.一種對實施維特比算法作相加-比較-選擇蝶形操作的方法,其特征在于,所述方法包括下述步驟在偶數(shù)時鐘循環(huán)期間,從對應于第一組收到碼元的存儲器第一部分中讀出多個源狀態(tài)量度;對每個所述源狀態(tài)量度計算目標狀態(tài)量度;把所述目標狀態(tài)量度暫存入存儲器第二部分;確定哪一個所述目標狀態(tài)量度含最低值;把對應于所述最低值目標狀態(tài)量度的預定邏輯位存入存儲器第三部分;在奇數(shù)時鐘循環(huán)期間,從所述存儲器第二部分中讀出所述目標狀態(tài)量度,并把所述讀出的目標狀態(tài)量度用作多個對應于第二組收到碼元的中間源狀態(tài)量度;對每個所述中間源狀態(tài)量度計算中間目標狀態(tài)量度;確定哪一個所述中間目標狀態(tài)量度含有最低值;把對應于所述最低值中間目標狀態(tài)量度的預定邏輯位存入所述存儲器第三部分。
2.如權利要求
1所述的方法,其特征在于,應用約束長度K對所述第一與第二組收到碼元作編碼,其中,K是大于或等于1的整數(shù)。
3.如權利要求
2所述的方法,其特征在于,執(zhí)行所述相加-比較-選擇蝶形操作,直到對各所述第一與第二組收到碼元訪問了2k-1種目標狀態(tài)的每種狀態(tài)。
4.如權利要求
3所述的方法,其特征在于,用8×1相加-比較-選擇蝶形結構作所述相加-比較-選擇蝶形操作。
5.如權利要求
4所述的方法,其特征在于,所述多個源狀態(tài)量度包括一組16種連續(xù)源狀態(tài)的量度,所述16種連續(xù)源狀態(tài)組在增加偶數(shù)時鐘循環(huán)期間連續(xù)選出。
6.如權利要求
5所述的方法,其特征在于,所述計算目標狀態(tài)量度包括把所述源狀態(tài)量度加到對應于兩種可能轉換的每種轉換的分支量里,比較每個所述源狀態(tài)量度與分支量度之和,和選擇最小和值,將它定為目標狀態(tài)量度。
7.如權利要求
6所述的方法,其特征在于,所述計算中間目標狀態(tài)量度的步驟包括把所述中間源狀態(tài)量度加到對應于兩種可能轉換的每種轉換的分支量度里,比較每個所述中間源狀態(tài)量度與分支量度之和,和選擇最小和值并將它定為中間目標狀態(tài)量度。
8.如權利要求
7所述的方法,其特征在于,所述相加-比較-選擇蝶形操作用于對卷積編碼數(shù)據(jù)作譯碼。
9.如權利要求
8所述的方法,其特征在于,所述存儲器第三部分設置在包含多個存儲字組的回鏈存儲裝置中,每個所述存儲字組對每次所述偶數(shù)與奇數(shù)時鐘循環(huán)包含所述預定邏輯位。
10.如權利要求
8所述的方法,其特征在于,還包括一種回鏈操作,以便生成多個譯碼的位值。
11.如權利要求
10所述的方法,其特征在于,所述回鏈操作步驟包括對所述回鏈存儲裝置中最新的所述存儲字組,識別含最低值的所述預定邏輯位;使所述最低值邏輯位與一特定地址相關聯(lián);讀取所述預定邏輯位;和將所述最低值邏輯位值移入所述特定地址的最低有效位,并將所述特定地址內的所有值左移一位位置,以便在所述回鏈存儲裝置中確定對應于下一個存儲字組的下一個特定地址。
12.一種對維特比算法實施方案作相加-比較-選擇蝶形操作的系統(tǒng),其特征在于,所述系統(tǒng)包括用于存貯多個源狀態(tài)量度的存儲器第一部分;與所述存儲器第一部分耦合的復用器,用于在偶數(shù)時鐘循環(huán)期間選擇第一操作路徑,在奇數(shù)時鐘循環(huán)期間選擇第二操作路徑;與所述復用器耦合的存儲器第二部分,用于臨時存貯目標狀態(tài)量度;與所述存儲器第二部分和所述復用耦合的相加-比較-選擇機構,用于對每個所述源狀態(tài)量度計算目標狀態(tài)量度;和存儲器第三部分,用于存貯對應于含最低值的被計算目標狀態(tài)量度的預定邏輯位;其中,所述復用器在偶數(shù)時鐘循環(huán)期間選擇第一操作路徑,并將所述源狀態(tài)量度從所述存儲器第一部分提供給所述相加-比較-選擇機構,以生成對應于第一組收到碼元的目標狀態(tài)量度;和所述復用器在奇數(shù)時鐘循環(huán)期間選擇第二操作路徑,以便從所述存儲器第二部分讀取目標狀態(tài)量度,并將所述讀取的目標狀態(tài)量度用作中間源狀態(tài)量度,以便所述相加-比較-選擇機構根據(jù)對應于第二組收到碼元的所述中間源狀態(tài)量度生成中間目標狀態(tài)量度。
13.如權利要求
12所述系統(tǒng),其特征在于,所述第一與第二組收到碼元用約束長度K編碼,其中,K是大于或等于1的整數(shù)。
14.如權利要求
13所述的系統(tǒng),其特征在于,執(zhí)行所述相加-比較-選擇蝶形操作,直到對每個所述第一與第二組收到碼元訪問了每個2k-1種目標狀態(tài)。
15.如權利要求
14所述的系統(tǒng),其特征在于,用8×1相加-比較-選擇蝶形結構作所述相加-比較-選擇蝶形操作。
16.如權利要求
15所述的系統(tǒng),其特征在于,所述多個源狀態(tài)量度包括一組16種連續(xù)源狀態(tài)的量度,所述組的16種連續(xù)狀態(tài)在增加偶數(shù)時鐘循環(huán)期間連續(xù)選出。
17.如權利要求
12所述的系統(tǒng),其特征在于,所述相加-比較-選擇機構通過下述執(zhí)行所述相加-比較-選擇操作把所述源狀態(tài)量度加到對應于每個兩種可能轉換的分支量度里,比較每個所述源狀態(tài)量度與分支量度之和,以及選擇最小和值并把它定為目標狀態(tài)量度。
18.如權利要求
17所述的系統(tǒng),其特征在于,所述相加-比較-選擇蝶形操作用于對卷積編碼數(shù)據(jù)作譯碼。
19.如權利要求
18所述的系統(tǒng),其特征在于,所述存儲器第三部分設置在包含多個存儲字組的回鏈存儲裝置中,每個所述存儲字組對每次所述奇偶數(shù)時鐘循環(huán)含有所述預定邏輯位。
20.如權利要求
19所述的系統(tǒng),其特征在于,所述回鏈存儲裝置生成多個譯碼的位值。
21.如權利要求
20所述的系統(tǒng),其特征在于,所述回鏈存儲裝置對最新的所述存儲字組識別含最低值的所述預定邏輯位,把所述最低值邏輯位與特定地址相關聯(lián),讀取所述預定邏輯位,而且將所述最低值邏輯位的值移入所述特定地址的最低位,把所述特定地址內所有值左移一位位置,以便在所述回鏈存儲裝置中確定對應于下一存儲字組的下一特定地址。
專利摘要
本發(fā)明揭示一種在Viterbi算法實施方案中作相加-比較-選擇(ACS)蝶形操作的系統(tǒng),包括存貯多個源狀態(tài)量度的第一存儲單元(145);根據(jù)奇偶數(shù)時鐘循環(huán)可在第一與第二操作路徑之間作選擇的復用器(670);對每個源狀態(tài)量度計算目標狀態(tài)量度的ACS機構(600);與ACS機構和復用器耦合并用來臨時存儲目標量度的第二存儲器。因此,復用器在偶數(shù)時鐘循環(huán)期間選擇第一操作路徑,并把源狀態(tài)量度從第一存儲器提供給ACS機構而生成目標狀態(tài)量度。在奇數(shù)時鐘循環(huán)期間,復用器選擇第二操作路徑訪問第二存儲器,并將上一次計算的目標狀態(tài)量度用作中間源狀態(tài)量度。
文檔編號G06F11/10GKCN1168224SQ00814538
公開日2004年9月22日 申請日期2000年10月23日
發(fā)明者D·漢斯奎因, D 漢斯奎因 申請人:高通股份有限公司導出引文BiBTeX, EndNote, RefMan