




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、彭國卿 基于DSP技術的語音監控系統的軟件設計與實現 第 43 頁 共 43 頁 基于DSP技術的語音監控系統的軟件設計與實現學生姓名:彭國卿 指導老師:肖紅光摘 要:本文的主要工作是在研究算法的基礎上,將語音監控系統在DSP上進行了軟件實現。首先,本文研究了軟件設計所需的兩種算法語音信號的壓縮算法G.723.1以及雙音多頻信號的解碼算法Goertzel,從算法的原理、結構等方面作了詳細的介紹。繼而,闡述了系統的硬件平臺TMS320C5509 DSP,其中包括DSP的選型方法、A/D芯片的使用和控制方式,多通道緩存串口McBSP的使用等,并介紹了系統的軟件編譯環境CCS和編程語言。之后,本文較
2、為詳細地論述了系統各個功能模塊的軟件實現方法,其中包括A/D控制字的編寫、語音壓縮編碼處理、監控碼的識別以及鏈接命令文件.cmd的編寫等。同時,本文對重點程序進行了調試和相關的測試,詳細介紹了調試的工具和重點程序模塊的調試方法。經過調試和測試,各個模塊的軟件均運行正常,可以達到預想的使用效果。關鍵詞:DSP;語音壓縮;語音監控;G.723.1; GoertzelAbstract: The main work of the issue is the software design which bases on the study of algorithmsFirstly,the issue st
3、udies the two algorithms which are related to the software designG723.1 for voice signal compression and Goertzel for the decoding of DTMF,and describes the pficiples and structures of the two algorithms in detailThen,the issue expatiates the system hardware platformTMS320C5509 DSP,including the sel
4、ection for DSP、the control method of A/D and the usage of McBSP,the issue also discusses the software compile environmentCCS and the programming languageNext,the paper discusses the software design of various functional modules,including the compilation for A/D control words、coding processing for vo
5、ice signals、identification for DTMF and compilation for .cmd file,etc. Moreover,the paper introduces the debugging tools as well as test methods for main programs and proposes the optimization measures for the systemThe results of debugging and tests tell that the software of every module can be ope
6、rated and used normally Keywords: DSP,voice compression,voice monitoring,G.723.1,Goertzel1引言截至目前為止,在大多數通信系統中,傳輸最多的信息是語音信號。隨著信息科學技術的飛速發展,語音處理技術在最近20多年中取得了重大的進展。語音信號處理技術主要有四大分支語音增強、語音編碼、語音合成和語音識別。這四個部分的發展都十分迅速,科研成果也收獲頗豐,并陸續地由理論研究轉向實際應用。語音編碼技術是語音信號處理技術的一個重要組成部分。語音編碼屬于信源編碼。自從上個世紀70年代以來,隨著科學技術的迅猛發展,尤其是隨著
7、計算機技術、微電子技術、信號處理技術以及編碼理論的發展和進步,語音編碼技術取得了許多突破性的進展,研究出許多實用的編碼方案。這些方案在不斷的研究、改進和應用中日趨成熟,形成了各種實用的語音編碼技術。現在,語音編碼技術已經成為通信技術中一個相當重要的學科,在各種通信系統中都得到了廣泛的應用。數字信號處理器(Digital Signal Processor,DSP)是現代電子技術、計算機技術和信號處理相結合的產物。DSP獨特的結構決定了它具有運算速度快、可編程和接口靈活等特點,能快速實現各種數字信號處理算法。隨著信息和電子技術的飛速發展,DSP在電子信息、通信、軟件無線電、自動控制、信息家電等多個
8、領域得到了廣泛的應用。采用DSP來實現數字信號處理系統更是當前的發展趨勢,特別是針對諸如語音處理這種涉及到大量算術運算的技術,采用DSP來進行系統實現,優勢更加明顯。2系統軟件理論基礎輸入系統的信號主要有雙音多頻信號和語音信號兩種1,相關的基礎理論也主要是針對這兩類信號的不同的處理算法,即雙音多頻的解碼算法Goertzel算法和語音壓縮編碼算法G.723.1算法2。下面分別對這兩種算法作以介紹。2.1 雙音多頻解碼算法Goertzel算法2.1.1 雙音多頻信號(DTMF)信號簡介雙音多頻信號即為DTMF信號(Dual-Tone Multi-Frequency),是由美國貝爾實驗室開發的現代按
9、鍵式電話機普遍使用的撥號信令。DTMF的出現迅速地取代了原始的dial-pulse(脈沖撥號)的方式。DTMF信號除了在電話系統中得到廣泛的應用以外,在其他交互控制應用領域,如電話銀行、ATM(自動取款機)等,同樣得到了廣泛的應用。雙音多頻信號由8個固定頻率組成,其中4個行頻率、4個列頻率。每個按鍵唯一地由一組行頻率和列頻率交織組成,如圖2.1所示。這樣上述4個行頻率和4個列頻率的兩兩組合對應了16個不同的按鍵,其中12個按鍵是比較常見的按鍵(09,#,*),另外的4個鍵作為保留,以備今后的使用3。圖2.1 雙音多頻信號的組成在本論文中,由對講機發出的數字信息碼就是雙音多頻信號。該信號記錄了所
10、使用的對講機的編號,可以作為系統的監控碼使用,以鑒別語音信號的發送者。2.1.2 雙音多頻信號的檢測原理一般解碼時,是對收到的音頻信號進行檢測,分析出有效頻率組合的存在性,并將其轉換成對應的按鍵或者數字信息。對于雙音多頻信號,由于其信號組成的特殊性,即每個DTMF信號是由行列兩組音頻信號唯一確定,DTMF的解碼主要完成對有效行列頻率的檢測以及由檢測出的一組行列頻率來判決對應的按鍵信息。由于本論文采用DSP芯片來實現對DTMF信號的檢測,同時DSP芯片處理的是數字信號,所以必須先將由對講機輸入的DTMF信號進行A/D轉換,再將數字化的信息送入DSP進行相應的檢測處理。這一部分在后續的硬件實現平臺
11、中將有詳細的介紹。在檢測DTMF信號時,不但要檢測出DTMF的基波信息,而且需要考慮其二次諧波的信息。這是因為上述8個特定頻率只在基波上有較高的能量,而話音信號不但在相同的基波上有較高的能量,在其二次諧波上也疊加有較高的能量,因此,檢測二次諧波就可以有效地區分DTMF信號和話音信號4。DTMF信號的解碼檢測過程如圖2.2所示。圖2.2 雙音多頻信號的解碼檢測框圖2.1.3 Goertzel算法DTMF信號的解碼是基于Goertzel算法的,也稱為高斯算法。由于每一個DTMF信號是由固定的8個頻率組合而成,所以在進行運算的時候,不需要計算全部的頻域信息,只需要計算特定的頻域信息即可。理論上可以證
12、明,當計算的點數小于log2N時,與需要計算全部頻域信息的FFT相比,Geortzel算法更為有效。Goertzel算法可以看作是2階IIR濾波器,其計算流圖如圖2.3所示5。圖2.3 Goertzel算法的計算流圖由圖2.3可知,Goertzel算法由前向通道和后向通道組成。其前向通道的差分方程為: (2-1)其后向通道的差分方程為: (2-2)根據Goertzel算法有: (2-3)其中 (2-4)可以看出DTMF的解碼過程就是通過后向通道的差分方程(公式(2-2)疊代計算出和,然后再由公式(2-3)進行一次前向運算,從而得到所需要的頻率的DFT值。頻率和參數的關系是: (2-5)其中是所
13、需檢測的頻率,是采樣頻率(本文中采樣頻率為8kHz)。在DTMF檢測解碼中,由于輸入的信號是實數序列,所以并不要檢測出8個行列頻率的相位信息,只需要計算出其幅度的平方值即可,即只需考慮。這種只考慮信號的幅度平方的算法被稱作Goertzel優化算法。該優化算法相對Goertzel算法可以減少運算量,但以損失相位信息為代價的,然而這種相位信息的損失并不會影響算法的正常解碼和檢測。由式公式(2-3)可知: (2-6)利用上式進行計算可以簡化運算,同時避免了計算復數參數。由此可知,結合公式(2-2)和公式(2-6),即可計算輸入序列x(n)的單點DFT X(k)的幅度平方方值。DTMF解碼器相當于含有
14、8個固定參數的濾波器,參數值可由 (2-7)確定。Goertzel算法的IIR濾波器結構,使得該算法可以對輸入序列進行實時的處理。將輸入序列分別通過8個濾波器計算出相應的值,和門限比較器相比較,來判斷有效的行頻率和列頻率。最后由按鍵和DTMF的映射關系得到相應的按鍵信息。相關參數可以處理為數組的形式,調用的時候采用查表的方式即可。2.2 語音壓縮編碼算法G.723.1算法2.2.1 G.723.1算法概述G.723.1標準是ITU.T于1996年推出的一種針對語音的極低碼率的編碼算法,主要應用于可視電話、數字傳輸和高質量語音壓縮系統等。G.723.1標準提供了6.3kb/s和5.3kb/s兩種
15、碼率的編碼方法,這兩種碼率都可以提供較高的語音質量,是H.323標準(基于分組的多媒體通信系統)的首選標準。其中,高碼率算法具有較高的重建語音質量,而低碼率算法的計算復雜度則較低。與一般的低碼率語音編碼算法一樣,G.723.1標準采用線性預測的合成分析法。對激勵信號進行量化時,高碼率算法采用多脈沖最大似然量化(MP-MLQ),而低碼率算法采用算術碼本激勵線性預測(ACELP)。2.2.2 G.723.1編碼算法G.723.1語音編碼算法采用了線性預測分析合成技術,以盡量減少實際語音和合成語音之間經感知加權后的誤差信號的能量為準則來進行編碼。對于分析合成后的線性預測誤差信號,G.723.1編碼算
16、法采用自適應碼本和固定碼本進行矢量量化,并傳送量化參數。壓縮后傳輸的參數包括線性預測系數、自適應碼本延時和增益、激勵脈沖位置和符號等。G.723.1語音編碼算法的流程圖如圖2.4所示6。圖2.4 G.723.1編碼器框圖根據圖2.4,G.723.1的編碼過程一般可分為如下幾個部分:(1) 分幀輸入的語音信號為經過A/D量化后的16bit線性PCM碼流。G.723.1語音編碼是按幀格式對語音數據進行壓縮的,所以首先將上述碼流分割成長度為240個樣點的語音幀,即每幀240個采樣值,采樣頻率8kHz,每幀30ms。(2) 語音信號的預處理在處理語音信號之前,一般要將語音信號通過一個高通濾波器,以濾除
17、直流分量和低頻分量。這個過程也被稱作語音信號的預處理。在G.723.1算法中,采用的是一個單極點單零點的濾波器,其傳輸函數如下所示: (2-8)由高通濾波器的傳輸函數可以看出:其零點為z=1,位于實軸和單位圓的交點之上,這就充分保證了濾波器對直流分量的抑制作用;同時,其極點為,即所選用的濾波器的極點和零點非常的接近,兩者比值將近為1,具有較為平坦的高通特性。(3) 線性預測分析(LPC)線性預測是在假定系統輸入為白噪聲,輸出為重建的語音信號的情況下,對系統的傳輸函數的有效估計,其目的在于使得重建信號最大程度地逼近輸入的語音信號,使得二者在主觀感覺上盡可能的一致。G.723.1編碼算法采用十階線
18、性預測(LP)進行分析,并將上述一幀信號分成4個子幀,每個子幀含有60個樣值,對每個子幀獨立進行LPC分析。為了提高LPC系數的連續性,采用長度為180個樣值的漢明窗,即同時包含前后兩個子幀,這使算法引入60個樣值的超前時延,因此算法的總延時為37.5ms。其線性預測分析過程如下:首先將信號通過上述漢明窗進行處理,計算出11個自相關系數。然后,對于每個子幀,利用Levinso-Durbin遞歸算法求出10個線性預測系數(LPC系數) ,這些系數也將在后續的計算中用于共振峰感知加權濾波器。用上述LPC系數構建合成濾波器,其定義如下: (2-9)其中,是LPC系數,i表示第i個子幀,j表示第j個L
19、PC系數。(4)LSP量化由于線譜對參數(LSP)具有良好的量化特性和內插特性,故G.723.1編碼算法將LPC參數轉換為LSP參數進行傳輸。LSP采用預測分裂矢量量化,并且只對四個子幀中的最后一個子幀的LPC參數進行LSP處理。如圖2.4所示,LSP處理包括三個部分:LSP量化、LSP解碼和LSP插值。其中后面兩個部分屬于模擬解碼模塊,該解碼模塊模擬實現接收端的解碼過程,并將結果反饋給加權合成濾波器以調整濾波器的系數。其中,LSP量化過程如下:首先,進行一個小的附加帶寬擴展(7.5Hz)以提高系統的穩定性。然后根據語音幀間的相關性,利用預測分量矢量量化器對得到的LP濾波器進行量化。量化的基本
20、步驟如下:1)用搜索單位圓和對過零點進行插值的方法將LPC系數aj轉換為LSP系數Pj;2)將得到的LPC系數去除長時直流成分PDC,得到新的不含有直流分量的LSP矢量p;3)用前一子幀解碼后得到的LSP系數對當前這一子幀進行線性預測,其固定的預測因子為,從而得到去除直流分量的LSP預測矢量和殘差LSP矢量; (2-10) (2-11)4)將未量化的LSP矢量、量化后的LSP矢量和LSP殘差矢量分別分裂為三個子矢量,這三個子矢量的維數分別為3維、3維和4維。對LSP殘差矢量分裂出來的三個子矢量分別用8bit的碼本進行量化,量化采用加權均方誤差最小準則;5)將碼本搜索后得到的量化表的索引值傳送到
21、輸出端。(5)共振峰感知加權濾波器為了提高量化感知質量,高通濾波后的語音信號需要通過共振峰感知加權濾波器和諧振峰噪聲整形濾波器以生成初始目標信號。這是因為,在語音頻譜中,相對于能量較低的頻段的噪聲,能量較高的頻段即處于共振峰處的噪聲更不容易被感知。因此,在衡量合成后的語音與原始輸入的語音之間的誤差的時候,要考慮上述因素,即在語音能量較高的頻段,允許的誤差大一些,以降低編碼速率,所以要引入共振峰感知加權濾波器W(z)來實現對語音信號的修正7。對每一子幀都要構建共振峰感知加權濾波器W(z),所使用的系數為每一子幀的未矢量化的LPC系數。W(z)的定義如下: , (2-12)其中,。每個子幀通過濾波
22、器后得到輸出的語音信號。(6)開環基音估值開環基音估值(也稱開環基音搜索)就是對語音信號的基音周期的估計。對于每一幀計算兩次基音周期,即對每一幀中的前兩個子幀和后兩個子幀分別進行開環基音估計。利用感知加權語音信號fn,同時采用搜索互相關最大的方法,得到開環基音周期。其中互相關的定義如下: , (2-13)上式中的是感知加權濾波器產生的語音信號。使得互相關最大的索引號j即為開環基音周期。(7) 諧振峰噪聲整形濾波器如上所述,加入諧振峰噪聲整形濾波器的目的,也是為了提高語音信號的編碼質量。該濾波器是基于基音的感知加權濾波器,主要利用了語音的長時相關性。其定義如下: (2-14)其中,為濾波器的系數
23、,L是最佳時延,也就是諧振峰噪聲整形濾波器的階數。為了求得最佳時延L,對CPW(j)定義如下,并對其采用最大化準則: , (2-15)其中,L1 = LOL- 3,L2 = LOL+ 3。使得CPW(j) 取得最大值的j即為最佳時延L。這里將上式中CPW(j) 的最大值定義為CL。(8)沖激響應和零輸入響應的計算LPC合成濾波器、共振峰感知加權濾波器和諧振峰噪聲整形濾波器合成一個聯合濾波器,用于計算沖激響應hn和零輸入響應。沖激響應的傳輸函數表達式如下: , (2-16)公式(2-16)中,、分別為語音合成濾波器、感知加權濾波器和諧振峰噪聲整形濾波器的傳輸函數。為了編解碼器中的合成濾波器的狀態
24、的一致性,在進入搜索部分之前,要先在信號中減去合成濾波器中將要產生的零輸入響應8。將零值輸入合成濾波器,得到合成濾波器的零輸入響應,然后在感知加權的語音信號中減去零輸入響應,即可得到碼本搜索的輸入信號。(9) 閉環基音搜索在G.723.1算法中,閉環基音搜索和開環基音搜索共同構成了自適應碼本搜索,即基音周期的預測。如前所述,開環基音搜索是基于整幀的整數基音估計,沒有考慮到合成后的語音和原始語音之間的誤差,所以開環基音搜索只是對基音周期的估計,確定了基音周期的大致范圍,并不能確定基音周期的準確值。因此需要進行基于子幀的閉環基音搜索,以較為準確地確定基音周期的數值,并進行自適應碼本搜索。G.723
25、.1編碼器采用一個五階的基音預測器,利用上文提到的沖激響應和開環基音估值計算閉環基音周期。在同一整幀中,對于第0子幀和第2子幀,在(LOL-1, LOL, LOL+1)的范圍內搜索閉環基音周期,并將之編碼為7bit:對于第1子幀和第3子幀,只對該子幀的基音延時與前一子幀的差值進行2bit編碼,這里基音延時的差值范圍為-1,0,+1,+2。然后進行自適應碼本搜索,即將基音預測器的增益進行矢量量化。所使用的矢量量化碼本有2個,分別為85個和170個量化矢量。對于低碼率編碼(5.3kb/s)使用170個矢量進行量化:對于高碼率編碼(6.3kb/s),如果第0子幀或者第2子幀的閉環基音周期小于58,則
26、使用85個矢量進行量化,否則使用1 70個矢量量化。(10) 固定碼本搜索在激勵信號中減去自適應碼本的貢獻可以得到殘差余量信號,對該殘差余量信號進行固定碼本搜索。在G.723.1算法中,針對兩種不同碼率的編碼方式采用不同的搜索算法:對于高碼率編碼(6.3kb/s)采用多脈沖最大似然量化(MP-MLQ),對于低碼率編碼(5.3kb/s)采用代數碼本激勵線性預測(ACELP)。殘差余量信號用表示,用逼近。固定碼本搜索就是要找出合適的參數,使得和的均方誤差最小,的表達式如下所示: (2-17)其中,G為增益因子;為第k個脈沖幅度的符號,取值為±1;M為脈沖個數;為第k個脈沖的位置。上文提到
27、的待尋找的合適的參數就是G、和。1) 多脈沖最大似然量化(MP-MLQ)高碼率編碼(6.3kb/s)采用MP-MLQ算法。該算法規定如下:偶數子幀脈沖有6個,奇數子幀脈沖有5個;脈沖只能全部在奇數位置或全部在偶數位置,奇偶用1bit表示。也就是用一幀中只有5個或6個非零脈沖的輸入信號通過加權合成濾波器來模擬殘差余量信號rn。這樣就用5個或6個點代表60個信號。為了減少計算量,該算法中采用準最優化搜索算法,過程如下:首先,估計用最大似然法計算增益的估計值Gmax的表達式如下: (2-18)然后對進行對數量化,在的搜索范圍內,對每一個增益值對奇數位置和偶數位置各進行一次和的搜索,最終選取使得均方誤
28、差最小的參數組合進行傳送。2) 代數碼本激勵線性預測(ACELP)低碼率編碼(5.3kb/s)采用ACELP算法。每個隨機碼矢量最多有4個非零脈沖,它們的可能位置如表2-1所示。表2-1中的每行表示每個激勵脈沖的可能位置為8個,相鄰的兩個位置之間相差為8個樣點位置,相鄰兩個脈沖的對應的可能位置之間相差2個樣點位置。需要注意的是,最后兩個脈沖中的最后一個脈沖位置(即60,62)已經超過了子幀的邊界,即位于本子幀范圍之外,表示該脈沖并不存在。表2-1 ACELP激勵碼本符號位置第1個脈沖±10,8,16,24,32,40,48,56第2個脈沖±12,10,18,26,34,42
29、,50,58第3個脈沖±14,12,20,28,36,44,52,(60)第4個脈沖±16,14,22,30,38,46,54,(62)ACELP算法使用的是17bit代數碼本。每個脈沖的位置只能從上面表格中的對應位置中選取,位置信息用3bit編碼,故4個脈沖一共12bit。其中,每個脈沖的正負符號用lbit來編碼,故4個脈沖共計4bit;所有脈沖的位置可以同時移動一位變成奇數位置,是否一位用1bit編碼,綜上所述,總計為17bit。碼本搜索同樣采用殘差余量信號與之間的均方誤差最小來計算。3系統的硬件平臺及軟件環境3.1系統硬件平臺3.1.1 硬件總體設計方案如前所述,整個
30、項目主要是運用于鐵路調度方面,對工作人員的調度工作做以監控之用。從整個項目上來講,鐵路上的工作人員和監控室中的工作人員各持有一個對講機。鐵路上的工作人員使用自己手中的對講機發送調度指令,由監控室中的對講機接收這些信息并將其進行保存,以備日后的核查。因此,輸入整個系統的信號有兩類:雙音多頻信號和語音信號。雙音多頻信號是對講機發送的機器序列號,可以作為監控碼使用;語音信號則是工作人員發出的鐵路調度信息。未經壓縮編碼的語音信號的信息量很大,如果是多路系統,信息量將更為龐大,因此采用語音壓縮編碼進行處理。語音算法通常含有較為復雜的算術運算,因此選用DSP作為處理芯片。輸入的語音信號和雙音多頻信號是模擬
31、信號,而DSP可以處理的數據必須是數字信息,因此要在兩者之間加入A/D芯片進行模數轉換。如果輸入的是多路數據,數據量較大,而壓縮算法存在固有延時,所以一般先將A/D采樣后的數字信息存入SDRAM進行緩存,以待壓縮處理。目前的系統是考慮將壓縮后的信息存儲在PC機上以備日后查詢和核對。在第六章的方案升級中,也將提到其他的改進方法。綜上所述,整個系統的框圖如圖3.1所示9。圖3.1 系統框圖由圖3.1可知,整個系統可以分為下位機和上位機兩個部分。其中,下位機包括A/D、SDRAM和DSP三個主要部分,主要負責信號的采集、模數轉換以及語音信號的壓縮和雙音多頻信號的解碼工作;上位機主要負責信號的存儲以及
32、查詢的工作。本論文的主要工作是下位機的軟件設計部分,因此本章也是主要圍繞著下位機的硬件平臺和軟件設計來敘述的。DSP與A/D和PC之間的連接分別采用McBSP0和McBSP1,關于McBSP的介紹和設置將在后面的章節中有所闡述。3.1.2 DSP選型(1)TMS320C5509簡介音頻處理一般采用較為復雜的算法進行算術運算,而DSP處理器具有強大的數學運算功能,十分適用于音頻處理的用途。同時DSP處理器的性能直接影響著整個系統的性能,所以DSP芯片的選型至關重要。結合實驗室的現有硬件條件,主要在三款DSP芯片上作以取舍。這三款DSP芯片分別是MS320C5402、TMS320C2812和TMS
33、320C5509。下面分別結合這三款DSP芯片的特點作以簡單介紹,并分析出最適用于本論文的DSP芯片。TMS320C54x系列DSP是一款為實現低功耗、高性能而專門設計的定點DSP芯片,適合于語音處理、圖像處理、醫療儀器和通信技術等多項領域。同時這款芯片也是在日常開發中較為熟悉其使用方法的一款芯片,在使用方法上,技術較為成熟。其片內設置為程序ROM:4K字、程序數據ROM:4K字、DARAM:16K字。TMS320C281x系統DSP是基于TMS320C2xx內核的定點數字信號處理器,與F24x系統DSP相比,其提高了運算的精度(達32位)和系統的處理能力(達到150MIPS)。對于本設計而言
34、,TMS320F281x系統DSP的最大優勢在于其本身即具有16通道的高性能12位ADC單元,可以實現雙通道信號同步采樣,這樣的結構可以簡化系統的硬件設計,操作簡便。TMS320C28lx DSP的芯片內部提供了16KB的SARAM。TMS320C55x DSP是德州儀器(TI)C5000 DSP系列里面較新的一代的16位定點DSP內核,具有低功耗、高效率、代碼密度高等優點,完全兼容C54x系列。C55x的指令集與C54x的完全兼容,為C54x開發的程序重新匯編后在C55x上的運行提供了很好的保障,兩者運行結果幾乎完全相同。同時,C55x具有更為擴展的片內存儲空間。對于實驗室已經購進的TMS3
35、20C5509 DSP來說,其片上資源更為豐富,其擁有256KB的RAM和64KB的ROM。對于本論文而言,出于對處理速度的考慮,需要將程序代碼和所用到的變量、堆棧等放在DSP的片上存儲區中,以減少運算時間。根據估算,語音壓縮程序大約需要35KB的空間,雙音多頻解碼程序和串口傳輸程序大約分別需要3KB空間。由此可見,DSP芯片的選擇主要是根據DSP片上存儲空間來進行的,分析上述三款DSP處理器,只有TMS320C5509 DSP可以滿足要求,故本論文所用的DSP選定為這款。(2)TMS320C5509 DSP的性能簡介TMS320C5509 DSP作為C55x系統的代表型號,具有以下主要特征1
36、0:l 一個32×16位的指令緩沖隊列;l 兩個17×17位的乘加單元;l 一個40位的算術邏輯單元;l 一個40位的移動器;l 一個16位算術邏輯單元;l 四個40位的累加器;l 12組獨立的總線。C55x繼承了C54x的發展趨勢,低功耗,低成本,在有限的功略條件下,保持最好的性能。工作在0.9V下,其核的功耗僅為0.05mW/MIPS,而性能達到500MIPS(400MHz),對數字通信等便攜式應用所提出的挑戰,提供了有效的解決方案。與120MHz的C54x相比,300MHz的C55x性能大約提高了5倍,而功耗降為1/6。C55x的指令集是C54x的超集,加入了適應擴展
37、的新的硬件單元的指令。其指令長度從8bit到48bit,即16字節。這種長度可變的指令可以使每個函數的控制代碼量比C54x降低40,從而達到優化代碼密度和有效地使用總線的效果。同時,與C54x相比,C55x的核有兩個乘法與累加器(MAC),增加了累加器(ACC)、算術邏輯單元(ALU)、數據寄存器等,多個運算單元并行地執行運算,減少了每個運算所需要的周期數,配合以并行指令,每個機器周期的效率可以提高了一倍。雙MAC可以在一個周期內完成兩個17*17-bit的MAC運算。與此同時,40-bit的ALU可以完成32-bit的運算,或者兩個16-bit的運算。第二個16-bit的ALU用于通用的算術
38、運算,增加了并行性和加法的靈活性。基于改進的哈佛結構,C55x包含了一組程序總線和3組獨立的數據讀總線,可以同時將數據送給各個計算單元。C55x CPU包含有4個單元:1)指令緩存單元。緩存和解碼應用程序的指令。該單元還包括解碼邏輯,解釋C55x的不同長度的指令。指令緩存單元通過使不同的計算單元維持穩定的任務流來提高DSP的效率。2)程序流單元。跟蹤程序的執行點。其硬件用于高效的循環、分支、條件執行以及流水保護。3)地址數據流單元。在程序執行中,為訪問數據提供地址指針。正式由于該單元的存在,使C55x高效的尋址模式成為可能。專門的硬件管理5組數據總線,使數據流向各個計算單元。附加的通用ALU簡
39、化算術運算,提高了指令的并行性。4)數據計算單元。這是DSP的心臟,對所處理的數據執行算術運算。它包括MAC、主ALU以及累加器寄存器。另外還包括一個桶形移位器、舍入和飽和控制以及用于維特比算法的專門硬件。通過這個單元所保證的指令的并行性,是提高C55x處理效率的關鍵。3.1.3 多通道緩存串口McBSP的使用(1)McBSP的主要特點11l 多通道緩沖串口可以提供:l 全速雙工通信l 雙緩存發送和三緩存接收,支持連續傳送l 接收和發送使用獨立的時鐘l 發送中斷到CPU,發送同步事件到DMA控制器l 128通道收發l 多通道選擇模式可以允許或禁止每個通道l 直接與多媒體數字信號編解碼器的工業標
40、準接口、模擬接口以及串行ADC/DAC接口l 可由外部提供時鐘與幀同步信號l 內部可變成采樣率發生器可控制時鐘和幀同步信號l 可以選擇幀同步脈沖和時鐘信號的極性l 字寬可選:8、12、16、20、24和32bitl u-law和A-1aw壓縮擴展l 8-bit傳輸時可以選擇先傳LSB或MSBl 多個狀態bit標志異常和錯誤l 多通道緩沖串口信號引腳,可配置為通用輸入輸出引腳(2) McBSP的工作原理McBSP包括一個數據流通路和一個控制通路,通過以下7個引腳與外部設備連接。通過McBSP與外部設備的數據交換,由DX引腳發送數據,RX引腳接收數據。通信的時鐘和幀同步信號由CLKX(發送時鐘)、
41、CLKR(接收時鐘)、FSX(發送幀同步)以及FSR(接收幀同步)引腳來控制。DSP的CPU或DMA控制器與McBSP的通信,通過16-bit寄存器訪問內部的外設總線來實現。發送時,CPU或DMA控制器將數據寫到數據發送寄存器(DXR1、DXR2)。寫給DSR的數據,通過發送移位寄存器(XSRl、XSR2)移位輸出DX。同樣,McBSP通過DR引腳接收數據,移位存儲到接收移位寄存器(RSRl、RSR2),并復制到接收緩存寄存器(RBRl、RBR2)。然后,再由(RBR1、RBR2)復制到DRRs,由CPU或DMA控制器讀取。這樣,可以同時進行內部和外部的數據通信。如果串行字長為8、12或16-
42、bit,則不需要使用DRR2、RBR2、RSR2、DXR2以及XSR2寄存器進行讀、寫或移位的操作。如果串行字長更長,則需要使用這些寄存器來保存高位bits。(3) McBSP的使用如前所述,McBSP包含兩個通路:數據流和控制通路。所以使用時,一般是先通過初始化設置,向McBSP寫入合適的控制字,將其設置到需要的狀態。讀取或寫入數據時,從相應的寄存器中進行處理即可。McBSP的各個寄存器都擁有自己專用的地址,控制字或數據的讀取寫入,即是對相應的地址的內容的改寫。如果使用TI提供的CSL進行DSP的初始化,則可根據CSL提供的庫函數直接修改其函數參數即可完成操作上述操作。這部分將在第四章中進行
43、較為詳細的闡述。3.1.4 DMA的使用直接存儲器訪問(DMA)控制器可以在沒有CPU參與的情況下,完成存儲器映射區之間的數據傳輸。當CPU在后臺工作時,DMA控制器可以:Ø 在片內存儲器、片外存儲器、片上外圍設備之間傳送數據Ø 在主機接口(HPI)和存儲器之間傳送數據在本論文中,由于待壓縮的語音信息的數據量比較大,片內資源不能滿足其需要,故需要將待處理的語音數據存放在片外。在這種情況下,對外部存儲器的訪問會帶來比較大的性能損失,也會占用比較多的CPU資源,所以考慮采用DMA方式實現對片外存儲器的訪問。即由SDRAM搬移數據到DSP中這個過程可以采用DMA方式實現,以減少系
44、統性能的損失。3.1.5 A/D芯片的選型和使用(1)AD73360的主要特征12根據項目要求,需要選擇一款具有多輸入通道的A/D芯片。經過分析與比較,選定AD73360芯片。選用這款芯片的主要原因是其具有6通道模擬輸入端,可以充分滿足項目的需要。AD73360是ADI公司推出的一款可編程通用6通道串行模擬輸入前端處理器,每個通道可以輸出長度為16位的數字量。上述6通道各路自帶轉換電路,可以保證同時采樣,并且無需CPU干預,從而有效地減少了由于采樣時間不同而產生的相位誤差。各個通道的采樣速率有8kHz、16kHz、32kHz和64kHz等多種選擇,利用控制字就可以方便地對采樣速率進行選擇。每個
45、通道可以允許從直流到4kHz的模擬信號通過。由于各個通道都具有內置的反混迭濾波器,因此對其輸入端的反混迭濾波器的要求就可以大為降低,僅僅需要簡單的一階RC濾波器即可。當級聯使用AD73360時,最多可將8個AD73360芯片級聯在一起。此時,模擬量輸入通道的最大數目達到48路,這樣就可以給系統的模擬量輸入通道的數目擴展帶來了極大的方便,也為項目的擴展升級做好了充分的準備。AD73360的其他主要特征如下:1) 其6通道之間相互隔離,并且每通道都含有一個信號調理電路和片上輸入增益放大器,增益可達0到38dB,增益范圍被設為8級,可由編程控制選擇。容許低電平幅度的模擬信號的輸入,幾乎不存在時間延遲
46、。各個通道在音頻范圍內可提供77dB的信噪比。2) AD73360使用六線工業標準同步串行接口。接口信號線只有6條,節約了印刷板的面積,并且可以有效地減小了電磁干擾,從而使得系統更加穩定地運行。AD73360與DSP可以快速連接。3)由于AD73360具有內置的程控可變增益放大器,所以這款AD芯片不僅適合于大信號應用,同樣適用于小信號應用,而且對小信號應用尤為簡單高效。(2)AD73360的控制方法AD73360內部共有8個控制寄存器,分別是CRA-CRH,它們所占用的地址為07,每個控制寄存器的長度為8位。各個控制寄存器的bit的設置分別代表不同的狀態。AD73360的同步串行接口能夠識別長
47、度為16位的來自DSP的控制字。當系統中接入AD73360后,需要由DSP向其各個寄存器寫入合適的控制字完成其基本工作方式的設定。關于初始化控制字的相關程序將在第四章中詳細介紹。(3)AD73360的使用方法AD73360在程序數據模式下工作時,首先進入程序方式并向AD73360寫入控制字,然后再切換到數據方式。在從AD73360讀取數據后,系統將不再切換回到程序方式。而在混合模式下,系統總是在程序方式和數據方式之間不斷地切換工作,以達到在從AD73360讀取數據期間改變其配置的目的。在選擇AD73360的采樣速率和數據傳送速率時,應當注意的是確保在采樣間隔中能將經過采樣得到的所有數字信息傳輸
48、給DSP,以免數據丟失。例如,將AD73360設置為混合工作模式,如上所述,該工作模式下系統需要在程序方式和數據方式之間切換,那么切換時候就要寫入相應的控制字,所以在選擇采樣速率和數據傳輸速率時,還要考慮發送采樣結果之后,AD73360是否有足夠的時間接收DSP傳送過來的控制字。同時,接收中斷中可以加入適當的處理,比如將各通道的數據分開存放、濾波等操作,但是也應該特別注意的是不能使中斷程序過長,以免因為DSP來不及接收數據而引起數據的丟失。3.2系統的軟件環境及編程語言的選擇3.2.1 軟件開發環境CSS簡介Code Composer Studio簡稱CCS,是TI公司推出的為開發TMS320
49、系列DSP軟件的集成開發環境(IDE)。CCS工作在Windows操作系統下,類似于VC+的集成開發環境,采用圖形接口介面,提供有編輯工具和工程管理工具。它將各種代碼產生工具,諸如匯編器、鏈接器、C/C+編譯器、建庫工具等集成在一個統一的開發平臺中。CCS所集成的代碼調試工具具有各種調試功能,包括原TI公司提供的C源代碼調試器和模擬器所具有的所有功能。能對TMS320系列DSP進行指令級的仿真和進行可視化的實時數據分析。此外,還提供了豐富的輸入/輸出庫函數和信號處理的庫函數,極大地方便了TMS320系列DSP軟件的開發過程。利用CCS的軟件開發流程圖如圖3.213。圖3.2 CCS開發流程簡圖
50、CCS一般工作在兩種模式下:軟件仿真器和與硬件目標板相結合的在線編程。前者可以脫離DSP芯片,在PC機上模擬DSP的指令集與工作機制,主要完成前期算法的實現和調試;后者可以實時運行在DSP芯片上,進行在線編寫和調試應用程序。C5000 CCS是專為開發C5000系列DSP應用設計的,包括TMS320C54x和TMS320C55x DSP。本論文中使用的軟件開發環境為CCS 3.0版本。其使用介面如圖3.3所示。圖3.3 CCS 3.0的使用界面3.2.2 編程語言的選擇在數字信號處理器的軟件開發中,一直存在一個兩難的選擇即編寫軟件的語言是選擇與DSP相應的匯編語言還是易于開發的高級語言(如C/
51、C+),或是兩者的混合語言。匯編語言是接近底層的機器代碼,對硬件的操作更為直接,編寫程序執行速度快,效率較高,但程序編寫復雜,開發周期長,程度的易讀性和可移植性較差。這種特點的形成原因主要是:在編寫DSP程序之前首先必須要熟悉所用DSP芯片的匯編指令集;另外,不同公司的DSP芯片所提供的匯編指令集是各不相同,甚至即使是同一公司的DSP芯片由于芯片類型的不同以及芯片的升級更新,其所支持的匯編指令集也不盡相同。使用高級語言(如C/C+)進行程序開發更為容易,程序的可讀性和移植性更強,從而可以大大提升開發速度,縮短開發周期;但是高級語言的效率較低,不易滿足實時性的要求。目前各個DSP公司推出的高級語
52、言編譯器的效率都不是很理想,由編譯器產生的匯編程序和手工編寫的匯編程序在效率上相差較大。基于以上考慮,本論文采用的方法是將兩種編程語言折中選擇,即程序的主體框架和對實時性要求不高的部分用C/C+語言編寫,而中斷向量表和鏈接文件等則采用匯編語言編程實現。這樣能夠充分發揮兩者的優點,解決易讀性和效率之間的矛盾。這種方法也可以改善軟件的移植性,在軟件移植時可以不改變程序的主體框架,而只要為處理器提供相應的算法即可。4系統軟件設計4.1 主函數主函數一般采用C語言編寫,簡單明了,不會涉及詳細的算法等,只是為了構建清晰的程序流程。本設計的總體流程如圖4.1所示。圖4.1 主程序流程圖多路語音數據的處理是
53、在單路的基礎上完成的。即當DSP收到多路數據后,按照通道依次進行處理。整個系統中只有一個線性循環執行的程序。首先,執行初始化的程序,對AD和DSP的基本配置進行初始化配置,然后不斷循環調用核心算法對單路的數據依次進行雙音多頻解碼、語音壓縮編碼和傳輸的一系列處理,處理完一路數據之后,進入下一路數據的處理,依次循環往返,直至所有數據都被處理完14。圖4.1的流程圖是以四路語音監控為例。當將初始化執行完畢之后,開啟AD,準備接收采樣數據,并將采樣所得四路數據送入SDRAM進行緩存,每次讀取一路數據(即240個采樣點)送入DSP進行處理。當前這路數據進行雙音多頻解碼、語音壓縮編碼以及傳輸給PC完成之后
54、,進行一次判決,以判斷是否讀取下一路數據,如果四路數據都被處理過一次之后,重新開始處理第一路的數據,依次循環。對于暫存在SDRAM中的四路數據,為其開辟不同的存儲空間,每次讀取不同的數據區間即可讀取不同路數的數據。4.2 初始化函數4.2.1 DSP初始化(1) Chip Support Library(CSL)簡介隨著DSP片上外設種類及其應用的日趨復雜,TI公司提供了一組用于訪問和控制片上外設的標準的方法,被成為Chip Support Library(簡稱CSL)。目前大部分C5000和C6000系列的DSP都已經設計了各自的CSL庫,通過對庫的調用即可以實現對DSP片上外設的配置、控制
55、和管理,可以免除用戶編寫配置和控制片上外設所必須的定義和代碼,簡化開發過程。CSL還具有以下特點:Ø 片上外設編程的標準協議:定義一組標準的APIs、函數、數據類型和宏;Ø 對硬件進行抽象,提取符號化的片上外設描述:定義一組宏,用于訪問和建立寄存器及其域值Ø 基本的資源管理:對多資源的片上外設進行管理;Ø 已集成到DSP/BIOS中:通過圖形用戶接口GUI對CSL進行配置;Ø 使片上外設容易使用:縮短開發時間,增加可移植性。(2) CSL的使用DSP的初始化主要是調用CSL庫,并通過調用其中的庫函數對相關的寄存器進行設置。大多數CSL庫函數是用
56、C語言編寫的,并且已經對代碼的大小和速度進行了優化,對于使用者來說,初始化已經不像以前那樣繁雜,因為CSL庫已經幫助使用者完成了寄存器和地址之間的映射問題,現在只需調用和填寫函數的參數即可。系統中如果調用CSL進行寄存器地址的映射,那么首先要初始化CSL,即在主函數中加入下述語句:CSL_init( );4.2.1 AD初始化(1) AD73360的寄存器設置在第三章的3.1.5中已經講到,A/D的初始化就是要對其相應的控制寄存器寫入合適的數值。在AD73360中,共有CRACRH7個寄存器,每個寄存器接收的數據格式有如表4-1的定義。表4-1 AD73360的控制字格式1514131211109876543210設備地址寄存器地址寄存器內容由表4-1可知,每個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國電焊頭盔行業產業運行態勢及投資規劃深度研究報告
- 2025至2030中國電子設備維修服務行業產業運行態勢及投資規劃深度研究報告
- 2025至2030中國甜茶葉子市場投資風險及運行狀況預測研究報告版
- 2025至2030中國環境質量檢測行業市場發展分析及競爭格局與投資前景報告
- 培訓需求調查課件
- 餐飲服務培訓課件
- 兒童健康成長之路從骨關節健康知識普及開始
- 智慧教育新篇章技術如何重塑學習成效
- 學習者的創新思維培養與實踐
- 那智智能技術助力商業高效運營與決策
- 初一生活學習指導
- 下肢靜脈曲張
- 2024年露營帳篷項目可行性研究報告
- 《公務員錄用體檢操作手冊(試行)》
- 2024粵東西粵北地區教師全員輪訓培訓心得總結
- 2024-2025學年華東師大版數學七年級上冊計算題專項訓練
- 福建省機關工作人員年度考核登記表
- JBT 7808-2010 無損檢測儀器 工業X射線探傷機主參數系列
- DB44-T 2474-2024 自然教育標識設置指引
- 研學基地合作協議
- 駕駛員行為規范管理制度
評論
0/150
提交評論