專利名稱:一種維特比譯碼器以及決定其中加比選單元數(shù)據(jù)位寬的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于專用集成電路(ASIC)的維特比(Viterbi)譯碼器,尤其涉及一種決定Viterbi譯碼器中的加比選(ACS相加-比較-選擇)單元電路的數(shù)據(jù)位寬的方法。
背景技術(shù):
卷積碼是一種常用的差錯(cuò)控制編碼。卷積碼(n0,k0,m)表示該卷積碼編碼器將k0比特信息段編成n0比特的碼組,而且所編的n0長碼組不僅同當(dāng)前k0比特信息段有關(guān)聯(lián),還同前面的(m-1)個(gè)(m>1,整數(shù),我們稱其為約束長度)信息段有關(guān)聯(lián)。卷積碼用生成序列表示輸入與輸出之間的關(guān)系,生成序列表示為gi,j=gi,j1gi,j2...gi,jL...gi,jm]]>其中i=1,2,…,k0;j=1,2,…,n0;L=1,2,…,m。gi,jL表示了各個(gè)寄存器的輸入輸出端(第L組的第i個(gè)節(jié)點(diǎn))到第j個(gè)模2加法器輸入端的連接線的情況。如果有連接線則gi,jL=1,]]>如果無連接線則gi,jL=0.]]>可以看出,卷積碼有很強(qiáng)的關(guān)聯(lián)性,能夠很好的進(jìn)行糾錯(cuò)。圖1給出一種典型的卷積編碼器——(2,1,7)卷積編碼器,即該卷積編碼器有2比特輸出,1比特輸入,約束長度為7,寄存器階數(shù)階數(shù)等于(m-1),為6;該卷積碼的生成序列為g1,1=(1011011)2和g1,2=(1111001)2,為了表述簡便,用八進(jìn)制表示為(133)8和(171)8。
對(duì)卷積碼的一種主要的糾錯(cuò)譯碼方法就是Viterbi算法。Viterbi算法是一種基于最大后驗(yàn)概率的卷積譯碼算法,具有較強(qiáng)的克服突發(fā)錯(cuò)誤的能力。目前,在數(shù)據(jù)通信、數(shù)據(jù)記錄與數(shù)字信號(hào)處理領(lǐng)域都得到廣泛的采納。Viterbi的譯碼過程即是通過接收的過程找出與卷積碼輸入數(shù)據(jù)流最相似的路徑。我們遍歷整個(gè)狀態(tài)變化的網(wǎng)格圖,并計(jì)算每條路徑產(chǎn)生的碼距,當(dāng)Viterbi譯碼器輸入完最后一個(gè)數(shù)據(jù)的時(shí)候,我們得到最小的碼距值,而到達(dá)這個(gè)狀態(tài)的路徑就是我們所要尋找的路徑,根據(jù)這條徑和相關(guān)的信息我們可以得出譯碼的輸出。
圖2是一個(gè)通常的Viterbi譯碼器的結(jié)構(gòu)框圖。分支度量單元(BMU)21接收數(shù)字信號(hào),并計(jì)算分支度量值作為概率的信息,這里的分支度量值取無符號(hào)數(shù)。加比選單元(ACS)22從(BMU)21中讀取分支度量值并利用該分支度量值更新與網(wǎng)格中每個(gè)狀態(tài)對(duì)應(yīng)的原路徑度量(PM)值。(ACS)22將已更新的PM值互相比較并輸出被選中的PM值及相應(yīng)的選擇位。在路徑度量存儲(chǔ)單元25中,由(ACS)22選出的PM值在后繼的步驟中被送回(ACS)22單元。幸存路徑存儲(chǔ)器24存儲(chǔ)從(ACS)22輸出的選擇位?;厮輪卧?TBU)23利用存儲(chǔ)在幸存路徑存儲(chǔ)器24中的選擇位實(shí)現(xiàn)回溯操作并輸出譯碼序列。
Viterbi的各種應(yīng)用中,數(shù)據(jù)輸出速率和功耗面積的需求有很大的差別。當(dāng)Viterbi檢測(cè)器應(yīng)用在低速的蜂窩電話系統(tǒng)時(shí),要求速度可以低于1Mb/s,但是要求有非常低的功耗;在用于調(diào)制解調(diào)器中的網(wǎng)格編碼解調(diào)時(shí),輸出速率要求在幾十Kb/s,但是對(duì)于功耗和芯片的面積以及價(jià)格上就有非常嚴(yán)格的限制;在另一個(gè)極端,高速的Viterbi檢測(cè)器也用于磁盤驅(qū)動(dòng)的讀信道,要求輸出超過600Mb/s,相應(yīng)的對(duì)于面積和功耗要求就比較低。
Viterbi的實(shí)現(xiàn)結(jié)構(gòu)同它所需要完成的功能需求緊密相關(guān),主要分為串行、并行和混合型結(jié)構(gòu)。
1、串行設(shè)計(jì)(ACS)22每次從路徑度量存儲(chǔ)單元25讀取一個(gè)狀態(tài)(共有2m-1個(gè)狀態(tài))的PM值,即每個(gè)時(shí)鐘只完成一個(gè)狀態(tài)的計(jì)算,2m-1個(gè)時(shí)鐘處理網(wǎng)格表中的一列。這種結(jié)構(gòu)不受約束長度m限制,只消耗固定的面積,F(xiàn)PGA的面積消耗最小,但是譯碼延時(shí)也最大。
2、并行設(shè)計(jì)(ACS)22每次從路徑度量存儲(chǔ)單元25讀取2m-1個(gè)狀態(tài)的PM值,即一個(gè)時(shí)鐘完成對(duì)所有狀態(tài)的更新。并行設(shè)計(jì)的優(yōu)點(diǎn)是可以實(shí)現(xiàn)高速Viterbi譯碼,最高譯碼速率可以達(dá)到時(shí)鐘頻率;需要的存儲(chǔ)單元也比較少,不需要兩個(gè)路徑度量存儲(chǔ)單元乒乓式操作。它的缺點(diǎn)也顯而易見硬件資源消耗大。
3、混合型又稱串并結(jié)合型。(ACS)22每次從路徑度量存儲(chǔ)單元25讀取n個(gè)狀態(tài)的PM值,即每個(gè)時(shí)鐘處理n(其中,n<2m-1)個(gè)狀態(tài),2m-1/n個(gè)時(shí)鐘周期完成網(wǎng)格表的一列。在具體實(shí)現(xiàn)時(shí),可綜合考慮面積和速度來選擇n值(n越大,速度越快,面積越大)。
可見,各種Viterbi結(jié)構(gòu)主要的區(qū)別體現(xiàn)在(ACS)22單元,(ACS)22單元也是Viterbi中需要資源最大的部件。
圖3為常規(guī)的(ACS)22結(jié)構(gòu)。兩個(gè)加法器(31A、31B)用于將上一列對(duì)應(yīng)狀態(tài)的PM值與來自(BMU)21的分支度量值相加。兩個(gè)上一列的PM值可以來自路徑度量存儲(chǔ)器(串行/混合型),也可以來自相應(yīng)的上級(jí)寄存器(并行),統(tǒng)稱為路徑度量存儲(chǔ)單元25。所得的值經(jīng)過比較器(CMP)32,并通過2選1的多路選擇器(MUX)33選擇輸出對(duì)應(yīng)的幸存PM值和幸存路徑值。ACS單元是Viterbi譯碼器的核心電路,但是,PM值會(huì)隨著時(shí)間的推移一直累加下去,如果不加以控制,ACS單元會(huì)有溢出的隱患,造成嚴(yán)重的譯碼錯(cuò)誤。
Viterbi譯碼器通過尋找最小PM值的路徑來進(jìn)行譯碼,由ACS單元的電路結(jié)構(gòu)可知,我們只需保留各個(gè)狀態(tài)PM值的大小關(guān)系即可,即是說所有PM值的基數(shù)對(duì)于Viterbi譯碼沒有意義,可以去掉,而且這樣做可以避免PM值的溢出問題。一般的控制方法是每隔一段時(shí)間比較所有的PM數(shù)值,找出其中最小的一個(gè)數(shù)值,然后將所有的PM值減去這個(gè)數(shù)值,這樣即可以保證加法器不溢出,也可以保持各個(gè)PM數(shù)值之間的大小關(guān)系不變。在數(shù)字系統(tǒng)硬件實(shí)現(xiàn)時(shí),采用的方法是將每一列所有PM(假設(shè)為i位)的最高位作與運(yùn)算,如果結(jié)果為‘1’,說明PMany≥2i-1,那么就產(chǎn)生一個(gè)溢出控制信號(hào),用這個(gè)信號(hào)將網(wǎng)格圖中下一列所有的PM最高位置‘0’,實(shí)際相當(dāng)于將所有PM值減掉基數(shù)2i-1。因此,希望ACS單元的數(shù)據(jù)位寬要足夠大,既能保證各個(gè)路徑的大小關(guān)系不變,又可以有效地解決溢出問題。
從改善硬件實(shí)現(xiàn)和關(guān)鍵路徑角度出發(fā),希望ACS單元的數(shù)據(jù)位寬盡量小。但是,如果ACS的數(shù)據(jù)位寬過小,便不足以保存各個(gè)路徑的大小關(guān)系不變,也會(huì)出現(xiàn)PM值溢出的現(xiàn)象。
發(fā)明內(nèi)容
ACS單元的數(shù)據(jù)位寬是Viterbi譯碼器的一個(gè)重要參數(shù),如果ACS位寬過大,會(huì)增加硬件實(shí)現(xiàn)電路和關(guān)鍵路徑延時(shí);如果ACS位寬過小,又不能夠有效地解決PM溢出問題。本發(fā)明綜合考慮影響ACS數(shù)據(jù)位寬的各種因素,公開了一種能確定Viterbi譯碼器ACS單元最小位寬的方法,并且提出一種實(shí)現(xiàn)該方法的改進(jìn)的ACS電路,該電路普遍適用于Viterbi的并行/串行/混合型結(jié)構(gòu)。
本發(fā)明公開的一種維特比譯碼器,包括順序處理接收到的數(shù)據(jù)的分支度量單元BMU、加比選單元ACS、幸存路徑存儲(chǔ)器、和回溯單元TBU),以及將所述ACS選出的路徑度量PM值在后繼的步驟中再送回ACS單元的路徑度量存儲(chǔ)單元,所述維特比譯碼器的輸入是(n0,1,m)卷積碼,每個(gè)輸入數(shù)據(jù)的位寬用width表示,所述加比選單元ACS的數(shù)據(jù)位寬i由公式一、公式二和公式三同時(shí)決定,所述公式一如下S_PM≤n0·(m-1)·(2width-1);所述公式二如下2i-2≤S_PM<2i-1所述公式三如下
本發(fā)明公開的一種維特比譯碼器,還包括如下技術(shù)特征如果滿足所述公式一和公式二的所述i值全部不滿足所述公式三,則所述加比選單元的最小數(shù)據(jù)位寬為(i+1)比特。
所述公式一可以用下述公式四代替,所述公式四根據(jù)所述(n0,1,m)卷積碼的生成序列,計(jì)算網(wǎng)格圖中的每一列PM跨度S_PMgs,所述公式四如下S_PMgs≤H_PM(gs,00)·(2width-1),其中H_PM(gs,00)指用于硬判決時(shí),向Viterbi譯碼器輸入全0數(shù)據(jù)時(shí)的最大PM跨度;然后在所述公式二和公式三中使用S_PMgs代替S_PM。
確定所述H_PM(gs,00)的步驟包括將所有狀態(tài)的PM值清0,向Viterbi譯碼器輸入全0的數(shù)據(jù)流,然后通過Matlab或其它軟件考察所述維特比譯碼器中所述加比選單元輸出的全部度量值獲得度量跨度。
本發(fā)明公開了一種維特比譯碼器中決定加比選單元數(shù)據(jù)位寬的方法,用于確定所述加比選單元的最小數(shù)據(jù)位寬,所述維特比譯碼器的輸入是(n0,1,m)卷積碼,每個(gè)輸入數(shù)據(jù)的位寬用width表示,包括下述步驟第一步,根據(jù)公式一計(jì)算網(wǎng)格圖中的每一列的路徑度量值(PM)的跨度S_PM,所述公式一如下S_PM≤n0·(m-1)·(2width-1);第二步,再根據(jù)公式二確定i值,所述公式二如下2i-2≤S_PM<2i-1第三步,驗(yàn)證所述i值是否滿足公式三,所述公式三如下 如果所述i值滿足所述公式三,則所述加比選單元的最小數(shù)據(jù)位寬為i比特;如果所述i值不滿足所述公式三,則所述加比選單元的最小數(shù)據(jù)位寬為(i+1)比特。
本發(fā)明公開的一種維特比譯碼器中決定加比選單元數(shù)據(jù)位寬的方法,還包括如下附屬技術(shù)特征所述第一步用下述計(jì)算代替,根據(jù)所述(n0,1,m)卷積碼的生成序列,計(jì)算網(wǎng)格圖中的每一列PM跨度S_PMgs如下
S_PMgs≤H_PM(gs,00)·(2width-1),其中H_PM(gs,00)指用于硬判決時(shí),向Viterbi譯碼器輸入全0數(shù)據(jù)時(shí)的最大PM跨度;然后在所述第二步和第三步中使用S_PMgs代替S_PM。
本發(fā)明提出一種用于確定ACS單元最小位寬的方法,在解決PM值溢出問題的同時(shí),可以有效地較少ACS單元的硬件實(shí)現(xiàn)面積和關(guān)鍵路徑延時(shí),并能普遍適用于Viterbi的各種不同結(jié)構(gòu)。在此基礎(chǔ)上,本發(fā)明提出了一種改進(jìn)的ACS電路,本電路通過增加簡單的邏輯電路、進(jìn)位位邏輯單元A和B,將各個(gè)加法器的最高位單獨(dú)處理,使其可以在ACS電路輸出之前產(chǎn)生,這樣最高位積累單元就可以與ACS電路同時(shí)執(zhí)行,不增加關(guān)鍵路徑的長度。產(chǎn)生ACS的比較選擇信號(hào)時(shí),先對(duì)PM值的最高位處理,再處理低位值。因?yàn)檐浥袥Q和硬判決的區(qū)別主要在BMU單元,體現(xiàn)在ACS單元只是數(shù)據(jù)位寬的不同,因此本發(fā)明可以兼容軟判決和硬判決。
本發(fā)明的最高位累加單元針對(duì)Viterbi的各種結(jié)構(gòu)采用相近的不同結(jié)構(gòu),使得本發(fā)明可以普遍適用于串行、并行和混合型Viterbi結(jié)構(gòu),而且不同Viterbi結(jié)構(gòu)下的電路結(jié)構(gòu)相差不大。
本發(fā)明包括如下附圖圖1是一種典型的卷積編碼器;圖2是Viterbi譯碼器的結(jié)構(gòu)框圖;圖3是常規(guī)的ACS電路結(jié)構(gòu);圖4是本發(fā)明的ACS電路結(jié)構(gòu);圖5本發(fā)明ACS電路的數(shù)據(jù)流圖。
具體實(shí)施方法下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
本發(fā)明公開的技術(shù)方案是一種可以有效減小ACS單元數(shù)據(jù)位寬的方法,并在此基礎(chǔ)上提出一種ACS電路,可以解決PM值溢出的問題。
首先說明決定ACS單元最小位寬的方法對(duì)于一般二進(jìn)制(n0,k0,m)編碼器來說,每次輸入的是k0個(gè)信息元,有2k0個(gè)可能的信息組,這相應(yīng)于從碼樹每一節(jié)點(diǎn)上分出的分支數(shù)有2k0條,每個(gè)節(jié)點(diǎn)相應(yīng)于2k0種不同的信息組輸入,并且每條都有n0個(gè)碼元,作為與此相應(yīng)的輸出子碼,相應(yīng)的每個(gè)ACS也有2k0個(gè)加法器以及2k0路數(shù)據(jù)比較器。一般在通信系統(tǒng)中采用的卷積碼都取k0=1,本發(fā)明也是針對(duì)(n0,1,m)卷積碼的Viterbi譯碼器。另外,Viterbi每接收一個(gè)數(shù)據(jù),用width位來表示。很顯然,用width參數(shù)可以表示判決方式,即width=1為硬判決,width>1為軟判決。
基于以上的分析,本發(fā)明通過以下三步,可以通過確定最大PM值和最小PM值之差即PM跨度值,從而決定ACS單元所需的最小位寬。
1、對(duì)于(n0,1,m)卷積碼,網(wǎng)格圖中的每一列的PM跨度(用S_PM表示)有S_PM≤n0·(m-1)·(2width-1)。
即對(duì)于(n0,1,m)卷積碼,每一列所有節(jié)點(diǎn)的最大PM跨度為n0·(m-1)·(2width-1),假設(shè)某一列t的PM最小值狀態(tài)為SX,它的度量值為PMmin。在網(wǎng)格圖中,經(jīng)過(m-1)列后,該狀態(tài)就可以將其度量值延伸到所有的2m-1個(gè)狀態(tài)。我們知道對(duì)于n0輸出的卷積碼由同一點(diǎn)出發(fā)的PM值在網(wǎng)格圖上前進(jìn)(m-1)步之后,PM跨度最大為n0·(m-1)·(2width-1)。如果網(wǎng)格圖前進(jìn)(m-1)步后,所有的網(wǎng)格狀態(tài)都是由該點(diǎn)出發(fā)的延伸值,則度量跨度最大為n0·(m-1)·(2width-1);否則,說明剩余的PM值比由該點(diǎn)出發(fā)的延伸值還要小,即小于n0·(m-1)·(2width-1)。
2、對(duì)于有確定生成序列的(n0,1,m)卷積碼,網(wǎng)格圖中的每一列PM跨度(用S_PMgs表示,指確定生成序列的PM跨度)還會(huì)有所降低,即S_PMgs≤H_PM(gs,00)·(2width-1),其中H_PM(gs,00)指用于硬判決時(shí),向Viterbi譯碼器輸入全0數(shù)據(jù)的最大PM跨度。
由1可知,(n0,1,m)卷積碼有S_PM≤n0·(m-1)·(2width-1),但是確定的生成序列使得各狀態(tài)之間有著微妙的聯(lián)系,網(wǎng)格圖的拓?fù)浣Y(jié)構(gòu)總是保證會(huì)有更小的其它路徑的度量值作為幸存路徑PM值,因此會(huì)有S_PMgs≤S_PM。因?yàn)榫W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)與輸入數(shù)據(jù)的軟硬判決無關(guān),因此,我們只需考慮硬判決情況,先求出最大硬判決跨度H_PM(gs,max),然后再拓展到width位寬即可。
我們尋找確定生成序列的(n0,1,m)卷積碼的H_PM(gs,max)的步驟是這樣的首先,將所有狀態(tài)的PM值清0,以免在初始狀態(tài)引入PM跨度。接著,向Viterbi譯碼器輸入全0的數(shù)據(jù)流,然后通過Matlab或其它軟件,考察其ACS輸出的全部度量值以及度量跨度,全0輸入的序列使得Viterbi譯碼器的硬判決PM跨度最大。
H_PM(gs,00)就是確定生成序列的(n0,1,m)卷積碼的H_PM(gs,max)。
首先,介紹一下“源”和“匯”的概念,某個(gè)狀態(tài)S的“源”和“匯”的定義如下“源”指的是在網(wǎng)格上可以通過一條支路到達(dá)狀態(tài)S的狀態(tài);“匯”指的是網(wǎng)格上以S為“源”的狀態(tài)。從網(wǎng)格圖的分析可知,狀態(tài)0和狀態(tài)2m-1-1都是以自己作為“源”和“匯”的。以狀態(tài)0為例,網(wǎng)格圖中,狀態(tài)0→狀態(tài)0的輸出值為“00”。因此,當(dāng)我們以全0的比特流作為Viterbi譯碼器的輸入流時(shí),幸存路徑就是0→0→0→0。這種幸存路徑受其它狀態(tài)的干擾最小,因?yàn)樾掖媛窂绞冀K是0狀態(tài),沒有別的狀態(tài)能夠介入到幸存路徑中;而且,對(duì)其它狀態(tài)的PM值的影響也最大,因?yàn)榭偸?狀態(tài)有最小的路徑度量(PM)值,它的延伸值很容易成為其它狀態(tài)的幸存路徑。即是說,它是最接近于1中所討論的最大度量跨度情況的。因此,可以推出它就是度量跨度最大的路徑,即H_PM(gs,00)就是確定生成序列的(n0,1,m)卷積碼的H_PM(gs,max)。
同理,可知狀態(tài)2K-1-1也是度量跨度最大的路徑,也即是它們的度量跨度值是相同的,都為H_PM(gs,max)。因?yàn)镠_PM(gs,00)是由網(wǎng)格圖的拓?fù)浣Y(jié)構(gòu)決定的,因此經(jīng)過足夠多的列之后,H_PM便不再增加,而是穩(wěn)定到一定的數(shù)值,這就是我們要求的H_PM(gs,00)。
如果Viterbi每個(gè)輸入數(shù)據(jù)用width位寬來表示(即width=1時(shí),為硬判決;width>1時(shí),為軟判決),則確定生成序列的(n0,1,m)卷積碼的S_PMgs≤H_PM(gs,00)·(2width-1)。Viterbi輸入數(shù)據(jù)用width位寬來表示,就是將硬判決的輸入數(shù)據(jù)‘0’和‘1’對(duì)應(yīng)量化成“0”和“2width-1”。在無噪聲的情況下,也即是將S_PM(gs,max)從硬判決的H_PM(gs,00)變成了H_PM(gs,00)·(2width-1);在有噪聲的情況下,就S_PMgs最大的全0輸入而言,如果噪聲很小,0信號(hào)經(jīng)過噪聲信道對(duì)應(yīng)量化成“0~2width-1-1”,既是說依然是傾向于硬判決的0值的,這會(huì)使得最小度量狀態(tài)不變,而最小度量值增大,因而S_PMgs≤H_PM(gs,00)·(2width-1);若噪聲很大,0信號(hào)經(jīng)過噪聲信道對(duì)應(yīng)量化成“2width-1~2width-1”,既是說Viterbi的輸入信號(hào)傾向于硬判決的1值,這就使得幸存路徑不再是0狀態(tài),因此也有S_PMgs≤H_PM(gs,00)·(2width-1)。
3、對(duì)于(n0,1,m)卷積碼,首先由(1)式確定i值。如果對(duì)應(yīng)的i值能夠滿足(2)式((2)式中 表示不大于 的最大整數(shù)),則確定該(n0,1,m)卷積碼可以用i比特位寬的ACS單元;如果對(duì)應(yīng)的i值不能滿足(2)式,則說明i比特可能不滿足ACS對(duì)數(shù)據(jù)范圍的要求,需要用(i+1)比特位寬的ACS單元。如果是有確定生成序列的卷積碼,只需將S_PM換成相應(yīng)的S_PMgs,求出對(duì)應(yīng)的ACS位寬即可,很顯然igs≤i。
2i-2≤S_PM<2i-1(1) 為了能夠保存每一列的S_PM,我們可以用比S_PM值多一位的i比特來表示ACS單元數(shù)據(jù),但是,還要保證當(dāng)所有PM值的最高位都為1時(shí),最大的PM值不會(huì)溢出。因此,需要(2)式來進(jìn)行選擇。
假設(shè)第t列的最小PM值為節(jié)點(diǎn)SX的PM(min,t),則(t+1)列的最小PM值PM(min,t+1)有 對(duì)于(3)的前半部分這里就不再敘述了,可以在講解卷積碼的相關(guān)書籍中找到對(duì)應(yīng)的解釋;對(duì)于(3)的后半部分,t列的每個(gè)狀態(tài)在t+1時(shí)刻均可以延伸出兩個(gè)狀態(tài),分別對(duì)應(yīng)輸入值為0和1。因?yàn)橐话憔矸e碼的n0個(gè)輸出都與輸入即時(shí)相關(guān),所以相同狀態(tài)的兩個(gè)不同輸入,勢(shì)必造成兩種狀態(tài)的輸出互異,因此從SX延伸的兩個(gè)狀態(tài)最小值一定不大于 如果PM(min,t+1)依然是SX的延伸,則有
如果PM(min,t+1)不是SX的延伸,則說明PM(min,t+1)值會(huì)比 更小。綜上所述,可以得到(3)式。
由(1)式確定的i值,如果能夠滿足(2)式則該(n0,1,m)卷積碼可以用i比特位寬的ACS單元;如果不滿足(2)式,則需要用(i+1)比特位寬的ACS單元??紤]極限情況,當(dāng)某一列的PM(min,t)=2i-1-1時(shí),由(3)式,假設(shè)PM(min,t+1)取最大值,則有 則該列的最大PM值為PM(max,t+1)≤PM(min,t+1)+S_PM 如果滿足(2)式,則有PM(max,t+1)<2i,說明2i-1≤PM(any,t+1)<2i(PM(any,t+1)表示(t+1)列的任意節(jié)點(diǎn)的PM值),因此可以用i比特位寬的ACS單元;如果不能滿足(2)式,說明當(dāng)PM(min,t+1)≥2i-1時(shí),有PM(max,t+1)≥2i,i比特?cái)?shù)據(jù)不足以保存PM值差異,我們需要增加1位,用(i+1)比特位寬的ACS單元。
通過以上三步可以確定任意(n0,1,m)卷積碼的對(duì)應(yīng)ACS位寬。我們以(2,1,7)卷積碼和(3,1,7)卷積碼為例進(jìn)行說明,假設(shè)都是進(jìn)行width=3的軟判決例1(2,1,7)卷積碼由(1)式有26<2×(7-1)×23=84<27,所以i=8,而且由(2)式有27-1+84+1×7=218<28,所以(2,1,7)卷積碼可以用8位的ACS單元。如果確定(2,1,7)卷積碼的生成多項(xiàng)式為(133)8、(171)8,通過Matlab軟件仿真可以得到H_PM(gs,00)=8。則由(1)式有25<8×7=56<26,所以i=7,而且由(2)式有26-1+56+1×7=126<27,所以對(duì)于生成序列為(133)8、(171)8的(2,1,7)卷積碼可以用7位的ACS單元。
例2(3,1,7)卷積碼由(1)式有26<3×(7-1)×23=126<27,所以i=8,但是由(2)式有27-1+126+1×7=260>28,因此(2,1,7)卷積碼需要用8+1=9位的ACS單元。如果確定(3,1,7)卷積碼的生成多項(xiàng)式為(133)8、(145)8、(175)8,通過Matlab軟件仿真可以得到H_PM(gs,00)=12。則由(1)式有26<12×7=84<27,所以i=8,而且由(2)式有27-1+84+1×7=218<28,所以對(duì)于生成序列為(133)8、(145)8、(175)8的(3,1,7)卷積碼可以用8位的ACS單元。
在確定ACS單元位寬i之后,本發(fā)明提出一種改進(jìn)的ACS電路,可以有效地解決PM值溢出問題,而且相對(duì)于傳統(tǒng)的ACS設(shè)計(jì)也減小了硬件實(shí)現(xiàn)和關(guān)鍵路徑延時(shí),并且能夠普遍適用于Viterbi的并行/串行/混合型結(jié)構(gòu)。
如圖4所示是本發(fā)明的改進(jìn)ACS(輸入數(shù)據(jù)為i比特位寬)電路單元結(jié)構(gòu)圖,在該電路中,并沒有采用i比特位寬的加法器、比較器,而是采用(i-1)比特位寬加法器和比較器,然后通過增加進(jìn)位位邏輯單元45A、45B和Logic基本邏輯單元46對(duì)最高位進(jìn)行單獨(dú)處理。
下面給出圖4中進(jìn)位位邏輯單元45A、45B和Logic基本邏輯單元46的真值表。
這是以45A為例(X狀態(tài)為不可能出現(xiàn)的狀態(tài))的進(jìn)位邏輯單元真值表。它的輸入有三個(gè),分別是網(wǎng)格圖中上一列相應(yīng)狀態(tài)的進(jìn)位輸出c_out、本狀態(tài)的加法器41A進(jìn)位輸出add_c1和上一列的溢出控制位over_bit,輸出有兩個(gè),分別為本加法器的最高位輸出c1和該狀態(tài)PM值溢出標(biāo)志位over1。當(dāng)出現(xiàn)PM值溢出問題時(shí),對(duì)應(yīng)于真值表中的{c_out,add_c1}=2’b11,即上一時(shí)刻的最高位輸出為1,本時(shí)刻的加法器41A進(jìn)位位也為1,說明本數(shù)據(jù)已經(jīng)兩次超過2i-1,即已經(jīng)超過21,如果這時(shí)候over_bit=1,即所有狀態(tài)PM值都已經(jīng)大于等于2i-1,所以PM值可以減掉2i-1,進(jìn)位位c1輸出為1;如果這時(shí)候over_bit=0,則說明這時(shí)本加法器的輸出已經(jīng)超過2i,但是還沒有所有狀態(tài)PM值都大于等于2i-1,則該P(yáng)M值一定是被舍棄的PM值,所以,我們令c1輸出為X,而over1為1(表示該數(shù)即將被舍棄)。通過對(duì)真值表的分析可以得出c1=c_outover_bit+add_c1,over1=c_out&over_bit&add_c1。
對(duì)于基本邏輯單元Logic46,它的輸入有五個(gè)分別是兩個(gè)加法器41A、41B的進(jìn)位位c1、c2,溢出標(biāo)志位over1、over2和比較器(CMP)42的輸出結(jié)果x,輸出有兩個(gè),一個(gè)是選擇電路(MUX)43的選擇信號(hào)a1和最高位的選擇結(jié)果a2。這里,溢出標(biāo)志位over1、over2是為了防止非幸存路徑的溢出問題。
為了分析邏輯關(guān)系方便,先分析c1、c2和x的邏輯關(guān)系,令它們的輸出分別對(duì)應(yīng)為a1_temp和a2_temp,再考慮over1、over2、a1_temp和a2_temp之間的邏輯關(guān)系。
所以,Logic基本邏輯單元46分為兩個(gè)真值表格來表示。
對(duì)于第二部分,{over1,over2)=2’b11時(shí),即本ACS單元的兩個(gè)PM值都出現(xiàn)溢出現(xiàn)象,通過前面決定ACS數(shù)據(jù)位寬的分析,可知這是不可能發(fā)生的情況,可以不用理會(huì)。通過對(duì)兩個(gè)真值表的分析可以得出a1=over1+over2‾c1x+over2‾c1c2‾+over2‾xc2‾;]]>
a2=over1+over2‾c1c2]]>下面詳細(xì)解釋一下,本電路的性能改進(jìn)1、本發(fā)明提供了一種決定ACS最小位寬的方法,并提出了能夠解決溢出問題的ACS電路,雖然本電路增加了一些邏輯電路,但是,這些邏輯電路只是由簡單的與或非門組成,消耗資源很少;而且,通過本方法已經(jīng)使ACS的數(shù)據(jù)位寬達(dá)到最小。綜合考慮,本發(fā)明有效地減小了硬件電路資源。
2、時(shí)間特性分析圖5給出本發(fā)明ACS電路的數(shù)據(jù)流圖,假設(shè)最終確定ACS數(shù)據(jù)位寬為i。該圖與圖4相比在電路表現(xiàn)形式上做了如下改動(dòng)將Logic中的a1和a2分開表示,并將a1進(jìn)行變形,如下式所示a1=over1+over2‾·c1·x+over2‾·c1·c2‾+over2‾·c2‾·x]]>=(over2‾·c1+over2‾·c2‾)·x+(over1+over2‾·c1·c2‾)=ax+b]]>其中a=over2‾·c1+over2‾·c2‾,]]>b=over1+over2‾·c1·c2‾.]]>因?yàn)閤信號(hào)出現(xiàn)的較晚,因此a1信號(hào)可以分為兩部分執(zhí)行a、b電路先執(zhí)行;收到x信號(hào)后,再執(zhí)行a1=ax+b的操作。
從數(shù)據(jù)流的角度看,本發(fā)明ACS電路可以分成三個(gè)階段,每個(gè)階段的電路可以同時(shí)執(zhí)行第一階段包括兩個(gè)(i-1)位加法器41A、41B和45A、45B中的over_bit非門、兩個(gè)與門相關(guān)的電路,很顯然這個(gè)階段的關(guān)鍵路徑是(i-1)位加法器。第二階段的電路在第一階段電路之后執(zhí)行,包括45A和45B中的兩個(gè)或門(c1、c2)、兩個(gè)與門(over1、over2)、46中的a2、64輸入與非門、(i-1)位CMP(x)以及46中的a和b。而第三階段電路a1=ax+b只能在比較器CMP輸出比較信號(hào)x之后執(zhí)行。
在第一階段電路之后,數(shù)據(jù)流分為三股,第一股數(shù)據(jù)流與門(over1、over2)、或門(c1、c2)→與門(a2)→最高位積累單元;第二股數(shù)據(jù)流CMP(x);第三股數(shù)據(jù)流與門(over1、over2)、或門(c1、c2)→46中的a和b。如圖所示,后兩股數(shù)據(jù)流交匯于a1=ax+b部分,顯然比較器決定了后兩股數(shù)據(jù)流的關(guān)鍵路徑。第一股數(shù)據(jù)流與后兩股數(shù)據(jù)流不相關(guān),實(shí)際上三股數(shù)據(jù)流會(huì)合并成兩股。
先分析2m-1輸入與門的延時(shí)假設(shè)該多輸入與門用二輸入的與門級(jí)聯(lián)實(shí)現(xiàn),則需要(m-1)級(jí)的二輸入與門(第一級(jí)2m-2個(gè)二輸入與門,以此類推,最后一級(jí)為1個(gè)二輸入與門),因此最大延時(shí)為tmax=(m-1)×t二輸入與門,在實(shí)際實(shí)現(xiàn)時(shí)一定會(huì)采取延時(shí)更小的電路,延時(shí)一定不會(huì)大于tmax的值。最高位積累單元44延時(shí)最大的情況是Viterbi采用并行結(jié)構(gòu)即需要2m-1輸入與門的情況,因此有t44≤(m-1)×t二輸入與門。因此,最高位積累單元延時(shí)小于(i-1)位比較器+(a1=ax+b)+2選1的多路選擇器。
綜上,整個(gè)電路的關(guān)鍵路徑為(i-1)位加法器+(i-1)位比較器+二輸入與門+二輸入或門+2選1多路選擇器。很顯然,本電路使得關(guān)鍵路徑有所降低。
3、本電路普遍適用于串行、并行與混合型Viterbi結(jié)構(gòu)。在并行結(jié)構(gòu)時(shí),輸入為上一列2m-1個(gè)ACS單元的PM值最高位,進(jìn)行2m-1輸入的與操作,輸出為本列的over_bit位;在串行/混合型結(jié)構(gòu)時(shí),輸入為上一列n(n為采用的ACS單元個(gè)數(shù))個(gè)ACS單元的PM值最高位以及上一列已經(jīng)積累的over_bit值,進(jìn)行n+1輸入的與操作,將上一列的所有2m-1個(gè)狀態(tài)的最高位都搜集全之后將本列的over_bit位輸出。
綜上所述,本發(fā)明公開了一種維特比譯碼器,包括順序處理接收到的數(shù)據(jù)的分支度量單元BMU、加比選單元ACS、幸存路徑存儲(chǔ)器、和回溯單元TBU,以及將所述ACS選出的PM值在后繼的步驟中再送回ACS單元的路徑度量存儲(chǔ)單元,在所述加比選單元ACS后端設(shè)置最高位積累單元。
所述的最高位積累單元用來進(jìn)行網(wǎng)格圖中每一列的所有2m-1個(gè)節(jié)點(diǎn)PM值的最高位與操作。在并行結(jié)構(gòu)時(shí),輸入為上一列2m-1個(gè)ACS單元的PM值最高位,進(jìn)行2m-1輸入的與操作,輸出為本列的over_bit位;在串行/混合型結(jié)構(gòu)時(shí),輸入為上一列n(n為采用的ACS單元個(gè)數(shù))個(gè)ACS單元的PM值最高位以及上一列已經(jīng)積累的over_bit值,進(jìn)行n+1輸入的與操作,將上一列的所有2m-1個(gè)狀態(tài)的最高位都搜集全之后將本列的over_bit位輸出。
在所述加比選單元ACS中還包括將各個(gè)加法器的最高位單獨(dú)處理的兩個(gè)進(jìn)位處理邏輯電路A和B、以及簡單邏輯電路;所述進(jìn)位處理邏輯電路A的輸入有三個(gè),分別是網(wǎng)格圖中上一列相應(yīng)狀態(tài)的進(jìn)位輸出c_out、本狀態(tài)的加法器進(jìn)位輸出add_c1和上一列的溢出控制位over_bit,輸出有兩個(gè),分別為本加法器的最高位輸出c1和該狀態(tài)PM值溢出標(biāo)志位over1,其輸入輸出的邏輯關(guān)系為c1=c_out&over_bit+add_c1;over1=c_out&over_bit&add_c1;
所述進(jìn)位處理邏輯電路B的輸入有三個(gè),分別是網(wǎng)格圖中上一列另一個(gè)相應(yīng)狀態(tài)的進(jìn)位輸出c_out、本狀態(tài)的加法器進(jìn)位輸出add_c2和上一列的溢出控制位over_bit,輸出有兩個(gè),分別為本加法器的最高位輸出c2和該狀態(tài)PM值溢出標(biāo)志位over2,其輸入輸出的邏輯關(guān)系為c2=c_out&over_bit+add_c2;over2=c_out&over_bit&add_c2;所述簡單邏輯電路的輸入有進(jìn)位位c1、c2,溢出標(biāo)志位over1、over2和所述比較器輸出結(jié)果x;輸出有選擇器的選擇信號(hào)a1和最高位的選擇結(jié)果a2,其輸入輸出的邏輯關(guān)系為a1=over1+over2‾c1x+over2‾c1c2‾+over2‾xc2‾;a2=over1+over2‾c1c2]]>所述最高位的選擇結(jié)果a2輸入所述最高位積累單元,在將上一列的所有2m-1個(gè)狀態(tài)的最高位搜集全之后從所述最高位積累單元輸出本列溢出控制位over_bit。
本發(fā)明公開的一種用于維特比譯碼器的加比選單元電路,包括順序處理輸入數(shù)據(jù)的兩個(gè)加法器A、B、比較器CMP、和多路選擇器MUX,防止兩個(gè)加法器A、B溢出的最高位選通電路包括將各個(gè)加法器的最高位單獨(dú)處理的進(jìn)位處理邏輯電路A和B、以及簡單邏輯電路,在最高位選通電路后端設(shè)置最高位積累單元。
本發(fā)明公開了一種用于維特比譯碼器的加比選單元電路還具有下述附加技術(shù)特征所述進(jìn)位處理邏輯電路A的輸入有三個(gè),分別是網(wǎng)格圖中上一列相應(yīng)狀態(tài)的進(jìn)位輸出c_out、本狀態(tài)的加法器A的進(jìn)位輸出add_c1和上一列的溢出控制位over_bit,輸出有兩個(gè),分別為本加法器A的最高位輸出c1和該狀態(tài)PM值溢出標(biāo)志位over1,其輸入輸出的邏輯關(guān)系為c1=cout&over_bit+add-c1;over1=c_out&over_bit&add_c1;所述進(jìn)位處理邏輯電路B(45B)的輸入有三個(gè),分別是網(wǎng)格圖中上一列另一個(gè)相應(yīng)狀態(tài)的進(jìn)位輸出c_out、本狀態(tài)的加法器B的進(jìn)位輸出add_c2和上一列的溢出控制位over_bit,輸出有兩個(gè),分別為本加法器B的最高位輸出c2和該狀態(tài)PM值溢出標(biāo)志位over2,其輸入輸出的邏輯關(guān)系為c2=c_out&over_bit+add_c2;
over2=c_out&over_bit&add_c2;所述簡單邏輯電路的輸入有所述兩個(gè)加法器A、B的進(jìn)位位c1、c2,溢出標(biāo)志位over1、over2和所述比較器CMP的輸出結(jié)果x輸出有所述選擇器MUX的選擇信號(hào)a1和最高位的選擇結(jié)果a2,其輸入輸出的邏輯關(guān)系為a1=over1+over2‾c1x+over2‾c1c2‾+over2‾xc2‾;a2=over1+over2‾c1c2]]>所述最高位的選擇結(jié)果a2輸入所述最高位積累單元,在將上一列的所有2m-1個(gè)狀態(tài)的最高位搜集全之后從所述最高位積累單元輸出本列溢出控制位over_bit;所述的最高位積累單元用來進(jìn)行網(wǎng)格圖中每一列的所有2m-1個(gè)節(jié)點(diǎn)PM值的最高位與操作,將上一列的所有2m-1個(gè)狀態(tài)的最高位都搜集全之后將本列的over_bit位輸出。
權(quán)利要求
1.一種維特比譯碼器,包括順序處理接收到的數(shù)據(jù)的分支度量單元BMU(21)、加比選單元ACS(22)、幸存路徑存儲(chǔ)器(24)、和回溯單元TBU(23),以及將所述ACS(22)選出的路徑度量(PM)值在后繼的步驟中再送回ACS(22)單元的路徑度量存儲(chǔ)單元(25),其特征在于,所述維特比譯碼器的輸入是(n0,1,m)卷積碼,每個(gè)輸入數(shù)據(jù)的位寬用width表示,所述加比選單元ACS(22)的數(shù)據(jù)位寬i由公式一、公式二和公式三同時(shí)決定,所述公式一如下S_PM≤n0·(m-1)·(2width-1);所述公式二如下2i-2≤S_PM<2i-1所述公式三如下
2.根據(jù)權(quán)利要求1所述的一種維特比譯碼器,其特征在于,如果滿足所述公式一和公式二的所述i值全部不滿足所述公式三,則所述加比選單元的最小數(shù)據(jù)位寬為(i+1)比特。
3.根據(jù)權(quán)利要求2所述的一種維特比譯碼器,其特征在于,所述公式一用下述公式四代替,所述公式四根據(jù)所述(n0,1,m)卷積碼的生成序列,計(jì)算網(wǎng)格圖中的每一列PM跨度S_PMgs,所述公式四如下S_PMgs≤H_PM(gs,00)·(2width-1),其中H_PM(gs,00)指用于硬判決時(shí),向Viterbi譯碼器輸入全0數(shù)據(jù)時(shí)的最大PM跨度;然后在所述公式二和公式三中使用S_PMgs代替S_PM。
4.根據(jù)權(quán)利要求3所述的一種維特比譯碼器,其特征在于,確定所述H_PM(gs,00)的步驟包括將所有狀態(tài)的PM值清0,向Viterbi譯碼器輸入全0的數(shù)據(jù)流,然后通過Matlab或其它軟件考察所述維特比譯碼器中所述加比選單元輸出的全部度量值獲得度量跨度。
5.一種維特比譯碼器中決定加比選單元數(shù)據(jù)位寬的方法,用于確定所述加比選單元的最小數(shù)據(jù)位寬,所述維特比譯碼器的輸入是(n0,1,m)卷積碼,每個(gè)輸入數(shù)據(jù)的位寬用width表示,其特征在于,包括下述步驟第一步,根據(jù)公式一計(jì)算網(wǎng)格圖中的每一列的路徑度量值PM的跨度S_PM,所述公式一如下S_PM≤n0·(n-1)·(2width-1);第二步,再根據(jù)公式二確定i值,所述公式二如下2i-2≤S_PM<2i-1第三步,驗(yàn)證所述i值是否滿足公式三,所述公式三如下 如果所述i值滿足所述公式三,則所述加比選單元的最小數(shù)據(jù)位寬為i比特;如果所述i值不滿足所述公式三,則所述加比選單元的最小數(shù)據(jù)位寬為(i+1)比特。
6.根據(jù)權(quán)利要求5所述的一種維特比譯碼器中決定加比選單元數(shù)據(jù)位寬的方法,其特征在于,所述第一步用下述計(jì)算代替,根據(jù)所述(n0,1,m)卷積碼的生成序列,計(jì)算網(wǎng)格圖中的每一列PM跨度S_PMgs如下S_PMgs≤H_PM(gs,00)·(2width-1),其中H_PM(gs,00)指用于硬判決時(shí),向Viterbi譯碼器輸入全0數(shù)據(jù)時(shí)的最大PM跨度;然后在所述第二步和第三步中使用S_PMgs代替S_PM。
7.根據(jù)權(quán)利要求6所述的一種維特比譯碼器中決定加比選單元數(shù)據(jù)位寬的方法,其特征在于,確定H_PM(gs,00)的步驟包括將所有狀態(tài)的PM值清0,向Viterbi譯碼器輸入全0的數(shù)據(jù)流,然后通過Matlab或其它軟件考察所述維特比譯碼器中所述加比選單元輸出的全部度量值獲得度量跨度。
全文摘要
本發(fā)明涉及一種維特比譯碼器,提出一種可以有效地確定最小加比選單元的數(shù)據(jù)位寬的方法,從而減小維特比譯碼器硬件實(shí)現(xiàn)面積以及加比選單元關(guān)鍵路徑的延遲時(shí)間;可以有效地解決PM值溢出問題,并且能普遍適用于Viterbi的并行/串行/混合型結(jié)構(gòu),包括下述步驟第一步,根據(jù)公式一計(jì)算網(wǎng)格圖中的每一列的路徑度量值(PM)的跨度S_PM,S_PM≤n
文檔編號(hào)H03M13/41GK1731687SQ200510036378
公開日2006年2月8日 申請(qǐng)日期2005年8月8日 優(yōu)先權(quán)日2005年8月8日
發(fā)明者王一, 王新安, 張國新, 肖高發(fā), 洪波, 趙騰飛 申請(qǐng)人:北京大學(xué)深圳研究生院, 華為技術(shù)有限公司