基于NIOS核處理器(包括I2C總線模塊)和Altera公司FPGA設(shè)計制作的頻譜分析儀,可用于工程指標的監(jiān)測和診斷。設(shè)計的關(guān)鍵模塊有:I2C總線控制的數(shù)據(jù)采集模塊、FFT模塊、FFT控制模塊、Avalon總線接口及Atlantic總線接口模塊以及VGA、LCD顯示部分。
頻譜分析儀的核心是DFT及快速算法FFT。FFT主要分為基2、基4等固定幾何結(jié)構(gòu),設(shè)計采用基2幾何結(jié)構(gòu)、512點的FFT算法。設(shè)計平臺為Altera公司推出的Cvclone II,其為高性能結(jié)構(gòu)體系的PLD器件,其中包括FFT IP Core(知識產(chǎn)權(quán)核)。同時,Quartus II(Altera公司開發(fā)的IDE)軟件具有很強的硬件仿真和邏輯分析功能,可將Verilog HDL描述的硬件綜合到FPGA的整體設(shè)計中。
2 結(jié)構(gòu)設(shè)計
頻譜分析儀的系統(tǒng)框圖如圖1所示,其主要模塊包括:I2C總線模塊、FIFO模塊、平方求和模塊、FFT模塊、VGA模塊、顯示器等組成閉。
頻譜分析儀的硬件原理框圖如圖2所示,圖2包含F(xiàn)PGA的內(nèi)部硬件電路及外圍接口模塊。
軟件設(shè)計的實現(xiàn)是建立在NIOS II IDE的基礎(chǔ)之上,整個軟件設(shè)計總體分為4大任務(wù):設(shè)計主任務(wù)、A/D采集控制、Flash存儲任務(wù)和VGA控制顯示器顯示任務(wù)。
3 系統(tǒng)設(shè)計
設(shè)計中,充分利用了SOPC技術(shù)的優(yōu)勢實現(xiàn)軟、硬件協(xié)同設(shè)計,在盡可能短的時間內(nèi)實現(xiàn)儀器功能,分別從硬件設(shè)計和軟件設(shè)計兩方面詳細說明設(shè)計過程。
3.1 儀器硬件設(shè)計
3.1.1 核設(shè)計簡介
利用SOPC Builder在NIOS指令系統(tǒng)中集成了A/D轉(zhuǎn)換控制、I2C總線控制、VGA控制、FFT控制等控制模塊,圖3為SOPC Builder集成IP。
3.1.2 硬件FFT IP CCore的定制與集成
FFT運算器采用FFT Core實現(xiàn),其引擎結(jié)構(gòu)為雙Sin—gle—output,I/O數(shù)據(jù)流采用突發(fā)(Burst)方式。FFT Core采用Atlantic Interface協(xié)議,輸入接口視為主接收器,輸出接口視為主發(fā)送器。
具體的工作流程:系統(tǒng)復(fù)位后,數(shù)據(jù)源將master sink day置位,表示有采樣數(shù)據(jù)等待輸入;作為回應(yīng),F(xiàn)FTCore將mas—te_sink_ena置位,表示可以接收輸入數(shù)據(jù);數(shù)據(jù)源加載第一個復(fù)數(shù)數(shù)據(jù),同時master_sink_sop置位,表示輸入數(shù)據(jù)塊的起始;下一個時鐘,master_sink_sop被清零,輸入數(shù)據(jù)按照自然順序被加入。輸入數(shù)據(jù)達到512點時。系統(tǒng)自然啟動FFT運算。通過inv_i信號的置位/清零可以改變單個數(shù)據(jù)塊的FFT轉(zhuǎn)換方向,inv_i信號必須和master_sink_sop信號嚴格同步。當FFT轉(zhuǎn)換結(jié)束時,子接收器已經(jīng)將master_source_dav信號置位,表示子接收器可以接收FFT的轉(zhuǎn)換結(jié)果:同時,master_source_ena信號置位,F(xiàn)FT Core按照自然順序輸出運算結(jié)果:在輸出過程中.master_source_sop和mas—ter_soure_eop信號被置位,表示輸出數(shù)據(jù)塊的起始和結(jié)束。具體接口定義如表1所示。
3.1.3 FIFO硬件設(shè)計
FIF0是一種先進先出的數(shù)據(jù)緩存器,根據(jù)FIFO工作的時鐘域,可以將FIF0分為同步FIF0和異步FIFO。FIF0的一些重要參數(shù)如下:
FIFO的寬度:指的是FIF0一次讀寫操作的數(shù)據(jù)位。
FIFO的深度:指的是FIFO可以存儲多少個N位的數(shù)據(jù)。
設(shè)計中采用了寬度為16位,深度為256的異步FIF0。
3.1.4 I2C總線設(shè)計
I2C總線是由數(shù)據(jù)線SDA和時鐘SCL構(gòu)成的串行總線.可發(fā)送和接收數(shù)據(jù)。I2C總線在傳送數(shù)據(jù)過程中共有3種類型信號,分別是:開始信號、結(jié)束信號和應(yīng)答信號。
開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。
結(jié)束信號:SCL為低電平時,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。
應(yīng)答信號:接收數(shù)據(jù)的IC在接收到8 bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。其數(shù)據(jù)傳送過程如圖4所示。
3.1.5 串轉(zhuǎn)并數(shù)據(jù)采集模塊設(shè)計
由于從FPGA音頻接口采集來的信號是串行的,故此處理前應(yīng)將此串行信號轉(zhuǎn)成并行信號,然后送NIOS核處理器進行處理。
設(shè)計中只需要16位數(shù)據(jù),而從FPGA音頻采集輸出端ADCDAT輸出的24位的串行數(shù)據(jù),考慮到數(shù)據(jù)計算可能溢出造成失真,因此必須對采樣所得數(shù)據(jù)作近似處理,故取其高15位數(shù)據(jù),并將高位補零從而得到16位數(shù)據(jù)。其設(shè)計接口包括:clk為系統(tǒng)時鐘;AUD_ADCDAT為音頻采集數(shù)據(jù)輸入;data_out為并行輸出;Wr為輸出使能信號,用于控制向外輸出完整的數(shù)據(jù)。其仿真波形如圖5所示。
3.1.6 平方和加法模塊設(shè)計
設(shè)計中處理的是16位數(shù)據(jù),F(xiàn)FT變換后,要對結(jié)果進行求模運算,從而便于將數(shù)據(jù)在VGA上顯示,設(shè)計了硬件乘法器和硬件加法器來節(jié)省大量運算所占用的時間,從而提高速度。其設(shè)計如圖6所示。
3.2 系統(tǒng)軟件部分的設(shè)計
系統(tǒng)軟件流程圖如圖7所示。
(1)系統(tǒng)初始化系統(tǒng)主要指由主控Nios軟核通過12C總線對系統(tǒng)各部分進行初始化,包括A/D、按鍵等的初始化。
(2)數(shù)據(jù)采集 主要指Nios軟核從音頻輸出接口ADC—DAT讀取數(shù)據(jù)并作必要的處理。
(3)FFT IP核變換將采集來的數(shù)據(jù)通過FFT處理后再送入軟核中。
(4)NIOS核處理NIOS核將變換后的數(shù)據(jù)作以處理,以便于送顯示器顯示。
(5)圖像顯示NIOS核將處理后的最終數(shù)據(jù)經(jīng)VGA送顯示器顯示。
4 設(shè)計特點
4.1 FFT運算全硬件實現(xiàn),加快了數(shù)字信號處理的速度
設(shè)計中實現(xiàn)。FFF運算,涉及了大量的浮點乘法運算,軟件難以實現(xiàn)其快速性和實時性,采用FFT IP Core及硬件乘法器來實現(xiàn)FFT的方法.浮點運算時.直接用FFT IP Core及乘法器實現(xiàn)。因而大大加快了運算的速度。
4.2 定制Avalon總線接口IP、LCD及FFT控制器
在SOPC Builder中提供了方便的向?qū)В畮椭O(shè)計基于Avalon總線接口的IP Core。根據(jù)需要添加了LCD及FFT控制器來完成設(shè)計,這正是開放總線接口帶來的好處及優(yōu)勢。
4.3 實現(xiàn)片上設(shè)計.實現(xiàn)高集成度和可靠度
在FPGA內(nèi)部實現(xiàn)整個控制和信號處理的功能,這是傳統(tǒng)設(shè)計方案無法做到的。NIOS作為一款32位高性能處理器可以在FPGA內(nèi)部進行配置,成功實現(xiàn)了可編程片上設(shè)計,同時實現(xiàn)高集成度和可靠度。
5 結(jié)語
在分析和掌握NIOS核處理器和頻譜分析儀基礎(chǔ)上。完成儀器硬件和軟件部分的設(shè)計。其中FFT運算幾乎全硬件實現(xiàn),大大加快了數(shù)字信號處理的速度;根據(jù)需要添加了LCD及FFT控制器來完成設(shè)計;實現(xiàn)了片上設(shè)計,實現(xiàn)了高集成度和可靠度。