專利名稱:數(shù)字信號(hào)處理器中的高性能turbo和iterbi信道解碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的技術(shù)領(lǐng)域這項(xiàng)發(fā)明涉及適合于無線移動(dòng)應(yīng)用和基站應(yīng)用的數(shù)字信號(hào)處理器,更具體地說,涉及在無線基站中供Turbo和Viterbi信道解碼使用的數(shù)字信號(hào)處理器。
本發(fā)明的現(xiàn)有技術(shù)第二和第三代無線系統(tǒng)使用信道編碼和解碼算法和展寬頻譜技術(shù)來提高傳輸可靠性。在第三代無線系統(tǒng)中,卷積編碼方案是為聲音傳輸指定的,而并行鏈接的卷積編碼(PCCC)方案是為數(shù)據(jù)傳輸指定的。卷積編碼的數(shù)據(jù)是使用Viterbi解碼算法解碼的,而PCCC編碼的數(shù)據(jù)是使用Turbo解碼算法解碼的。Turbo和Viterbi解碼方案是基于格子結(jié)構(gòu)的算法。
Viterbi和Turbo解碼器算法是極端集中計(jì)算的。無線基站中的向前糾錯(cuò)(或信道解碼)模塊在軟件無線電通信中能夠接近80%的符號(hào)率數(shù)據(jù)處理。被提議的在被分配的時(shí)間限制范圍內(nèi)執(zhí)行這些算法的途徑已包括在數(shù)字信號(hào)處理器中使用ASIC和使用有最基本的組成部分的硬件模塊。
數(shù)字信號(hào)處理器(而不是ASIC)因其軟件的可編程性變成令人想要的解決方案。然而,當(dāng)前沒有可用的數(shù)字信號(hào)處理器能擔(dān)負(fù)軟件無線電通信的完全的碼片和符號(hào)率數(shù)據(jù)處理要求。所以,系統(tǒng)設(shè)計(jì)者正在研究使用數(shù)字信號(hào)處理器和ASIC或單獨(dú)使用ASIC擔(dān)負(fù)符號(hào)率數(shù)據(jù)處理的解決方案。在最小值,ASIC將執(zhí)行正向糾錯(cuò)。
有雙重計(jì)算單元、寬存儲(chǔ)器總線和擔(dān)負(fù)平行的多重任務(wù)的能力的數(shù)字信號(hào)處理器是在1999年4月20日授權(quán)給Garde的美國專利第5,896,543號(hào)中揭示的。所揭示的數(shù)字信號(hào)處理器提供極高的性能,但是當(dāng)前的配置不能在被分配的時(shí)間限制范圍內(nèi)有效地執(zhí)行無線基站的正向糾錯(cuò)。
因此,存在改進(jìn)無線系統(tǒng)中使用的Turbo和Viterbi信道解碼算法的實(shí)施的需要。
本發(fā)明的概述依照本發(fā)明的第一方面,提供用來在數(shù)字信號(hào)處理器中計(jì)算格子結(jié)構(gòu)函數(shù)的度量標(biāo)準(zhǔn)的方法。格子結(jié)構(gòu)函數(shù)的度量標(biāo)準(zhǔn)是針對選定的格子結(jié)構(gòu)狀態(tài)根據(jù)格子結(jié)構(gòu)指令規(guī)定的適合于時(shí)間t0的格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)和從時(shí)間t0到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)計(jì)算的。對每個(gè)選定的格子結(jié)構(gòu)狀態(tài)的計(jì)算包括把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t0的第一狀態(tài)度量標(biāo)準(zhǔn)上以提供第一數(shù)值,從適合于時(shí)間t0的第二狀態(tài)度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)以提供第二數(shù)值,比較對應(yīng)的第一和第二的數(shù)值,以及選擇對應(yīng)的第一和第二數(shù)值的最大值以提供適合于時(shí)間t1的格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)。
該方法可能進(jìn)一步包括如下步驟針對每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把作為對應(yīng)的第一和第二數(shù)值的函數(shù)的修正因子加到最大數(shù)值上。加修正因子的步驟可能包括訪問包含修正因子的查詢表。
在一個(gè)實(shí)施方案中,格子結(jié)構(gòu)指令實(shí)現(xiàn)用來計(jì)算α格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的正向格子結(jié)構(gòu)函數(shù)。在另一個(gè)實(shí)施方案中,格子結(jié)構(gòu)指令實(shí)現(xiàn)用來計(jì)算β格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的反向格子結(jié)構(gòu)函數(shù)。在又一個(gè)實(shí)施方案中,格子結(jié)構(gòu)指令使用單一指令多種數(shù)據(jù)近似同時(shí)實(shí)現(xiàn)用來計(jì)算α格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的正向格子結(jié)構(gòu)函數(shù)和用來計(jì)算β格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的反向格子結(jié)構(gòu)函數(shù)。
依照本發(fā)明的另一方面,提供用來在數(shù)字信號(hào)處理器中計(jì)算格子結(jié)構(gòu)函數(shù)的度量標(biāo)準(zhǔn)的方法。α度量標(biāo)準(zhǔn)是根據(jù)格子結(jié)構(gòu)狀態(tài)指令規(guī)定的適合于時(shí)間t0的α度量標(biāo)準(zhǔn)和從時(shí)間t0到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)針對為時(shí)間t1選定的格子結(jié)構(gòu)狀態(tài)計(jì)算出來的。β度量標(biāo)準(zhǔn)是根據(jù)格子結(jié)構(gòu)狀態(tài)指令規(guī)定的適合于時(shí)間t2的β度量標(biāo)準(zhǔn)和從時(shí)間t2到t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)針對為時(shí)間t1選定的格子結(jié)構(gòu)狀態(tài)計(jì)算出來的。
針對選定的格子結(jié)構(gòu)狀態(tài)計(jì)算α度量標(biāo)準(zhǔn)的步驟可能包括如下步驟針對每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t0的第一α度量標(biāo)準(zhǔn)上以提供第一數(shù)值和從適合于時(shí)間t0的第二α度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)以提供第二數(shù)值;針對每個(gè)選定的格子結(jié)構(gòu)狀態(tài),比較對應(yīng)的第一和第二數(shù)值;以及為每個(gè)選定的格子結(jié)構(gòu)狀態(tài)選擇對應(yīng)的第一和第二數(shù)值的最大值以提供適合于時(shí)間t1的α度量標(biāo)準(zhǔn)。
針對選定的格子結(jié)構(gòu)狀態(tài)計(jì)算β度量標(biāo)準(zhǔn)的步驟可能包括如下步驟針對每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t2的第一β度量標(biāo)準(zhǔn)上以提供第一數(shù)值和從適合于時(shí)間t2的第二β度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)以提供第二數(shù)值;針對每個(gè)選定的格子結(jié)構(gòu)狀態(tài),比較對應(yīng)的第一和第二數(shù)值;以及為每個(gè)選定的格子結(jié)構(gòu)狀態(tài)選擇對應(yīng)的第一和第二數(shù)值的最大值以提供適合于時(shí)間t1的β度量標(biāo)準(zhǔn)。
計(jì)算α度量標(biāo)準(zhǔn)和計(jì)算β度量標(biāo)準(zhǔn)的步驟每個(gè)都可能進(jìn)一步包括如下步驟針對每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把作為對應(yīng)的第一和第二數(shù)值的函數(shù)的修正因子加到最大數(shù)值上。計(jì)算a度量標(biāo)準(zhǔn)和計(jì)算β度量標(biāo)準(zhǔn)的步驟可能是同時(shí)完成的。
依照本發(fā)明的第三方面,提供用來在數(shù)字信號(hào)處理器中計(jì)算對數(shù)MAP函數(shù)的方法。對數(shù)MAP指令規(guī)定第一、第二、第三和第四參數(shù)的位置。第一和第二參數(shù)的和數(shù)或差值被計(jì)算出來以提供第一數(shù)值,而且第三和第四參數(shù)的和數(shù)或差值被計(jì)算出來以提供第二數(shù)值。
第一和第二數(shù)值的最大值被選定。然后,作為第一和第二數(shù)值的函數(shù)的修正因子被加到最大數(shù)值上以提供對數(shù)MAP結(jié)果。加修正因子的步驟可能包括訪問包含修正因子的查詢表。
數(shù)字信號(hào)處理器可能包括用來儲(chǔ)存用于數(shù)字信號(hào)計(jì)算的指令和操作數(shù)的存儲(chǔ)器;用來產(chǎn)生用來從存儲(chǔ)器中取出一些選定的指令的指令地址的程序定序器;以及包括用于操作數(shù)和結(jié)果的暫時(shí)存儲(chǔ)的寄存器堆和用來或分開地或在任何組合中完成上述操作的加速器的計(jì)算模塊。在優(yōu)選的實(shí)施方案中,數(shù)字信號(hào)處理器包括兩個(gè)以上用來平行地完成多種操作的計(jì)算模塊。
依照本發(fā)明的第四方面,提供在數(shù)字信號(hào)處理器的計(jì)算模塊中使用的加速器。加速器包括用來接收給加速器的輸入的第一進(jìn)位存儲(chǔ)加法器;用來將和數(shù)與第一進(jìn)位存儲(chǔ)加法器的進(jìn)位輸出合并的第一全加器;用來根據(jù)第一全加器的輸出產(chǎn)生修正因子的查詢表;用來根據(jù)第一全加器的輸出的符號(hào)選擇一個(gè)或多個(gè)給加速器的輸入的多路復(fù)用器;用來把多路復(fù)用器的一個(gè)或多個(gè)輸出與查詢表的輸出相加的第二進(jìn)位存儲(chǔ)加法器;以及用來將和數(shù)與第二進(jìn)位存儲(chǔ)加法器的進(jìn)位輸出合并的第二全加器。
第一進(jìn)位存儲(chǔ)加法器和第一全加器可能包括第一流水線級(jí);查詢表、多路復(fù)用器和第二進(jìn)位存儲(chǔ)加法器可能包括第二流水線級(jí);而第二全加器可能包括第三流水線級(jí)。在優(yōu)選的實(shí)施方案中,加速器進(jìn)一步包括用來把和數(shù)與第二進(jìn)位和數(shù)加法器的進(jìn)位輸出供應(yīng)給第一進(jìn)位和數(shù)加法器的輸入的數(shù)據(jù)選擇器。
附圖簡要說明為了更好地理解本發(fā)明,參考在此處通過引證被并入的附圖
圖1是無線基站信號(hào)鏈的方框圖;圖2是Turbo譯碼器算法的方框圖;圖3是八種格子結(jié)構(gòu)狀態(tài)的示意圖;圖4舉例說明用來計(jì)算格子結(jié)構(gòu)的α度量標(biāo)準(zhǔn)的等式;圖5舉例說明用來計(jì)算格子結(jié)構(gòu)的β度量標(biāo)準(zhǔn)的等式;圖6舉例說明用來計(jì)算格子結(jié)構(gòu)的對數(shù)擬然比的等式;圖7是適合依照本發(fā)明的一個(gè)方面實(shí)現(xiàn)信道譯碼器的數(shù)字信號(hào)處理器的方框圖;圖8是在圖7的數(shù)字信號(hào)處理器中展示的每個(gè)計(jì)算模塊的實(shí)施方案的方框圖;圖9是舉例說明可能根據(jù)格子結(jié)構(gòu)指令完成的各項(xiàng)操作的第一實(shí)施方案的數(shù)據(jù)流程圖;圖10是舉例說明可能根據(jù)格子結(jié)構(gòu)指令完成的各項(xiàng)操作的第二實(shí)施方案的數(shù)據(jù)流程圖11舉例說明用來依照本發(fā)明的一個(gè)方面完成Turbo信道編碼解碼的軟件程序;圖12是舉例說明在第一數(shù)字信號(hào)處理器周期中用于格子結(jié)構(gòu)狀態(tài)S0-S3的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)的計(jì)算的示意方框圖;圖13是舉例說明在第二數(shù)字信號(hào)處理器周期中用于格子結(jié)構(gòu)狀態(tài)S4-S7的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)的計(jì)算的示意方框圖;圖14是舉例說明根據(jù)第一對數(shù)MAP指令完成的各項(xiàng)操作的數(shù)據(jù)流程圖;圖15是舉例說明根據(jù)第二對數(shù)MAP指令完成的各項(xiàng)操作的數(shù)據(jù)流程圖;圖16舉例說明用來使用對數(shù)MAP指令計(jì)算格子結(jié)構(gòu)的對數(shù)擬然比的軟件程序;圖17是舉例說明在圖16的軟件程序中供執(zhí)行第一指令行使用的硬件組成部分的示意方框圖;圖18是舉例說明圖8的加速器的實(shí)施方案的方框圖。
本發(fā)明的詳細(xì)描述無線基站信號(hào)鏈的一個(gè)示范方框圖被展示在圖1中。該信號(hào)鏈包括符號(hào)率處理10和碼片率處理12。把符號(hào)率處理10并入數(shù)字信號(hào)處理器是符合需要的。在發(fā)射一例,符號(hào)率處理10包括CRC附件模塊20、信道編碼模塊22、比率匹配模塊24和插入模塊26。在接收一側(cè),符號(hào)率處理10包括解插入模塊(de-interleaving block)30、比率確定模塊32、信道解碼模塊34和CRC附件模塊36。如同前面注意到的那樣,正向糾錯(cuò)(FEC)或信道解碼能接近符號(hào)率處理的80%。
本發(fā)明的各個(gè)方面都指向數(shù)字信號(hào)處理器中的信道解碼模塊34的實(shí)現(xiàn)。信道編碼模塊22可能利用適合于聲音或低數(shù)據(jù)率傳輸?shù)木矸e編碼和適合于高數(shù)據(jù)率傳輸?shù)腜CCC方案。信道解碼模塊34可能利用適合于聲音的Viterbi解碼算法和適合于數(shù)據(jù)的Turbo解碼算法。
Turbo譯碼器的實(shí)例的簡化方框圖被展示在圖2中。該Turbo譯碼器包括MAP(maximum a posteriori)譯碼器40和42,數(shù)字復(fù)用器44和數(shù)字分離器46。例如,Turbo編碼是M.Valenti在“Turbo編碼入門(An Introduction to Turbo Codes)”(維吉尼亞工業(yè)學(xué)院電子工程系)中和W.Ryan在“Turbo編碼指南(A Turbo CodeTutorial)”(新墨西哥州大學(xué))中描述的。單一的MAP譯碼器可能用來實(shí)現(xiàn)Viterbi譯碼器。Viterbi算法是H.Lou在“實(shí)現(xiàn)Viterbi算法(Implementing Viterbi Algorithm)”(IEEE信號(hào)處理雜志,1995年9月,第42-52頁)中描述的。
Turbo和Viterbi信道解碼算法是在受到的數(shù)據(jù)塊上完成的基于格子結(jié)構(gòu)的算法。通常在無線系統(tǒng)中使用的八種格子結(jié)構(gòu)狀態(tài)的例子被展示在圖3中。格子結(jié)構(gòu)包括與眾多時(shí)間點(diǎn)t=0、t=1、...、t=N中的每個(gè)點(diǎn)相關(guān)聯(lián)的狀態(tài)S0、S1、S2、...、S7。與每個(gè)格子結(jié)構(gòu)狀態(tài)相關(guān)聯(lián)的是在計(jì)算中與從起始點(diǎn)開始處在這個(gè)狀態(tài)的概率有關(guān)的阿爾發(fā)(α)度量標(biāo)準(zhǔn)。另外,與每個(gè)格子結(jié)構(gòu)狀態(tài)相關(guān)聯(lián)的是與從這個(gè)狀態(tài)開始以正確狀態(tài)結(jié)束的概率有關(guān)的貝它(β)度量標(biāo)準(zhǔn)。因此,八種α度量標(biāo)準(zhǔn)和八種β度量標(biāo)準(zhǔn)與格子結(jié)構(gòu)中的每個(gè)時(shí)間點(diǎn)相關(guān)聯(lián)。格子結(jié)構(gòu)還以與從在第一時(shí)間點(diǎn)的一種狀態(tài)變化到下一個(gè)時(shí)間點(diǎn)的另一種狀態(tài)的概率有關(guān)的伽馬(γ)轉(zhuǎn)變度量標(biāo)準(zhǔn)為特色。因此,例如,在圖3的格子結(jié)構(gòu)中,阿爾發(fā)度量標(biāo)準(zhǔn)α0和α1分別與在時(shí)間t=0的狀態(tài)S0和S1相關(guān)聯(lián),而阿爾發(fā)度量標(biāo)準(zhǔn)α0′和α1′分別與在時(shí)間t=1的狀態(tài)S0和S1相關(guān)聯(lián)。轉(zhuǎn)變度量標(biāo)準(zhǔn)γ與從在時(shí)間t=0的狀態(tài)S0到在時(shí)間t=1的狀態(tài)S0的轉(zhuǎn)變相關(guān)聯(lián),而轉(zhuǎn)變度量標(biāo)準(zhǔn)-γ與從在時(shí)間t=0的狀態(tài)S0到在時(shí)間t=1的狀態(tài)S1的轉(zhuǎn)變相關(guān)聯(lián)。一般地說,阿爾發(fā)度量標(biāo)準(zhǔn)α0、α1、...、α7分別與格子結(jié)構(gòu)狀態(tài)S0、S1、...、S7相關(guān)聯(lián)。同樣,貝它度量標(biāo)準(zhǔn)β0、β1、...、β7分別與格子結(jié)構(gòu)狀態(tài)S0、S1、...、S7相關(guān)聯(lián)。此外,轉(zhuǎn)變度量標(biāo)準(zhǔn)γ0與來自狀態(tài)S0、S1、S2和S3的轉(zhuǎn)變相關(guān)聯(lián),而轉(zhuǎn)變度量標(biāo)準(zhǔn)γ1與來自狀態(tài)S4、S5、S6和S7的轉(zhuǎn)變相關(guān)聯(lián)。
用來針對每個(gè)格子結(jié)構(gòu)狀態(tài)計(jì)算α度量標(biāo)準(zhǔn)的等式展示在圖4中,其中k表示格子結(jié)構(gòu)狀態(tài),而s表示時(shí)間點(diǎn)。在圖4的等式中最后一項(xiàng)是作為α度量標(biāo)準(zhǔn)的函數(shù)的修正因子。用來針對每個(gè)格子結(jié)構(gòu)狀態(tài)計(jì)算β度量標(biāo)準(zhǔn)的等式被展示在圖5中。在圖5的等式中最后一項(xiàng)是作為β度量標(biāo)準(zhǔn)的函數(shù)的修正因子。
現(xiàn)在描述圖4的等式應(yīng)用于圖3的格子結(jié)構(gòu)。在時(shí)間t=1分別用于狀態(tài)S0和S1的阿爾發(fā)度量標(biāo)準(zhǔn)α0′和α1′可以進(jìn)行如下計(jì)算α0′=MAX[α0+Y0,α4-Y0]+C0′(1)α1’=MAX[α0-Y0,α4+Y0]+C1′(2)其中C0′和C1′是取決于圖4所示的α0和α4的數(shù)值的修正因子。
因此,用于每個(gè)狀態(tài)α度量標(biāo)準(zhǔn)是通過計(jì)算先前狀態(tài)的α度量標(biāo)準(zhǔn)和從先前狀態(tài)轉(zhuǎn)變到當(dāng)前狀態(tài)的轉(zhuǎn)變度量標(biāo)準(zhǔn)的代數(shù)和針對可能從它們轉(zhuǎn)變到當(dāng)前狀態(tài)的兩種先前狀態(tài)中的每種狀態(tài)計(jì)算的,以便提供兩個(gè)數(shù)值。然后,選擇這兩個(gè)數(shù)值的最大值。修正因子被加到被選定的最大數(shù)值上。如同下面描述的那樣,修正因子可以從查詢表獲得。α度量標(biāo)準(zhǔn)可以是以類似的方式針對格子結(jié)構(gòu)中的每個(gè)狀態(tài)計(jì)算的。同樣,圖5的等式可以以類似的方式應(yīng)用于針對格子結(jié)構(gòu)中的每個(gè)狀態(tài)計(jì)算β度量標(biāo)準(zhǔn)。兩種狀態(tài)的度量標(biāo)準(zhǔn)的計(jì)算(每個(gè)都以兩種先前狀態(tài)的度量標(biāo)準(zhǔn)為基礎(chǔ))通常被稱為“蝶式”計(jì)算。
與信道解碼有關(guān)的對數(shù)擬然比也被計(jì)算出來。對數(shù)擬然比是狀態(tài)1的有效性與狀態(tài)0的可能性之比的對數(shù)。用來計(jì)算對數(shù)擬然比的等式被展示在圖6中。對數(shù)擬然比的計(jì)算將在下面進(jìn)行詳細(xì)的討論。
適合實(shí)現(xiàn)本發(fā)明特征的數(shù)字信號(hào)處理器(DSP)110的示例方框圖被展示在圖7中。DSP110的主要組成部分是計(jì)算模塊112和114、存儲(chǔ)器116、控制模塊124、鏈路口緩沖器126、外部口128、DRAM控制器130、指令調(diào)整緩沖器(IAB)132和主要指令譯碼器134。計(jì)算模塊112和114、指令調(diào)整緩沖器132、主要指令譯碼器134和控制模塊124構(gòu)成完成DSP110的主要的計(jì)算和數(shù)據(jù)處理功能的核心處理器。外部口128控制經(jīng)由外部地址總線158和外部數(shù)據(jù)總線168的外部通信。鏈路口緩沖器126控制經(jīng)由通信口136的外部通信。數(shù)字信號(hào)處理器優(yōu)選被配置成單一的單片式集成電路。
存儲(chǔ)器116可能包括三個(gè)獨(dú)立的大容量內(nèi)存條140、142和144。在優(yōu)選實(shí)施方案中,每個(gè)內(nèi)存條140、142和144都有64K32位字的容量。如同下面討論的那樣,每個(gè)內(nèi)存條140、142和144優(yōu)選有一條128位的數(shù)據(jù)總線。高達(dá)四個(gè)連續(xù)排列的32位數(shù)據(jù)字每個(gè)都能在單一的時(shí)鐘周期中被在轉(zhuǎn)移到每個(gè)內(nèi)存條或從每個(gè)內(nèi)存條中轉(zhuǎn)移出來。
DSP110的諸要素借助用于有效的高速操作的總線互連。每一條總線包括用于二進(jìn)制信息的并行轉(zhuǎn)移的多條線路。第一地址總線150(MA0)將內(nèi)存條140(MO)和控制模塊124互連。第二地址總線152(MA1)將內(nèi)存條142(M1)和控制模塊124互連。第三地址總線154(MA2)將內(nèi)存條144(M2)和控制模塊124互連。每條地址總線150、152和154優(yōu)選有16位寬。一條外部的地址總線156(MAE)將外部口128和控制模塊124互連。外部地址總線156通過外部口128被互連到外部地址總線158上。每條外部地址總線156和158優(yōu)選有32位寬。第一數(shù)據(jù)總線160(MDO)將內(nèi)存條140、計(jì)算模塊112和114、控制模塊124、鏈路口緩沖器126、IAB132和外部口128互連。第二數(shù)據(jù)總線162(MD1)將內(nèi)存條142、計(jì)算模塊112和114、控制模塊124、鏈路口緩沖器126、IAB132和外部口128互連。第三數(shù)據(jù)總線164(MD2)將內(nèi)存條144、計(jì)算模塊112和114、控制模塊124、鏈路口緩沖器126、IAB132和外部口128互連。數(shù)據(jù)總線160、162和164通過外部口128到被連接外部數(shù)據(jù)總線168上。每條數(shù)據(jù)總線160、162和164優(yōu)選有128位寬,而外部數(shù)據(jù)總線168優(yōu)選有64位寬。
第一地址總線150和第一數(shù)據(jù)總線160包括用于將數(shù)據(jù)轉(zhuǎn)移到內(nèi)存條140和從內(nèi)存條140轉(zhuǎn)移出來的總線。第二地址總線152和第二數(shù)據(jù)總線162包括用于將數(shù)據(jù)轉(zhuǎn)移到內(nèi)存條142和從內(nèi)存條142轉(zhuǎn)移出來的第二總線。第三地址總線154和第三數(shù)據(jù)總線164包括用于將數(shù)據(jù)轉(zhuǎn)移到內(nèi)存條144和從內(nèi)存條144轉(zhuǎn)移出來的第三總線。因?yàn)槊總€(gè)內(nèi)存條140、142和144都有一條獨(dú)立的總線,所以內(nèi)存條140、142和144可以被同時(shí)存取。在本文中使用的“數(shù)據(jù)”指的是二進(jìn)制的字,它可能表示DSP110的操作相關(guān)聯(lián)的指令或操作數(shù)。
在典型的操作模式中,程序指令被儲(chǔ)存在一個(gè)內(nèi)存條中,而操作數(shù)被儲(chǔ)存在另外兩個(gè)內(nèi)存條中。因此,至少一條指令和兩個(gè)操作數(shù)能在單一的時(shí)鐘周期中提供給計(jì)算模塊112和114。每個(gè)內(nèi)存條140、142和144都可能是為了允許在單一的時(shí)鐘周期中讀寫多個(gè)數(shù)據(jù)字而配置的。來自每個(gè)內(nèi)存條的多個(gè)數(shù)據(jù)字在單一的時(shí)鐘周期中的同時(shí)轉(zhuǎn)移是在不需要指令高速緩沖存儲(chǔ)器或數(shù)據(jù)高速緩沖存儲(chǔ)器的情況下完成的。
如同前面指出的那樣,每個(gè)內(nèi)存條140、142和144優(yōu)選每個(gè)有64K32位字的容量。每個(gè)內(nèi)存條都可能被接到一條128位寬的數(shù)據(jù)總線上。在替代實(shí)施方案中,每條數(shù)據(jù)總線都可能是64位寬的,而且64位是在每個(gè)時(shí)鐘相位1和時(shí)鐘相位2上轉(zhuǎn)移的,因此提供128位的有效總線寬度。多樣的數(shù)據(jù)字能被訪問在單一時(shí)鐘周期中的每個(gè)內(nèi)存條中。明確地說,數(shù)據(jù)能作為單一的、兩個(gè)一組或四個(gè)一組的字(每個(gè)字32位)被存取。
采用四個(gè)一組的字轉(zhuǎn)移,能在單一的時(shí)鐘周期中把四條指令和八個(gè)操作數(shù)(每個(gè)32位)供應(yīng)給計(jì)算模塊112和114。被轉(zhuǎn)移的數(shù)據(jù)字和接收被轉(zhuǎn)移的數(shù)據(jù)字的計(jì)算模塊或模塊的數(shù)目是用指令中控制位選定的。單一的、兩個(gè)一組的或四個(gè)一組的數(shù)據(jù)字能被轉(zhuǎn)移到計(jì)算模塊112、計(jì)算模塊114、或兩者。兩個(gè)一組的和四個(gè)一組的數(shù)據(jù)字存取在許多應(yīng)用中通過允許若干操作數(shù)在單一的時(shí)鐘周期中轉(zhuǎn)移到計(jì)算模塊112和114提高了DSP110的性能。在每個(gè)時(shí)鐘周期中存取多條指令的能力允許在每個(gè)時(shí)鐘周期中執(zhí)行多重操作,借此提高性能。
每個(gè)計(jì)算模塊112和114的實(shí)施方案的方框圖被展示在圖8中。多口寄存器堆200為操作數(shù)和結(jié)果提供臨時(shí)儲(chǔ)存。在優(yōu)選的實(shí)施方案中,寄存器堆200讓32位的32個(gè)字的容量每個(gè),組織如128位的八排每個(gè)。寄存器堆200經(jīng)過對每一條數(shù)據(jù)總線160,162的多路復(fù)用器和門閂(不展示)被連接和164(圖7)。當(dāng)操作數(shù)從存儲(chǔ)器116被接來的時(shí)間,三輛數(shù)據(jù)總線中的二輛被選擇,而且被選定的總線上的操作數(shù)提供給寄存器堆200。
圖8展示的計(jì)算模塊包括乘法器/累加器210、算術(shù)邏輯部件(ALU)212、移相器214和加速器216。乘法器/累加器220、ALU212、移相器214和加速器216能夠同時(shí)執(zhí)行指令到能將充足的指令和操作數(shù)供應(yīng)給計(jì)算模塊的程度。操作數(shù)是在操作數(shù)總線220上從寄存器堆200供應(yīng)給乘法器/累加器210、ALU210、移相器214和加速器216的。來自乘法器/累加器210、ALU212、移相器214和加速器216的結(jié)果在結(jié)果總線222上返回到寄存器堆200。計(jì)算模塊的各個(gè)組成部分作為對譯碼指令的響應(yīng)受來自次級(jí)指令譯碼器224的信號(hào)控制。計(jì)算模塊優(yōu)選具有適合改善性能的流水線型體系結(jié)構(gòu)。
DSP中的每個(gè)計(jì)算模塊112和114包括用來提高無線基站性能的加速器216。加速器包括用來暫時(shí)儲(chǔ)存數(shù)據(jù)和控制值的寄存器和用來執(zhí)行規(guī)定的指令的加速器電路系統(tǒng)。加速器216的結(jié)構(gòu)和操作在下面將予以詳細(xì)的描述。
人們將理解DSP110僅僅是作為例子描述的。本發(fā)明特征可能在不同的數(shù)字信號(hào)處理器結(jié)構(gòu)中實(shí)現(xiàn)。
每個(gè)加速器根據(jù)ACS(或格子結(jié)構(gòu))指令完成的操作的數(shù)據(jù)流程圖被展示在圖9中。在寄存器對TRmd中的諸如α度量標(biāo)準(zhǔn)或β度量標(biāo)準(zhǔn)之類高數(shù)據(jù)字被供應(yīng)給減法單元250和加法單元252。在寄存器對TRmd中的低數(shù)據(jù)字被供應(yīng)給減法單元254和加法單元256。在寄存器對TRnd中的高數(shù)據(jù)字被供應(yīng)給加法單元258和減法單元260。在寄存器對TRnd中的低數(shù)據(jù)字被供應(yīng)給加法單元262和減法單元264。在寄存器Rm中可能作為伽馬轉(zhuǎn)變度量標(biāo)準(zhǔn)的高數(shù)據(jù)字被供應(yīng)給減法單元250、加法單元252、加法單元258和減法單元260。寄存器Rm中的低數(shù)據(jù)字被供應(yīng)給減法單元254、加法單元256、加法單元262和減法單元264。減法單元250和加法單元258的輸出被供應(yīng)給MAX/TMAX單元270。加法單元252和減法單元260的輸出被供應(yīng)給MAX/TMAX單元272。減法單元254和加法單元262的輸出被供應(yīng)給MAX/TMAX單元274。加法單元256和減法單元264的輸出被供應(yīng)給MAX/TMAX單元276。MAX/TMAX單元270、272、274和276的輸出被儲(chǔ)存在四個(gè)一組的寄存器TRsq中。
MAX/TMAX單元270,272,274和276每個(gè)都完成可能在格子結(jié)構(gòu)指令中規(guī)定的兩種功能之一。在MAX功能中,兩個(gè)輸入的最大值被選定并且被儲(chǔ)存在四個(gè)一組的寄存器TRsq中。在TMAX功能中,兩個(gè)輸入的最大值被選定,而且修正值被加到被選定的最大數(shù)值上。和數(shù)被儲(chǔ)存在四個(gè)一組的寄存器TRsq中。修正因子是給MAX/TMAX單元的兩個(gè)輸入的函數(shù)。如同下面描述那樣,修正因子能夠依據(jù)查詢表確定。MAX/TMAX單元270、272、274和276每個(gè)都把一個(gè)輸出位提供給位選擇寄存器對THRs。每個(gè)輸出位都指出被選作最大數(shù)值的輸入。
在圖9的實(shí)施方案中,在寄存器對TRmd和TRnd中的數(shù)據(jù)數(shù)值(例如,α度量標(biāo)準(zhǔn)或β度量標(biāo)準(zhǔn))都是32位的數(shù)值,而在寄存器Rm中的數(shù)據(jù)數(shù)值(例如,轉(zhuǎn)變度量標(biāo)準(zhǔn))是16位的數(shù)值。儲(chǔ)存在四個(gè)一組的寄存器TRsq中的輸出值是32位的數(shù)值。在圖9的實(shí)施方案中,每個(gè)加速器根據(jù)單一的格子結(jié)構(gòu)指令完成格子結(jié)構(gòu)的兩種32位的蝶式計(jì)算。
在格子結(jié)構(gòu)指令的另一個(gè)實(shí)施方案中,如圖10所示,每個(gè)加速器根據(jù)單一的格子結(jié)構(gòu)指令完成運(yùn)行四種16位的蝶式計(jì)算。在圖10中,寄存器對TRmd和寄存器對TRnd每個(gè)都包含四個(gè)16位的數(shù)據(jù)數(shù)值,例如α度量標(biāo)準(zhǔn)或β度量標(biāo)準(zhǔn),而寄存器Rm包含四個(gè)8位的數(shù)據(jù)數(shù)值,例如轉(zhuǎn)變度量標(biāo)準(zhǔn)。數(shù)據(jù)數(shù)值被供應(yīng)給八個(gè)減法單元(290等)和八個(gè)加法單元(292等),而減法單元和加法單元的輸出被供應(yīng)給八個(gè)MAX單元(294等)。例如,減法單元290接收來自寄存器對TRmd的數(shù)據(jù)字S3和來自寄存器Rm的數(shù)據(jù)字B3。加法單元292接收來自寄存器對TRnd的數(shù)據(jù)字S3和來自寄存器Rm的數(shù)據(jù)字B3。減法單元290和加法單元292的輸出被供應(yīng)給MAX單元294。MAX單元294選擇兩個(gè)輸入中的最大值并且將被選定的最大數(shù)值儲(chǔ)存在四個(gè)一組的寄存器TRsq中。TMAX選項(xiàng)不被包括在圖10的實(shí)施方案中。MAX單元還把輸出位供應(yīng)給寄存器對THRs,以便指出哪個(gè)輸入被選定。圖10中其余的單元以同樣的方式操作以便根據(jù)單一的格子結(jié)構(gòu)指令提供格子結(jié)構(gòu)的四種16位的蝶式計(jì)算。
用來計(jì)算格子結(jié)構(gòu)函數(shù)的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)的軟件程序的例子被展示在圖11中。該程序是用前面描述過用來完成圖9所示的操作的ACS指令實(shí)現(xiàn)的。在圖11中,每條ACS指令都規(guī)定用于圖9所示的兩種格子結(jié)構(gòu)蝶式計(jì)算的計(jì)算。為了提供全部四種蝶式計(jì)算,ACS指令是在計(jì)算模塊112和114(圖7)中執(zhí)行的。指令在圖11中被成對地編組,第一指令針對格子結(jié)構(gòu)在給定的時(shí)間點(diǎn)的最初四種狀態(tài)計(jì)算α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)而第二指令針對格子結(jié)構(gòu)在給定的時(shí)間點(diǎn)的最后四種狀態(tài)計(jì)算α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)。因此,用于Turbo信道譯碼器的計(jì)算是在格子結(jié)構(gòu)中使用每個(gè)時(shí)間點(diǎn)兩個(gè)指令完成的。圖11中的軟件程序舉例說明在格子結(jié)構(gòu)中包含用來為四個(gè)時(shí)間點(diǎn)計(jì)算度量標(biāo)準(zhǔn)的操作的循環(huán)。
在圖11的每條指令行中的操作用數(shù)字信號(hào)處理器同時(shí)完成。在其它的實(shí)現(xiàn)中,第一指令可能針對格子結(jié)構(gòu)在給定的時(shí)間點(diǎn)的八種狀態(tài)計(jì)算α度量標(biāo)準(zhǔn),而第二指令可能針對格子結(jié)構(gòu)在給定的時(shí)間點(diǎn)的八種狀態(tài)計(jì)算β度量標(biāo)準(zhǔn)。
在圖11的第一指令行中,TR11:8對應(yīng)于圖9中的四個(gè)一組的寄存器TRsq。另外,在第一指令行中,TR5:4和TR1:0分別對應(yīng)于寄存器對TRmd和寄存器對TRnd。寄存器sR24對應(yīng)于圖9中的寄存器Rm。人們將理解指令可能在兩個(gè)計(jì)算單元中用不同的數(shù)據(jù)數(shù)值運(yùn)行以便根據(jù)單一的ACS(或格子結(jié)構(gòu))指令完成四種蝶式計(jì)算。圖11的第一指令行進(jìn)一步規(guī)定寄存器TR7:4中的數(shù)據(jù)數(shù)值被移到寄存器堆200(圖8)中的寄存器R7:4。此外,第一指令行規(guī)定對計(jì)算單元112中的寄存器xR3:0和計(jì)算單元114中的寄存器YR3:0的存儲(chǔ)器加載操作。
在圖11的軟件程序中最初兩個(gè)指令行的執(zhí)行是參照圖12和圖13描述的。圖12舉例說明在DSP110的第一周期中針對格子結(jié)構(gòu)狀態(tài)S0-S3的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)的計(jì)算,而圖13舉例說明在DSP110的第二周期中針對格子結(jié)構(gòu)狀態(tài)S4-S7的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)的計(jì)算。如圖12所示,計(jì)算模塊112中的加速器電路300接收來自寄存器對TR5:4、寄存器對TR1:0和寄存器sR24的數(shù)據(jù)數(shù)值并且把輸出數(shù)據(jù)數(shù)值提供給四個(gè)一組的寄存器TR11:8。類似地,計(jì)算模塊114中的加速器電路302接收來自寄存器對TR5:4、寄存器對TR1:0和寄存器sR24的數(shù)據(jù)數(shù)值并且把輸出數(shù)據(jù)數(shù)值提供給四個(gè)一組的寄存器TR11:8。在圖12中展示的寄存器對應(yīng)于用圖11的第一指令行中的ACS指令規(guī)定的寄存器。在優(yōu)選實(shí)施方案中,TR寄存器位于每個(gè)加速器216(圖8)之中,而R寄存器位于每個(gè)寄存器堆200之中。圖12中的寄存器對TR5:4對應(yīng)于圖9中的寄存器對TRmd,而寄存器對TR1:0對應(yīng)于寄存器對TRnd。類似地,圖12中的寄存器sR24對應(yīng)于圖9中的寄存器Rmin,四個(gè)一組的寄存器TR11:8對應(yīng)于圖9中的四個(gè)一組的寄存器TRsq。圖1 2舉例說明SIMD在單一指令被兩個(gè)以上執(zhí)行單元(例如,加速器線路300和302)用不同的數(shù)據(jù)執(zhí)行的場合的操作。
如圖12所示,圖11的第一指令行計(jì)算用于格子結(jié)構(gòu)狀態(tài)S0-S3的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)。具體地說,加速器電路300基于裝在寄存器對TR5:4中的α5和α4的數(shù)值、裝在寄存器對TR1:0中的α1和α0的數(shù)值和裝在寄存器sR24中的γ1和γ0的數(shù)值計(jì)算α度量標(biāo)準(zhǔn)α0′、α1′、α2′和α3′。類似地,加速器電路302基于裝在寄存器對TR5:4中的β5和β4的數(shù)值、裝在寄存器對TR1:0中的β1和β0的數(shù)值和裝在寄存器sR24中的γ1和γ0的數(shù)值計(jì)算β度量標(biāo)準(zhǔn)β0′、β1′、β2′和β3′。
現(xiàn)在參照圖13,在第二DSP周期中針對格子結(jié)構(gòu)狀態(tài)S4-S8的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)的計(jì)算被展示出來。圖13的操作對應(yīng)于圖11中的第二指令行。加速器電路300基于裝在寄存器對TR7:6中的α7和α6的數(shù)值、裝在寄存器對TR3:2中的α3和α2的數(shù)值和裝在寄存器sR25中的γ1和γ0的數(shù)值計(jì)算α度量標(biāo)準(zhǔn)α4′、α5′、α6′和α7′。類似地,加速器電路302基于裝在寄存器對TR7:6中的β7和β6的數(shù)值、裝在寄存器對TR3:2中的β3和β2的數(shù)值和裝在寄存器sR25中的γ1和γ0的數(shù)值計(jì)算β度量標(biāo)準(zhǔn)β4′、β5′、β6′和β7′。
加速器電路300和302完成圖12所示的第一DSP周期中的四種蝶式計(jì)算和圖13所示的第二DSP周期中的四種蝶式計(jì)算,借此在數(shù)字信號(hào)處理器的兩個(gè)周期中針對八種格子結(jié)構(gòu)狀態(tài)計(jì)算完整的α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)。因此,圖11的軟件程序針對格子結(jié)構(gòu)的四個(gè)時(shí)間點(diǎn)計(jì)算α度量標(biāo)準(zhǔn)和β度量標(biāo)準(zhǔn)。在圖11-13的實(shí)施方案中,在計(jì)算模塊112中加速器的寄存器TR0:7裝有格子結(jié)構(gòu)狀態(tài)S0-S7在第一時(shí)間點(diǎn)的α度量標(biāo)準(zhǔn),而加速器記錄TR8:15裝有格子結(jié)構(gòu)狀態(tài)S0-S7在第二時(shí)間點(diǎn)的α度量標(biāo)準(zhǔn)。類似地,在計(jì)算模塊114中加速器的寄存器TR0:7裝有格子結(jié)構(gòu)狀態(tài)S0-S7在第一時(shí)間點(diǎn)的β度量標(biāo)準(zhǔn),而且加速器的寄存器TR7:15裝有格子結(jié)構(gòu)狀態(tài)S0-S7在第二時(shí)間點(diǎn)的β度量標(biāo)準(zhǔn)。
舉例說明根據(jù)第一類型的對數(shù)MAP指令完成的操作的數(shù)據(jù)流程圖被展示在圖14中。數(shù)據(jù)數(shù)值保存在寄存器對TRmd和TRnd和四個(gè)一組的寄存器Rmq中。在圖14的例子中,每個(gè)數(shù)據(jù)數(shù)值都是32位的。數(shù)據(jù)數(shù)值可以表示α度量標(biāo)準(zhǔn)、β度量標(biāo)準(zhǔn)或轉(zhuǎn)變度量標(biāo)準(zhǔn)。加法單元330接受來自寄存器對TRmd的高數(shù)據(jù)字和來自四個(gè)一組的寄存器Rmq的第一個(gè)數(shù)據(jù)字。加法單元332接受來自寄存器對TRmd的低數(shù)據(jù)字和來自四個(gè)一組的寄存器Rmq的第二個(gè)數(shù)據(jù)字。加法單元334接受來自寄存器對TRnd的高數(shù)據(jù)字和接受來自四個(gè)一組的寄存器Rmq的第三個(gè)數(shù)據(jù)字。加法單元336接受來自寄存器對TRnd的低數(shù)據(jù)字和接受來自四個(gè)一組的寄存器Rmq的第四個(gè)數(shù)據(jù)字。TMAX單元340接受加法單元330和334的輸出。TMAX單元342接受加法單元332和336的輸出。TMAX單元340和342每個(gè)都選擇其兩個(gè)輸入的最大值并且將修正因子加到選定的最大值上。如同前面提到的那樣,修正因子是兩個(gè)輸入數(shù)值的函數(shù)并且可以作為查詢表被實(shí)現(xiàn)。TMAX單元340和342的輸出被儲(chǔ)存在四個(gè)一組的寄存器TRsd中。在圖14中舉例說明的指令把裝在四個(gè)一組的寄存器Rmq中的數(shù)據(jù)數(shù)值加到分別裝在寄存器對TRmd和TRnd中的數(shù)據(jù)數(shù)值上,選擇兩個(gè)加法單元的輸出的最大值并且把修正因子加到被選定的最大數(shù)值上。
舉例說明根據(jù)第二類型的對數(shù)MAP指令完成的操作的數(shù)據(jù)流程圖被展示在圖15中。在圖14和圖15中類似的要素具有相同的參考數(shù)字。圖15展示的操作類似于圖14展示的那些,不同之處在于圖14的加法單元330,332,334和336分別用減法單元350,352,354和356代替。因此,TMAX單元340接受減法單元350和354的輸出,而TMAX單元342接受減法單元352和356的輸出。在圖15中舉例說明的指令將裝在四個(gè)一組的寄存器Rmq中的數(shù)據(jù)數(shù)值從裝在寄存器對TRmd和TRnd中的數(shù)據(jù)數(shù)值中減去,選擇兩個(gè)減法單元的輸出的最大值并且把修正因子加到被選定的最大數(shù)值上。
用來計(jì)算格子結(jié)構(gòu)函數(shù)的對數(shù)擬然比的軟件程序的例子被展示在圖16中。該程序是用前面描述過的完成在圖14和圖15中展示的操作的TMAX指令實(shí)現(xiàn)的。在圖16中,每條TMAX指令都規(guī)定用于圖14或圖15展示的兩種對數(shù)MAP計(jì)算的計(jì)算。為了提供全部四種對數(shù)MAP計(jì)算,TMAX指令是在計(jì)算模塊112和114(圖7)中運(yùn)行的。
在圖16的第一個(gè)指令行中,TR1:0和TR3:2分別對應(yīng)于圖14中的寄存器對TRmd和寄存器對TRnd。另外,在第一個(gè)指令行中,R9:8和R11:10對應(yīng)于圖14中的四個(gè)一組的寄存器Rmq。裝在指定的各個(gè)寄存器中的數(shù)據(jù)數(shù)值如同在圖14或圖15中展示的和前面描述的那樣進(jìn)行處理。人們將理解為了根據(jù)單一的TMAX指令完成四種對數(shù)MAP計(jì)算,可以在兩個(gè)計(jì)算單元中用不同的數(shù)據(jù)數(shù)值執(zhí)行該指令。
在圖16的軟件程序中的第一個(gè)指令行的執(zhí)行是參照圖17描述的。如圖17所示,計(jì)算模塊112中的加速器電路300接受來自寄存器對TR1:0、R9:8、TR3:2和R11:10的數(shù)據(jù)數(shù)值,并且把輸出數(shù)據(jù)的數(shù)值提供給寄存器對TR9:8。類似地,計(jì)算模塊114中的加速器電路302接受來自寄存器對TR1:0、R9:8、TR3:2和R11:10的數(shù)據(jù)數(shù)值,并且把輸出數(shù)據(jù)的數(shù)值提供給寄存器對TR9:8。加速器電路300和302每個(gè)都如同指令所規(guī)定的那樣完成在圖14或圖15中展示的操作。
每個(gè)加速器電路300、302(圖12、13和17)的實(shí)施方案被展示在圖18中。加速器電路有流水線式的體系結(jié)構(gòu),包括第一流水線級(jí)400、第二流水線級(jí)402和第三流水線級(jí)404。第一和第二流水線級(jí)400和402通過級(jí)寄存器410和412被連接起來,第二和第三流水線級(jí)402和404通過級(jí)寄存器414被連接起來。第一級(jí)400包括專用的OR門420、四輸入進(jìn)位存儲(chǔ)加法器424和32位的加法器426。第二級(jí)402包括多路復(fù)用器430、查詢表432和三輸入進(jìn)位存儲(chǔ)加法器434。第三級(jí)404包括32位的加法器440。寄存器414輸出的旁路結(jié)果通過多路復(fù)用器442與輸入OP1和OP2耦合,以便如同下面描述的那樣在兩個(gè)流水線級(jí)中執(zhí)行指令。
圖18中展示的加速器電路可以用來執(zhí)行ACS指令。參照圖9,ACS指令完成下列操作。
MAX(TRmd+Rm,TRnd-Rm)+C(3)其中C是非必選的修正因子。MAX操作等價(jià)于減去括號(hào)中的兩個(gè)數(shù)值,從而獲得TRmd-TRnd+2Rm (4)然后,電路確定表達(dá)式(4)的數(shù)值究竟是正的還是負(fù)的。當(dāng)表達(dá)式(4)的數(shù)值是正的時(shí)候,在表達(dá)式(3)中括號(hào)內(nèi)的第一項(xiàng)是最大數(shù)值,而當(dāng)該數(shù)值是負(fù)的時(shí)候,在表達(dá)式(3)中括號(hào)內(nèi)的第二項(xiàng)是最大數(shù)值。
當(dāng)ACS指令正在執(zhí)行的時(shí)候,在寄存器TRmd中的數(shù)據(jù)數(shù)值提供給輸入OP1和OP2,寄存器TRnd中的數(shù)據(jù)數(shù)值提供給輸入OP3,而數(shù)據(jù)數(shù)值2Rm提供給輸入OP4。32位的加法器426的輸出表示上面的表達(dá)式(4)的數(shù)值。這個(gè)數(shù)值被用來訪問查詢表432中的修正因子。32位的加法器426的輸出的符號(hào)作為控制信號(hào)供多路復(fù)用器430使用,借此選擇TRmd和Rm或TRnd和Rm。被選定的數(shù)值和查詢表432的輸出提供給進(jìn)位存儲(chǔ)加法器434的輸入。32位的加法器440的輸出表示被選定的最大數(shù)值加查詢表432提供的修正因子C。為了把ACS指令的執(zhí)行時(shí)間減少到兩個(gè)流水線周期,進(jìn)位存儲(chǔ)加法器434的輸出可以提供給進(jìn)位存儲(chǔ)加法器424的輸入OP1和OP2。當(dāng)前一個(gè)ACS指令的結(jié)果正在使用的時(shí)候,加法器424的進(jìn)位輸出通過多路復(fù)用器442提供給輸入OP1,而加法器424的和數(shù)輸出通過多路復(fù)用器442提供給輸入OP2。當(dāng)加速器的輸入由寄存器提供的時(shí)候,旁路功能不被利用,而且將寄存器輸入通過多路復(fù)用器442提供給輸入OP1。在修正因子未被用在ACS指令中的情況下,查詢表432的輸出是零。
圖18展示的加速器電路可以被用來執(zhí)行TMAX指令。參照圖14,TMAX指令完成下列操作。
MAX(TRmd+Rm3,TRnd+Rm1)+C(5)表達(dá)式(5)中的MAX操作等價(jià)于減去兩個(gè)數(shù)值TRmd+Rm3-TRnd-Rm1(6)然后,電路確定表達(dá)式(6)的數(shù)值究竟是正的還是負(fù)的。當(dāng)表達(dá)式(6)的數(shù)值是正的時(shí)候,在表達(dá)式(5)中括號(hào)內(nèi)的第一項(xiàng)是最大值,而當(dāng)表達(dá)式(6)的數(shù)值是負(fù)的時(shí)候,在表達(dá)式(5)中括號(hào)內(nèi)的第二項(xiàng)是最大值。
再一次參照圖18,為了執(zhí)行TMAX指令,在寄存器TRmd中的數(shù)值提供給輸入OP1,在寄存器Rm1中的數(shù)值提供給輸入OP2,在寄存器TRnd中的數(shù)值提供給輸入OP3,而在寄存器Rm2中的數(shù)值提供給輸入OP4。以類似于ACS指令的方式,32位的加法器426的輸出被用來訪問查詢表432,而且加法器426的輸出的符號(hào)被用來控制多路復(fù)用器430。多路復(fù)用器430選擇最大數(shù)值并且把這個(gè)最大數(shù)值提供給進(jìn)位存儲(chǔ)加法器434。加法器434將被選定的最大值數(shù)值和來自查詢表432的修正值相加提供輸出結(jié)果。
盡管已經(jīng)展示和描述了目前考慮到的本發(fā)明的優(yōu)選實(shí)施方案,但是各種不同的變化和修正可能在不脫離權(quán)利要求書所定義的本發(fā)明的范圍的情況下被獲得對于熟悉這項(xiàng)技術(shù)的人將是明顯的。
權(quán)利要求
1.一種用來在數(shù)字信號(hào)處理器中計(jì)算柵格函數(shù)的度量標(biāo)準(zhǔn)的方法,其中包括下述步驟根據(jù)對于選定的格子結(jié)構(gòu)狀態(tài)規(guī)定適合于時(shí)間t0的格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的位置和適合于從時(shí)間t0到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)的位置的格子結(jié)構(gòu)指令,把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t0的第一狀態(tài)度量標(biāo)準(zhǔn)上以提供第一數(shù)值并且從適合于時(shí)間t0的第二狀態(tài)度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)以提供第二數(shù)值;對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),比較對應(yīng)的第一和第二數(shù)值;以及為每個(gè)選定的格子結(jié)構(gòu)狀態(tài)選擇對應(yīng)的第一和第二數(shù)值的最大值,以提供適合于時(shí)間t1的格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)。
2.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括下述步驟對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把作為對應(yīng)的第一和第二數(shù)值的函數(shù)的修正因子加到最大的數(shù)值上。
3.根據(jù)權(quán)利要求2的方法,其中添加修正因子的步驟包括訪問包含修正因子的查詢表。
4.根據(jù)權(quán)利要求1的方法,其中格子結(jié)構(gòu)指令實(shí)現(xiàn)用來計(jì)算α格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的正向格子結(jié)構(gòu)函數(shù)。
5.根據(jù)權(quán)利要求1的方法,其中格子結(jié)構(gòu)指令實(shí)現(xiàn)用來計(jì)算β格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的反向格子結(jié)構(gòu)函數(shù)。
6.根據(jù)權(quán)利要求1的方法,其中格子結(jié)構(gòu)指令使用單一指令多種數(shù)據(jù)近似同時(shí)實(shí)現(xiàn)用來計(jì)算α格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的正向格子結(jié)構(gòu)函數(shù)和用來計(jì)算β格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)的反向格子結(jié)構(gòu)函數(shù)。
7.一種用來在數(shù)字信號(hào)處理器中計(jì)算格子結(jié)構(gòu)函數(shù)的度量標(biāo)準(zhǔn)的方法,其中包括下述步驟根據(jù)格子結(jié)構(gòu)指令規(guī)定的適合于時(shí)間t0的α度量標(biāo)準(zhǔn)和適合于從時(shí)間t0到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn),計(jì)算適合于為時(shí)間t1選定的格子結(jié)構(gòu)狀態(tài)的α度量標(biāo)準(zhǔn),以及根據(jù)格子結(jié)構(gòu)指令規(guī)定的適合于時(shí)間t2的β度量標(biāo)準(zhǔn)和適合于從時(shí)間t2到時(shí)間t0的轉(zhuǎn)變度量標(biāo)準(zhǔn),計(jì)算適合于為時(shí)間t0選定的格子結(jié)構(gòu)狀態(tài)的β度量標(biāo)準(zhǔn)。
8.根據(jù)權(quán)利要求7的方法,其中計(jì)算適合于選定的格子結(jié)構(gòu)狀態(tài)的α度量標(biāo)準(zhǔn)的步驟進(jìn)一步包括如下步驟對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t0的第一α度量標(biāo)準(zhǔn)上以提供第一數(shù)值并且從適合于時(shí)間t1的第二α度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)以提供第二數(shù)值;對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),比較對應(yīng)的第一和第二數(shù)值;以及為每個(gè)選定的格子結(jié)構(gòu)狀態(tài)選擇對應(yīng)的第一和第二數(shù)值的最大值以提供適合于時(shí)間t1的α度量標(biāo)準(zhǔn)。
9.根據(jù)權(quán)利要求8的方法,其中對選定的格子結(jié)構(gòu)狀態(tài)計(jì)算α度量標(biāo)準(zhǔn)的步驟進(jìn)一步包括如下步驟對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài)把作為對應(yīng)的第一和第二數(shù)值的函數(shù)的修正因子加到最大的數(shù)值上。
10.根據(jù)權(quán)利要求7的方法,其中計(jì)算適合于選定的格子結(jié)構(gòu)狀態(tài)的β度量標(biāo)準(zhǔn)的步驟包括下述步驟對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t2的第一β度量標(biāo)準(zhǔn)上以提供第一數(shù)值并且從適合于時(shí)間t2的第二β度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)以提供第二數(shù)值;對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),比較對應(yīng)的第一和第二數(shù)值;以及為每個(gè)選定的格子結(jié)構(gòu)狀態(tài)選擇對應(yīng)的第一和第二數(shù)值的最大值,以提供適合于時(shí)間t1的β度量標(biāo)準(zhǔn)。
11.根據(jù)權(quán)利要求10的方法,其中計(jì)算適合于選定的格子結(jié)構(gòu)狀態(tài)的β度量標(biāo)準(zhǔn)的步驟進(jìn)一步包括如下步驟對于每個(gè)選定的格子結(jié)構(gòu)狀態(tài),把作為對應(yīng)的第一和第二數(shù)值的函數(shù)的修正因子加到最大數(shù)值上。
12.根據(jù)權(quán)利要求7的方法,其中計(jì)算適合于選定的格子結(jié)構(gòu)狀態(tài)的α度量標(biāo)準(zhǔn)的步驟包括根據(jù)單一的格子結(jié)構(gòu)指令計(jì)算適合于眾多格子結(jié)構(gòu)狀態(tài)的α度量標(biāo)準(zhǔn)。
13.根據(jù)權(quán)利要求7的方法,其中計(jì)算適合于選定的格子結(jié)構(gòu)狀態(tài)的β度量標(biāo)準(zhǔn)的步驟包括根據(jù)單一的格子結(jié)構(gòu)指令計(jì)算適合于眾多格子結(jié)構(gòu)狀態(tài)的β度量標(biāo)準(zhǔn)。
14.根據(jù)權(quán)利要求7的方法,其中計(jì)算α度量標(biāo)準(zhǔn)和計(jì)算β度量標(biāo)準(zhǔn)的步驟是同時(shí)完成的。
15.一種用來在數(shù)字信號(hào)處理器中計(jì)算對數(shù)MAP函數(shù)的方法,其中包括下述步驟根據(jù)規(guī)定第一、第二、第三和第四參數(shù)的位置的對數(shù)MAP指令,計(jì)算第一和第二參數(shù)的和數(shù)或差值以提供第一數(shù)值并且計(jì)算第三和第四參數(shù)的和數(shù)或差值以提供第二數(shù)值;選擇第一和第二數(shù)值的最大值;以及把作為第一和第二數(shù)值的函數(shù)的修正因子加到最大數(shù)值以提供對數(shù)MAP結(jié)果。
16.根據(jù)權(quán)利要求15的方法,其中加修正因子的步驟包括訪問包含修正因子的查詢表。
17.根據(jù)權(quán)利要求15的方法,其中兩個(gè)以上對數(shù)MAP結(jié)果是根據(jù)單一的對數(shù)MAP指令計(jì)算出來的。
18.一種處理器,其中包括用來儲(chǔ)存用于數(shù)字信號(hào)計(jì)算的指令和操作數(shù)的存儲(chǔ)器;用來產(chǎn)生用來從所述的存儲(chǔ)器取出一些選定的所述指令的指令地址的程序定序器;以及計(jì)算模塊,它包括用來暫時(shí)儲(chǔ)存操作數(shù)和結(jié)果的寄存器堆和用來執(zhí)行規(guī)定適合于時(shí)間t0的格子結(jié)構(gòu)狀態(tài)度量標(biāo)準(zhǔn)和從時(shí)間t0到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)的位置的格子結(jié)構(gòu)指令的加速器,所述的加速器包括用來把轉(zhuǎn)變度量標(biāo)準(zhǔn)加到適合于時(shí)間t0的第一狀態(tài)度量標(biāo)準(zhǔn)上提供第一數(shù)值的加法器和從適合于時(shí)間t0的第二狀態(tài)度量標(biāo)準(zhǔn)減去轉(zhuǎn)變度量標(biāo)準(zhǔn)提供第二數(shù)值的加法器,用來確定適合于每個(gè)格子結(jié)構(gòu)狀態(tài)的對應(yīng)的第一和第二數(shù)值的最大值的比較器和用來為選定的格子結(jié)構(gòu)狀態(tài)選擇對應(yīng)的第一和第二數(shù)值的最大值的數(shù)據(jù)選擇器。
19.一種處理器,其中包括用來儲(chǔ)存用于數(shù)字信號(hào)計(jì)算的指令和操作數(shù)的存儲(chǔ)器;用來產(chǎn)生用來從所述的存儲(chǔ)器取出一些選定的所述指令的指令地址的程序定序器;第一計(jì)算模塊,它包括用來暫時(shí)儲(chǔ)存操作數(shù)和結(jié)果的寄存器堆和用來根據(jù)格子結(jié)構(gòu)指令規(guī)定的適合于時(shí)間t0的α度量標(biāo)準(zhǔn)和從時(shí)間t0到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)執(zhí)行格子結(jié)構(gòu)指令的加速器,所述的加速器包括用來基于適合于t0的α度量標(biāo)準(zhǔn)和轉(zhuǎn)變度量標(biāo)準(zhǔn)計(jì)算適合于在時(shí)間t1選定的格子結(jié)構(gòu)狀態(tài)的α度量標(biāo)準(zhǔn)的裝置;以及第二計(jì)算模塊,它包括用來暫時(shí)儲(chǔ)存操作數(shù)和結(jié)果的寄存器堆和用來根據(jù)指令規(guī)定的適合于時(shí)間t2的β度量標(biāo)準(zhǔn)和從時(shí)間t2到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)執(zhí)行格子結(jié)構(gòu)指令的加速器,所述的加速器包括用來基于適合于t2的β度量標(biāo)準(zhǔn)和從時(shí)間t2到時(shí)間t1的轉(zhuǎn)變度量標(biāo)準(zhǔn)計(jì)算適合于在時(shí)間t1選定的格子結(jié)構(gòu)狀態(tài)的β度量標(biāo)準(zhǔn)的裝置。
20.一種處理器,其中包括用來儲(chǔ)存用于數(shù)字信號(hào)計(jì)算的指令和操作數(shù)的存儲(chǔ)器;用來產(chǎn)生用來從所述的存儲(chǔ)器取出一些選定的所述指令的指令地址的程序定序器;以及計(jì)算模塊,它包括用來暫時(shí)儲(chǔ)存操作數(shù)和結(jié)果的寄存器堆和用來執(zhí)行規(guī)定第一、第二、第三和第四參數(shù)的位置的對數(shù)MAP指令的加速器,所述的加速器包括用來計(jì)算第一和第二參數(shù)的和數(shù)或差值提供第一數(shù)值的第一加法器和用來計(jì)算第三和第四個(gè)參數(shù)的和數(shù)或差值提供第二數(shù)值的第二加法器、用來選擇第一和第二數(shù)值的最大值的數(shù)據(jù)選擇器、用來產(chǎn)生作為第一和第二數(shù)值的函數(shù)的修正因子的查詢表和用來把修正因子加到最大數(shù)值上提供對數(shù)MAP結(jié)果的第三加法器。
21.一種在數(shù)字信號(hào)處理器的計(jì)算模塊中使用的加速器,其中包括用來接收給加速器的輸入的第一進(jìn)位存儲(chǔ)加法器;用來把和數(shù)與第一進(jìn)位存儲(chǔ)加法器的進(jìn)位輸出合并的第一全加器;用來根據(jù)第一全加器的輸出產(chǎn)生修正因子的查詢表;用來根據(jù)第一全加器的輸出選擇一個(gè)或多個(gè)給加速器的輸入的多路復(fù)用器;用來把多路復(fù)用器的一個(gè)或多個(gè)輸出與查詢表的輸出相加的第二進(jìn)位存儲(chǔ)加法器;以及用來把和數(shù)與第二進(jìn)位存儲(chǔ)加法器的進(jìn)位輸出合并的第二全加器。
22.根據(jù)權(quán)利要求21的加速器,其中第一進(jìn)位存儲(chǔ)加法器有四個(gè)輸入,多路復(fù)用器選擇四個(gè)輸入中的兩個(gè),而第二進(jìn)位存儲(chǔ)加法器有三個(gè)輸入。
23.根據(jù)權(quán)利要求22的加速器,進(jìn)一步包括用來把和數(shù)與第二進(jìn)位和數(shù)加法器的進(jìn)位輸出供應(yīng)給第一進(jìn)位和數(shù)加法器的輸入的數(shù)據(jù)選擇器。
24.根據(jù)權(quán)利要求21的加速器,其中所述的第一進(jìn)位存儲(chǔ)加法器和所述的第一全加器包括第一流水線級(jí),所述的查詢表、所述的多路復(fù)用器和所述的第二進(jìn)位存儲(chǔ)加法器包括第二流水線級(jí),而所述的第二全加器包括第三流水線級(jí)。
全文摘要
數(shù)字信號(hào)處理器(110)在無線系統(tǒng)中完成Turbo和Virterbi信道解碼。數(shù)字信號(hào)處理器(110)的計(jì)算模塊(112,114)備有用來執(zhí)行與格子結(jié)構(gòu)計(jì)算相關(guān)聯(lián)的指令的加速器。ACS指令完成α和β度量標(biāo)準(zhǔn)的格子結(jié)構(gòu)計(jì)算。作為對單一指令的響應(yīng),能夠完成多樣的蝶式計(jì)算。TMAX指令用來計(jì)算格子結(jié)構(gòu)的對數(shù)擬然比。
文檔編號(hào)H03M13/29GK1554152SQ02817521
公開日2004年12月8日 申請日期2002年8月6日 優(yōu)先權(quán)日2001年8月6日
發(fā)明者斯蒂芬·J·普蘭特, 斯蒂芬 J 普蘭特, 格林菲爾德, 澤維·格林菲爾德 申請人:模擬裝置公司