山東大學(xué) 王鵬 陳長(zhǎng)林 秦亦安
摘要:本系統(tǒng)基于Altera Cyclone II 系列FPGA嵌入高性能的嵌入式IP核(Nios)處理器軟核,代替?zhèn)鹘y(tǒng)DSP芯片或高性能單片機(jī),實(shí)現(xiàn)了基于FFT的音頻信號(hào)分析。并在頻域?qū)π盘?hào)的總功率,各頻率分量功率,信號(hào)周期性以及失真度進(jìn)行了計(jì)算。并在FPGA中嵌入了8階IIR切比雪夫(Chebyshev)II型數(shù)字低通濾波器,代替?zhèn)鹘y(tǒng)有源模擬濾波器實(shí)現(xiàn)了性能優(yōu)異的音頻濾波。配合12位A/D轉(zhuǎn)換芯片AD1674,和前端自動(dòng)增益放大電路,使在50mV到5V的測(cè)量范圍下,單一頻率功率及總功率測(cè)量誤差均控制在1%以內(nèi)。
關(guān)鍵詞:FPGA; IP核; FFT; IIR; 可控增益放大
Abstract: This system is based on IP core(Nios) soft-core processors embedded in the FPGA of Altera Cyclone II family. Instead of using DSP or microcontroller, we use Nios II to perform a low-cost FFT-based analysis of the audio signal.And we caculated the power of the whole signal,the power of each frequence point that componented the signal.By the way,we anlysised its periodicity and distortion.We also embedded an 8-order Chebyshev II IIR digital low-pass filter to replace the traditional analog Active Filter to perform an excellent audio filter. With 12bit A / D converter chip AD1674, and the front-end automatic gain amplifier, this system’s single-frequency power and total power measurement error is below 1% in 50mV to 5V measurement range.
Keyword: FPGA; IP core; FFT; IIR; automatic gain amplifier
一、 方案選擇與論證
1、整體方案選擇
音頻分析儀可分為模擬式與數(shù)字式兩大類。
方案一:以模擬濾波器為基礎(chǔ)的模擬式頻譜分析儀。有并行濾波法、掃描濾波法、小外差法等。因?yàn)槭艿侥M濾波器濾性能的限制,此種方法對(duì)我們來(lái)說(shuō)實(shí)現(xiàn)起來(lái)非常困難。
方案二:以FFT為基礎(chǔ)的的數(shù)字式頻譜分析儀。通過(guò)信號(hào)的頻譜圖可以很方便的得到輸入信號(hào)的各種信息,如功率譜、頻率分量以及周期性等。外圍電路少,實(shí)現(xiàn)方便,精度高。
所以我們選用方案二作為本音頻分析儀的實(shí)現(xiàn)方式。
2、FFT計(jì)算方式選擇
方案一:使用VHDL 硬件實(shí)現(xiàn)。FFT的VHDL程序編寫難度大,短時(shí)內(nèi)不易實(shí)現(xiàn)。
方案二:在FPGA中嵌入Nios II處理器,通過(guò)軟件實(shí)現(xiàn)。Nios II 支持C語(yǔ)言編程方式,普通的C語(yǔ)言版的FFT稍加改正即可應(yīng)用到本方案中。
四天之內(nèi)我們不可能實(shí)現(xiàn)一個(gè)用硬件實(shí)現(xiàn)的FFT算法,因此我們選用方案二。
3、采樣電路與A/D芯片選擇
本設(shè)計(jì)中要求分析的信號(hào)峰峰值范圍為100mVp-p~5Vp-p,用8位A/D進(jìn)行采樣,不能滿足題目的精度要求,采用12位的A/D芯片AD1674,其分辨率可達(dá)到1.2mV(相對(duì)于5Vp-p信號(hào)),滿足了題目要求的5%誤差范圍。同時(shí)其100K的采樣頻率也滿足本設(shè)計(jì)中的頻率要求。
4、信號(hào)調(diào)理方案
AD1674信號(hào)輸入滿偏電壓在雙極性時(shí)為±5V,即峰峰值10V。
方案一:將輸入信號(hào)放大2倍,以達(dá)到AD1674的滿偏輸入,以提高A/D的精度。但若輸入信號(hào)都比較小時(shí),采樣精度就會(huì)下降。
方案二:將前端信號(hào)放大調(diào)理電路分為幾個(gè)檔,針對(duì)不同幅度的信號(hào)選擇合適的通道進(jìn)行放大,放大倍數(shù)以當(dāng)前信號(hào)中的最大峰值為選擇基準(zhǔn)。這樣在輸入信號(hào)比較小時(shí)可以選擇比較大的放大倍數(shù),以提高A/D采樣的精度。
明顯方案2優(yōu)于方案1。
5、采樣及濾波方案選擇
方案一:按照奈奎斯特定律采樣,以傳統(tǒng)模擬方式濾波。傳統(tǒng)模擬方式或有源濾波芯片難以實(shí)現(xiàn)很好的頻帶外衰減。從而使運(yùn)算結(jié)果誤差增大。
方案二:在A/D前進(jìn)行簡(jiǎn)單的抗混疊濾波,以比較高的速率采樣,然后在FPGA中用數(shù)字濾波器進(jìn)行精確濾波。濾波后進(jìn)行二次采樣以減少運(yùn)算量。切比雪夫(Chebyshev) II型低通IIR濾波器有平坦的通帶,等波紋的抑制頻帶、適中的過(guò)度頻帶,非常適合于音頻濾波。可以使分析達(dá)到很好的精度。
方案二外圍電路要求少,實(shí)現(xiàn)方便,我們采用方案二。
6、信號(hào)功率的計(jì)算。
方案一:通過(guò)測(cè)真有效值的方式實(shí)現(xiàn),應(yīng)用普通的真有效值檢測(cè)芯片可以方便的測(cè)出信號(hào)在一定時(shí)間段內(nèi)的總功率。但對(duì)單個(gè)頻點(diǎn)處的功率測(cè)量無(wú)能為力。
方案二:在用FFT得到信號(hào)的頻譜后根據(jù)帕斯瓦爾定律可以很方便的得到信號(hào)各頻率分量的功率及信號(hào)的總功率。
因?yàn)楸驹O(shè)計(jì)中我們可以通過(guò)FFT得到信號(hào)的頻譜,因此方案二最適合本設(shè)計(jì)。
總體方案確定:
經(jīng)過(guò)以上論證我們確定總體設(shè)計(jì)方案框圖如下:

