李曉龍,陳琳,謝林峰
(四川九洲電器集團有限責任公司,四川綿陽,621000)
FPGA的功耗由靜態(tài)功耗與動態(tài)功耗組成。靜態(tài)功耗是FPGA配置完成后,所有供電軌道與電路引腳的漏電流形成的功耗。加入空bit后,該bit設置所有的相關管腳為高阻態(tài),即可完成FPGA靜態(tài)功耗的測試。動態(tài)功耗與具體的設計相關,由供電水平、消耗的邏輯、電路開關率與布線資源決定。本文以降低FPGA的動態(tài)功耗為目標,選取典型的通信信號處理電路作為邏輯設計,在此基礎上探討動態(tài)功耗降低方法。
通信信號處理邏輯電路從功能上劃分可分為發(fā)射、接收、控制三大部分,其中發(fā)射電路主要包括擴頻模塊、編碼模塊、DDS控制模塊,接收電路主要包括DDC模塊、解碼模塊、解擴模塊、相關峰判斷模塊、解調(diào)模塊、數(shù)據(jù)上報模塊。發(fā)射、接收兩大部分電路分時工作,因此,發(fā)射、接收兩大部分電路可設計時鐘使能接口,由控制電路產(chǎn)生使能信號,按照一定的時序控制發(fā)射/接收電路。具體如圖1所示。
圖1 邏輯電路設計框圖
按照數(shù)字接收的處理流程:數(shù)字下變頻→同步→解調(diào)→解碼→上報數(shù)據(jù),AD送出的數(shù)字信號,經(jīng)過上述流程,采取流水線結(jié)構,即可實現(xiàn)數(shù)據(jù)的實時接收、解碼。為了降低接收電路的動態(tài)功耗,進一步分解接收電路的工作狀態(tài):
數(shù)字下變頻、同步過程處于實時接收狀態(tài),即數(shù)字下變頻模塊(DDC)、相關峰判斷模塊實時工作;
解擴、解碼、解調(diào)、上報數(shù)據(jù)過程處于受控狀態(tài),即經(jīng)過數(shù)字下變頻模塊與相關峰判斷模塊處理后,若能正確同步,則使能解擴模塊、解調(diào)模塊、解碼模塊、數(shù)據(jù)上報模塊,若無法正確同步,解擴模塊、解調(diào)模塊、解碼模塊、數(shù)據(jù)上報模塊則繼續(xù)處于休眠狀態(tài)。
控制模塊接收同步標志syn_flag,產(chǎn)生一定寬度的高脈沖使能信號decode_en,控制后續(xù)處理電路的狀態(tài),此時,發(fā)射電路部分處于休眠狀態(tài)。各模塊功能如下所述:
(a)ad_data為模數(shù)轉(zhuǎn)換器ADC采樣所得的數(shù)據(jù),其采樣頻率一般與FPGA的主要工作頻率相同;
(b)通過并行接口與FPGA相連,將ad_data送至FPGA;
(c)DDC模塊接收ad_data,經(jīng)過數(shù)字下變頻、數(shù)字濾波將ad_data下變頻至基帶;
(d)DDC模塊一直處于工作狀態(tài),采取流水線結(jié)構,將處理后的數(shù)據(jù)送至相關峰判斷模塊;
(e)相關峰判斷模塊采用本地產(chǎn)生的擴頻碼與原始基帶數(shù)據(jù)作滑動相關,實時計算相關后的能量值;
(f)相關峰判斷模塊一直處于工作狀態(tài),將實時計算得到的能量值與同時計算的動態(tài)門限值作比較,根據(jù)比較結(jié)果與峰值判斷條件共同錄取相關峰;
(g)若錄取到的相關峰個數(shù)滿足一定的條件,如peak_num>n(n可 取4,6,8)個,則判定同步成功,輸出同步標志syn_flag;
(h)控制模塊接收syn_flag標志,根據(jù)當前工作狀態(tài),輸出decode_en信號;
(i)解擴模塊在decode_en信號有效前,一直處于休眠狀態(tài),當decode_en信號有效后,則立即工作,接收DDC模塊輸出的數(shù)據(jù)段基帶信號,使用本地產(chǎn)生的擴頻碼進行相關,并將相關后的結(jié)果送至解調(diào)模塊;
(j)解調(diào)模塊在decode_en信號有效前,一直處于休眠狀態(tài),當decode_en信號有效后,進行BPSK解調(diào),并將解調(diào)后的信號送至解碼模塊;
(k)解碼模塊在decode_en信號有效前,一直處于休眠狀態(tài),當decode_en信號有效后,則開始對數(shù)據(jù)段基帶信號進行解碼;
(l)數(shù)據(jù)上報模塊在decode_en信號有效前,一直處于休眠狀態(tài),當decode_en信號有效后,則按一定格式組織解碼后的數(shù)據(jù),完成數(shù)據(jù)上報。
接收電路信號處理如圖2所示。
圖2 接收電路工作流程圖
依據(jù)電路分時工作的特性,發(fā)射電路的工作狀態(tài)切換受到接收電路的信號處理的影響。當接收電路正確解碼且組織好一定數(shù)據(jù)后,發(fā)射電路開始正常工作,其余時間,發(fā)射電路處于休眠狀態(tài),即編碼模塊、擴頻模塊、DDS控制模塊、時序產(chǎn)生模塊的時鐘使能信號tx_en無效。各模塊功能如下所述:
(a)base_bit為原始基帶數(shù)據(jù),采用串行方式輸入進編碼模塊進行編碼;
(b)編碼模塊、擴頻模塊、時序控制模塊、DDS控制模塊在時鐘使能信號tx_en有效前,一直處于休眠狀態(tài),當時鐘使能信號tx_en有效后,則切換至工作狀態(tài);
(c)編碼模塊主要完成原始數(shù)據(jù)的編碼,加入錯誤校驗信息bit,增強糾錯能力,編碼方法采用卷積編碼;
(d)擴頻模塊依據(jù)參數(shù)產(chǎn)生擴頻碼,并綜合擴頻碼與卷積編碼信息bit,完成擴頻;
(e)編碼后的基帶信息bit上變頻至中頻采用數(shù)字頻率合成的方法,依靠DDS器件(典型如AD9954)完成上變頻與BPSK調(diào)制,DDS主要寄存器說明見第3節(jié);
(f)DDS控制模塊完成DDS器件狀態(tài)設置、參數(shù)配置,并將編碼后數(shù)據(jù)信息送入DDS器件,完成BPSK調(diào)制與上變頻;
(g)時序控制模塊則完成發(fā)射時模塊工作、信道發(fā)射支路使能信號的控制,如tx_bd1、tx_bd2、tx_xd信號的置位。
發(fā)射電路信號處理流程圖如圖3所示。
圖3 發(fā)射電路工作流程圖
信號時序圖如圖4所示。
圖4 信號處理使能信號時序圖
其中Tr1為接收到ad_data到生成同步頭標志syn_flag的處理時間,Tr2為生成decode_en的處理時間,Tw1為decode_en信號有效的時間,其在同步后接收數(shù)據(jù)時間段一直有效。T1為接收/發(fā)射轉(zhuǎn)換所需時間,Tt1為發(fā)射開始信號到tx_en信號有效的處理時間,Tw2為發(fā)射使能信號tx_en有效的時間,其在發(fā)射時間段一直有效。Tw3為信道發(fā)射支路使能信tx_xd號有效時間,其寬度略小于Tw2,在發(fā)射時間段一直有效。Tw5為tx_bd1信號有效時間,其寬度等于發(fā)射時間段,Tw4為DDS器件工作使能信號tx_bd2有效時間,其寬度略大于Tw5時間,Tt4為預留的DDS器件的響應時間。Tt3+Tt4為預留的信道響應時間。
AD9954是由ADI公司研發(fā)的一款低功耗、高性能直接數(shù)字頻率合成器。其內(nèi)部集成14位高性能DAC,內(nèi)部最大時鐘頻率為400MSPS,具備多種模式,支持相位調(diào)制、頻率調(diào)制等工作模式,其配置包含內(nèi)部VCO配置、頻率字、相位設置等方面,相關寄存器控制說明如下所示:
(1)CFR1寄存器主要實現(xiàn)模式控制等內(nèi)部控制指令,為 實 現(xiàn)BPSK調(diào) 制,可 置 位“RAM Enable”,“OSK Enable”等控制bit,使能內(nèi)部RAM與開啟OSK調(diào)制;
(2)CFR2寄存器主要完成內(nèi)部VCO配置與AD9954輸出的幅度控制。使用內(nèi)部VCO生成系統(tǒng)工作時鐘時,“REFCLK Multiplier”設置倍頻系數(shù),此時需注意VCO工作頻段。當VCO工作在100MHz至250MHz時,“VCO Range”設為0,當VCO工作在250MHz至400MHz時,“VCO Range”設置為1。輸出的幅度值由“Amplitude Scale Factor Register”控制;
(3)FTW0寄存設置輸出信號的頻率,可根據(jù)輸出信號的頻率與公式計算FTW0寄存器值。計算公式為:
(4)由AD9954實現(xiàn)BPSK的具體思路為:采用RAM模式,RAM空間0存儲相位值“0”,RAM空間1存儲相位值“π”。當FPGA輸出bit 0時,器件內(nèi)部的相位偏移模塊“PHASE OFFSET”選擇RAM0的數(shù)據(jù),即相位值“0”。當FPGA輸出bit 1時,“PHASE OFFSET”選擇RAM1的數(shù)據(jù),即相位值“π”,從而實現(xiàn)輸出信號相位的快速切換,切換時間為24個系統(tǒng)時鐘周期,相關寄存器為RSCW寄存器,BPSK需要切換的相位為2個,因此,僅需要配置2個RSCW寄存器RSCW0,RSCW1。
(5)設置RSCW0的RAM起始地址與結(jié)束地址,“Ramp Rate”設為0。設置RSCW1的RAM起始地址與結(jié)束地址,“Ramp Rate”設為0。
(6)按步驟(5)設置的地址向RAM寫入相位數(shù)據(jù),即相位值“0”寫入0,相位值“π”寫入“0x80000000”。
(7)存儲相位值的RAM0,RAM1由相對應的管腳PS0控制,即當PS0為0時,選擇RAM0的數(shù)據(jù),當PS0為1時,選擇RAM1的數(shù)據(jù),從而實現(xiàn)相位切換。
作為發(fā)射支路上實現(xiàn)上變頻的部件,AD9954同樣具備功耗控制接口。有寄存器與管腳控制兩種方式控制DDS的工作狀態(tài)。配置寄存器CFR1的“Digital Power Down”、“Comp Power-Down” 與“DAC Power-Down”bit,即可完成對器件內(nèi)部數(shù)字電路、比較器與DAC的電源控制。也可采用置高“power down”管腳的方式。使用“power down”管腳,可斷電器件絕大部分電路?;诒疚乃婕暗膽脠鼍?,最小化動態(tài)功耗,采用管腳斷電的方式,即在未發(fā)射的常態(tài),置高power down管腳,使其處于休眠狀態(tài)。
經(jīng)實踐證明,該方法能很好的完成通信信號處理,對性能沒有影響,能夠大幅度降低系統(tǒng)動態(tài)功耗。軟件全部采用verilog HDL語言進行編寫,具有較強的通用性、擴展性和可移植性,同時適用于絕大多數(shù)FPGA。對于使用FPGA作為處理核心的通信設備,該功耗控制方法具備一定的借鑒意義。