提出用TMS320LF2407和FPGA實現電能監測的一種方案,闡述各模塊的設計和實現方法,本方案中,FPGA用于采樣16路交流信號并進行64次諧波分析;DSP和于電力參數的計算。為了提高其通用性,還用FPGA設計了與外界通信的并口、串口模塊,并實現了同TMS320LF2407的并行和串行通信。 隨著人們對電能質量要求的日益提高,如何保證電能質量就成為一個熱門話題。電能質量監測的一項主要內容是諧波檢測,即對多路模擬信號進行采集并進行諧波分析。本系統對16路50Hz模塊信號進行采樣并進行64次諧波分析。如果僅僅依靠一個MCU(單片機或控制型DSP)來進行處理,往往達不到實時性要求,所以采用DSP和FPGA相結合的方法。利用DSP對電力參數進行計算,利用FPGA進行諧波分析。 系統主要包括數據采集電路、ADC模塊、FPGA模塊、DSP模塊及上位機顯示模塊,其結構如圖1所示。 1 數據采集電路和ADC模塊 對經過互感器調理成-3.3~+3.3V(ADC測量的最大量程)的信號進行采樣。根據香農抽樣定理,對最高頻率fc的連續信號進行抽樣,須保留其全部內容。抽樣頻率fs滿足條件為:fs≥2fc。如圖1系統框圖所示,本系統中,ADC采用的是MAX125,其單通道的轉換時間為3μs。若利用內部的采樣保持器,可以同時采樣4路信號,轉換時間為12μs。為了同時采集已經過調理的16路模擬信號,必須對其進行采樣/保持。在前向通道使用16路采樣/保持器(SMP04),再使用多路開關(MAX306)依次選擇這16路信號,輸入到MAX125的一個通道(CH1A),并由FPGA發出轉換信號CONVST。待轉換結束,MAX125發出INT中斷,通知FPGA讀取轉換結果?傊蒄PGA中的ADC控制模塊完成對MAX125、MAX306及SMP04的控制以及對MAX125信號的中斷響應。 2 FPGA模塊 FPGA模塊主要完成通信、數據采集、ADC模塊的數據讀取、保存及底層的信號預處理計算——諧波分析。FPGA工作流程如圖2所示。其子模塊有:ADC控制模塊、ADC采樣數據保存區、FFT工作RAM、FFT運算結果保存區、開方修改正表、開方運算單元、諧波系數存放區以及串行、并行通信控制模塊。 (1)ADC控制模塊 圖3所示ADC控制模塊除了完成對MAX125、MAX306及SMP04的控制外,還要響應MAX125的中斷(INT)來讀取轉換結果,并將其保存到ADC采樣數據保存區。如圖3所示,為了更準確地產生控制時序,對系統的采樣周期及相位的鎖定都采取了相應的處理。待采樣信號先經過方波轉換電路,將其轉換成0~+3.3V的方波信號,再經過FPGA中的數字鎖相環模塊,根據外部時鐘和計數器測量出其周期,作為下一個待采樣信號的采樣周期。這樣就減小了由于待采樣信號頻率的漂移而帶來的采樣周期的誤差。本系統采用的數字鎖相環在FPGA中實現,其具體的性能為:鎖相環的捕捉帶Δfmax=12.5Hz,鎖相頻率為50Hz±12.5Hz=37.5~62.5Hz,隨后產生的采樣周期Ts能夠滿足實際應用的要求。同時,根據多路開關信號和計數器,產生ADC采樣數據保存區地址,保存來自MAX125的14位數字量。 (2)諧波分析模塊 本系統中,采用快速傅里葉變換(FFT)進行諧波分析,主要因為FFT使N點DFT的乘法計算由N2次減少到(N/2)log2N次。由FFT工作流程圖可知,本系統在分析64次諧波時,整個運算分6級。在第一級蝶形運算中,蝶形運算單元根據算法控制模塊的控制信號,從ADC采樣數據保存區取出原始數據,從旋轉因子ROM中取出旋轉因子,進行FFT的第一級蝶形運算,并將結果存入FFT工作RAM。在以后的各級蝶形運算中,蝶形運算單元從FFT工作RAM中取出間數據,從旋轉因子ROM中取出旋轉因子,進行運算,直至第六級蝶形運算結束,并將結果存放到運算結果保存區,以便進行各次諧波系數計算。 在進行FPGA設計中,為了節省器件的內部資源,其計算內核采用復用技術進行設計,其基本原理如圖4所示。 在FFT運算中,一個蝶形運算單元和一組工作RAM被重復使用,其中最重要的是FFT工作控制邏輯的實現。它主要完成從ADC采樣數據保存區取出數據、向FFT工作RAM中寫入和讀取數據以及向FFT結果存放區存放結果等工作。 根據FFT運算的結果z=dinr+jdini,計算各次諧波的系數 (其中,dinr為結果的實路,dini為結果的虛部, 。在進行開方運算時,若設計64M×13位長度的存儲器進行查表計算,對于現有的可編程邏輯器件來說是很難實現的。因此,本次設計中采用了修正查表算法:將待開方的數據z=(dinr2+dini2)左移m次(m為偶數),直到其最高兩位不全為0,此時z變為z1;取z1的高8位來查表(此時表長為2 8=256個字)得到t1;使用牛頓一次迭代公式t=(t1+z1/t1)/2,對t1進行修正得到t;最后將t右移m/2次,得到開方結果。實驗證明,上述修正后的查表法誤差在允許的范圍內,對本系統來說是可行的。 在軟件方面,為了提高芯片的性能及資源利用率,采用Quartus II 2.0t Synplify7.1。在Synplify中使用有效的代碼,采取流水線設計、優化組合邏輯及減少邏輯延時等措施來提高整體性能,還進行了多個文件的分塊設計,然后將這些文件映射到頂層文件進行綜合,并運行VHDL或者Verilog HDL對單個文件編寫、信真和優化。在用到組合邏輯時,Synplify會盡量避免鎖存器的出現,節省邏輯單元。對于ACEX系列的芯片,它還支持寄存器配平技術、流水線操作、復制邏輯模塊及使用LPM函數等技術來提高其整體性能。Synplify和其它結合軟件一樣,編譯后生成的電子設計交換格式文件(EDIF)可以在MAX+PLUS II或Quartus II 2.0中進行編譯、分別引腳和其它優化處理。因此,采用Quartus II 2.0和Synplify7.1相結合,對FPGA進行設計、優化及綜合,不僅能提高系統性能,還能提高芯片資源的利用率。 (3)通信接口模塊 為了靈活地與外界系統進行連接,FPGA提供了并行通信和串行通信兩種形式。并行通信可以直接和DSP連接組成電力監測和控制系統;串行通信不僅可以方便地和DSP連接,不可以和不具備諧波分析功能的系統組成更加完善的電力監測系統。 以于并行通信,如系統框圖所示,根據規劃好的LF2407擴展I/O空間,由LF2407的高位地址線的邏輯組合來產生FPGA選片信號,低位地址線向LF2407輸出要訪問數據的地址,在IS引腳的下降沿,FPGA中的數據傳輸到LF2407的數據總線。值得注意的是,在編寫FPGA的并行通信模塊時,除了編寫相應的控制程序以外,還要利用LF2407的IS引腳來選通FPGA的三態總線進行數據輸出,這樣可以避免FPGA與LF2407的數據接口影響LF2407的工作。 如果利用FPGA進行串行通信,則可以完善已有的電力監測系統。為了使其能和現有的設備更好的進行連接,還設計了TMS320LF2407和FPGA之間的串行通信。本系統中,LF2407包含了可以直接利用RS232通信的串行通信接口(SCI)模塊,所以對FPGA編寫串行通信接口模塊時,要保證和LF2407相同的通信格式。本系統在實際設計中采用的通信格式為:1個起始位,8個數據位,1個奇/校驗位,1個停止位。TMS320LF2407的串口通訊電路如圖5所示。 FPGA的UART模塊中,確定相同通信格式的同時,還要確定相同的波特率,并根據波特率產生發送、接收時鐘。對于數據的發送,FPGA監測txrdy(發送就緒)信號。如果txrdy=“1”,就從待發送數據區中取出數據寫入UART的數據總線,隨后產生一位起始位。然后,利用發送時鐘觸發移位寄存器,將待發送數據送到內部寄存器,將數據依次送到發送端(TX)。最后,根據發送數據的“1”的個數,加上校驗位和停止位,就實現了數據的串行發送。 FPGA的監測單元監測到RX的下降沿,則啟動接收單元。在采樣時鐘的上升沿對接收信號進行采樣,高電平為“1”,低電平為“0”。然后通過移位寄存器,將串行數據轉換成并行的8位數據,完成數據的接收。 3 DSP模塊 根據算法的分配,高層的信號處理量小,但控制結構復雜,適合用處理速度較快的DSP來處理。本系統中,DSP主要是根據FPGA中模擬量的采樣結果和運算結果,計算電力參數以及發出相應的控制信號。如有必要,還可以用液晶來顯示結果。 對于LF2407和FPGA的并行通信,使用LF2407的擴展I/O來讀取FPGA中ADC采樣數據保存區和各次諧波系數放區中數據。LF2407可以直接使用IN和OUT指令對FPGA進行讀寫。 對于串行通信,LF2407向FPGA發送數據。只要查詢SCICTL2的7號位,來判斷發送器是否為高。如果為空,LF2407就可以向FPGA發送數據(命令),控制FPGA的運行。同樣,LF2407采用中斷方式接收從FPGA發送來的數據。LF2407接收中斷的向量地址為INT1(0002H),外圍中斷向量為0006H。 4 總結 本系統已完成實驗室樣機制作與調試,證明設計正確,可以完成對電力質量進行監測的任務。在電力監測系統中,通過FPGA和DSP相結合,可使測量更靈活、控制更方便。本系統有選擇地進行并行通信或串行通信,使設計更加靈活多變,有利于系統的擴展,方便與其它電力測控系統直接相邊,而且適于模塊化設計,提高算法效率,縮短開發周期。 |