基于Xtensa LX處理器實(shí)現(xiàn)RRC濾波器設(shè)計(jì)
SoC設(shè)計(jì)復(fù)雜度不斷增加但設(shè)計(jì)周期卻顯著縮短,設(shè)計(jì)的軟件可編程特性要求越來(lái)越明顯。作為可自由配置和靈活擴(kuò)展的嵌入式微處理器, Xtensa LX處理器不但能滿足控制任務(wù)的要求,而且能夠完成密集計(jì)算型數(shù)據(jù)任務(wù)。該處理器具有獨(dú)特的設(shè)計(jì)流程,含括了從處理器配置到具體硬件實(shí)現(xiàn)的完整過(guò)程。本設(shè)計(jì)針對(duì)Xtensa LX處理器的強(qiáng)大功能,利用Tensilica提供的設(shè)計(jì)技術(shù)完成對(duì)根升余弦濾波器的設(shè)計(jì)實(shí)現(xiàn),并且對(duì)不同實(shí)現(xiàn)方法進(jìn)行比較。
當(dāng)今,在通信與多媒體領(lǐng)域,SoC設(shè)計(jì)越來(lái)越復(fù)雜,設(shè)計(jì)周期越來(lái)越短,而且為了適應(yīng)市場(chǎng)需求及各種應(yīng)用協(xié)議標(biāo)準(zhǔn)不斷變化的要求,SoC設(shè)計(jì)必須靈活且性能優(yōu)越,這就使SoC朝著軟件可編程化發(fā)展,保證在激烈的競(jìng)爭(zhēng)中把產(chǎn)品迅速推向市場(chǎng),滿足消費(fèi)者的不同需求。
圖1:Xtansa LX處理器開(kāi)發(fā)流程。 |
然而,針對(duì)以密集計(jì)算性數(shù)據(jù)處理為目標(biāo)的應(yīng)用,如圖象處理、語(yǔ)音識(shí)別、包交換通信等領(lǐng)域,通用的數(shù)字信號(hào)處理器(DSP)往往缺乏足夠的靈活性來(lái)執(zhí)行復(fù)雜且高帶寬要求的數(shù)據(jù)處理任務(wù),因?yàn)橥ㄓ肈SP有固定大小和帶寬的指令結(jié)構(gòu)集和寄存器,不能針對(duì)不同的應(yīng)用而靈活地調(diào)整,使得這種DSP的運(yùn)行非常緩慢達(dá),不到設(shè)計(jì)要求。并且,一些應(yīng)用領(lǐng)域并不能夠充分利用通用DSP提供的全部特性,這樣導(dǎo)致DSP的資源不必要的浪費(fèi)。但是,如果針對(duì)專有應(yīng)用而開(kāi)發(fā)專用集成電路(AISC),其靈活性也受到很大的限制,而且這種設(shè)計(jì)方法開(kāi)發(fā)周期長(zhǎng)、風(fēng)險(xiǎn)高,并不適合于算法復(fù)雜且靈活變化的應(yīng)用。
不同于傳統(tǒng)的嵌入式通用DSP,Tensilica的Xtensa LX處理器可以自由配置、可以靈活擴(kuò)展并且能夠自動(dòng)生成。設(shè)計(jì)者能夠根據(jù)特殊的應(yīng)用靈活配置處理器,即對(duì)處理器結(jié)構(gòu)進(jìn)行相應(yīng)的裁減,使處理器性能和特殊應(yīng)用達(dá)到完美的匹配。同時(shí),利用Tensilica指令擴(kuò)展(TIE)技術(shù),加入設(shè)計(jì)者自定義的硬件輔助執(zhí)行單元,可以得到與硬件設(shè)計(jì)相媲美的性能、面積和功率特性。
Xtensa LX處理器設(shè)計(jì)流程
作為面向特殊應(yīng)用的可靈活配置和擴(kuò)展的嵌入式微處理器,Xtensa LX處理器有其獨(dú)特的設(shè)計(jì)流程,該流程包括從處理器配置到具體硬件實(shí)現(xiàn)的完整過(guò)程。其中,基于Xtensa LX處理器設(shè)計(jì)的一個(gè)重要特點(diǎn)就是需要借助Tensilica提供的處理器生成器(XPG)來(lái)自動(dòng)產(chǎn)生用戶自定義的處理器軟件和硬件開(kāi)發(fā)環(huán)境。該生成器位于Tensilica公司的服務(wù)器上,用戶在設(shè)計(jì)過(guò)程中需要與其交互才能開(kāi)發(fā)出滿意的專有應(yīng)用處理器。
Xtensa LX處理器完整設(shè)計(jì)流程包括軟件開(kāi)發(fā)與硬件實(shí)現(xiàn)階段,即處理器探索、生成以及實(shí)現(xiàn)三個(gè)步驟。并且針對(duì)不同的設(shè)計(jì)階段,Tensilica提供統(tǒng)一的開(kāi)發(fā)環(huán)境Xtensa Xplorer,設(shè)計(jì)者利用該工具能夠進(jìn)行單處理器與多處理器的開(kāi)發(fā)。圖1顯示了利用XPG和Xtensa Xplorer開(kāi)發(fā)專用應(yīng)用處理器的完整設(shè)計(jì)流程。
首先,根據(jù)算法的特點(diǎn)和復(fù)雜度,設(shè)計(jì)者可靈活配置處理器并生成處理器配置文件(Xtensa Configuration File, XCF),該文件除了包括Xtensa LX處理器的基本指令集結(jié)構(gòu)以外,還含有針對(duì)特殊算法所用到的配置功能,如乘累加運(yùn)算模塊、各種調(diào)試接口以及外圍總線接口等。然后,設(shè)計(jì)者需要把該文件上傳給XPG作自動(dòng)處理,經(jīng)過(guò)一段時(shí)間XPG把處理的結(jié)果又自動(dòng)下載給設(shè)計(jì)者。在該階段,XPG根據(jù)用戶選擇的硬件實(shí)現(xiàn)技術(shù)(目前130或180nm)來(lái)估計(jì)該配置處理器的面積、功耗以及運(yùn)算頻率等,方便用戶設(shè)計(jì)。同時(shí),XPG根據(jù)XCF還能自動(dòng)生成適合于自定義處理器的各種軟件開(kāi)發(fā)工具,包括編譯器、匯編器、連接器、調(diào)試器以及指令集仿真器等。
在這些工具基礎(chǔ)之上,設(shè)計(jì)者就能實(shí)現(xiàn)算法的各種編譯、調(diào)試和仿真等軟件開(kāi)發(fā)工作。在軟件開(kāi)發(fā)階段的另外一項(xiàng)重要工作就是設(shè)計(jì)者根據(jù)處理器指令集的特殊結(jié)構(gòu)以及算法的特點(diǎn),利用指令擴(kuò)展技術(shù)開(kāi)發(fā)出設(shè)計(jì)者自定義的執(zhí)行單元,輔助處理器的運(yùn)算,大規(guī)模提高處理器的處理性能。如果該自定義處理器的性能、面積、功耗以及運(yùn)算頻率等滿足用戶的設(shè)計(jì)要求,配置文件XCF和TIE文件就固定下來(lái),利用它們完成處理器的硬件實(shí)現(xiàn)。如果該處理器不滿足設(shè)計(jì)要求,則可重新開(kāi)始設(shè)計(jì)流程的第一步,不斷反復(fù)設(shè)計(jì)優(yōu)化,直至開(kāi)發(fā)出設(shè)計(jì)者滿意的自定義處理器內(nèi)核。
圖2:RRC濾波器實(shí)現(xiàn)結(jié)構(gòu)。 |
對(duì)于Xtensa LX處理器的硬件實(shí)現(xiàn),XPG需要利用設(shè)計(jì)者確定的配置文件XCF和TIE文件,自動(dòng)生成后端實(shí)現(xiàn)所需要的各種參數(shù)和模塊,包括:RTL仿真模型、處理器網(wǎng)表、各種實(shí)現(xiàn)腳本、靜態(tài)時(shí)序模型、硬件設(shè)計(jì)接口、指令集仿真器、軟硬件協(xié)同仿真模型等等。當(dāng)然,處理器的仿真以及實(shí)現(xiàn)還需要借助各種EDA工具,如NC -Verilog、Design Compiler、PrimeTime、Seamless等。
根升余弦濾波器的設(shè)計(jì)實(shí)現(xiàn)
根據(jù)第三代合作伙伴計(jì)劃(3GPP)規(guī)定,在TD-SCDMA終端通信系統(tǒng)中需要使用根升余弦(Root Raised Cosine, RRC)濾波器來(lái)實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送。在終端系統(tǒng)中,RRC濾波器需要處理大量數(shù)據(jù),通常其算法的實(shí)現(xiàn)都是用硬件來(lái)完成的。而Xtensa
表1:RRC濾波器特性。 |
1. 根升余弦濾波器算法
根升余弦濾波器的沖擊響應(yīng)可表示為
|
其中Tc表示碼片周期,(為滾降因子。通過(guò)大量仿真可以得到,用矩形窗函數(shù)法實(shí)現(xiàn)的RRC濾波器就能夠充分滿足TD-SCDMA通信系統(tǒng)的要求。該濾波器的特性見(jiàn)表1。
通過(guò)公式1和表1,可以先計(jì)算出濾波器的65點(diǎn)沖擊響應(yīng)值,在實(shí)現(xiàn)輸入數(shù)據(jù)的濾波時(shí)就可以直接通過(guò)查表法快速地提取該響應(yīng),方便計(jì)算。
2. 根升余弦濾波器實(shí)現(xiàn)
RRC濾波器對(duì)輸入數(shù)據(jù)的濾波可用下式表示:
|
式中,N為濾波器沖擊響應(yīng)參數(shù),h(n)表示濾波器沖擊響應(yīng),x(n)表示輸入數(shù)據(jù),y(n)表示經(jīng)濾波后的輸出數(shù)據(jù)。根據(jù)公式2的卷積特性,RRC濾波器能用圖2所示的典型結(jié)構(gòu)實(shí)現(xiàn)。
由圖2結(jié)構(gòu)可以看出,該濾波器的實(shí)現(xiàn)包括兩個(gè)操作:輸入數(shù)據(jù)x(n)的移位運(yùn)算,輸入數(shù)據(jù)x(n)與濾波器沖擊響應(yīng)h(n) 的乘累加運(yùn)算。在通用的DSP中,輸入數(shù)據(jù)的每次移位只能有一個(gè)數(shù)據(jù)參加操作,且數(shù)據(jù)的乘累加被分開(kāi)運(yùn)算,即先做乘法再做加法,同時(shí)DSP還要完成對(duì)大量數(shù)據(jù)的存取操作,這些因素使基于通用DSP實(shí)現(xiàn)的RRC濾波器運(yùn)算非常緩慢。而利用Tensilica提供的處理器擴(kuò)展功能,設(shè)計(jì)者能夠方便地加入自定義的執(zhí)行單元輔助處理器完成運(yùn)算工作,加快RRC濾波器的運(yùn)算,達(dá)到與硬件實(shí)現(xiàn)相媲美的處理性能。基于Xtensa LX處理器的RRC濾波器實(shí)現(xiàn),利用Tensilica提供的獨(dú)特的處理技術(shù),有兩種方法可以完成設(shè)計(jì),下面分別論述。
a. 實(shí)現(xiàn)方法一
在通用的DSP中,每次只能一個(gè)數(shù)據(jù)參加移位操作,當(dāng)大量數(shù)據(jù)需要處理時(shí)移位操作會(huì)消耗大量處理時(shí)間。而TIE技術(shù)提供單指令多數(shù)據(jù)(SIMD)功能,該功能允許在一個(gè)處理器指令內(nèi)同時(shí)對(duì)多個(gè)數(shù)據(jù)進(jìn)行操作。在RRC濾波器的移位操作中利用該技術(shù),我們可同時(shí)對(duì)多個(gè)數(shù)據(jù)進(jìn)行移位,從而縮短處理器的執(zhí)行時(shí)間,提高處理器的性能。
表2:方法一Xtansa LX處理器性能。 |
在RRC濾波器處理過(guò)程中,乘累加操作也是主要運(yùn)算工作,如何減少該操作的執(zhí)行時(shí)間也是提高處理器性能的有效途徑之一。 TIE技術(shù)也提供融合(fusion)功能,該功能允許設(shè)計(jì)者把多個(gè)連續(xù)的指令加入到一個(gè)指令中,即用一個(gè)指令就能執(zhí)行多個(gè)連續(xù)的處理動(dòng)作。對(duì)于乘累加操作,在傳統(tǒng)的通用DSP設(shè)計(jì)之中,總是先進(jìn)行乘法運(yùn)算再作加法運(yùn)算,它們是兩個(gè)連續(xù)的操作,需要兩個(gè)處理器指令。而利用融合技術(shù),可以把乘法和加法這兩個(gè)連續(xù)的指令融合在一個(gè)指令中,使得處理器在一個(gè)時(shí)鐘周期內(nèi)就能夠完成乘累加操作,從而加快處理器的執(zhí)行。同時(shí),結(jié)合SIMD技術(shù)可同時(shí)對(duì)多個(gè)輸入數(shù)據(jù)和沖擊響應(yīng)進(jìn)行乘累加操作,進(jìn)一步減少處理器的運(yùn)算時(shí)間,提高處理器性能。利用方法一實(shí)現(xiàn)RRC濾波器的Xtensa LX處理器性能見(jiàn)2。
b. 實(shí)現(xiàn)方法二
在方法一中,雖然運(yùn)用了融合和SIMD技術(shù)提高RRC濾波器處理性能,但DSP對(duì)數(shù)據(jù)的存取依然花費(fèi)了大量的時(shí)間,這是因?yàn)?DSP總線帶寬有一定限制,同時(shí)對(duì)多個(gè)數(shù)據(jù)進(jìn)行讀寫(xiě)操作不能實(shí)現(xiàn)。為了加快處理器執(zhí)行速度,提高對(duì)多個(gè)數(shù)據(jù)進(jìn)行同時(shí)處理的并行性,Tensilaca的 TIE技術(shù)通過(guò)提供特殊的寄存器(state)和用戶自定義的寄存器(regfile),可以顯著的減少處理器在執(zhí)行過(guò)程中對(duì)儲(chǔ)存器操作所花費(fèi)的大量時(shí)間。
在方法一中實(shí)現(xiàn)的RRC濾波器乘累加操作必須等待移位操作完成之后才能進(jìn)行,而且需要反復(fù)對(duì)儲(chǔ)存器讀和寫(xiě)??梢赃\(yùn)用 state和regfile這兩種用戶自定義的特殊寄存器,在state寄存器中存放乘累加的結(jié)果,在regfile寄存器中存放移位操作結(jié)果,這樣,利用融合技術(shù)可以在移位的同時(shí)進(jìn)行乘累加操作,而且不再需要對(duì)儲(chǔ)存器讀寫(xiě)而是直接調(diào)用寄存器操作,在減少DSP存取操作的同時(shí)提高數(shù)據(jù)處理的并行性。
利用上述方法,可節(jié)省大量的處理器運(yùn)行時(shí)鐘數(shù),其性能見(jiàn)表3。
c. 各種實(shí)現(xiàn)方法比較
方法一只從計(jì)算的角度考慮RRC濾波器用到移位和乘累加操作,利用Tensilica提供的融合與SIMD技術(shù)把二者結(jié)合起來(lái),加快處理器的執(zhí)行。然而,該方法在減少計(jì)算量的同時(shí)并沒(méi)有考慮到處理器讀寫(xiě)儲(chǔ)存器所花費(fèi)的時(shí)間。實(shí)際上,按照這種方法所設(shè)計(jì)的濾波器,處理器執(zhí)行過(guò)程中的數(shù)據(jù)運(yùn)算部分已經(jīng)足夠精簡(jiǎn),大部分處理時(shí)間都花在了對(duì)儲(chǔ)存器的操作上。
方法二正好把數(shù)據(jù)運(yùn)算與存儲(chǔ)操作結(jié)合起來(lái),利用Tensilica獨(dú)特的用戶自定義寄存器功能,可以減少對(duì)儲(chǔ)存器的操作,從而加快處理器的運(yùn)算。該方法比前者性能提高將近12倍左右,但因?yàn)檫@種方法利用TIE定義了更多的輔助執(zhí)行單元,所以用此方法實(shí)現(xiàn)的處理器面積更大,這就需要設(shè)計(jì)者有明確的目標(biāo),在性能和面積上作適當(dāng)?shù)倪x擇。當(dāng)然,如果工程師花更多時(shí)間理解和研究Tensilica開(kāi)發(fā)工具,相信還能為算法找到更好的方案。
表3:方法二Xtenasa LX處理器性能。 |
同時(shí),我們也已經(jīng)通過(guò)ASIC設(shè)計(jì)方法實(shí)現(xiàn)了RRC濾波器。利用這種方法處理相同長(zhǎng)度的輸入數(shù)據(jù)共需要2,748個(gè)執(zhí)行時(shí)鐘,所用門(mén)數(shù)在2,700左右??梢?jiàn),方法二實(shí)現(xiàn)的濾波器性能已經(jīng)接近硬件設(shè)計(jì),二者性能只相差3倍左右。但是,因?yàn)閄tensa LX處理器不只含有用戶自定義的執(zhí)行單元,還包含有最基本的指令結(jié)構(gòu)集,使處理器面積不可能做到專用ASIC那么大小。并且算法和應(yīng)用越復(fù)雜才越能充分利用Xtensa LX處理器的基本資源,使處理器不僅性能而且面積也接近ASIC實(shí)現(xiàn),這樣才更能體現(xiàn)LX處理器設(shè)計(jì)靈活、可自由配置和彈性擴(kuò)展的優(yōu)勢(shì)。
本文小結(jié)
Tensilica能夠針對(duì)用戶專用算法,不但提供獨(dú)特的可自由配置和靈活擴(kuò)展的Xtensa LX處理器,而且還自動(dòng)產(chǎn)生適合于該處理器的一系列軟件工具和硬件實(shí)現(xiàn)模型。同時(shí),運(yùn)用Tensilica提供的TIE技術(shù),工程師可以方便快速地開(kāi)發(fā)出自定義執(zhí)行單元輔助處理器的運(yùn)行,大幅度提高處理器性能,滿足用戶的需要。但需要注意的是,作為輔助執(zhí)行單元,TIE技術(shù)會(huì)增加處理器的面積,執(zhí)行頻率也會(huì)受到影響,所以設(shè)計(jì)者應(yīng)該明確自己的目標(biāo),需要在性能與面積及速度中做出折中的選擇。
從以上比較中可以看出,運(yùn)用Tensalica的Xtensa LX處理器實(shí)現(xiàn)的RRC濾波器性能接近硬件實(shí)現(xiàn),而且這種處理器開(kāi)發(fā)周期明顯縮短,設(shè)計(jì)靈活具有軟件可編程特性,在超大型復(fù)雜應(yīng)用中更能體現(xiàn)其強(qiáng)大的優(yōu)勢(shì)。并且當(dāng)復(fù)雜功能的SoC經(jīng)過(guò)多個(gè)Xtensa處理器實(shí)現(xiàn)后,比傳統(tǒng)(CPU+DSP+RTL)的實(shí)現(xiàn)方式更經(jīng)濟(jì)也是有可能的,在開(kāi)發(fā)速度上新方法則有明顯優(yōu)勢(shì)。
參考文檔
1. Tensilica, "Xtensa(r) LX Microprocessor Data Book", Sept. 2004
2. Tensilica, "Xtensa(r) LX Microprocessor Overview Handbook", Sept. 2004 3. Tensilica, "Xtensa(r) Instruction Extension (TIE) Language User's Guide", Sept. 2004
4. Tensilica, "Xtensa(r) Instruction Set Architecture (ISA) Reference Manual", Sept. 2004
5. 3GPP TS 25.102, "UE Radio Transmission and Reception (TDD)(Release 4)", V4.7.0, 2002-12
6. 丁玉美,高西全,西安電子科技大學(xué)出版社“數(shù)字信號(hào)處理(第二版)”,2001年1月
7. 周炯槃,龐沁華,續(xù)大我,吳偉陵,北京郵電大學(xué)出版社,“通信原理(上)”,2003年6月