李曉龍,陳琳,謝林峰
(四川九洲電器集團有限責任公司,四川綿陽,621000)
FPGA的功耗由靜態功耗與動態功耗組成。靜態功耗是FPGA配置完成后,所有供電軌道與電路引腳的漏電流形成的功耗。加入空bit后,該bit設置所有的相關管腳為高阻態,即可完成FPGA靜態功耗的測試。動態功耗與具體的設計相關,由供電水平、消耗的邏輯、電路開關率與布線資源決定。本文以降低FPGA的動態功耗為目標,選取典型的通信信號處理電路作為邏輯設計,在此基礎上探討動態功耗降低方法。
通信信號處理邏輯電路從功能上劃分可分為發射、接收、控制三大部分,其中發射電路主要包括擴頻模塊、編碼模塊、DDS控制模塊,接收電路主要包括DDC模塊、解碼模塊、解擴模塊、相關峰判斷模塊、解調模塊、數據上報模塊。發射、接收兩大部分電路分時工作,因此,發射、接收兩大部分電路可設計時鐘使能接口,由控制電路產生使能信號,按照一定的時序控制發射/接收電路。具體如圖1所示。

圖1 邏輯電路設計框圖
按照數字接收的處理流程:數字下變頻→同步→解調→解碼→上報數據,AD送出的數字信號,經過上述流程,采取流水線結構,即可實現數據的實時接收、解碼。為了降低接收電路的動態功耗,進一步分解接收電路的工作狀態:
數字下變頻、同步過程處于實時接收狀態,即數字下變頻模塊(DDC)、相關峰判斷模塊實時工作;
解擴、解碼、解調、上報數據過程處于受控狀態,即經過數字下變頻模塊與相關峰判斷模塊處理后,若能正確同步,則使能解擴模塊、解調模塊、解碼模塊、數據上報模塊,若無法正確同步,解擴模塊、解調模塊、解碼模塊、數據上報模塊則繼續處于休眠狀態。
控制模塊接收同步標志syn_flag,產生一定寬度的高脈沖使能信號decode_en,控制后續處理電路的狀態,此時,發射電路部分處于休眠狀態。各模塊功能如下所述:
(a)ad_data為模數轉換器ADC采樣所得的數據,其采樣頻率一般與FPGA的主要工作頻率相同;
(b)通過并行接口與FPGA相連,將ad_data送至FPGA;
(c)DDC模塊接收ad_data,經過數字下變頻、數字濾波將ad_data下變頻至基帶;
(d)DDC模塊一直處于工作狀態,采取流水線結構,將處理后的數據送至相關峰判斷模塊;
(e)相關峰判斷模塊采用本地產生的擴頻碼與原始基帶數據作滑動相關,實時計算相關后的能量值;
(f)相關峰判斷模塊一直處于工作狀態,將實時計算得到的能量值與同時計算的動態門限值作比較,根據比較結果與峰值判斷條件共同錄取相關峰;
(g)若錄取到的相關峰個數滿足一定的條件,如peak_num>n(n可 取4,6,8)個,則判定同步成功,輸出同步標志syn_flag;
(h)控制模塊接收syn_flag標志,根據當前工作狀態,輸出decode_en信號;
(i)解擴模塊在decode_en信號有效前,一直處于休眠狀態,當decode_en信號有效后,則立即工作,接收DDC模塊輸出的數據段基帶信號,使用本地產生的擴頻碼進行相關,并將相關后的結果送至解調模塊;
(j)解調模塊在decode_en信號有效前,一直處于休眠狀態,當decode_en信號有效后,進行BPSK解調,并將解調后的信號送至解碼模塊;
(k)解碼模塊在decode_en信號有效前,一直處于休眠狀態,當decode_en信號有效后,則開始對數據段基帶信號進行解碼;
(l)數據上報模塊在decode_en信號有效前,一直處于休眠狀態,當decode_en信號有效后,則按一定格式組織解碼后的數據,完成數據上報。
接收電路信號處理如圖2所示。

圖2 接收電路工作流程圖
依據電路分時工作的特性,發射電路的工作狀態切換受到接收電路的信號處理的影響。當接收電路正確解碼且組織好一定數據后,發射電路開始正常工作,其余時間,發射電路處于休眠狀態,即編碼模塊、擴頻模塊、DDS控制模塊、時序產生模塊的時鐘使能信號tx_en無效。各模塊功能如下所述:
(a)base_bit為原始基帶數據,采用串行方式輸入進編碼模塊進行編碼;
(b)編碼模塊、擴頻模塊、時序控制模塊、DDS控制模塊在時鐘使能信號tx_en有效前,一直處于休眠狀態,當時鐘使能信號tx_en有效后,則切換至工作狀態;
(c)編碼模塊主要完成原始數據的編碼,加入錯誤校驗信息bit,增強糾錯能力,編碼方法采用卷積編碼;
(d)擴頻模塊依據參數產生擴頻碼,并綜合擴頻碼與卷積編碼信息bit,完成擴頻;
(e)編碼后的基帶信息bit上變頻至中頻采用數字頻率合成的方法,依靠DDS器件(典型如AD9954)完成上變頻與BPSK調制,DDS主要寄存器說明見第3節;
(f)DDS控制模塊完成DDS器件狀態設置、參數配置,并將編碼后數據信息送入DDS器件,完成BPSK調制與上變頻;
(g)時序控制模塊則完成發射時模塊工作、信道發射支路使能信號的控制,如tx_bd1、tx_bd2、tx_xd信號的置位。
發射電路信號處理流程圖如圖3所示。