圖1-1、系統(tǒng)整體方案框圖
二、 系統(tǒng)具體設(shè)計(jì)與實(shí)現(xiàn)
1、前端可控增益放大電路及增益控制電路
針對(duì)音頻信號(hào)的特點(diǎn)以及題目中對(duì)精度的要求,我們選用了特別適合音頻信號(hào)處理的經(jīng)典運(yùn)放NE5532。峰值保持部分使用普通運(yùn)放TL084。
信號(hào)進(jìn)入后首先經(jīng)過(guò)一與50歐姆精密電阻并聯(lián)的跟隨器,以滿足題目中的50歐姆輸入阻抗的要求,同時(shí)增強(qiáng)帶后級(jí)帶負(fù)載的能力。然后經(jīng)過(guò)隔直電容進(jìn)入后級(jí)放大電路。
放大電路同時(shí)設(shè)置了×1,×2,×20,×200,4個(gè)放大通道,分別對(duì)10Vp-p、5Vp-p、500mVp-p、50mVp-p信號(hào)進(jìn)行不同放大,這樣將可測(cè)量信號(hào)的動(dòng)態(tài)范圍擴(kuò)展到了10mV;電路圖見(jiàn)圖2-1。同時(shí)通過(guò)峰值保持電路記錄一個(gè)FFT運(yùn)算周期內(nèi)的信號(hào)峰值,通過(guò)與設(shè)定的參考電壓進(jìn)行比較以確定信號(hào)的峰峰值范圍,以作為下一次采樣時(shí)放大通道的選擇參考;控制器通過(guò)模擬開關(guān)來(lái)選擇不同的放大通道。
峰值保持電路部分采用精密二極管與充電電容進(jìn)行信號(hào)峰值保持。為減小電容漏電流對(duì)峰值保持的影響,選擇了47uF的電容。每次采樣前對(duì)讀入峰峰值范圍并對(duì)電容放電以記錄下一次的峰峰值。

