周國(guó)棟,陳 迅,曹珍珍
(江蘇科技大學(xué) 電子信息學(xué)院,江蘇 鎮(zhèn)江 212003)
隨著用戶用電量需求的不斷增加,與各種大容量非線性負(fù)載的投入使用,使得電力系統(tǒng)的諧波污染越來(lái)越嚴(yán)重[1]。傳統(tǒng)電網(wǎng)監(jiān)測(cè)裝置大多采用單片機(jī),或基于數(shù)字信號(hào)處理器(DSP)及ARM處理器實(shí)現(xiàn)[2],這些系統(tǒng)開發(fā)周期長(zhǎng),系統(tǒng)升級(jí)困難,而采用MicroBlaze軟處理器的SOPC技術(shù)彌補(bǔ)了上述不足。
文中設(shè)計(jì)了基于Xilinx公司FPGA的SOPC電網(wǎng)參數(shù)監(jiān)測(cè)裝置。該裝置將FPGA硬件邏輯具有的快速并行執(zhí)行能力和MicroBlaze軟處理器的靈活性相結(jié)合,前者保證了數(shù)據(jù)處理的實(shí)時(shí)性,后者則實(shí)現(xiàn)了前者不易實(shí)現(xiàn)的功能。該監(jiān)測(cè)裝置可實(shí)時(shí)監(jiān)測(cè)三相電網(wǎng)電壓電流有效值、各次諧波含有率、有功功率、無(wú)功功率和功率因數(shù)等電網(wǎng)參數(shù)。
SOPC(System on a Programmable Chip),即可編程片上系統(tǒng)[3]。它是一種特殊的嵌入式系統(tǒng),將CPU、存儲(chǔ)器、I/O口等系統(tǒng)設(shè)計(jì)所需要的功能模塊集成至一片F(xiàn)PGA芯片上,構(gòu)成可編程的片上系統(tǒng),完成傳統(tǒng)嵌入式系統(tǒng)所能完成的任務(wù)。SOPC設(shè)計(jì)靈活,具備軟、硬件系統(tǒng)均可在線編程的特性,因而系統(tǒng)升級(jí)容易。還可根據(jù)實(shí)際功能需求進(jìn)行功能模塊的裁剪。它占用面積小,可騰出更多面積給電路板上的其它外圍電路使用。
MicroBlaze嵌入式軟核是一個(gè)被Xilinx公司優(yōu)化過的可以嵌入在FPGA中的RISC處理器軟核[4]。它采用傳統(tǒng)的單處理器方法進(jìn)行的基礎(chǔ)設(shè)計(jì),配合Spartan-3E系列FPGA在80MHz的時(shí)鐘頻率下,性能達(dá)到 68 Dhrystone MIPS(DMIPS),運(yùn)行速度快的同時(shí)占用資源少,可配置性強(qiáng)[5]。用戶可以從PPC405,PPC440和MicroBlaze這 3種內(nèi)核處理器中選擇一款合適的處理器。PPC405和PPC440是內(nèi)嵌在Xilinx高端FPGA中的硬核處理器,工作頻率更高,性能更佳,靈活性稍差;MicroBlaze是軟核處理器,一般用于低成本的FPGA上,較之前者工作頻率較低,性能稍差,但靈活性很強(qiáng)。除此之外,用戶還可以從多個(gè)已經(jīng)歸類的外設(shè)IP核和用戶自定義IP核中進(jìn)行選擇 (IP核指具有知識(shí)產(chǎn)權(quán)的集成電路設(shè)計(jì)模塊),以構(gòu)成可裁剪的SOPC系統(tǒng)。
監(jiān)測(cè)裝置主要由信號(hào)調(diào)理電路、過零檢測(cè)電路、鎖相倍頻電路、模數(shù)轉(zhuǎn)換(A/D)電路、FFT運(yùn)算單元、CPU處理單元、LCD顯示、鍵盤等模塊構(gòu)成。實(shí)現(xiàn)對(duì)三相電壓電流有效值、有功功率、無(wú)功功率、功率因數(shù)和各次諧波含有率等參數(shù)的測(cè)量與本地顯示及數(shù)據(jù)傳送。
三相電壓三相電流六路信號(hào),經(jīng)電壓互感器、電流互感器變換,經(jīng)信號(hào)調(diào)理電路(轉(zhuǎn)換、濾波、電平值提升)處理后,提供給模數(shù)轉(zhuǎn)換芯片ADS7864進(jìn)行采樣和轉(zhuǎn)換。在信號(hào)調(diào)理電路中經(jīng)濾波后的信號(hào),提供給過零檢測(cè)電路,輸出的方波經(jīng)鎖相倍頻電路,輸出的信號(hào)作為ADS7864開始工作的觸發(fā)信號(hào)。
諧波參數(shù)的計(jì)算采用傅立葉變換算法 (FFT)實(shí)現(xiàn),該FFT算法由Xilinx公司成熟的FFT IP核完成。該FFT IP核由 ISE(Xilinx軟件集成開發(fā)環(huán)境)工具 Core Generator,根據(jù)計(jì)算精度需求和芯片邏輯資源,綜合判斷后配置生成。在50 MHz的時(shí)鐘頻率下,完成一次512點(diǎn)的FFT運(yùn)算只需要65.7μs,可實(shí)時(shí)在線計(jì)算六路電網(wǎng)信號(hào)的諧波。
FFT處理后的數(shù)據(jù)存入輸出雙口RAM,當(dāng)六路信號(hào)的FFT計(jì)算完畢存入輸出雙口RAM后,產(chǎn)生一個(gè)外部中斷,通知MicroBlaze軟處理器來(lái)取走數(shù)據(jù),做一些簡(jiǎn)單的數(shù)據(jù)算術(shù)處理。最后將處理結(jié)果送給本地LCD顯示,或通過RS-232傳給上位機(jī)做進(jìn)一步的數(shù)據(jù)分析與處理。監(jiān)測(cè)裝置原理圖如圖1所示。
圖1 監(jiān)測(cè)裝置總體結(jié)構(gòu)框圖Fig.1 Overall structure diagram of monitoring device
AD轉(zhuǎn)換芯片只可接受其可接受量程范圍內(nèi)的信號(hào),因而在信號(hào)采樣前須對(duì)輸入信號(hào)做必要的預(yù)處理,主要包括信號(hào)隔離轉(zhuǎn)換電路,濾波電路,電平值提升電路。信號(hào)隔離轉(zhuǎn)換電路完成強(qiáng)電轉(zhuǎn)換成弱電的過程,濾波電路濾除電網(wǎng)高次諧波,以免造成后期信號(hào)處理時(shí)出現(xiàn)頻譜混疊,而電平提升電路,將電平值提升至ADS7864可接受的電平值。另外,電網(wǎng)頻率在50 Hz上下波動(dòng),為了使AD芯片能在均勻時(shí)間間隔內(nèi)對(duì)輸入信號(hào)進(jìn)行采樣,須進(jìn)行頻率跟蹤,以免頻譜泄露。經(jīng)過濾波電路后輸出的電壓信號(hào),通過過零檢測(cè)電路和鎖相倍頻電路實(shí)現(xiàn)頻率跟蹤技術(shù),實(shí)時(shí)準(zhǔn)確地采樣和轉(zhuǎn)換輸入信號(hào)。
A/D芯片采用德州儀器TI公司的ADS7864,它內(nèi)含兩個(gè)12位,2μs的逐次比較型模數(shù)轉(zhuǎn)換器,6個(gè)全差分采樣保持放大器[6]。ADS7864具有6個(gè)模擬輸入通道,被分為3組(A,B和 C),每個(gè) A/D 轉(zhuǎn)換器對(duì)應(yīng) 3 個(gè)輸入 A0、B0、C0和 A1、B1、C1,能同時(shí)進(jìn)行采樣和轉(zhuǎn)換。將三相電壓分別接至A0、B0和C0,三相電流分別接至A1、B1和C1。每組輸入對(duì)應(yīng)一個(gè)控制信號(hào)nHOLDA,nHOLDB和nHOLDC,將這3個(gè)控制信號(hào)接到一個(gè)控制信號(hào)nHOLDX上,可以允許6個(gè)通道同時(shí)采樣。通過拉低控制信號(hào)nHOLDX至少15 ns,轉(zhuǎn)換開始。轉(zhuǎn)換過程中,輸出信號(hào)nBUSY將會(huì)出現(xiàn)3個(gè)負(fù)脈沖,分別表示每組數(shù)據(jù)轉(zhuǎn)換完成。6個(gè)通道的轉(zhuǎn)換結(jié)果分別保存在6個(gè)輸出寄存器上。拉低讀取信號(hào)nRD和片選信號(hào)nCS來(lái)讀取寄存器并行輸出總線上的數(shù)據(jù)。輸出值由16 bits組成,最高位為’1’表示數(shù)據(jù)有效,接著3 bits用來(lái)標(biāo)示6個(gè)通道,低12 bits為轉(zhuǎn)換值。輸出寄存器數(shù)據(jù)讀取模式有3種:?jiǎn)瓮ǖ雷x取,循環(huán)讀取和FIFO模式,通過控制信號(hào)線A0,A1,A2實(shí)現(xiàn)。本設(shè)計(jì)采用循環(huán)讀取模式,第一個(gè)負(fù)脈沖nRD到來(lái)時(shí)讀取A0寄存器值,第二個(gè)負(fù)脈沖nRD到來(lái)時(shí)讀取A1寄存器值,以此類推,循環(huán)讀取 B0、B1、C0和 C1寄存器值。
根據(jù)ADS7864 datasheet上的工作時(shí)序圖,編寫狀態(tài)機(jī)控制。該狀態(tài)機(jī)控制器用HDL硬件描述語(yǔ)言綜合實(shí)現(xiàn)。圖2為通過ISE片內(nèi)邏輯分析儀工具ChipScope捕捉到的該控制器的實(shí)際工作波形。控制過程如下,在系統(tǒng)復(fù)位reset信號(hào)下,狀態(tài)機(jī)進(jìn)入初始化狀態(tài),設(shè)置讀取模式等參數(shù),然后無(wú)條件進(jìn)入IDLE狀態(tài)等待轉(zhuǎn)換。當(dāng)FPGA內(nèi)的邊沿檢測(cè)模塊檢測(cè)到鎖相倍頻電路的輸出信號(hào)PLLCLK的上升沿時(shí),產(chǎn)生一個(gè)負(fù)脈沖送給nHOLDX,轉(zhuǎn)換開始,進(jìn)入轉(zhuǎn)換狀態(tài)。nBUSY信號(hào)出現(xiàn)第一個(gè)負(fù)脈沖表示第一組通道A0和A1轉(zhuǎn)換完成,第二個(gè)負(fù)脈沖表示第二組通道B0和B1轉(zhuǎn)換完成,第三個(gè)負(fù)脈沖表示第三組通道C0和C1轉(zhuǎn)換完成。對(duì)nBUSY負(fù)脈沖計(jì)數(shù),達(dá)到3時(shí)Flag_nBUSY_Ov產(chǎn)生一個(gè)脈沖表示所有通道轉(zhuǎn)換完成。接著狀態(tài)機(jī)進(jìn)入讀取狀態(tài),由于事先將byte信號(hào)接至高電平,為字節(jié)讀取模式,因此6個(gè)通道的轉(zhuǎn)換值需要讀取12次。在12個(gè)nRD負(fù)脈沖作用下,AD_Data出現(xiàn)了12個(gè)字節(jié)數(shù)據(jù),依次構(gòu)成6個(gè)通道的高低位部分。當(dāng)Flag_nRDv由0變?yōu)?時(shí)讀取完成,回到IDLE狀態(tài),等待觸發(fā)信號(hào)PLLCLK上升沿的到來(lái)。
圖2 ADS7864采樣控制器的實(shí)際波形Fig.2 Actual waveform of ADS7864 sampling controller
諧波參數(shù)通過FFT算法計(jì)算,該算法使用Xilinx邏輯IP核FFT IPCore實(shí)現(xiàn),該IP核是經(jīng)過成功驗(yàn)證的高性能低功耗的集成設(shè)計(jì)模塊,能高效進(jìn)行離散傅里葉變換[7]。FFTIPCore的I/O數(shù)據(jù)流采用基-2 Burst I/O結(jié)構(gòu),設(shè)置點(diǎn)數(shù)為512點(diǎn),數(shù)據(jù)格式為定點(diǎn),數(shù)據(jù)輸出順序?yàn)樽匀豁樞颉H鐖D3所示,為FFT IPCore例化模塊方框圖。
圖3 FFT IPCoreFig.3 FFT IPCore
如圖4所示,A/D控制器控制外部ADS7864采樣轉(zhuǎn)換數(shù)據(jù),將轉(zhuǎn)換值讀取至輸入雙口RAM。內(nèi)部讀寫邏輯控制模塊通過控制FFT讀取輸入雙口RAM中的數(shù)據(jù)計(jì)算諧波,當(dāng)FFT計(jì)算完畢,內(nèi)部讀寫邏輯控制模塊將FFT計(jì)算結(jié)果存入輸出雙口RAM。另外,ADS7864采樣的三相電流電壓原始值通過一個(gè)數(shù)據(jù)通道存入輸出雙口RAM,以供后續(xù)計(jì)算電流電壓有效值、有功功率、無(wú)功功率和功率因數(shù)等。MicroBlaze嵌入式系統(tǒng)總線PLB上掛有Bram控制器 (BRAM CNTLR),BRAM CNTLR的一端與PLB總線連接,另一端與輸出雙口RAM連接。當(dāng)輸出雙口RAM中的數(shù)據(jù)準(zhǔn)備好后,以中斷方式通知MicroBlaze處理器取數(shù)據(jù),MicroBlaze通過操縱BRAM CNTLR的地址指針來(lái)讀取輸出雙口RAM中的數(shù)據(jù),然后進(jìn)行一些算術(shù)運(yùn)算,求三相電流電壓有效值、各次諧波含有率、有功功率和無(wú)功功率等參數(shù),最后將求得的結(jié)果送給本地LCD顯示或通過RS232總線送給上位機(jī)進(jìn)行進(jìn)一步數(shù)據(jù)分析與計(jì)算。
圖4 FPGA電路圖Fig.4 Circuit of FPGA
鍵盤、顯示單元負(fù)責(zé)人機(jī)對(duì)話。MicroBlaze處理器將處理后的數(shù)據(jù)送給LCD,實(shí)時(shí)顯示參數(shù)信息。LCD型號(hào)采用LCD1602,該LCD只需7根信號(hào)線進(jìn)行控制,這7根控制信號(hào)線分別為讀寫控制信號(hào)RW,數(shù)據(jù)/指令識(shí)別信號(hào)RS,使能信號(hào)E,4位數(shù)據(jù)總線DB0-DB3。在Xilinx的XPS嵌入式開發(fā)平臺(tái)上通過CIP(Create or Import Peripheral)工具設(shè)計(jì)用戶自定義LCD IP核,在該IP核參數(shù)配置選項(xiàng)中勾選一個(gè)8位的軟件寄存器,低四位對(duì)應(yīng)4位數(shù)據(jù)總線,高四位對(duì)應(yīng)控制線。由于用戶自定義IP核不是Xilinx公司提供的現(xiàn)成IP核,所以需要自己編寫相應(yīng)的驅(qū)動(dòng)程序供應(yīng)用程序調(diào)用[8]。例如,編寫LCD初始化函數(shù),清屏函數(shù),文本設(shè)置函數(shù)等。根據(jù)LCD1602讀寫時(shí)序,由MicroBlaze控制寄存器進(jìn)行數(shù)據(jù)顯示。通過鍵盤按鍵操作來(lái)切換屏幕顯示不同相電力參數(shù)值。
軟件部分包括FPGA HDL程序和MicroBlaze嵌入式C程序。HDL程序在Xilinx集成開發(fā)環(huán)境ISE中完成,使用Verilog HDL硬件描述語(yǔ)言編寫代碼,并編寫相關(guān)測(cè)試代碼進(jìn)行功能驗(yàn)證[9-10]。Verilog HDL硬件模塊由以下幾部分構(gòu)成:A/D采樣控制器模塊、FFT IPCore模塊、輸入雙口RAM與輸出雙口RAM模塊和內(nèi)部邏輯讀寫控制模塊,這些硬件模塊在系統(tǒng)時(shí)鐘節(jié)拍的驅(qū)動(dòng)下按照邏輯時(shí)序有序運(yùn)行。首先A/D控制器將ADS7864轉(zhuǎn)換后的數(shù)據(jù)送入輸入雙口RAM,通過內(nèi)部讀寫控制邏輯將輸入雙口RAM中的數(shù)據(jù)送給FFT運(yùn)算,處理的結(jié)果以中斷的方式通知MicroBlaze處理器讀取。
MicroBlaze從輸出雙口RAM獲得數(shù)據(jù)后,用C語(yǔ)言編寫代碼計(jì)算三相電壓有效值、電流有效值、各次諧波含有率、有功和無(wú)功功率等參數(shù)。MicroBlaze軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方法,由初始化模塊、數(shù)據(jù)計(jì)算模塊、通信顯示模塊等構(gòu)成。采用模塊化設(shè)計(jì)提高了程序可讀性,并且利于今后擴(kuò)展和維護(hù)。Xilinx嵌入式軟件開發(fā)環(huán)境SDK具有完整的軟件開發(fā)流程,既有標(biāo)準(zhǔn)的C/C++編程界面也有豐富的調(diào)試界面。既可以選擇 XMD(Xilinx MicroBlaze Debugger)命名行調(diào)試,也可以選擇GND(GNU Debugger)代碼界面調(diào)試(設(shè)置中斷點(diǎn)、單步和連續(xù)運(yùn)行等)。選擇GND方式調(diào)試時(shí),XMD扮演中間媒介角色,一端連接GND,另一端通過JTAG電纜連接掛在MicroBlaze系統(tǒng)總線上的MDM(MicroBlaze Debugger Module)模塊,實(shí)時(shí)在線調(diào)試系統(tǒng)。參數(shù)計(jì)算結(jié)果既可以送給本地LCD顯示,也可以通過RS232傳給上位機(jī)做進(jìn)一步數(shù)據(jù)分析與計(jì)算。MicroBlaze軟件程序流程圖如圖5所示。
圖5 MicroBlaze軟件程序流程圖Fig.5 Flow chart of MicroBlaze software program
MicroBlaze是一個(gè)功能強(qiáng)大,應(yīng)用靈活的嵌入式軟處理器,特別是其強(qiáng)大的用戶自定義IP核功能,極大地方便了系統(tǒng)設(shè)計(jì)?;谇度胧杰浱幚砥鞯腟OPC開發(fā)方法,將擁有廣闊的應(yīng)用前景。本文采用FPGA邏輯設(shè)計(jì)與MicroBlaze軟處理器相結(jié)合的方法設(shè)計(jì)了電網(wǎng)參數(shù)監(jiān)測(cè)裝置,基于該裝置,可以實(shí)時(shí)在線監(jiān)測(cè)三相電網(wǎng)電壓、電流、諧波、有功功率、無(wú)功功率等參數(shù)。
[1]德拉羅薩.電力系統(tǒng)與諧波分析[M].趙琰,孫秋野,等譯.北京:機(jī)械工業(yè)出版社,2009.
[2]沈偉,謝拴勤.基于DSP的電能質(zhì)量監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2008,16(9):1240-1242,1261.SHEN Wei,XIE Shuan-qin.Design of power quality monitor system based on DSP[J].Computer Measurement&Control,2008,16(9):1240-1242,1261.
[3]楊強(qiáng)浩.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機(jī)械工業(yè)出版社,2008.
[4]Xilinx.MicroBlae Processor Reference Guide[EB/OL].(2012).[2013].http://www.xilinx.com.
[5]Xilinx.Spartan-3E FPGA Family Data Sheet.[EB/OL].(2012).[2013].http://www.xilinx.com.
[6]TI.ADS7864數(shù)據(jù)手冊(cè).[EB/OL]. (2005)[2013].http://www.ti.com.cn/product/cn/ads7864.
[7]趙永新,夏榮,羅衛(wèi)湘,等.基于高性能FPGA的快速并行FFT及其在諧波監(jiān)測(cè)上的應(yīng)用[J].制造業(yè)自動(dòng)化,2008,30(8):82-83.ZHAO Yong-xin,XIA Rong,LUO Wei-xiang,et al.The highspeed collateral FFT of high-powered FPGA and its application on harmonic waves monitor[J].Manufacturing Automation,2008,30(8):82-83.
[8]Xilinx.Device Driver Programmer Guide[EB/OL].(2012).[2013].http://www.xilinx.com.
[9]王鈿,卓興旺.基于Verilog HDL的數(shù)字系統(tǒng)應(yīng)用設(shè)計(jì)[M].北京:國(guó)防工業(yè)出版社,2007.
[10]吳繼華,王誠(chéng).設(shè)計(jì)與驗(yàn)證 Verilog HDL[M].北京:人民郵電出版社,2006.