隨著數字信號處理技術的迅速發展,錄音也已經進入了數字化的時代。DSP(Digital Signal Processor)為數字信號處理提供了高效而可靠的硬件基礎,已經廣泛應用于高速自動控制、圖像處理、通信技術、無線電、語音處理、網絡設備、醫療設備、儀器儀表和家電等領域。本設計中所使用的TMS320VC5410就是設計適用于語音信號處理的DSP芯片。
本文首先對DSP數字錄音的軟硬件開發環境進行了介紹,著重論述了AIC32和TMS320C5410的設計方法、指令系統和內部結構以及TMS320C5410的集成開發環境CCS。最后,通過在DSP集成開發環境CCS上的設計、仿真和調試,實現了在DSP實驗箱上進行數字錄音和語音信號處理的設計功能。
1.開發軟件簡介.....1
2.數字錄音機的原理....2
2.1 TMS320C5410芯片....2
2.2 AIC23芯片.....4
3.硬件電路....6
4調試過程及結果分析...8
5.總結及體會.....8
1.開發軟件簡介 本次課程設計采用CCS軟件 CCS5000具有一下特性: TI編譯器的完全集成的環境: CCS5000目標管理系統,內建編輯器,所有的調試和分析能力集成在一個Windows環境中。 對C和DSP匯編文件的目標管理: 目標編輯器保持對所有文件及相關內容的跟蹤。它只對最近一次編譯中改變過的文件重新編譯,以節省編譯時間。 高集成的編輯器調整C和DSP匯編代碼: CCS5000的內建編輯器支持C和匯編文件的動態語法加亮顯示。使用戶能很容易地閱讀代碼和當場發現語法錯誤。 編輯和調試時的后臺編輯: 用戶在使用編譯器和匯編器時沒有必要退出系統到DOS環境中,因為CCS5000會自動將這些工具裝載在它的環境中。在其窗口中,錯誤會加亮顯示只要雙擊錯誤就可以直接到達出錯處。 在含有浮點并行調試管理器(PDM)的原有的MS窗口下支持多處理器CCS5000在 Windows95和Windows-me中支持多處理。PDM(調試管理器)允許將命令傳播給所有的或所選擇的處理器。 在任何算法點觀察信號的圖形窗口探針: 圖形顯示窗口使用戶能夠觀察時域或頻域內的信號。對于頻域圖,FFT(快速傅立葉變換)在主機內執行,這樣就可以觀察所感興趣的部分而無須改變它的DSP代碼。圖顯示也可以同探針連接,當前顯示窗口被更新時,探針被指定,這樣當代碼執行到達該點時,就可以迅速地觀察到信號。 文件探針在算法處通過文件提取或加入信號或數據: CCS5000允許用戶從PC機讀或寫信號流。而不是實時的讀信號,這就可以用已知的例子來仿真算法。 圖形分析: CCS5000的圖形分析能力在其環境中是集成的。 在后臺(系統命令)執行用戶的DOS程序: 用戶可以執行CCS5000中的DOS程序,并將其輸出以流水方式送到CCS5000的輸出窗口。且允許用戶將應用程序集成到CCS5000。 技術狀態觀察窗口: CCS5000的可視窗口允許用戶進入C表達式及相關變量。結構、數組、指針都能很簡單地遞歸擴展和減少,以便進入復雜結構。 代數分解窗口: 允許用戶選擇查看寫成代數表達式的C格式,提高可讀性 。 目標DSP上的幫助: DSP結構和寄存器上的在線幫助可以使用戶不必查看技術手冊。 用戶擴展: 擴展語言(GEL)使得用戶可以將自己的菜單項加到CCS5000的菜單欄中。
2.數字錄音機的原理 數字化技術的迅速發展,語音信號數字處理技術也不斷成熟,可編程器件和功能強大的數字信號處理器(DSP)的廣泛應用,傳統的模擬音像設備大量地被各種數字設備所代替。然而,便攜式的錄音設備仍以各種模擬媒質為主,如常用的磁帶錄音機。如果要將其錄音以數字形式的數據保存,則應將其模擬錄音信號變換成數字形式的數據,這就給原始數據的保存帶來諸多不便。因此,本文設計了一款DSP數字錄音機。 所謂數字信號處理,是用數字或符號的序列來表示信號,通過數字計算機或專門的數字信號處理器去處理這些序列,提取其中的有用信息。例如:對信號的濾波,增強信號的有用分量,消弱無用分量;或是估計信號的某些特征參數等。總之,凡是用數字方式對信號進行濾波、變換、增強、壓縮、估計和識別等,都是數字信號處理的研究對象。 目前,大多數的DSP系統主要應用在高速控制、移動通信、雷達等方面。本系統將DSP技術引入到數字交換機錄放音系統中來,就是希望利用DSP的特點、借鑒在移動通信中數字語音信號處理的一些算法和優化,能夠研制開發出體積小、價格低、實時性高且功能完善的錄音系統。
2.1TMS320C5410芯片
2.1.1TMS320C5410芯片簡介 (1) 16位定點DSP芯片,總線結構為改進的哈佛結構,內部有1個17X17位的乘法器; (2) 外接晶振最大為40MHz,通過PLL倍頻最高主頻為160MHz; (3) 片內ROM大小為16K×16bit , DARAM大小為8K×16bit, SARAM大小為56K×16bit; (4) 3組多通道緩沖串行口(McBSP),DMA,主機接口HPI (5) 通用IO引腳(BIO與XF),外部中斷引腳INT0,INT1,INT2,INT3與NMI C5410中的DARAM分成若干塊。由于在每個機器周期內,允許對同一DARAM塊尋址(訪問)2次,因此CPU可以在一個機器周期內對同一DARAM塊讀出一次和寫入一次。一般情況下,DARAM總是映象到數據存儲器空間,主要用于存放數據。但是,它也可以映象到程序存儲器空間,用來存放程序代碼。
2.1.2 TMS320C5410框圖 TMS320C54x DSP 采用先進的修正哈佛結構和8總線結構,使處理器的性能大大提高。其獨立的程序和數據總線,允許同時訪問程序存儲器和數據存儲器,實現高度并行操作。例如,可以在一條指令中,同時執行3次讀操作和1次寫操作。此外,還可以在數據總線與程序總線之間相互傳送數據,從而使處理器具有在單個周期內同時執行算術運算、邏輯運算、移位操作、乘法累加運算以及訪問程序和數據存儲器的強大功能。
2.1.3 TMS320C5410的CPU 先進的多總線結構(一條程序總線,3條數據總線和4條地址總線); 40位算術邏輯運算單元(ALU),包括1個40位桶形移位寄存器和2個獨立的40位累加器; 7位*17位并行乘法器,與40位專用加法器相連,用于非流水線式單周期乘法/累加(MAC)運算; 比較、選擇、存儲單元(CSSU),用于加法/比較選擇; 指數編碼器,可以在單個周期內計算40位累加器中數值的指數; 雙地址生成器,包括8個輔助寄存器和2個輔助寄存器算術運算單元(ARAU)。
2.1.4 TMS320C5410存儲器 C54X中的DARAM分成若干塊。由于在每個機器周期內,允許對同一DARAM塊尋址(訪問)2次,因此CPU可以在一個機器周期內對同一DARAM塊讀出一次和寫入一次。一般情況下,DARAM總是映象到數據存儲器空間,主要用于存放數據。但是,它也可以映象到程序存儲器空間,用來存放程序代碼: 192K字可尋址存儲空間(64K字程序存儲器、64K字數據存儲器以及64K字I/O空間); 片內ROM,可配置為程序/數據存儲器; 片內雙尋址RAM(DARAM); 片內單尋址RAM(SARAM);
2.2 AIC23芯片
2.2.1 AIC23基本性能
AIC23是德州儀器公司(TI)生產的高性能音頻A/D、D/A放大電路。外圍接口工作電壓為3.3V,內核工作電壓是1.5V,在48kHz采樣率條件下,A/D變換信噪比可達100dB,其控制口可由硬件設置為同步置口(SP2)模式或兩線制(2-wire),音頻數據接口可采用I2S格式、DSP格式、USB格式及最高位或最低位數據調整格式。音頻數據字長可設置為16、24、20、32位,輸出可直接驅動耳機,在32位條件下輸出可達30mW。內置前置放大器及偏置電路可直接連接麥克風。該芯片功耗很低,在休眠(power-down)狀態下,功耗小于15uW。
2.2.2 AIC23的內部結構框圖
2.2.3 AIC23的控制方式及控制寄存器各位的意義 (1)AIC23的控制接口:AIC23的控制字傳輸可采用兩種方式,即同步串行(SPI)模式和兩線(2-wire)模式,兩種模式由硬件決定。MODE腳接高電平時,控制字傳送用SPI模式,如果MODE腳接低電平時,則采用2-wire模式。在本次實驗中,我們采用SPI模式。 (2)AIC23的控制寄存器 控制寄存器的地址如下表所示:
①.左聲道線路輸入控制寄存器 LRS:左/右聲道線路輸入增益控制調節,0=同步調節禁止,1=同步使能 LIM:左聲道線路輸入靜音控制,0=正常,1=靜音 LIV4~0:左聲道音量控制,11111=±12dB,00000=-34.5dB,步距1.5dB/LSB X:保留 ②.右聲道線路輸入控制寄存器 ③.左聲道耳機音量控制寄存器 LSR:左/右聲道音量控制同步調節,0=同步調節不使能,1=同步調節使能 LZC:左通道過零偵測(防止干擾進入耳機放大器),0=關,1=開 LHV(6~0):耳機音量控制,1111111=+6dB,0110000=-73dB ④.右聲道耳機音量控制寄存器 ⑤.濾波器控制寄存器 DACM:D/A變換電路軟件靜音控制,0=不靜音,1=軟件靜音 DEEMP:去加重控制選擇,00=關,01=32kHz,10=44kHz,11=48kHz ADCHP:A/D高通濾波器,0=關閉,1=開 ⑥.休眠控制器 OFF:芯片休眠控制,0=芯片通電,1=芯片休眠 CLK:時鐘控制,0=時鐘開啟,1=時鐘關閉 OSC:振蕩器控制,0=振蕩器開啟,1=振蕩器關閉 OUT:輸出控制,0=輸出開啟,1=輸出關閉 DAC:D/A變換控制,0=D/A變換開啟,1=D/A變換關閉 ADC:A/D變換控制,0=A/D變換開啟,1=A/D變換關閉 MIC:話筒電路控制,0=開啟,1=關閉 LINE:線路輸入控制,0=開,1=關 ⑦.數字音頻接口格式控制寄存器 MS:主/從模式控制位,0=從模式,1=主模式 LRSWAP:D/A左右通道交換控制位,0=不交換,1=交換 LRP:D/A左右數字聲道幀相位 IWL:數字音頻字長 FOR:數字音頻接口格式選擇 3.硬件電路 1、硬件電路圖的主要部分如下圖所示
2、實驗框圖和流程圖
4.調試過程及結果分析 調試過程: 1.在調試開始的時候,用音頻線連接實驗箱的揚聲器和AIC23模塊的LINEOUT或者PHONE端,MIC端口連接一個MIC(這里我們用手機代替,接入手機耳機插口)。 2.打開aic23micphone.pjt工程,這是一個AIC23的程序,編譯。 3.將編譯的aic23micphone.out文件通過 仿真器下載到DSP芯片,執行程序。 4.聽到“滴”的一聲以后開始錄音,大概6秒后“滴”的一聲是錄音結束,接著DSP會循環回放剛才錄的聲音。如果想再次錄音則需要再次下載并運行。 結果分析 在連接好實驗設備之后,在手機里上隨意播放一個音頻文件播放后,可以錄制6秒時間內的內容,循環播放。 5.設計總結及體會 本次課程設計是采用TMS320C5410作為語音錄放實現的核心硬件,以AIC23作為數模轉換芯片來實現整個硬件系統。在整個設計過程中,我們采用了以帶有A/D轉換器的AIC23DSP芯片為核心音頻錄放接口器件,結合TMS320C5410DSP芯片,進行了硬件設計。軟件部分則采用模塊化的設計方法,用匯編語言來實現。 通過本次課程設計,進一步了解了本門課程《DSP原理及應用》。雖然錄音機很簡陋,但基本模型已具備;但過程中還是有不懂的問題,幸好有老師在,才得以解答我的疑惑;總的來說,本次課程設計的結束是非常圓滿的。 - .title "AIC23.asm"
- .mmregs
- .bss timetemp,1
- .bss addrtemp,1
- audio_in .usect "buf",0C000h
- ;定義MCBSP0的各個寄存器
- bsp2 .set 35h
- drr22 .set 30h
- drr12 .set 31h
- dxr22 .set 32h
- dxr12 .set 33h
- spsa2 .set 34h
-
- bsp0 .set 39h
- drr20 .set 20h
- drr10 .set 21h
- dxr20 .set 22h
- dxr10 .set 23h
- spsa0 .set 38h
- spcr10 .set 00h
- spcr20 .set 01h
- rcr10 .set 02h
- rcr20 .set 03h
- xcr10 .set 04h
- xcr20 .set 05h
- srgr10 .set 06h
- srgr20 .set 07h
- pcr0 .set 0eh
- cpldport1 .set 2000h
-
- .def _c_int00,_McBSP_txisr,_McBSP_rvisr
- .data
- audio_table:
- .word 07ff5H,05842H,0fcdcH,0a34dH,0800bH,0a7beH,0324H,05cb3H
- .word 07ff5H,05842H,0fcdcH,0a34dH,0800bH,0a7beH,0324H,05cb3H
-
- .text
- _c_int00: stm #7000h,swwsr ;等待0個時鐘
- ssbx intm
- STM #0b, CLKMD ;switch to DIV mode
-
-
-
- TstStatu:
- LDM CLKMD, A
- AND #01b, A ;poll STATUS bit
- BC TstStatu, ANEQ
- STM #0100001111101111b, CLKMD ;switch to PLL
- RPT #10000
- NOP
- rsbx cpl ;清CPL位=0
- ;初始化cpu完畢,開始初始化MCBSP0
- stm #216ch,pmst
- stm #0080h, imr
- stm #0FFFFh, ifr
- stm #0001h,ar1
- portw ar1,cpldport1 ;切換字寫到CPLD控制寄存器,轉為控制字輸出
- rpt #400
- nop ;等400個周期
-
- ld #00h,dp
- stm #spcr10,spsa0 ;接收復位
- stm #0000h,bsp0
- stm #spcr20,spsa0 ;發送、采樣、幀復位
- stm #0000h,bsp0
- stm #spcr10,spsa0 ;12、11位為10,進入SPI模式,7位(DXENA)為0,不起動DX延時
- stm #1000h,bsp0
- stm #pcr0,spsa0 ;1位置1,數據下沿發送上沿接收,3位置1,幀同步為低電平有效,9位置1?BLCK輸出,11位置1,BFSX腳為高電澆
- stm #0a0ah,bsp0
- stm #srgr10,spsa0 ;7~0位置64h(100),100分頻
- stm #0064h,bsp0
- stm #srgr20,spsa0 ;13位置1,時鐘源于CPU,12位置0,發送幀同步
- stm #2000h,bsp0
- stm #rcr10,spsa0 ;14~8位置0,一幀一個字,7~5位為010,一個字16位
- stm #0040h,bsp0
- stm #rcr20,spsa0 ;15位置0,單階段幀,1、0位置01保證SPI正常工作
- stm #0001h,bsp0
- stm #xcr10,spsa0 ;14~8位置0,一幀一個字,7~5位為010,一個字16位
- stm #0040h,bsp0
- stm #xcr20,spsa0 ;15位置0,單階段幀,1、0位置01保證SPI正常工作
- stm #0001h,bsp0
- stm #spcr20,spsa0 ;6位GRST為1,采樣脫離復位,FRST是否要脫離復位?
- orm #0040h,bsp0
- rpt #400 ;等兩個以上位時鐘
- nop
- stm #spcr10,spsa0 ;接收離開復位
- orm #0001h,bsp0
- stm #spcr20,spsa0 ;發送離開復位
- orm #0001h,bsp0
- rpt #400
- nop
- LOOP2
- ;初始化AIC23為DAC、ADC、CLKOUT、DSP模式結束
- stm #1e00h,dxr10
- rpt #3000
- nop
- stm #05ffh,dxr10 ;過零偵測開,音量為6dB
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #07ffh,dxr10 ;過零偵測開,音量為6dB
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #0914h,dxr10 ;伴音使能,DAC使能,MIC輸入、BYPASS不使能
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #0a02h,dxr10 ;DAC靜音不使能,去加重為32KHz,ADC高通濾波器不使能
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #0097h,dxr10 ;左聲道線路輸入0dB,線路輸入靜音
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #0297h,dxr10 ;右聲道線路輸入0dB,線路輸入靜音
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #0C01h,dxr10 ;POWER、CLOCK、OSC、OUT、DAC、ADC、MIC打開line in關閉
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #0e53h,dxr10 ;6位為1,AIC23在DSP模式中為主器件,4位為1,第二個時鐘上沿數據可用,字長16位,DSP模式
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #100Dh,dxr10 ;USB模式,8KHz采樣率,輸入時鐘為MCLK,輸出時鐘為MCLK
- rpt #3000 ;延時等待數據傳送完畢
- nop
- stm #1201h,dxr10 ;數字接口激活
- rpt #3000 ;延時等待數據傳送完畢
- nop
- ; B LOOP2
- ;AIC23的DAC輸出設置結束,開始輸出音頻數據
- ;開始設置MCBSP2為DSP模式從器件,
- stm #spcr10,spsa2 ;RRST為0接收復位
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;XRST為0,GRST為0,FRST為0發送、采樣、幀復位
- stm #0000h,bsp2
- stm #spcr10,spsa2 ;5、4位為00,接收完成產生中斷,進入非SPI模式,7位(DXENA)為0,不起動DX延時
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;5、4位為00,發送完成產生中斷,采樣,幀同步復位
- stm #0200h,bsp2
- stm #pcr0,spsa2 ;幀同步,采樣為外部輸入,外部時鐘極性反相
- stm #0006h,bsp2
- stm #rcr10,spsa2 ;14~8位置0,一幀兩個字,7~5位為010,一個字16位
- stm #0140h,bsp2
- stm #rcr20,spsa2 ;15位置0,單階段幀,第二階一個字,16位字長1、0位置01延遲一個位時鐘數據有效
- stm #0001h,bsp2
- stm #xcr10,spsa2 ;14~8位置0,一幀兩個字,7~5位為010,一個字16位
- stm #0140h,bsp2
- stm #xcr20,spsa2 ;15位置0,單階段幀,第二階一個字,16位字長1、0位置01延遲一個位時鐘數據有效
- stm #0001h,bsp2
- rpt #40 ;等兩個以上位時鐘
- nop
- stm #0000h,dxr12 ;傳起始數據到AIC23
- stm #0000h,dxr22
- rpt #400 ;等兩個以上位時鐘
- nop
- ;MCBSP0口設置為DSP模式結束,輸出數據
- nop
- stm #drr12, ar5
- ldu *ar5, a
- stm #drr22, ar5
- ldu *ar5, a
- st #audio_table, ar5
- st #15, *(timetemp)
- st #audio_table, *(addrtemp)
- st #15, ar4
- rsbx intm
- stm #spcr20,spsa2 ;發送離開復位
- orm #0001h,bsp2
- nop
- nop
-
- stm #4000h,brc
- rptb delay1s-1
- rpt #01800h
- nop
- delay1s: nop
- ssbx intm
- stm #spcr20,spsa2 ;發送結束
- orm #0000h,bsp2
- stm #2000h,brc
- rptb delay2s-1
- rpt #01800h
- nop
- delay2s: nop
- stm #spcr10,spsa2 ;接收離開復位
- orm #0001h,bsp2
- stm #0040h, imr
- stm #0040h, ifr
- st #audio_in, ar5
- st #0Bfffh, ar4
- rsbx intm
- loop4
- ldm ar4,b
- nop
- nop
- bc mic,beq
- b loop4
- mic
- ssbx intm
- stm #spcr10,spsa2 ;RRST為0接收復位
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;XRST為0,GRST為0,FRST為0發送、采樣、幀復位
- stm #0000h,bsp2
- stm #spcr10,spsa2 ;5、4位為00,接收完成產生中斷,進入非SPI模式,7位(DXENA)為0,不起動DX延時
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;5、4位為00,發送完成產生中斷,采樣,幀同步復位
- stm #0200h,bsp2
- stm #pcr0,spsa2 ;幀同步,采樣為外部輸入,外部時鐘極性反相
- stm #0006h,bsp2
- stm #rcr10,spsa2 ;14~8位置0,一幀兩個字,7~5位為010,一個字16位
- stm #0140h,bsp2
- stm #rcr20,spsa2 ;15位置0,單階段幀,第二階一個字,16位字長1、0位置01延遲一個位時鐘數據有效
- stm #0001h,bsp2
- stm #xcr10,spsa2 ;14~8位置0,一幀兩個字,7~5位為010,一個字16位
- stm #0140h,bsp2
- stm #xcr20,spsa2 ;15位置0,單階段幀,第二階一個字,16位字長1、0位置01延遲一個位時鐘數據有效
- stm #0001h,bsp2
- rpt #40 ;等兩個以上位時鐘
- nop
- stm #0000h,dxr12 ;傳起始數據到AIC23
- stm #0000h,dxr22
- stm #0080h, imr
- stm #0080h, ifr
- stm #spcr20,spsa2 ;發送離開復位
- orm #0001h,bsp2
- nop
- nop
- st #audio_table, ar5
- st #15, *(timetemp)
- st #audio_table, *(addrtemp)
- st #15, ar4
- rsbx intm
- stm #3000h,brc
- rptb delay3s-1
- rpt #01800h
- nop
- delay3s: nop
- st #audio_in, ar5
- st #0bfffh, *(timetemp)
- st #audio_in, *(addrtemp)
- st #0bfffh, ar4
- b $
-
-
- _McBSP_txisr:
-
- ld *ar5+, A
- stlm a, dxr12
- stlm a, dxr22
- nop
- nop
- banz goon, *ar4-
- mvdm timetemp, ar4
- mvdm addrtemp, ar5
- goon
- nop
- nop
- rete
- _McBSP_rvisr:
-
- stm #drr12, ar2
- ldu *ar2, a
- stl a, *ar5+
- stm #drr22, ar2
- ldu *ar2, a
- mar *ar4-
- goon2
- reted
- nop
- nop
- .end
復制代碼
完整的Word格式文檔51黑下載地址:
aaa.doc
(1.95 MB, 下載次數: 52)
2019-4-4 22:00 上傳
點擊文件名下載附件
|