G.723標準數字錄音系統設計
3 系統控制軟件設計
ADSP21XX系列提供了一整套軟件開(kāi)發(fā)工具及相應的仿真器開(kāi)發(fā)平臺,給系統的調試與仿真提供了極大的方便。軟件開(kāi)發(fā)系統包括系統建造器、帶運行時(shí)時(shí)間庫的C編譯器、匯編器、連接器、PROM劃分器等。通過(guò)編譯連接匯編源程序,可以生成EXE文件。此文件是存儲映像文件,可以加載到仿真器上進(jìn)行仿真;調試成功后,通過(guò)PROM劃分器和EPROM燒制設備可以寫(xiě)入EPROM,系統復位時(shí)DSP加載EPROM程序便可自動(dòng)運行,控制整個(gè)系統的工作。系統軟件設計采用自舉和中斷控制兩種方式。自舉方式系統一上電,ADSP-2181讀取EPROM中的程序,自動(dòng)運行程序去控制整個(gè)系統工作。
中斷控制利用了ADSP-2181的兩個(gè)中斷,即sport0接收中斷和timer中斷。ADSP-2181的sport與AD73311相連。當得到一個(gè)采樣數據時(shí),產(chǎn)生一個(gè)接收中斷,ADSP-2181讀取便得到采樣數據。由于sport0是全雙工的,當產(chǎn)生接收中斷時(shí),同時(shí)可以發(fā)送數據,一方面在錄音時(shí)可以得到回放效果;另一方面則在播放時(shí)可直接發(fā)送數據,而對采樣數據置之不理,這樣便于解碼數據以固定的碼率回放。Timer中斷定時(shí)檢測外部控制引腳狀態(tài),包括錄音、放音、快放及碼率轉換4個(gè)引腳,每個(gè)引腳的0/1狀態(tài)對應兩種控制,即開(kāi)始錄音/停止錄音、開(kāi)始放音/停止放音、5.3kbps/6.3kbps碼率轉換及快放狀態(tài),共有七個(gè)狀態(tài)。 DSP匯編語(yǔ)言的結構與ASM匯編語(yǔ)言類(lèi)似,其開(kāi)頭部分對應中斷向量表。工作在中斷方式時(shí),則向量表對應中斷處一般為一條跳轉語(yǔ)句;產(chǎn)生中斷時(shí),則跳到相應語(yǔ)句執行中斷控制功能。主程序的中斷設置部分如下: JUMP start;NOP;NOP;NOP; {reset start interrupt} RTI;NOP;NOP;NOP; {IRQ2} RTI;NOP;NOP;NOP; {IRQL1} RTI;NOP;NOP;NOP; {sport0 transmit} JUMP sportReceive;NOP;NOP;NOP; {sport0 receive} RTI;NOP;NOP;NOP; {IRQE} RTI;NOP;NOP;NOP; {BDMA} RTI;NOP;NOP;NOP; {sport1 transmit} RTI;NOP;NOP;NOP; {sport1 receive} JUMP settimer;NOP;NOP;NOP; {timer interrupt} RTI;NOP;NOP;NOP; {PowerDown} sporto和timer中斷控制說(shuō)明如下: (1)sporto接收數據中斷在程序中,數據處理集中在此進(jìn)行。主要過(guò)程是:在錄音時(shí),每收到240個(gè)采樣數據,就進(jìn)行G.723編碼,將編碼結果保存到閃速存儲器中;在播放時(shí),每次讀取24個(gè)數據,將讀取的數據進(jìn)行解碼,再通過(guò)串行口發(fā)送出去,經(jīng)揚聲器還原成語(yǔ)音信號。其流程如圖6所示。(2)timer中斷 timer中斷用來(lái)檢測用戶(hù)的控制信息及顯示運行時(shí)間信息。用戶(hù)控制有4個(gè),即碼率選擇、錄音控制、放音控制及快退控制。對應這4個(gè)控制引腳,初始設定為輸入態(tài),然后通過(guò)檢測各個(gè)引腳的電平設定工作態(tài)。其流程如圖7所示。
4 系統調試
系統調試要使用AD公司提供的ADSP21XX系列的整套軟件開(kāi)發(fā)工具和仿真器。筆者使用ADSP-2181-EZ-ICE仿真器進(jìn)行調試。仿真器上自帶33MHz的2181,調試支持20個(gè)斷點(diǎn),可單步、設斷點(diǎn)和全速運行,可隨時(shí)觀(guān)察和修改寄存器和存儲單元的值。仿真器上提供了一個(gè)14針的仿真接口,仿真器通過(guò)此接口仿真控制目標系統。仿真器與計算機間有一個(gè)RS-232接口,通過(guò)數據進(jìn)行連到計算機的串行口上,在仿真器開(kāi)發(fā)平臺上就可以進(jìn)行軟件調試。系統調試時(shí)遇到的主要問(wèn)題是存儲器讀寫(xiě)及LCD的顯示問(wèn)題。開(kāi)始時(shí)發(fā)現寫(xiě)進(jìn)閃速存儲器的數據與讀出的數據不符。經(jīng)仔細分析,發(fā)現是由于沒(méi)有嚴格按照閃速存儲器的讀寫(xiě)操作時(shí)序進(jìn)行編程,或是延遲量不夠,或是兩個(gè)信號的先后次序弄反了,數據可能根本沒(méi)有寫(xiě)進(jìn)去,讀出的數據當然是錯的。在嚴格按照其說(shuō)明書(shū)的時(shí)序進(jìn)行編程控制后,數據的讀寫(xiě)擦除操作完全正常。在播放錄音數據時(shí),曾出現聲音跳變不連續的問(wèn)題,經(jīng)分析發(fā)現原因在于地址定位時(shí)出錯。因為對閃速存儲器擔任時(shí)每次讀寫(xiě)都是一幀數據,而編解碼時(shí)一次操作的數據為20/24個(gè)字節,兩者長(cháng)度不一樣,需要進(jìn)行轉換操作。
本系統中ADSP-2181處理器的機器周期為30ns,經(jīng)設定最大的等待周期為7機器周期后也才有240ns,而LCD的工作使能脈寬至少要300ns。因此在硬件上增加了一單穩延遲電路,這樣便解決了此問(wèn)題。
p2p機相關(guān)文章:p2p原理
評論