0 引言
為了對客觀世界的聲音信息進行拾取、記錄、放大和傳輸,研製了聲音信號處理設備。聲音信號處理設備處理的對象是人耳聲頻域(20 Hz~20 kHz)內的音頻信號,音頻信號發生器是測量聲音信號及處理設備性能指標必不可少的儀器。早期音頻信號發生器由基本的LC振蕩電路及外圍電路組成,結構簡單、成本較低,但設備笨重、頻率精度不高。目前常用的音頻信號發生器普遍由單片機及外圍電路組成,頻率穩定,但都通過粗調、細調改變幅度、頻率,操作麻煩,不能馬上改變變量到所需值的大小。
針對傳統音頻信號發生器的缺點,本文採用一款性價比高、功耗低的ARM Cortex-M4控制晶片,製作了一臺智能音頻信號發生器。該發生器的頻率、幅度連續可調,按步進1 Hz、1 mV線性變化,兼具頻率、幅度穩定的優點;通過PC端控制面板,直接輸入幅度、頻率值,就能快速地得到所需要的音頻信號,精度高;一改信號發生器必須近距離調試的缺點,可通過乙太網直接遠距離操控。
1 總體設計
該音頻信號發生器採用模塊化設計,通過調用各個功能模塊,實現主控計算機可遠距離快速控制音頻信號發生器輸出信號的幅度、頻率值。該系統以ARM Cortex-M4為核心,系統總體框圖如圖1所示。
2 硬體設計
該音頻信號發生器通過主控計算機的控制面板輸入控制幅度、頻率值的指令,通過乙太網快速遠距離傳輸到信號發生器,控制數字合成音頻信號的幅度、頻率值,最終通過音頻輸出埠輸出所需音頻信號。
2.1 控制晶片
控制系統的核心STM32F429是以ARM Cortex-M4為內核的新型微控制器晶片,它的停止模式電流降至100 μA(典型值),降低了停止模式的電流消耗,可延長便攜應用電池的壽命,頻率高達180 MHz,擁有市場領先的性能和圖形處理功能。該晶片包含3個12 bit A/D轉換器,多達24個通道,轉換速率為2.4 MSPS,在掃描模式下,自動轉換在選定的一組模擬輸入中進行;還包括2個12 bit D/A轉換器,可獨立或同時轉換。同時集成了大部分存儲器控制器,可外接一個高速SDRAM作為內存擴充,有很高的性價比。
2.2 遠距離控制電路
乙太網遠距離控制是整個控制系統中的一個重要部分。該發生器通過乙太網與PC連接,操控PC控制面板,按照要求輸入所需的幅度、頻率值,通過乙太網把控制命令遠距離地傳輸給音頻信號發生器,達到遠程控制的目的。
該乙太網接口晶片DP83848CVV是一個全功能自適應網絡連接速度10/100 Mb/s的單埠物理器件,允許設備使用所需操作電源的絕對最小值,提供低功耗性能。該晶片包括一個25 MHz的時鐘輸出,使應用程式含有最少的外部器件,進而降低成本;同時支持10BASE-T和100BASE-TX的乙太網協議,以確保與其他基於乙太網標準解決方案的兼容性和互操作性。
2.3 SDRAM
同步動態隨機存儲器SDRAM與系統總線同步,無等待周期,而且是雙存儲體結構,讀取效率得到成倍提高。SDRAM體積小、速度快、容量大、價格低,是比較理想的內存擴展器件。
該系統採用的SDRAM為MT48LC32M16A2P-7E,它的內存高達256 MB,在時鐘頻率66 MHz、100 MHz、133 MHz之間兼容,所有信號寄存在系統時鐘的上升沿,自動預載,時鐘使能CKE中的停用時鐘提供預充電掉電和自刷新操作,在斷電和自刷新模式下,包括CLK的輸入緩衝區被禁用,提供低待機功耗。對每一行自動刷新的循環周期為64 ms,刷新命令一次對一行有效,發送間隔為7.812 5 μs,從而提供無縫、高速、隨機訪問操作。A0~A11作為SDRAM的行地址線,同時A0~A7又復用為列地址線,BA0和BA1作為bank選擇線,應用讀、寫或預充電命令。其控制接口如圖2所示。
信號採樣頻率為48 kHz,每個樣點採用16 bit量化,如果最小頻率解析度為1 Hz,所需查表的大小為48 k×16 bit,共需48 k×16 bit的RAM空間。顯然SDRAM的存儲空間足夠使用,也便於以後該發生器對方波、三角波等波形的擴展。
3 軟體設計
整個系統採用模塊化設計,除主程序外,各功能子程序分別執行PC端輸入控制命令、乙太網傳輸、SDRAM內存擴展、正弦查詢表映射、數模轉換等相應功能,系統主程序流程如圖3所示。
3.1 PC端控制
信號發生器可產生正弦波、方波、三角波等規則波形信號,本信號發生器僅以正弦波為例。
音頻信號發生器的PC控制端採用Java技術,因為它可跨平臺操作,具有卓越的通用性、高效性,所以設計的PC控制端具有界面友好、操作簡單、成本低、容易實現等優點。所設計的PC控制界面如圖4所示,部分程序如下:
JPanel jp0,jp1;
JPanel jp2,jp3;
JLabel j0,j1,j2;
JTextField txt1,txt2;
JButton Bopen,Bclose;
public TianComm(){
jp0=new JPanel();
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
j1=new JLabel("頻率(Hz):");
//輸入頻率值,單位為Hz
j2=new JLabel("幅度(mV):");
//輸入幅度值,單位為mV
txt1=new JTextField(10);
txt2=new JTextField(10);
Bopen=new JButton("打開");//打開控制面板
Bclose=new JButton("關閉");//關閉控制面板
…}
對控制界面進行操作時應注意以下事項:
(1)「打開」和「關閉」按鈕分別代表打開和關閉控制端;
(2)頻率以Hz為單位,解析度為1 Hz,假如頻率為2 000 Hz,就在頻率欄填寫2 000;幅度以mV為單位,解析度為1 mV,假如需要1 V,則在幅度行輸入1 000,然後按回車鍵即可。
3.2 數字合成音頻信號
直接採用數位技術合成正弦音頻信號,不僅在轉換速度上要優於一般電路,在合成精度上也要優於一般振蕩電路,而且具有與標準頻率源相同的頻率準確度和穩定度。輸出信號頻率通常可按十進位數字選擇,最高能達11位數字的極高分辨力。
信號發生部分由主機產生數字音頻流,通過STM32F429自帶的數模轉換功能獲得所需的模擬信號。在數字音頻處理中,聲音和數據的轉換有多種方式,本設計採用脈衝編碼調製(PCM),不進行壓縮數據便可完成此功能,數據以常見的波形(WAVE)格式保存。關於頻率設置的部分程序如下:
int FreSwitch(uint16_t fre)
{
switch(fre){
case 20:
FreIndex=0;
VS1003_SineTest(2,SIN_SAMPLE_RATE_25600,1);
//20 Hz break;
case 21:
FreIndex=1;
VS1003_SineTest(2,SIN_SAMPLE_RATE_16000,2);
//21 Hz
break;
case 22 :
FreIndex=2;
VS1003_SineTest(2,SIN_SAMPLE_RATE_40320,1);
// 22 Hz
break;
…}
4 實物調試
整個研究過程通過了模擬試驗及系統軟硬體設計,最終實現預期目標。
該信號發生器的截止頻率設定為20 kHz,大於20 kHz的信號都是幹擾信號,通過較大幅度的衰減進行濾除,從而保證較小的信號諧波失真。
接通電源後,通過計算機控制信號發生器的信號頻率、幅值等參數,通過乙太網把控制命令字傳輸給發生器,發生器對控制字進行周期性掃描,頻率、幅度控制字需要轉換成二進位,傳送到單片機STM32F429,接到命令後通過正弦查詢表映射成數字量信號,通過單片機本身的數模轉換功能即可得到所需的音頻信號。由於輸出後的正弦信號會出現失真現象,需通過濾波器進行濾波,從而得到正確的正弦信號。
通過示波器對設計的音頻信號發生器發出的音頻信號進行採集,結果如表1所示。
設置頻率為10 kHz、幅值為1 Vpp,用一臺示波器來對比傳統音頻信號發生器與本文所設計的音頻信號發生器的波形曲線,如圖5所示。
通過測試,本設計實現的音頻信號發生器的基本功能達到了預期效果,其頻率響應為±0.4 dB,失真度控制在0.5%,而傳統音頻信號發生器的失真度在20 Hz~100 Hz時≤0.8%,在100 Hz~20 kHz時≤0.5%。
5 結論
本文設計的音頻信號發生器具有操作簡單、信號穩定、精度高、體積小、便於攜帶等特點,可應用於電聲器件的聽音測試、揚聲器的老化試驗等各種音頻電子測量和控制場合。通過PC控制端直接輸入所需音頻信號的幅度、頻率值,藉助乙太網遠距離控制,而不必每次親臨現場,也不必每次通過粗調、細調即可達到要求。通過集線器可同時輸出多路相同音頻信號,對多臺相同儀器進行測量。利用數字合成技術合成音頻信號,簡化電路,具有與標準頻率源相同的頻率準確度和穩定度;也可合成方波、三角波等規則波形,只需在PC控制面板上添加信號類型選擇項即可實現硬體的單一化、軟體的多元化,節約成本。