圖3 發射電路工作流程圖
信號時序圖如圖4所示。

圖4 信號處理使能信號時序圖
其中Tr1為接收到ad_data到生成同步頭標志syn_flag的處理時間,Tr2為生成decode_en的處理時間,Tw1為decode_en信號有效的時間,其在同步后接收數據時間段一直有效。T1為接收/發射轉換所需時間,Tt1為發射開始信號到tx_en信號有效的處理時間,Tw2為發射使能信號tx_en有效的時間,其在發射時間段一直有效。Tw3為信道發射支路使能信tx_xd號有效時間,其寬度略小于Tw2,在發射時間段一直有效。Tw5為tx_bd1信號有效時間,其寬度等于發射時間段,Tw4為DDS器件工作使能信號tx_bd2有效時間,其寬度略大于Tw5時間,Tt4為預留的DDS器件的響應時間。Tt3+Tt4為預留的信道響應時間。
AD9954是由ADI公司研發的一款低功耗、高性能直接數字頻率合成器。其內部集成14位高性能DAC,內部最大時鐘頻率為400MSPS,具備多種模式,支持相位調制、頻率調制等工作模式,其配置包含內部VCO配置、頻率字、相位設置等方面,相關寄存器控制說明如下所示:
(1)CFR1寄存器主要實現模式控制等內部控制指令,為 實 現BPSK調 制,可 置 位“RAM Enable”,“OSK Enable”等控制bit,使能內部RAM與開啟OSK調制;
(2)CFR2寄存器主要完成內部VCO配置與AD9954輸出的幅度控制。使用內部VCO生成系統工作時鐘時,“REFCLK Multiplier”設置倍頻系數,此時需注意VCO工作頻段。當VCO工作在100MHz至250MHz時,“VCO Range”設為0,當VCO工作在250MHz至400MHz時,“VCO Range”設置為1。輸出的幅度值由“Amplitude Scale Factor Register”控制;
(3)FTW0寄存設置輸出信號的頻率,可根據輸出信號的頻率與公式計算FTW0寄存器值。計算公式為:

(4)由AD9954實現BPSK的具體思路為:采用RAM模式,RAM空間0存儲相位值“0”,RAM空間1存儲相位值“π”。當FPGA輸出bit 0時,器件內部的相位偏移模塊“PHASE OFFSET”選擇RAM0的數據,即相位值“0”。當FPGA輸出bit 1時,“PHASE OFFSET”選擇RAM1的數據,即相位值“π”,從而實現輸出信號相位的快速切換,切換時間為24個系統時鐘周期,相關寄存器為RSCW寄存器,BPSK需要切換的相位為2個,因此,僅需要配置2個RSCW寄存器RSCW0,RSCW1。
(5)設置RSCW0的RAM起始地址與結束地址,“Ramp Rate”設為0。設置RSCW1的RAM起始地址與結束地址,“Ramp Rate”設為0。
(6)按步驟(5)設置的地址向RAM寫入相位數據,即相位值“0”寫入0,相位值“π”寫入“0x80000000”。
(7)存儲相位值的RAM0,RAM1由相對應的管腳PS0控制,即當PS0為0時,選擇RAM0的數據,當PS0為1時,選擇RAM1的數據,從而實現相位切換。
作為發射支路上實現上變頻的部件,AD9954同樣具備功耗控制接口。有寄存器與管腳控制兩種方式控制DDS的工作狀態。配置寄存器CFR1的“Digital Power Down”、“Comp Power-Down” 與“DAC Power-Down”bit,即可完成對器件內部數字電路、比較器與DAC的電源控制。也可采用置高“power down”管腳的方式。使用“power down”管腳,可斷電器件絕大部分電路。基于本文所涉及的應用場景,最小化動態功耗,采用管腳斷電的方式,即在未發射的常態,置高power down管腳,使其處于休眠狀態。
經實踐證明,該方法能很好的完成通信信號處理,對性能沒有影響,能夠大幅度降低系統動態功耗。軟件全部采用verilog HDL語言進行編寫,具有較強的通用性、擴展性和可移植性,同時適用于絕大多數FPGA。對于使用FPGA作為處理核心的通信設備,該功耗控制方法具備一定的借鑒意義。