圖2-1、輸入信號(hào)放大通路

圖2-2、峰值保持電路
2、抗混疊濾波我們選擇簡(jiǎn)單易用的管腳可編程濾波芯片MAX263來(lái)實(shí)現(xiàn),該濾波芯片無(wú)需外加外圍電路,減少了外界環(huán)境對(duì)其性能的影響。電路圖見(jiàn)附圖1-2
3、A/D轉(zhuǎn)換部分電路見(jiàn)附圖1-3。
4、數(shù)字濾波及Nios核實(shí)現(xiàn)方式見(jiàn)附圖2-1。
5、本設(shè)計(jì)中增加了一分貝測(cè)量的附加功能。
三、理論分析與參數(shù)設(shè)計(jì)
1、采樣頻率計(jì)算:
根據(jù)奈奎斯特定律采樣率應(yīng)滿足 ,本題目中信號(hào)輸入頻率最大為10KHz,因此 ,為進(jìn)行二次采樣,我們的采樣率應(yīng)大于40KHz。
進(jìn)行FFT的點(diǎn)數(shù)按 計(jì)算。又因?yàn)?span lang=EN-US>FFT運(yùn)算量為2的n次方點(diǎn)時(shí)比較容易實(shí)現(xiàn)。在滿足頻率分辨力并盡量減小運(yùn)算量的條件下我們可得出某一頻率分辨率與采樣率的關(guān)系。例如我們?cè)O(shè)計(jì)的頻率分辨力為100Hz,則為分辨出10KHz的信號(hào),則 ,求得N=200,我們?nèi)?span lang=EN-US>N=256。其他分辨力類推。本設(shè)計(jì)中我們?cè)O(shè)計(jì)了以下四個(gè)頻率分辨力檔:
表3-1 頻率分辨力與FFT點(diǎn)數(shù)及采樣速率對(duì)應(yīng)表
分辨力
|
FFT點(diǎn)數(shù)
|
FFT測(cè)量頻率*
|
二次采樣速的**
|
原始采樣速度
|
100Hz
|
256點(diǎn)
|
12.8K
|
25.6K
|
76.8K
|
50Hz
|
512點(diǎn)
|
12.8K
|
25.6K
|
76.8K
|
20Hz
|
1024點(diǎn)
|
10.24K
|
20.24K
|
60.72K
|
10Hz
|
2048點(diǎn)
|
10.24K
|
20.24K
|
60.72K
|
*FFT測(cè)量頻率:FFT變換所能表示的最高頻率。
**二次采樣速度:原始采樣數(shù)據(jù)經(jīng)數(shù)字濾波后,經(jīng)二次采樣(降低采樣率)后的實(shí)際采樣速度。
2、IIR數(shù)字低通濾波器設(shè)計(jì)
在進(jìn)行FFT運(yùn)算之前應(yīng)當(dāng)盡量避免頻譜的混疊,即對(duì)帶外信號(hào)要進(jìn)行盡可能大的衰減,挈比雪夫(Chebyshev) II型濾波器具有通帶內(nèi)平坦并且衰減速度快的特點(diǎn)。其相頻響應(yīng)及群延遲特性都比較好。其轉(zhuǎn)移函數(shù)具體系數(shù)計(jì)算可通過(guò)Matlab的Filter Design & Analysis Tool來(lái)實(shí)現(xiàn)。得到系數(shù)后打開Altera DSP buider,在它的可視化界面中搭建出自己所需的濾波器。
3、信號(hào)功率及各頻率分量功率計(jì)算:
連續(xù)傅立葉變換下的帕斯瓦爾能量定率為: ,
離散傅立葉變換下的帕斯瓦爾能量定律為 ,由此可推出
;
同時(shí)可推出 ,即可得出個(gè)頻率分量的功率。
在計(jì)算時(shí)應(yīng)當(dāng)注意補(bǔ)償因經(jīng)過(guò)濾波器時(shí)信號(hào)的衰減,以及根據(jù)放大倍數(shù)還原信號(hào)到其實(shí)際值。從而使計(jì)算結(jié)果更加精確。
4、信號(hào)周期性判斷及周期測(cè)量
周期信號(hào)的頻譜都是諧波離散的,它僅含有 的各頻率分量,即含有基頻 (T為周期信號(hào)的周期)和基頻的整數(shù)倍 (n=1,2,3,…)這些頻率成份,頻譜圖中相鄰普賢的間隔是基頻 ,周期信號(hào)越長(zhǎng),譜線間隔愈小,頻譜愈稠密,反之則愈稀疏。這是周期信號(hào)頻譜的最基本特點(diǎn)。
因此信號(hào)的周期性判斷可用以下方式判斷:從最小頻率點(diǎn)開始觀察,若最小頻率分辨率點(diǎn)處的頻率分量為0(實(shí)際不為0,而是一個(gè)很小的數(shù)值),則這個(gè)信號(hào)就是周期的。然后繼續(xù)向上觀察,出現(xiàn)第一個(gè)峰值的頻率點(diǎn)處既是這個(gè)信號(hào)的基頻。
這種分析方法雖然可以很方便的測(cè)出基頻大于最小分辨率信號(hào)的周期,但是對(duì)于基頻等于或小于最小頻率分辨率的信號(hào)的周期性就無(wú)能為力了。要測(cè)出基頻更小的信號(hào)的周期性就要增加FFT的點(diǎn)數(shù)。
5、正弦信號(hào)的失真度測(cè)量方法
一般地,正弦波的失真是用失真度,即所有諧波能量之和與基波能量之比的平方根來(lái)表示的。在頻域中即可通過(guò)一下方式計(jì)算:
,其中 為基波分量的傅立葉系數(shù), 、 、 … 為諧波的傅立葉系數(shù)。
四、 軟件設(shè)計(jì)
在本設(shè)計(jì)中,控制及計(jì)算部分都由FPGA來(lái)實(shí)現(xiàn)。其中Nios核完成鍵盤控制,液晶顯示、FFT算法實(shí)現(xiàn)、功率計(jì)算、周期性判斷及失真度測(cè)量的功能;而自動(dòng)增益控制、A/D轉(zhuǎn)換控制以及數(shù)字濾波器則由VHDL語(yǔ)言實(shí)現(xiàn),以減輕CPU的負(fù)擔(dān),同時(shí)兩部分并行處理提高了系統(tǒng)的速度。系統(tǒng)框圖及流程圖如下:

