DSP和音頻AD/DA的硬件設(shè)計(jì)
ad50和dsp的硬件連接有多種方法,但使用最多的是dsp的緩沖串口和ad50連接方法。這種連接方法可使一個(gè)緩沖串口與多個(gè)ad50芯片連接(一個(gè)緩沖串口最多與3個(gè)ad50芯片連接)?! sp為主設(shè)備、ad50為從設(shè)備的連接方法如圖1所示。圖中ad50的時(shí)鐘信號(hào)由c5409的定時(shí)器0的輸出提供,時(shí)鐘頻率可以通過(guò)修改定時(shí)器0的設(shè)置而改變。ad50的fc引腳連接到c5409的xf(通用i/o引腳),用于控制第二次串行通信。ad50的din(數(shù)據(jù)輸人引腳)和d0ut(數(shù)據(jù)輸出引腳)分別接c5409緩沖串口0的dx0和dr0引腳。ad50的sclk(移位時(shí)鐘輸出)連接c5409的clkr0(緩沖串口0的接收時(shí)鐘引腳),幀同步信號(hào)fs連接c5409緩沖串口0的frx0?! D1 ad50和一個(gè)dsp的連接 dsp帶兩個(gè)ad50,其中一個(gè)ad50為主設(shè)備,一個(gè)ad50為從設(shè)備的連接方法如圖2所示?! D2 兩個(gè)ad50和dsp的連接 dsp一般不能同時(shí)連接兩個(gè)都是從設(shè)備的ad50芯片,但如果使用了pld(邏輯器件)就可以實(shí)現(xiàn)連接兩個(gè)從設(shè)備的ad50,具體的連接方法如圖3所示?! D3 兩個(gè)從ad50和dsp的連接 語(yǔ)音數(shù)據(jù)傳輸?shù)絛sp的mcbsp。mcbsp和cpu的通信有3種方式?! 。?)每收到或發(fā)送一個(gè)單元,置標(biāo)志位,cpu輪詢此標(biāo)志位?! 。?)每收到或發(fā)送一個(gè)單元,給cpu發(fā)送中斷?! 。?)通過(guò)dma收到或發(fā)送完一組單元,再給cpu中斷?! 〔捎胐ma的方式,即串口每發(fā)送或接受到一個(gè)單元,都會(huì)自動(dòng)觸發(fā)dma將其搬送到一個(gè)內(nèi)部的緩沖區(qū)(buffer),等buffer滿了再通過(guò)中斷方式告訴cpu處理。這時(shí)dma最好采用自動(dòng)緩沖(abu,auto buffering)模式,在這種模式下,dma會(huì)在兩個(gè)buffer(其實(shí)是一個(gè)大buffer的前一半和后一半)之間自動(dòng)切換,每個(gè)buffer滿了(接收)或空了(發(fā)送)都會(huì)給cpu發(fā)出中斷,在cpu處理這個(gè)buffer的時(shí)候,dma會(huì)自動(dòng)去操作另一個(gè)buffer。采用這種方式可以有效防止buffer中的數(shù)據(jù)在串口速率較高時(shí)被新數(shù)據(jù)沖掉的問(wèn)題。 在dma的中斷服務(wù)程序中為了可靠可以把這個(gè)buffer的數(shù)據(jù)再拷貝到另一個(gè)待處理的空間,即兩級(jí)buffer,然后置標(biāo)志位,cpu在主程序中查詢標(biāo)志位然后作出相應(yīng)的處理。dma操作的buffer可以通過(guò)寄存器配置,buffer的大小和起始位置應(yīng)設(shè)置正確。在指定buffer的起始位置時(shí)應(yīng)該注意,起始位置應(yīng)該為大于buffer大小的下一個(gè)2的整數(shù)冪的倍數(shù)。例如,在8kb、16bit采樣的情況下,以20ms數(shù)據(jù)為buffer大小,那么一次處理的數(shù)據(jù)是8000×32×0,02=5120bit-320word。所以,dma的buffer應(yīng)為640word(兩個(gè)320word buffer)大小,而buffer的起始地址應(yīng)該為1024=210>640的整數(shù)倍,如0x7000,0x7400…… 歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)()