可控?cái)?shù)字語(yǔ)音延遲器的PIC設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:詳細(xì)闡述一種采用PIC16C55單片機(jī)實(shí)現(xiàn)可控數(shù)字語(yǔ)音延遲器的設(shè)計(jì)方案,同時(shí)提供控制電路圖及軟件算法流程圖。
關(guān)鍵詞:延遲器 語(yǔ)音信號(hào) PIC單片機(jī)
延遲器在音頻信號(hào)處理中有著重要而特殊的用途,是制造混響器、回聲信號(hào)的重要部件,在無(wú)線(xiàn)通信同步控制中也起著重要作用。延遲器大致可分為BBD (Bucket Brigade Device)式延遲器和數(shù)字式延遲器兩類(lèi)。數(shù)字式延遲器與BBD式延遲器相比,具有延時(shí)時(shí)間范圍寬,工作頻帶寬,動(dòng)態(tài)范圍大等特點(diǎn);而可控式延遲器可以靈活產(chǎn)生多種時(shí)延,以便應(yīng)用于不同的場(chǎng)合。本文介紹一種基于PIC系列單片機(jī)的可控?cái)?shù)字語(yǔ)音延遲器的設(shè)計(jì)方案。
本系統(tǒng)采用性?xún)r(jià)比極高的PIC16C55單片機(jī)作為中心控制部件。PID16C55單片機(jī)是PIC系列單片機(jī)中的低檔型單片機(jī),具有20個(gè)I/O,1個(gè)定時(shí)器和1個(gè)WDT,其最短指令周期可達(dá)200ns。利用該型號(hào)單片機(jī)作為控制部件,具有控制快速、擴(kuò)展方便、低功耗、性能穩(wěn)定等特點(diǎn),同時(shí)還可以最大限度地減少外圍電路以降低成本,提高性?xún)r(jià)比。
1 系統(tǒng)工作原理
可控數(shù)字語(yǔ)音延遲器的原理框圖如圖1所示。輸入的語(yǔ)音信號(hào)先經(jīng)過(guò)低通抗混迭濾波器,濾除其中的高頻成分后送入A/D轉(zhuǎn)換器。經(jīng)過(guò)A/D轉(zhuǎn)換后,信號(hào)變成數(shù)字信號(hào)。該數(shù)字信號(hào)在PIC16C55單片機(jī)的控制下被寫(xiě)入存儲(chǔ)器。系統(tǒng)中高有兩組存儲(chǔ)器,這兩組存儲(chǔ)器在單片機(jī)的控制下交替工作:在一個(gè)延遲周期內(nèi),一組存儲(chǔ)器專(zhuān)門(mén)用于存儲(chǔ)本周期內(nèi)采集的數(shù)據(jù),而另一組存儲(chǔ)器專(zhuān)門(mén)用于把上一個(gè)周期所采集的數(shù)據(jù)按順序送到數(shù)據(jù)總線(xiàn),經(jīng)過(guò)D/A轉(zhuǎn)換器和低通濾波器后恢復(fù)出原始信號(hào)。在下一個(gè)延遲周期,兩組存儲(chǔ)器交換工作狀態(tài),以后按此不斷循環(huán)。可見(jiàn),延遲的時(shí)間取決于A/D轉(zhuǎn)換器前后兩次啟動(dòng)的時(shí)間間隔和存儲(chǔ)區(qū)的大小。在本系統(tǒng)中,利用PIC16C55中的定時(shí)器定時(shí)產(chǎn)生A/D轉(zhuǎn)換器的啟動(dòng)信號(hào),定時(shí)器的定時(shí)時(shí)間為10μs,所以,最小延遲時(shí)間為10μs。而存儲(chǔ)區(qū)的大小設(shè)為256,所以,最大延遲時(shí)間為10μs×256=2560μs=2.56ms。系統(tǒng)中的預(yù)置單元用來(lái)設(shè)置延遲單元數(shù),進(jìn)而得到所需的延遲時(shí)間。
2 控制電路設(shè)計(jì)
系統(tǒng)中PIC16C55單片機(jī)是中心控制部件。它的主要任務(wù)有:定時(shí)控制A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換;控制RAM(1)、RAM(2)的讀寫(xiě);控制D/A轉(zhuǎn)換器的轉(zhuǎn)換;產(chǎn)生RAM(1)、RAM(2)的地信息;控制RAM(1)、RAM(2)的交替;接受預(yù)置輸入??刂齐娐啡鐖D2所示。

3 軟件設(shè)計(jì)
系統(tǒng)正常工作時(shí)的時(shí)序如圖3所示。當(dāng)START變?yōu)榈碗娖綍r(shí),ADC0820開(kāi)始轉(zhuǎn)換,轉(zhuǎn)換時(shí)間約為2.5μs。在ADC0820轉(zhuǎn)換期間,讀存儲(chǔ)區(qū)開(kāi)始讀操作,同時(shí)DAC0832開(kāi)始轉(zhuǎn)換,存儲(chǔ)區(qū)的讀操作時(shí)間設(shè)為1μs。當(dāng)ADC0820轉(zhuǎn)換結(jié)束后,INT變?yōu)榈碗娖?,同時(shí)寫(xiě)存儲(chǔ)區(qū)進(jìn)行寫(xiě)操作,延時(shí)1μs后,START設(shè)為高電平。至此,一次的轉(zhuǎn)換和一次的讀寫(xiě)操作已經(jīng)操作已經(jīng)完成。從此刻到下一次A/D轉(zhuǎn)換開(kāi)始的時(shí)間內(nèi),主要完成的操作有:存儲(chǔ)地址的改變、兩組存儲(chǔ)區(qū)的交替及預(yù)置值的讀入。
程序流程如圖4所示。
結(jié)束語(yǔ)
筆者根據(jù)本文的設(shè)計(jì)方案制作了實(shí)際電路,效果良好。在實(shí)際應(yīng)用中,讀者可根據(jù)實(shí)際情況靈活改變最小延遲時(shí)間和最大延遲單元數(shù)。通過(guò)改變PIC16C55中定時(shí)器的定時(shí)時(shí)間即可改變最小遲時(shí)間;通過(guò)改變存儲(chǔ)區(qū)的大小即可改變最大延遲單元數(shù),進(jìn)而改變最大延遲時(shí)間