圖4-1 軟件流程圖
五、 指標(biāo)測(cè)試
1.調(diào)試方法和過(guò)程
采用模擬電路由前端到后段,數(shù)字電路先仿真再試測(cè),先逐個(gè)模塊測(cè)試再連調(diào)的辦法。
2.測(cè)試儀器(見(jiàn)附錄三)
3.輸入阻抗測(cè)量
使用分壓法測(cè)量:在系統(tǒng)輸入上串聯(lián)一個(gè) 的精度0.1%的電阻,用34401A 61/2數(shù)字萬(wàn)用表測(cè)量精密電阻和系統(tǒng)輸入端的電壓比值。
用TFG2040 DDS函數(shù)信號(hào)發(fā)生器輸出:F=5KHz Vp-p=1V 的正弦波
用34401A 61/2數(shù)字萬(wàn)用表測(cè)得精密電阻兩端Vp-p=0000.501V
測(cè)得系統(tǒng)輸入端電壓Vp-p=0000.499V
因此算得輸入阻抗為:
4.信號(hào)總功率及各頻率分量功率測(cè)量
使用兩臺(tái)TFG2040 DDS函數(shù)信號(hào)發(fā)生器產(chǎn)生兩路信號(hào)疊加后進(jìn)行測(cè)試,現(xiàn)列出一組典型信號(hào)測(cè)試結(jié)果:兩路輸入電壓分別為Vp-p1=1.0000V(0.01W), =1KHz,Vp-p2=2.0000V(0.04W),
=3KHz。詳細(xì)測(cè)試結(jié)果見(jiàn)附錄三。
表5-1 信號(hào)功率測(cè)量結(jié)果 單位: W
|
信號(hào)總功率
|
最大功率
|
次大功率
|
各頻率點(diǎn)功率和
|
各頻率功率和與總功率誤差
|
理論值
|
0.05000
|
0.04000
|
0.01000
|
0.05000
|
0
|
本系統(tǒng)測(cè)得
|
0.05021
|
0.03990
|
0.01013
|
0.05003
|
0.36%
|
綜合各項(xiàng)測(cè)試結(jié)果得總功率相對(duì)誤差小于1%,各頻率功率誤差小于2%。
5.轉(zhuǎn)換時(shí)間測(cè)試
每完成一次轉(zhuǎn)換讓Nios對(duì)外接的一個(gè)LED燈置高一次,再完成一次轉(zhuǎn)換后將LED燈置低,依次循環(huán)。把本音頻分析儀頻率分辨率設(shè)定在10Hz,用秒表記錄LED燈亮起10次(即20個(gè)刷新周期)的時(shí)間,記錄3次,取均值。
表5-3、數(shù)據(jù)刷新時(shí)間測(cè)量 單位 S
|
第一次
|
第二次
|
第三次
|
平均
|
時(shí)間
|
16.73
|
16.51
|
16.49
|
16.577
|
單次轉(zhuǎn)換時(shí)間
|
0.837
|
0.826
|
0.825
|
0.829
|
6.失真度測(cè)試
(1)用1KHz方波測(cè)試失真度
用TFG2040 DDS函數(shù)信號(hào)發(fā)生器產(chǎn)生近似理想的1KHz方波
理論計(jì)算失真度:46% (計(jì)算到10次諧波) 本系統(tǒng)測(cè)得失真度:46.8%
(2)測(cè)量用EE1642產(chǎn)生的不非常理想的正弦波
用ZQ4126失真度測(cè)試儀測(cè)得失真度:0.9%;
用本音頻分析系統(tǒng)測(cè)得失真度:0.54%
7.動(dòng)態(tài)范圍測(cè)試
使用TFG2040產(chǎn)生5V 1KHz信號(hào),D120 DDS產(chǎn)生5KHz小信號(hào),兩信號(hào)疊加后輸入系統(tǒng)進(jìn)行測(cè)試 從100mV開始逐步調(diào)小小信號(hào)的幅度,從頻譜圖上觀察是否可分辨小信號(hào)峰值。
表5-4 動(dòng)態(tài)范圍測(cè)量結(jié)果
100mV
|
50 mV
|
30 mV
|
10 mV
|
5 mV
|
可明顯分辨
|
可明顯分辨
|
可分辨
|
可分辨
|
不可分辨
|
8.周期性測(cè)試
使用TFG2040產(chǎn)生1K的方波、正弦波、三角波進(jìn)行測(cè)試:檢測(cè)為周期波
使用TFG2040產(chǎn)生M序列,檢測(cè)為非周期波。
六 、結(jié)論
本設(shè)計(jì)很好的滿足了題目要求,對(duì)頻率分辨力、動(dòng)態(tài)范圍及精度都做了較大的擴(kuò)展。其實(shí)本設(shè)計(jì)還有很大的提升空間,但由于我們的動(dòng)手能力以及理論水平有限,沒(méi)能很好的達(dá)到。通過(guò)本次設(shè)計(jì),我們的動(dòng)手能力以及處理問(wèn)題的能力都有了很大的提高,并加深了對(duì)信號(hào)處理的理解,我們的收獲很大!
參考書目:
【1】 Vinay K. Ingle John G. Proakis 數(shù)字信號(hào)處理 科學(xué)出版社 2006年
【2】 程佩青 數(shù)字信號(hào)處理教程 清華出版社 2004年
【3】 吳京等 信號(hào)與系統(tǒng)分析 國(guó)防科技大學(xué)出版社 2006年
【4】 周立功等 SOPC嵌入式系統(tǒng)基礎(chǔ)教程 北京航空航天大學(xué)出版社
【5】 (美)Uwe Meyer-Baese 數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn) 清華大學(xué)出版社 2006年
【6】 Nios II Software Developer’s Handbook ALTERA co.