張 臨,張建民
(天津職業(yè)技術(shù)師范大學(xué) 電子工程學(xué)院,天津300222)
當(dāng)前音頻信號(hào)的采集技術(shù)主要分為8位、16位和24位采集。8位音頻采集與處理技術(shù)電路簡單,容易實(shí)現(xiàn),但由于失真較大,現(xiàn)在很少被采用。24位和16位采集的音頻信號(hào)在聽覺效果上相差不大,但24位占用了更多的資源,實(shí)現(xiàn)電路復(fù)雜,也很少被采用。目前音頻信號(hào)處理技術(shù)主要是指16位數(shù)據(jù)采集與處理技術(shù)。AD7705是AD公司推出的帶有二通道的高精度AD轉(zhuǎn)換器,適合于測量低頻模擬信號(hào),采用∑-Δ轉(zhuǎn)換技術(shù)來實(shí)現(xiàn)16位轉(zhuǎn)換精度,可廣泛應(yīng)用于智能系統(tǒng)、微控制器和數(shù)字信號(hào)處理系統(tǒng)中。近年來現(xiàn)場可編程門陣列FPGA的飛速發(fā)展也在數(shù)據(jù)處理中占據(jù)一席之地,高端的FPGA已經(jīng)集成了DSP功能,并不斷壯大,甚至在某些領(lǐng)域?qū)⒂锌赡苋〈鶧SP,FPGA內(nèi)部豐富的邏輯資源使其非常適合于實(shí)時(shí)數(shù)據(jù)處理。本文正是從此出發(fā),利用AD7705及FPGA設(shè)計(jì)了音頻信號(hào)采集系統(tǒng),并利用Quartus II對(duì)采集系統(tǒng)進(jìn)行了仿真。針對(duì)前端信號(hào)中存在的噪聲,設(shè)計(jì)低通濾波器對(duì)噪聲進(jìn)行處理,并使用MATLAB對(duì)低通濾波器進(jìn)行仿真,驗(yàn)證了設(shè)計(jì)的可行性。
傳感器采集到的音頻模擬信號(hào)首先經(jīng)過信號(hào)調(diào)理電路處理,然后對(duì)其進(jìn)行濾波并送AD處理,轉(zhuǎn)換后得到的數(shù)字信號(hào)經(jīng)FPGA[1]處理,并存儲(chǔ)在FLASH中。音頻信號(hào)采集的方框圖如圖1。
圖1 系統(tǒng)設(shè)計(jì)方框圖
由于被采集的信號(hào)相對(duì)較小,而且經(jīng)常會(huì)伴有噪聲,所以在前端需要對(duì)信號(hào)進(jìn)行放大、濾波。同時(shí)由于被采集的信號(hào)都是單端信號(hào),所以要在信號(hào)進(jìn)入AD之前進(jìn)行差分變換,通過將信號(hào)放大,再移位來實(shí)現(xiàn)。
音頻低通濾波器[2]主要是濾除音頻以外的噪聲信號(hào)。音頻信號(hào)頻率為20 Hz~20 k Hz,由于實(shí)際生活中的音頻信號(hào)范圍在50 Hz~10 k Hz范圍內(nèi),考慮到實(shí)現(xiàn)的難度,本文設(shè)計(jì)成低通濾波器。具體要求截止頻率3 dB,10 k Hz阻帶衰減不小于-40 dB。通過查表或使用相關(guān)濾波器設(shè)計(jì)軟件可以知道:電路由1到2個(gè)單元的運(yùn)放和任意RC網(wǎng)絡(luò)組成可以實(shí)現(xiàn),本文采用4階巴特沃斯實(shí)現(xiàn),如圖2所示。
使用Matlab 7.0[3]對(duì)音頻低通濾波器進(jìn)行仿真,仿真結(jié)果如圖3。從仿真圖中可以看出截止頻率滿足-3d B,音頻信號(hào)上限10 k Hz時(shí)衰減-41.8 dB,也滿足設(shè)計(jì)要求。
圖2 音頻帶通濾波器
圖3 帶通濾波器仿真結(jié)果
由于基準(zhǔn)電壓對(duì)AD轉(zhuǎn)換器影響很大,本設(shè)計(jì)采用專用集成穩(wěn)壓芯片LM1117系列低壓差電壓調(diào)節(jié)器來提供基準(zhǔn)電壓[4]。LM1117具有電流限制和熱保護(hù)電路,包含1個(gè)帶隙參考電壓以確保輸出電壓的精度在1%以內(nèi),本文采用固定輸出電壓的LM1117-2.5為AD提供2.5 V基準(zhǔn)電壓。
數(shù)字接口AD7705的串行數(shù)據(jù)接口包括5個(gè)接口,其中片選輸入CS、串行時(shí)鐘輸入SCLK、數(shù)據(jù)輸入DIN、轉(zhuǎn)換數(shù)據(jù)輸出口 DOUT、轉(zhuǎn)換結(jié)束指示位DRDY。主要硬件連接如圖4所示。
圖4 基準(zhǔn)電源設(shè)計(jì)
2.4.1 基本原理
本文采用AT45DB041B對(duì)采集信號(hào)進(jìn)行存儲(chǔ),該存儲(chǔ)器主要由主存儲(chǔ)器和兩個(gè)264B的緩存構(gòu)成,主存儲(chǔ)器容量約為 4Mbit,分為 2048頁,每頁也為264B。
圖5是AT45DB041B的SOIC-8的封裝形式,各管腳的定義與功能如下:1腳:SI,串行數(shù)據(jù)輸入端;2腳:SCK,串行時(shí)鐘信號(hào)。數(shù)據(jù)在SCK上升沿輸入,接高電平;4腳:CS,片選信號(hào),低電平有效;下降沿輸出;3腳:RESET,復(fù)位信號(hào),低電平有效。由于芯片內(nèi)部有上電復(fù)位電路,不用時(shí)此管腳可直接5腳。5腳:WP,寫保護(hù)信號(hào),低電平有效。若此腳為低,則主存儲(chǔ)區(qū)前256頁不能被擦寫編程,如果不用此功能,可直接接高電平;6腳:VCC,電源輸入端;7腳:GND,電源地;8腳:SO,串行數(shù)據(jù)輸出端。
圖5 存儲(chǔ)電路封裝
AT45DB041B的操作命令分為讀命令、編程和擦寫命令以及附加命令:
(1)讀主存儲(chǔ)區(qū)
不經(jīng)過緩沖區(qū)讀主存儲(chǔ)區(qū)任一頁,緩沖區(qū)內(nèi)容不會(huì)改變。指令格式后續(xù)的SCK信號(hào)將使數(shù)據(jù)依次從SO端輸出。如果讀到了指定頁的最后字節(jié),將自動(dòng)跳回到頁首起始位置,循環(huán)讀取。整個(gè)過程中,CS必須保持為低電平,CS從低到高的跳變將中止讀操作,并將SO引腳置三態(tài)。
(2)連續(xù)讀主存儲(chǔ)區(qū)
不經(jīng)過緩沖區(qū)直接讀任意存儲(chǔ)單元的內(nèi)容,緩沖區(qū)內(nèi)容也不會(huì)改變。指令格式后續(xù)的SCK時(shí)鐘信號(hào)將使數(shù)據(jù)依次從SO端輸出。如果讀到了整個(gè)主存儲(chǔ)區(qū)的最后字節(jié),將自動(dòng)跳回主存儲(chǔ)區(qū)起始位置,循環(huán)讀取,頁與頁之間及主存儲(chǔ)區(qū)首尾之間沒有延時(shí)。整個(gè)過程中,CS必須保持為低電平,CS從低到高的跳變將中止讀操作,并將SO引腳置三態(tài)。
(3)寫緩沖區(qū)
數(shù)據(jù)能夠通過SI端被寫入任意一個(gè)緩沖區(qū)。當(dāng)寫到緩沖區(qū)結(jié)尾后仍有數(shù)據(jù)寫入時(shí),數(shù)據(jù)將從緩沖區(qū)起始字節(jié)依次寫入。只要CS保持為低,在SCK時(shí)鐘信號(hào)配合下,數(shù)據(jù)將一直循環(huán)寫入,CS從低到高的跳變將中止寫操作。
(4)緩沖區(qū)寫入主存儲(chǔ)頁(帶擦除)
事先寫入緩沖區(qū)的數(shù)據(jù)可通過編程寫到主存儲(chǔ)頁中。當(dāng)指令寫完后,CS由0變?yōu)?時(shí),芯片首先擦除待寫入頁,然后再將指定緩沖區(qū)內(nèi)的數(shù)據(jù)寫入主存儲(chǔ)頁。頁擦除和寫入操作由內(nèi)置時(shí)鐘控制。
2.4.2 硬件接線
圖6 AD轉(zhuǎn)換及存儲(chǔ)電路連接
AD轉(zhuǎn)換以及存儲(chǔ)電路的硬連接[5]如圖 6,將EP1C6Q240C8N的IO和AT 45DB041B的SI、SO 、SCK、RST、CS引腳相連,WP接高電平;通過 AD轉(zhuǎn)換,EP1C6Q240C8N將轉(zhuǎn)換結(jié)果存儲(chǔ)于AT45DB041B中,完成數(shù)據(jù)存儲(chǔ)工作。
本文所使用的AD7705是AD公司生產(chǎn)的適合于測量低頻信號(hào)的16位AD轉(zhuǎn)換器,主要引腳功能介紹見表1。
表1 AD主要引腳功能
依據(jù)奈奎斯特采樣定理,在模擬信號(hào)的數(shù)字化過程中,要想不失真的還原出原信號(hào),采樣頻率必須大于模擬信號(hào)最高頻率的兩倍,即
由于音頻信號(hào)的頻率范圍為20 Hz~20 kHz,即fh=20 kHz,所以采樣頻率最低為40 k Hz。目前對(duì)音頻信號(hào)的采集頻率主要有44.1 k Hz和48 k Hz兩種,為更好地還原信號(hào)本文使用48 k Hz采樣速率。
AD7705在時(shí)鐘為2.4576 MHz的條件下,更新速率有四種,分別為50 Hz,60 Hz,250 Hz,500 Hz,即理論上最快只需2 ms即可完成一次數(shù)據(jù)轉(zhuǎn)換。由相關(guān)資料知,AD7705典型建立時(shí)間為16 ms,即使用60 Hz更新速率,16 ms完成一次轉(zhuǎn)換,每秒輸出60次轉(zhuǎn)換結(jié)果。本文更新速率使用60 Hz。由AD手冊(cè)[6]知串行時(shí)鐘脈沖寬度不得小于100 ns,即時(shí)鐘不得大于5 MHz,通過將系統(tǒng)時(shí)鐘分頻,得到所需要的串行時(shí)鐘。
上電或復(fù)位后,器件等待指令數(shù)據(jù)寫入通信寄存器。包括向 AD7705寫控制字。當(dāng)寫入控制字后,AD7705即處于工作狀態(tài),對(duì)采集到的模擬量進(jìn)行模數(shù)轉(zhuǎn)換。當(dāng)模數(shù)轉(zhuǎn)換完畢后,AD7705的DRDY引腳會(huì)產(chǎn)生一個(gè)低電平。系統(tǒng)工作后,FPGA查詢DRDY電平狀態(tài)。如果引腳為低,則AD7705轉(zhuǎn)換數(shù)據(jù)結(jié)束,可以讀取數(shù)據(jù),具體流程如圖7所示。
圖7 數(shù)據(jù)采集流程圖
利用QuartusII[7],對(duì)系統(tǒng)采樣進(jìn)行了仿真,結(jié)果如圖8所示。
圖8 FPGA控制AD時(shí)序仿真
從圖8我們可以知道,對(duì)FPGA的操作首先復(fù)位各寄存器,然后寫控制字,再通過通信寄存器對(duì)時(shí)鐘寄存器、設(shè)置寄存器進(jìn)行訪問。分別寫控制字FFH、05H 和40H,分別表示AD晶振2.4576 MHz,更新頻率60次/s,自校準(zhǔn)模式,差分輸入。
(1)如果AD7705復(fù)位引腳直連VCC,最好在初始化程序中加入初始化序列,不然DRDY信號(hào)不會(huì)輸出,就檢測不到轉(zhuǎn)換是否結(jié)束,也就無法讀取轉(zhuǎn)換結(jié)果。
(2)如果AD7705采集單端信號(hào),則輸入必須在0到VDD之間,而不可以超出或?yàn)樨?fù)。如果一個(gè)輸入為負(fù),則另一個(gè)輸入會(huì)有灌入電流的現(xiàn)象,芯片無法正常運(yùn)行。
(3)AD7705的模擬地和數(shù)字地要分開走線,最后匯聚到一個(gè)唯一的公共點(diǎn),并且這個(gè)點(diǎn)要盡可能靠近AD7705。
(4)數(shù)字信號(hào)線應(yīng)盡量避免走在AD7705芯片下面,模擬地應(yīng)布置在芯片的下面,電源線、地線應(yīng)盡可能粗,時(shí)鐘信號(hào)要盡量遠(yuǎn)離模擬信號(hào),并用數(shù)字地屏蔽。
(5)AD7705時(shí)鐘大于2M時(shí),時(shí)鐘設(shè)置寄存器的CLK位應(yīng)置1,小于2M時(shí)應(yīng)置0。SCLK的脈沖寬度要滿足最小的脈寬要求。在時(shí)鐘SCLK下降之后的低電平期間讀取數(shù)據(jù)DOUT。在時(shí)鐘SCLK的低電平期間寫入數(shù)據(jù)DIN,然后在SCLK的上升沿寫入到AD7705。在兩次寫操作之間,DIN最好保持在高電平,時(shí)鐘信號(hào)SCLK在兩次操作AD7705之間也要保持高電平。即在AD7705空閑時(shí)刻,或兩次操作之間的空閑時(shí)刻,DIN、SCLK都最好保持高電平。
音頻AD轉(zhuǎn)換器的選擇直接關(guān)系著聽覺效果,精度太小能明顯感覺失真,精度太高則成本及實(shí)現(xiàn)難度也會(huì)加大。本文選取精度適中的16位AD轉(zhuǎn)換器對(duì)音頻信號(hào)進(jìn)行采集與處理,并采用FPGA作為微控制器。通過對(duì)音頻信號(hào)進(jìn)行濾波、放大,AD轉(zhuǎn)換,最后被FPGA采集并存儲(chǔ)。實(shí)際操作證明本文方案不僅易于實(shí)現(xiàn),轉(zhuǎn)換速度較快,而且能感覺音質(zhì)有一定的提高。
[1] 王 誠,吳繼華.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2005.
[2] McGraw Hill,Sanjit K Mitra.Digital Signal Processing[M].A Computer-Based Approach,Second Edition,2001.
[3] Sanjit K Mitra編,孫洪 等譯.數(shù)字信號(hào)處理實(shí)驗(yàn)指導(dǎo)書(Matlab版)(第一版)[M].北京:電子工業(yè)出版社,2005.
[4] 王 超,黃顯高.高速數(shù)據(jù)采集系統(tǒng)的電源設(shè)計(jì)研究[J].西安郵電學(xué)院學(xué)報(bào),2009(9).
[5] 寧 海,尹青山.低功耗16位A/D轉(zhuǎn)換器 AD7705及其應(yīng)用[J].甘肅農(nóng)業(yè),2006(6).10-13.
[6] Analog Device.AD7705/AD7706 Manual[Z],2001.
[7] 侯伯亨,顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社.2006。