DSP和音頻AD/DA的硬件設計
發布時間:2008/12/17 0:00:00 訪問次數:1030
ad50和dsp的硬件連接有多種方法,但使用最多的是dsp的緩沖串口和ad50連接方法。這種連接方法可使一個緩沖串口與多個ad50芯片連接(一個緩沖串口最多與3個ad50芯片連接)。
dsp為主設備、ad50為從設備的連接方法如圖1所示。圖中ad50的時鐘信號由c5409的定時器0的輸出提供,時鐘頻率可以通過修改定時器0的設置而改變。ad50的fc引腳連接到c5409的xf(通用i/o引腳),用于控制第二次串行通信。ad50的din(數據輸人引腳)和d0ut(數據輸出引腳)分別接c5409緩沖串口0的dx0和dr0引腳。ad50的sclk(移位時鐘輸出)連接c5409的clkr0(緩沖串口0的接收時鐘引腳),幀同步信號fs連接c5409緩沖串口0的frx0。
圖1 ad50和一個dsp的連接
dsp帶兩個ad50,其中一個ad50為主設備,一個ad50為從設備的連接方法如圖2所示。
圖2 兩個ad50和dsp的連接
dsp一般不能同時連接兩個都是從設備的ad50芯片,但如果使用了pld(邏輯器件)就可以實現連接兩個從設備的ad50,具體的連接方法如圖3所示。
圖3 兩個從ad50和dsp的連接
語音數據傳輸到dsp的mcbsp。mcbsp和cpu的通信有3種方式。
(1)每收到或發送一個單元,置標志位,cpu輪詢此標志位。
(2)每收到或發送一個單元,給cpu發送中斷。
(3)通過dma收到或發送完一組單元,再給cpu中斷。
采用dma的方式,即串口每發送或接受到一個單元,都會自動觸發dma將其搬送到一個內部的緩沖區(buffer),等buffer滿了再通過中斷方式告訴cpu處理。這時dma最好采用自動緩沖(abu,auto buffering)模式,在這種模式下,dma會在兩個buffer(其實是一個大buffer的前一半和后一半)之間自動切換,每個buffer滿了(接收)或空了(發送)都會給cpu發出中斷,在cpu處理這個buffer的時候,dma會自動去操作另一個buffer。采用這種方式可以有效防止buffer中的數據在串口速率較高時被新數據沖掉的問題。
在dma的中斷服務程序中為了可靠可以把這個buffer的數據再拷貝到另一個待處理的空間,即兩級buffer,然后置標志位,cpu在主程序中查詢標志位然后作出相應的處理。dma操作的buffer可以通過寄存器配置,buffer的大小和起始位置應設置正確。在指定buffer的起始位置時應該注意,起始位置應該為大于buffer大小的下一個2的整數冪的倍數。例如,在8kb、16bit采樣的情況下,以20ms數據為buffer大小,那么一次處理的數據是8000×32×0,02=5120bit-320word。所以,dma的buffer應為640word(兩個320word buffer)大小,而buffer的起始地址應該為1024=210>640的整數倍,如0x7000,0x7400……
歡迎轉載,信息來源維庫電子市場網(www.dzsc.com)
ad50和dsp的硬件連接有多種方法,但使用最多的是dsp的緩沖串口和ad50連接方法。這種連接方法可使一個緩沖串口與多個ad50芯片連接(一個緩沖串口最多與3個ad50芯片連接)。
dsp為主設備、ad50為從設備的連接方法如圖1所示。圖中ad50的時鐘信號由c5409的定時器0的輸出提供,時鐘頻率可以通過修改定時器0的設置而改變。ad50的fc引腳連接到c5409的xf(通用i/o引腳),用于控制第二次串行通信。ad50的din(數據輸人引腳)和d0ut(數據輸出引腳)分別接c5409緩沖串口0的dx0和dr0引腳。ad50的sclk(移位時鐘輸出)連接c5409的clkr0(緩沖串口0的接收時鐘引腳),幀同步信號fs連接c5409緩沖串口0的frx0。
圖1 ad50和一個dsp的連接
dsp帶兩個ad50,其中一個ad50為主設備,一個ad50為從設備的連接方法如圖2所示。
圖2 兩個ad50和dsp的連接
dsp一般不能同時連接兩個都是從設備的ad50芯片,但如果使用了pld(邏輯器件)就可以實現連接兩個從設備的ad50,具體的連接方法如圖3所示。
圖3 兩個從ad50和dsp的連接
語音數據傳輸到dsp的mcbsp。mcbsp和cpu的通信有3種方式。
(1)每收到或發送一個單元,置標志位,cpu輪詢此標志位。
(2)每收到或發送一個單元,給cpu發送中斷。
(3)通過dma收到或發送完一組單元,再給cpu中斷。
采用dma的方式,即串口每發送或接受到一個單元,都會自動觸發dma將其搬送到一個內部的緩沖區(buffer),等buffer滿了再通過中斷方式告訴cpu處理。這時dma最好采用自動緩沖(abu,auto buffering)模式,在這種模式下,dma會在兩個buffer(其實是一個大buffer的前一半和后一半)之間自動切換,每個buffer滿了(接收)或空了(發送)都會給cpu發出中斷,在cpu處理這個buffer的時候,dma會自動去操作另一個buffer。采用這種方式可以有效防止buffer中的數據在串口速率較高時被新數據沖掉的問題。
在dma的中斷服務程序中為了可靠可以把這個buffer的數據再拷貝到另一個待處理的空間,即兩級buffer,然后置標志位,cpu在主程序中查詢標志位然后作出相應的處理。dma操作的buffer可以通過寄存器配置,buffer的大小和起始位置應設置正確。在指定buffer的起始位置時應該注意,起始位置應該為大于buffer大小的下一個2的整數冪的倍數。例如,在8kb、16bit采樣的情況下,以20ms數據為buffer大小,那么一次處理的數據是8000×32×0,02=5120bit-320word。所以,dma的buffer應為640word(兩個320word buffer)大小,而buffer的起始地址應該為1024=210>640的整數倍,如0x7000,0x7400……
歡迎轉載,信息來源維庫電子市場網(www.dzsc.com)
上一篇:DSP軟件設計
上一篇:模糊PI控制器的DSP應用程序
熱門點擊
- FPGA技術按顆粒度分類
- DDS各部分的具體參數
- DSP的系統配置命令文件
- DSP配置頭文件
- DSP中斷向量表和中斷子向量表
- 非均勻采樣理論概述
- DSP和音頻AD/DA的硬件設計
- 數字信號處理FPGA的結構
- DSP軟件設計
- 模糊PI控制器的DSP應用程序
推薦技術資料
- 業余條件下PCM2702
- PGM2702采用SSOP28封裝,引腳小而密,EP3... [詳細]