朱懷毅
(長(zhǎng)沙理工大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙 410000)
基于NiosII的CZT頻譜細(xì)化算法仿真實(shí)現(xiàn)
朱懷毅
(長(zhǎng)沙理工大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙 410000)
文中介紹了線性調(diào)頻Z變換(CZT)的原理,針對(duì)工程中對(duì)CZT頻譜細(xì)化算法實(shí)現(xiàn)難的問(wèn)題,提出了一種嵌入式處理器(NiosII軟核)設(shè)計(jì)方法,結(jié)合Nios IDE平臺(tái),在FPGA開(kāi)發(fā)版上進(jìn)行仿真實(shí)驗(yàn),實(shí)現(xiàn)了在指定頻率范圍內(nèi)對(duì)某電力基頻信號(hào)的CZT頻譜細(xì)化分析。實(shí)驗(yàn)表明,該方法具有設(shè)計(jì)簡(jiǎn)單、可靠性高、實(shí)現(xiàn)效果好等特點(diǎn),具有一定的實(shí)用價(jià)值。
線性調(diào)頻Z變換; NiosII軟核; Nios IDE; FPGA
頻譜細(xì)化[1]是信號(hào)分析中的重要手段之一。它能以指定的、足夠高的分辨率分析頻率軸上任一窄帶內(nèi)信號(hào)的頻譜結(jié)構(gòu)。直接在細(xì)化頻帶內(nèi)致密取值,增加頻率點(diǎn)數(shù),并計(jì)算出相應(yīng)的頻譜值,這就是具有代表性的基于線性調(diào)Z變換(Chirp Z Transform,CZT)的頻譜細(xì)化算法。由于在FPGA[2]中不能處理小數(shù)綜合,被處理的數(shù)據(jù)必須是整數(shù),近年來(lái)如文獻(xiàn)[3]在FPGA上實(shí)現(xiàn)CZT頻譜細(xì)化算法一般都是采用Altera公司自帶的IP核,以IP核為主要設(shè)計(jì)方案建立CZT算法的核心步驟,但CZT算法中會(huì)遇到很多小數(shù),所以用IP核的設(shè)計(jì)方式必須把小數(shù)量化成整數(shù)來(lái)處理,采用量化定點(diǎn)方式會(huì)引起很多誤差,加大運(yùn)算量,精確度也有所下降。故此設(shè)計(jì)采用SOPC Builder建立NiosII軟核的方式,再在Nios IDE中運(yùn)用C語(yǔ)言以便進(jìn)行小數(shù)運(yùn)算。通過(guò)CZT算法得到頻譜細(xì)化值后將結(jié)果送入TFT LCD800×600的彩屏上顯示,從而直觀的查看仿真結(jié)果。此設(shè)計(jì)所使用的軟件為:QuartusII 9.0和NiosII IDE 9.0。開(kāi)發(fā)平臺(tái)為L(zhǎng)TE-SOPC-02FD EDA/SOPC實(shí)驗(yàn)箱,所用FPGA芯片為Altera公司的EP3C80F780C8。
CZT算法原理。設(shè)A/D采樣信號(hào)為x(n),其Z變換[4]為
(1)
在z平面內(nèi),變量z可以沿更一般的路徑取值,設(shè)z的取樣點(diǎn)為
zk=AW-k(k=0,1,…,M-1)
(2)
式中,M為要分析的復(fù)頻譜點(diǎn)數(shù),可不等于N;A和W是任一復(fù)數(shù),可表示為
A=A0ejθ0
(3)
W=W0e-jφ0
(4)
式中,A0為起始取樣點(diǎn)z0的矢量半徑長(zhǎng)度,CZT中A0=1,表示在單位圓上的取值;θ0為起始取樣點(diǎn)z0的相角,即選取頻率范圍的起點(diǎn);φ0為兩相鄰zk點(diǎn)之間角頻率差,即選頻范圍內(nèi)的頻率分辨率。W0=1,使得計(jì)算周線在單位圓上進(jìn)行;M=N,使得CZT便于計(jì)算。所以,通過(guò)調(diào)整θ0來(lái)確定選頻范圍的起點(diǎn);通過(guò)調(diào)整φ0來(lái)確定選頻范圍內(nèi)頻譜細(xì)化倍數(shù)。將式(2)帶入式(1),可得
(5)
將等式
(6)
代入式(5),可得
(7)
設(shè)
(8)
(9)
則式(7)可寫(xiě)為
(10)
式(10)可用圖1表示。
圖1 CZT的系統(tǒng)框圖
其中,f(n)與h(n)的適當(dāng)段的圓周卷積[5]來(lái)表示
(11)
(12)
有限長(zhǎng)序列的圓周卷積可采用FFT[6-8]快速計(jì)算,分別用FFT求出序列f(n)和h(n)的L點(diǎn)DFT,即F(r)和H(r)。將H(r)和F(r)相乘得到的結(jié)果定義為Q(r),Q(r)為L(zhǎng)點(diǎn)頻率離散序列。用FFT法求Q(r)的L點(diǎn)IDFT即為f(n)和h(n)的圓周卷積。
2.1 設(shè)計(jì)流程
NiosII[9]的設(shè)計(jì)流程分為硬件開(kāi)發(fā)和軟件開(kāi)發(fā)兩部分。硬件開(kāi)發(fā)包括NiosII組件模型建立及配置,NiosII硬件系統(tǒng)的生成。軟件開(kāi)發(fā)包括FPGA下載配置,建立軟件工程并運(yùn)行測(cè)試。其主要設(shè)計(jì)方案是在Quartus II[10]中設(shè)計(jì)并生成SOPC系統(tǒng)[11],再通過(guò)Nios IDE進(jìn)行軟件程序設(shè)計(jì)。因此整個(gè)NiosII設(shè)計(jì)流程圖可以歸納如圖2所示。
圖2 NiosII的設(shè)計(jì)流程圖
2.2 系統(tǒng)硬件設(shè)計(jì)
利用Quartus II的SOPC Builder組件進(jìn)行軟核的設(shè)計(jì),在搭建軟核[12]前首先設(shè)置目標(biāo)FPGA及時(shí)鐘,由于凌特公司的開(kāi)發(fā)平臺(tái)是50 MHz的時(shí)鐘信號(hào),所以設(shè)置時(shí)鐘頻率為50 MHz。軟核的設(shè)計(jì)步驟如下:(1)CPU設(shè)計(jì)。展開(kāi)Altera SOPC Builder選取NiosII Process,添加NiosII內(nèi)核,此次選擇NiosII/f內(nèi)核的CPU;(2)展開(kāi)System Contens列表中interface Protocols類中的Serial選項(xiàng),選取JTAG UART,添加JTAG UART來(lái)作為輸入輸出終端;(3)展開(kāi)System Contens列表中的Bridgesand Adapters類中的Memory Mapped選項(xiàng),選擇Avalon—MM Tristate Bridge,添加CPU外設(shè)的總線橋;(4)加入外部SRAM存儲(chǔ)器,接口選擇存儲(chǔ)量為1 024 KB,用來(lái)運(yùn)行程序和保存數(shù)據(jù);(5)選擇System Contents列表中的Memories and Memory Controllers選項(xiàng),選取Flash Memory(CFI),添加Flash控制器;(6)添加通信PIO端口用于控制采樣數(shù)據(jù)的輸入和LCD顯示屏的輸出。至此,軟核設(shè)計(jì)已完成,編譯生成SOPC系統(tǒng)。加入指定的ROM IP核[13]存儲(chǔ)模塊和時(shí)鐘模塊,采用原理圖設(shè)計(jì)方法連接好各模塊,最后生成頂層文件,頂層文件編譯成功之后通過(guò)JTAG數(shù)據(jù)線下載到FPGA開(kāi)發(fā)版上。圖3為系統(tǒng)硬件設(shè)計(jì)模塊圖。以下將開(kāi)始為此系統(tǒng)進(jìn)行工程項(xiàng)目軟件設(shè)計(jì)和調(diào)試,如果發(fā)現(xiàn)NiosII嵌入式系統(tǒng)的CPU內(nèi)核軟硬件工作情況不能完全滿足設(shè)計(jì)要求,可修正或更改設(shè)計(jì),這是SOPC系統(tǒng)的一大優(yōu)勢(shì)。
圖3 系統(tǒng)硬件設(shè)計(jì)模塊圖
2.3 系統(tǒng)軟件設(shè)計(jì)
在NiosII軟核配置系統(tǒng)完成并下載于FPGA中的基礎(chǔ)上,進(jìn)入集成開(kāi)發(fā)環(huán)境IDE進(jìn)行軟件開(kāi)發(fā),下載和調(diào)試。利用SOPC生成的系統(tǒng)庫(kù)函數(shù),結(jié)合C語(yǔ)言[14]編程,調(diào)用HAL底層驅(qū)動(dòng)函數(shù)來(lái)訪問(wèn)硬件層從而達(dá)到對(duì)數(shù)據(jù)的傳輸與處理。軟件設(shè)計(jì)的主要步驟就是編寫(xiě)CZT的C語(yǔ)言算法。因此根據(jù)上述CZT算法原理進(jìn)行了該算法的編寫(xiě),所用核心程序如下:
#include "system.h"
#include"altera_avalon_pio_regs.h"
#include
#include
#include
#include "Complex.h"
#include "FFT.h"
#include "alt_types.h"
#include "lcd.h"
…………
將編寫(xiě)好的程序進(jìn)行編譯,同樣通過(guò)JTAG數(shù)據(jù)線下載到FPGA上完成系統(tǒng)軟件設(shè)計(jì)。
2.4 仿真和硬件實(shí)施結(jié)果
上面已經(jīng)搭建好硬件和軟件系統(tǒng)的連接,下面進(jìn)行CZT算法的調(diào)試。以工程項(xiàng)目中電力系統(tǒng)基頻x(t)=cos(2π×50t)為待測(cè)頻譜分析信號(hào),定義采用頻率為128 Hz,采樣512個(gè)數(shù)據(jù),選取頻段49~51 Hz之間30倍頻譜細(xì)化。由于條件限制,此次數(shù)據(jù)的采樣不使用A/D轉(zhuǎn)換器,直接在Matlab[15]中模擬生成,然后存入Quartus II中的ROM IP核中,接著利用已設(shè)計(jì)好的SOPC系統(tǒng)進(jìn)行CZT頻譜分析算法的硬件仿真。圖4為硬件仿真結(jié)果,幅度最大值對(duì)應(yīng)的頻率為50 Hz即為該基頻信號(hào)的頻率,圖5為Matlab仿真結(jié)果。
圖4 硬件仿真結(jié)果
圖5 Matlab仿真結(jié)果
從實(shí)驗(yàn)結(jié)果來(lái)看,利用NiosII軟核技術(shù)實(shí)現(xiàn)CZT頻譜細(xì)化算法有較高的可行性,設(shè)計(jì)簡(jiǎn)單,能較好的分析電力系統(tǒng)基頻信號(hào)。同時(shí)其具有在線可編程能力,能在不改動(dòng)任何硬件條件下對(duì)系統(tǒng)進(jìn)行修改和升級(jí),以便擴(kuò)展新功能,這將為數(shù)字信號(hào)處理領(lǐng)域帶來(lái)便利。
[1] 丁康,張曉飛.頻譜校正理論的發(fā)展[J].振動(dòng)工程學(xué)報(bào),2003,3(1):14-22.
[2] 李憲強(qiáng).FPGA項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)講解[M].北京:電子工業(yè)出版社,2015.
[3] 王磊磊,陳潛.基于CZT的頻率細(xì)化方法的FPGA實(shí)現(xiàn)[J].制導(dǎo)與引信,2010,31(1):29-32.
[4] 張輝.一種電力系統(tǒng)測(cè)頻方法—CZT算 法[J].現(xiàn)代電力,2005,22(3):21-23.
[5] 吳小平.利用圓周卷積離散譜快速線性卷積[J].凱里學(xué)院報(bào),2009,27(3):16-17.
[6] 劉順蘭,吳杰.數(shù)字信號(hào)處理[M].2版.西安:西安電子科技大學(xué)出版社,2009.
[7] 鐘佑明,湯寶平,秦樹(shù)人.離散傅里葉變換計(jì)算中的一些問(wèn)題的的論證[J].重慶大學(xué)學(xué)報(bào),2001,24(3):1-4.
[8] 何方白,張德民.數(shù)字信號(hào)處理[M].北京:高等教育出版社,2009.
[9] 周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航天航空大學(xué)出版社,2006.
[10] 潘松,黃繼業(yè).EDA技術(shù)使用教程VHDL 版[M].4版.北京:科學(xué)出版社,2010.
[11] 方茁,陳卓文,彭澄廉.SOPC設(shè)計(jì)中的用戶自定義邏輯[J].計(jì)算機(jī)工程,2004,30(17):42-44.
[12] 候建軍,郭勇.SOPC技術(shù)基礎(chǔ)教程[M].北京:清華大學(xué)出版社;北京交通大學(xué)出版社,2008.
[13] 張春生,蘇開(kāi)友.FPGA數(shù)字信號(hào)處理 與工程應(yīng)用實(shí)踐[M].北京:中國(guó)鐵道出版社,2013.
[14] 程軍.Intel80cp16單片機(jī)應(yīng)用實(shí)踐與C語(yǔ)言開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2002.
[15] 劉衛(wèi)國(guó).Matlab程序設(shè)計(jì)與應(yīng)用[M].2版.北京:高等教育出版社,2006.
The Simulation Implementtation of CZT Spectrum Zooming Algorithm Based on NiosII
ZHU Huaiyi
(School of Electrial and Information Engineering,Changsha University of Science&Technology,Changsha 41000,China)
The principle of chirp Z transform (CZT) is presented. To solve the difficult problems of realizing CZT spectrum zooming algorithm in engineering programmes, a design method of a kind of embedded processor (Nios II soft core) is proposed, using Nios IDE platform, simulation experiment is processed on the FPGA development board to achieve the CZT spectrum zooming analysis of a certain power fundamental frequency signal in the specified frequency range. Experiment results show that the method has characteristics of simply designed ,high reliability, achieving of good effect,it has a good practical value.
chirp Z transform;Nios II soft core;Nios IDE;FPGA
2016- 06- 10
朱懷毅(1991-),男,碩士研究生。研究方向:信號(hào)檢測(cè)與處理。
10.16180/j.cnki.issn1007-7820.2017.04.019
TP301.6
A
1007-7820(2017)04-076-03