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