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