基于FPGA的數據采集及顯示
摘 要: 在電力系統諧波分析中,模數轉換(ADC)電路是影響系統檢測性能的主要環(huán)節之一?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/NiosII">NiosII的諧波分析系統具有邏輯控制能力強、信號處理實(shí)時(shí)性高、系統抗干擾能力強等特點(diǎn)。以Altera公司的DE2開(kāi)發(fā)板為平臺,實(shí)現了采樣電路的硬件設計;在Quartus II 中用Verilog HDL語(yǔ)言完成了與FPGA的接口設計,并最終實(shí)現VGA顯示。
關(guān)鍵詞: ADC;NiosII;FPGA;諧波分析;VGA
諧波是電力系統的一大公害,消除諧波污染,把諧波含量控制在允許范圍內,已經(jīng)成為主管部門(mén)和用電單位的共同奮斗目標。而要消除電網(wǎng)中的諧波,首先就要對諧波進(jìn)行準確測量,諧波測量工作已經(jīng)越來(lái)越引起人們的關(guān)注[1]。A/D轉換電路是電力系統諧波測量中必不可少的一個(gè)重要環(huán)節,是電力系統諧波測量系統前端的核心。
FPGA因具有強大的邏輯控制能力、高速的運算能力、靈活的可編程性,已經(jīng)越來(lái)越多的被用于各種數字系統。在FPGA內部一般都內嵌有可配置的高速RAM、PLL、LVDS、LVTTL以及硬件乘法累加器等DSP模塊。用FPGA模塊來(lái)實(shí)現數字信號處理可以很好地解決并行和順序性的矛盾,直至速度問(wèn)題,而且其靈活的可配置性,使得FPGA構成的DSP系統非常易于修改,易于測試及硬件升級。在QuartusII開(kāi)發(fā)軟件中用Verilog HDL硬件描述語(yǔ)言能夠很容易進(jìn)行邏輯電路設計,并且在FPGA中可以實(shí)現用硬件進(jìn)行配置,可有效降低軟件運行時(shí)間和軟件設計復雜程度[2]。因此,FPGA非常適合在電力系統諧波測量系統中作為核心器件。
本文中采樣電路選用AD73360,在QuartusII中用Verilog HDL硬件描述語(yǔ)言實(shí)現了AD73360及VGA與FPGA的接口設計,最后通過(guò)實(shí)驗驗證了設計的正確性。
1 系統總體方案
系統以Altera公司的DE2開(kāi)發(fā)板為平臺,系統框圖如圖1所示。信號采集單元核心器件為電壓、電流互感器?;ジ衅鲗⒋郎y高壓、大電流信號線(xiàn)性轉換為合適的微弱電壓信號,該微弱電壓信號經(jīng)信號調理電路放大為合適的電壓信號,經(jīng)低通濾波電路濾除高于2 500 Hz的高頻噪聲,然后送到A/D轉換單元進(jìn)行A/D轉換,轉換后形成數字信號存儲到存儲器中,再送到FFT處理單元進(jìn)行快速傅里葉變換,變換后得到的數據再儲存到存儲器中,再進(jìn)行一系列相關(guān)運算,如:諧波電壓含有量、諧波電流含有量、各次諧波電壓含有率、各次諧波電流含有率等,最后經(jīng)VGA進(jìn)行顯示出波形和相關(guān)數據。
2 AD73360的配置[3]
2.1 A/D電路設計
A/D電路如圖2所示。A/D電路可分為以下三個(gè)部分。
(1)電源部分。AD73360有5 V和3 V兩種工作模式,為了能夠與FPGA實(shí)現直接連接,采用3 V供電(FPGA接口電平為3.3 V左右),這樣無(wú)需外加電平轉換電路,可以簡(jiǎn)化電路設計、降低系統功耗、節約成本。
(2)模擬輸入部分。AD73360有6個(gè)通道,每個(gè)通道又分為正端VINP和負端VINN,每個(gè)通道都可以由AD73360內部控制寄存器配置為差分輸入和單端輸入兩種方式,本設計采用單端交流耦合輸入方式。
(3)與FPGA接口部分。AD73360采用六線(xiàn)制串行接口,能很方便與外部電路實(shí)現接口連接,為了實(shí)現AD73360與FPGA的連接,就需要在FPGA中設計一個(gè)控制器,在Quartus II中設計的A/D控制器AD_controller如圖3所示。
2.2 AD73360的配置
AD73360為可編程A/D轉換器,每次啟動(dòng)系統都要對其進(jìn)行配置。對AD73360的配置有兩種方式,一種方法是用程序來(lái)實(shí)現,另外一種方法是利用FPGA具有很強的邏輯控制能力,用硬件實(shí)現對AD73360的配置,后者雖然會(huì )占用一些硬件資源,但是這樣可以大大簡(jiǎn)化系統程序設計,節約軟件運行時(shí)間,因此本設計采用后者。系統上電或者手動(dòng)復位后,AD73360被復位,在復位狀態(tài)下,AD73360的八個(gè)控制字寄存器被初始化為00H,同時(shí)AD_controller也被復位到初始狀態(tài),SE被置1,從而AD73360串口進(jìn)入工作狀態(tài)。當復位信號變?yōu)楦邥r(shí),AD73360進(jìn)入編程模式,該模式下,AD73360數字端接口時(shí)序如圖4所示。在編程模式下,AD73360的SDOFS引腳以主時(shí)鐘頻率的1/2048的頻率產(chǎn)生輸出數據標志信號,當控制寄存器被正確配置后,將產(chǎn)生與設定采樣頻率同頻的SDOFS標志信號,每個(gè)輸出標志信號以后SDO引腳將連續輸出16位隨機數據,這時(shí)候的數據是隨機產(chǎn)生的,不是有效的A/D轉換數據。與此同時(shí),在SCLK時(shí)鐘的下降沿,若SDIFS標志位有效,則AD73360于下一個(gè)SCLK下降沿開(kāi)始讀取SDI引腳數據,并存到AD73360中的串行寄存器。
撤銷(xiāo)復位信號后,AD_controller開(kāi)始對AD73360進(jìn)行配置,配置過(guò)程如圖4所示。系統復位后標志信號GO被置1,經(jīng)過(guò)三個(gè)SCLK時(shí)鐘周期后GO被置0,此時(shí)把第一個(gè)配置數據賦給SD,標志信號GO保持一個(gè)SCLK時(shí)鐘周期后,又被置1。當標志信號GO=0時(shí),AD_controller進(jìn)入下一狀態(tài)檢測SDOFS,當檢測到SDOFS由1變?yōu)?時(shí),進(jìn)入寫(xiě)數據狀態(tài),從SD最高位開(kāi)始由高到低逐位往SDI端口寫(xiě)數據,每個(gè)SCLK時(shí)鐘周期寫(xiě)一位,直到寫(xiě)完16位數據,AD73360根據這16位數據的前8位數據針對把后8位數據寫(xiě)入相應AD73360的相應控制寄存器,寫(xiě)完16位數據后,系統把SDIFS引腳設為高阻狀態(tài),并產(chǎn)生一個(gè)SCLK周期的END(對END置1)信號,作為一個(gè)控制字配置完成的標志。系統檢測到END標志信號后,在未對所有控制字進(jìn)行有效配置的情況下,把下一個(gè)控制字賦給PDATA,并產(chǎn)生一個(gè)SCLK周期的GO(把GO置0)標志信號,系統檢測到GO標志信號后,再檢測SDOFS,在SDOFS為1的下一個(gè)SCLK開(kāi)始通過(guò)SDI端口向AD73360寫(xiě)下一個(gè)控制字,直到8個(gè)控制字都被寫(xiě)入AD73360,配置完成后,AD73360進(jìn)入數據模式,開(kāi)始進(jìn)行A/D轉換。完成配置任務(wù)后AD_controller結束配置狀態(tài),把SDI設為高阻狀態(tài),并開(kāi)始接收SDO引腳的數據,并把接收到的串行數據轉換成16位并行數據[4]。
在QuartusII開(kāi)發(fā)工具中,用Verilog HDL語(yǔ)言完成了對AD73360的配置,并進(jìn)行了功能仿真,功能仿真結果如圖5所示。
評論