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