數字上變頻/下變頻(DUC/DDC, digital up convert/ digital down convert)是數字中頻設計的重要組成部分,其功能是將基帶信號經過內插濾波后變到中頻的頻率,或者將中頻的信號經過抽取濾波后降到基帶的頻率上。系統設計者經常面臨的問題是天線數目以及載波數目在不同應用場景下會改變,此時FPGA則提供了一種非常靈活的設計實現手段。本文的主要目的就是介紹多天線多載波數字上下變頻的FPGA實現方法,以及Altera提供的一種數字信號處理的工具,DSP BUILDER。 DUC/DDC的實現架構 以TD-SCDMA的DUC/DDC為例,基帶頻率1.28MHz, 4天線9載波,60倍上變頻,30倍下變頻的情況下,DUC的架構如圖1所示 圖1,DUC的架構 首先4天線9載波,每個載波分IQ兩路,一共4×9×2=72個通道,這72個通道的數據先由duc_input_mux模塊復合到一路上,輸入到duc_rrc_filter上,做2倍內插以及根升余弦濾波,這是一個121階的濾波器;輸出結果分成4路,分別送到4個int5_filter(61階)模塊中,做5倍內插及補償濾波;這4個濾波器的輸出再被分成24路,送進int6_filter(41階)模塊中,做6倍內插及濾波;其結果進入混頻模塊mixer,與NCO產生的中頻信號混頻后作為最終結果輸出。 DDC的架構如圖2所示 圖2,DDC的架構 對DDC而言,入口是4個天線下來的數據,經過混頻器區分到不同頻點上,再由抽取濾波器dec5_filter(41階)做5倍抽取以及濾波;結果復合到3路上,由3個dec3_filter(61階)做3倍抽取濾波;最后由ddc_rrc_filter(121階)做兩倍抽取以及濾波。 我們可以看出,對DUC/DDC而言,主要模塊是FIR濾波器,混頻器,以及數控振蕩器NCO,復用解復用邏輯占用的資源非常小。濾波器占用了大部分資源,包括查找表,寄存器,RAM,乘法器。因此優化濾波器設計,以節省資源,用盡量小規模的FPGA實現更多通道的數字上下變頻,成為主要的實現難度。 DSP-BUILDER簡介 DSP-BUILDER是Altera Corporation的一種設計工具,可以把它看作MATLAB SIMULINK和FPGA實現軟件QUARTUS II之間的一個橋梁。簡單來說,在SIMULINK環境下,調用DSP-BUILDER提供的庫元件,搭建的這么一個數學模型系統,不僅可以在MATLAB中仿真,還能直接生成一個ALTERA FPGA的工程,綜合布局布線后上硬件驗證。這里有一點是要強調的,只能調用DSP-BUILDER中的庫元件才能生成一個可以綜合實現的工程。 DSP-BUILDER8.0以后的版本,提供了一個新的ADVANCED BLOCK的特性,用這個新特性產生的FIR濾波器,較之以往的版本,在資源優化方面有了巨大的改進。如18通道61階的5倍內插濾波器,由老版本生成的IP所占用的資源與ADVANCED BLOCK的比較,如下表所示: ALUTREGM9KDSP18*18 老版本3116522813 advanced217533712 老版本生成的IP所占用的資源與ADVANCED BLOCK的比較 可以看出,使用ADVANCED BLOCK, 無論是查找表,寄存器,還是RAM的資源,都有非常明顯的降低。 此外ADVANCED BLOCK還有一些顯著的優點: 1、通道接口較之以往變的非常簡單清晰,無論輸入輸出,主要信號只有3個,數據data,數據有效data_vld以及通道號channel。 2、自動插入流水。只需要設置好相應參數,如時鐘頻率,目標器件,復用倍數等,它會在使用盡量少的資源并且滿足時序的情況下,自動判斷是否加入PIPELINE。 3、系統層面的設計。它生成的所有模塊,包括FIR濾波器,都有一組系統接口,可以通過不同地址對內部寄存器,如系數等,進行訪問。 4、自動實現資源復用。在時鐘復用關系確定后,它能自動實現資源復用,使設計者從繁瑣的優化工作中解放出來,專注于系統層面的設計。 整個設計的FPGA實現的資源以及功耗 這個4天線9載波的設計在Altera Corporation 的3SE80F1152I3上實現,工作頻率為180倍基帶速率時鐘,即230MHz。所消耗資源如下表所示 ALUTREGM9KDSP18*18 數目1338519068330532 所占百分比 %21%30%67%79% 整個設計的FPGA實現的資源以及功耗 內核靜態功耗為734.58mW 內核動態功耗為2705.63mW IO功耗為236.82mW 全部功耗加起來為3677.04mW。 3SE80是Altera CORPORATION的65納米產品STRATIX III中的一款。這一系列產品在設計過程中考慮了很多功耗優化的因素,因此功耗特性比較好。比如內核電壓,它是0.9V/1.1V可選,上述設計用的是1.1V電壓,如果用0.9V的話,功耗還可以再降低30%。但有一點需要客戶注意,使用0.9V電壓的話,整個設計的時序會降低15%左右。 |