基本介紹 數位訊號處理的目的是對真實世界的連續
模擬信號 進行測量或
濾波 。因此在進行數位訊號處理之前需要將信號從模擬域轉換到數字域,這通常通過
模數轉換器 實現。而數位訊號處理的輸出經常也要變換到模擬域,這是通過
數模轉換器 實現的。
數位訊號處理的算法需要利用計算機或專用處理設備如
數位訊號處理器 (DSP)和
專用積體電路 (ASIC)等。數位訊號處理技術及設備具有靈活、精確、
抗干擾 強、設備尺寸小、造價低、速度快等突出優點,這些都是模擬信號處理技術與設備所無法比擬的。
概況 數位訊號處理 是圍繞著數位訊號處理的理論、實現和套用等幾個方面發展起來的。數位訊號處理在理論上的發展推動了數位訊號處理套用的發展。反過來,數位訊號處理的套用又促進了數位訊號處理理論的提高。而數位訊號處理的實現則是理論和套用之間的橋樑。
數位訊號處理是以眾多學科為理論基礎的,它所涉及的範圍極其廣泛。例如,在數學領域,微積分、機率統計、隨機過程、
數值分析 等都是數位訊號處理的基本工具,與
網路理論 、
信號與系統 、控制論、通信理論、故障診斷等也密切相關。近來新興的一些學科,如人工智慧、
模式識別 、神經網路等,都與數位訊號處理密不可分。可以說,數位訊號處理是把許多經典的理論體系作為自己的理論基礎,同時又使自己成為一系列新興學科的理論基礎。
實現方法 DSP的實現方法一般有以下幾種:
(1) 在通用的計算機(如PC機)上用軟體(如Fortran、C語言)實現;
(4) 用通用的可程式DSP實現。與單片機相比,DSP晶片具有更加適合於數位訊號處理的軟體和硬體資源,可用於 複雜的數位訊號處理算法;
(5) 用專用的DSP晶片實現。在一些特殊的場合,要求的
信號處理 速度極高,用通用DSP晶片很難實現,例如專用於FFT、
數字濾波 、卷積、相關等算法的DSP晶片,這種晶片將相應的信號處理算法在晶片內部用硬體實現,無需進行編程。
在上述幾種方法中,第1種方法的缺點是速度較慢,一般可用於DSP算法的模擬;第2種和第5種方法專用性強,套用受到很大的限制,第2種方法也不便於系統的獨立運行;第3種方法只適用於實現簡單的DSP算法;只有第4種方法才使
數位訊號處理 的套用打開了新的局面。
歷史 世界上第一個單片DSP晶片應當是1978年AMI公司發布的S2811,1979年美國Intel公司發布的商用可程式器件2920是DSP晶片的一個主要里程碑。這兩種晶片內部都沒有現代DSP晶片所必須有的單周期乘法器。1980年,日本NEC公司推出的μPD7720是第一個具有乘法器的商用DSP晶片。
現狀 在這之後,最成功的DSP晶片當數美國
德州儀器 公司(TexasInstruments,簡稱TI)的一系列產品。TI公司在1982年成功推出其第一代DSP晶片TMS32010及其系列產品TMS32011、TMS320C10/C14/C15/C16/C17等,之後相繼推出了第二代DSP晶片TMS32020、TMS320C25/C26/C28,第三代DSP晶片TMS320C30/C31/C32,第四代DSP晶片TMS320C40/C44,第五代DSP晶片TMS320C5X/C54X,第二代DSP晶片的改進型TMS320C2XX,集多片DSP晶片於一體的高性能DSP晶片TMS320C8X以及目前速度最快的第六代DSP晶片TMS320C62X/C67X等。TI將常用的DSP晶片歸納為三大系列,即:TMS320C2000系列(包括TMS320C2X/C2XX)、TMS320C5000系列(包括TMS320C5X/C54X/C55X)、TMS320C6000系列(TMS320C62X/C67X)。如今,TI公司的一系列DSP產品已經成為當今世界上最有影響的DSP晶片。TI公司也成為世界上最大的DSP晶片供應商,其DSP市場份額占全世界份額近50%。
特點 考慮一個
數位訊號處理 的實例,比如有限衝擊回響
濾波 器(FIR)。用數學語言來說,
FIR濾波器 是做一系列的點積。取一個輸入量和一個序數向量,在係數和輸入樣本的滑動視窗間作乘法,然後將所有的乘積加起來,形成一個輸出樣本。
類似的運算在數位訊號處理過程中大量地重複發生,使得為此設計的器件必須提供專門的支持,促成了了DSP器件與通用處理器(GPP)的分流:
對密集的乘法運算的支持
GPP不是設計來做密集乘法任務的,即使是一些現代的GPP,也要求多個
指令周期 來做一次乘法。而DSP處理器使用專門的硬體來實現單周期乘法。DSP處理器還增加了
累加器 暫存器 來處理多個乘積的和。累加器暫存器通常比其他暫存器寬,增加稱為結果bits的額外bits來避免溢出。
同時,為了充分體現專門的乘法-累加硬體的好處,幾乎所有的DSP的指令集都包含有顯式的MAC指令。
存儲器結構
傳統上,GPP使用馮.諾依曼
存儲器 結構。這種結構中,只有一個存儲器空間通過一組匯流排(一個
地址匯流排 和一個
數據匯流排 )連線到處理器核。通常,做一次乘法會發生4次存儲器訪問,用掉至少四個
指令周期 。
大多數DSP採用了
哈佛結構 ,將存儲器空間劃分成兩個,分別
存儲程式 和數據。它們有兩組匯流排連線到處理器核,允許同時對它們進行訪問。這種安排將處理器
存貯器 的頻寬加倍,更重要的是同時為處理器核提供數據與指令。在這種布局下,DSP得以實現單周期的MAC指令。
還有一個問題,即現在典型的高性能GPP實際上已包含兩個片內高速快取,一個是數據,一個是指令,它們直接連線到處理器核,以加快運行時的訪問速度。從物理上說,這種片內的雙
存儲器 和匯流排的結構幾乎與
哈佛結構 的一樣了。然而從邏輯上說,兩者還是有重要的區別。
GPP使用控制邏輯來決定哪些數據和
指令字 存儲在片內的高速快取里,其程式設計師並不加以指定(也可能根本不知道)。與此相反,DSP使用多個片
記憶體儲器 和多組匯流排來保證每個
指令周期 記憶體儲器的多次訪問。在使用DSP時,程式設計師要明確地控制哪些數據和指令要存儲在片記憶體儲器中。程式設計師在寫程式時,必須保證處理器能夠有效地使用其雙匯流排。
此外,DSP處理器幾乎都不具備數據高速快取。這是因為DSP的典型數據是
數據流 。也就是說,DSP處理器對每個數據樣本做計算後,就丟棄了,幾乎不再重複使用。
零開銷循環
如果了解到DSP算法的一個共同的特點,即大多數的處理時間是花在執行較小的循環上,也就容易理解,為什麼大多數的DSP都有專門的硬體,用於零開銷循環。所謂零開銷循環是指處理器在執行循環時,不用花時間去檢查循環計數器的值、條件轉移到循環的頂部、將循環計數器減1。
與此相反,GPP的循環使用軟體來實現。某些高性能的GPP使用轉移預報硬體,幾乎達到與硬體支持的零開銷循環同樣的效果。
定點計算
大多數DSP使用定點計算,而不是使用浮點。雖然DSP的套用必須十分注意數字的精確,用浮點來做應該容易的多,但是對DSP來說,廉價也是非常重要的。定點機器比起相應的浮點機器來要便宜(而且更快)。為了不使用浮點機器而又保證數字的準確,DSP處理器在
指令集 和硬體方面都支持飽和計算、捨入和移位。
專門的定址方式
DSP處理器往往都支持專門的定址模式,它們對通常的
信號處理 操作和算法是很有用的。例如,模組(循環)定址(對實現
數字濾波器 延時線很有用)、位倒序定址(對FFT很有用)。這些非常專門的定址模式在GPP中是不常使用的,只有用軟體來實現。
執行時間的預測
大多數的DSP套用(如
蜂窩電話 和
數據機 )都是嚴格的實時套用,所有的處理必須在指定的時間內完成。這就要求程式設計師準確地確定每個樣本需要多少處理時間,或者,至少要知道,在最壞的情況下,需要多少時間。
如果打算用低成本的GPP去完成實時
信號處理 的任務,執行時間的預測大概不會成為什麼問題,應為低成本GPP具有相對直接的結構,比較容易
預測執行 時間。然而,大多數實時DSP套用所要求的處理能力是低成本GPP所不能提供的。
這時候,DSP對高性能GPP的優勢在於,即便是使用了高速快取的DSP,哪些指令會放進去也是由程式設計師(而不是處理器)來決定的,因此很容易判斷指令是從高速快取還是從
存儲器 中讀取。DSP一般不使用動態特性,如轉移預測和推理執行等。因此,由一段給定的代碼來預測所要求的執行時間是完全直截了當的。從而使程式設計師得以確定晶片的性能限制。
定點DSP指令集
定點DSP指令集是按兩個目標來設計的:
·使處理器能夠在每個
指令周期 內完成多個操作,從而提高每個指令周期的計算效率。
·將存貯DSP程式的
存儲器 空間減到最小(由於存儲器對整個系統的成本影響甚大,該問題在對成本敏感的DSP套用中尤為重要)。
為了實現這些目標,DSP處理器的指令集通常都允許程式設計師在一個指令內說明若干個並行的操作。例如,在一條指令包含了MAC操作,即同時的一個或兩個數據移動。在典型的例子裡,一條指令就包含了計算FIR
濾波 器的一節所需要的所有操作。這種高效率付出的代價是,其指令集既不直觀,也不容易使用(與GPP的指令集相比)。
GPP的程式通常並不在意處理器的指令集是否容易使用,因為他們一般使用象C或C++等高級語言。而對於DSP的程式設計師來說,不幸的是主要的DSP應用程式都是用彙編語言寫的(至少部分是彙編語言最佳化的)。這裡有兩個理由:首先,大多數廣泛使用的高級語言,例如C,並不適合於描述典型的DSP算法。其次,DSP結構的複雜性,如多
存儲器 空間、多匯流排、不規則的指令集、高度專門化的硬體等,使得難於為其編寫高效率的
編譯器 。
即便用編譯器將C
原始碼 編譯成為DSP的彙編代碼,最佳化的任務仍然很重。典型的DSP套用都具有大量計算的要求,並有嚴格的開銷限制,使得程式的最佳化必不可少(至少是對程式的最關鍵部分)。因此,考慮選用DSP的一個關鍵因素是,是否存在足夠的能夠較好地適應DSP處理器指令集的程式設計師。
開發工具的要求
因為DSP套用要求高度最佳化的代碼,大多數DSP廠商都提供一些開發工具,以幫助程式設計師完成其最佳化工作。例如,大多數廠商都提供處理器的仿真工具,以準確地仿真每個
指令周期 內處理器的活動。無論對於確保實時操作還是代碼的最佳化,這些都是很有用的工具。
GPP廠商通常並不提供這樣的工具,主要是因為GPP程式設計師通常並不需要詳細到這一層的信息。GPP缺乏精確到指令周期的仿真工具,是DSP套用開發者所面臨的的大問題:由於幾乎不可能預測高性能GPP對於給定任務所需要的周期數,從而無法說明如何去改善代碼的性能。
套用 現代社會對數據通信需求正向多樣化、個人化方向發展。而無線數據通信作為向社會公眾迅速、準確、安全、靈活、高效地提供數據交流的有力手段,其市場需求也日益迫切。正是在這種情況下,3G、4G通信才會不斷地被推出,但是無論是3G還是4G,未來通信都將離不開DSP技術(數位訊號處理器),DSP作為一種功能強大的特種微處理器,主要套用在數據、語音、視像信號的高速數學運算和實時處理方面,可以說DSP將在未來通信領域中起著舉足輕重的作用。
為了確保未來的通信能在各種環境下自由高效地工作,這就要求組成未來通信的DSP要具有非常高的處理信號的
運算速度 ,才能實現各種繁雜的計算、
解壓縮 和編解碼。而目前DSP按照功能的側重點不一樣,可以分為定點DSP和浮點DSP,定點DSP以成本低見長,浮點DSP以速度快見長。如果單一地使用一種類型的DSP,未來通信的潛能就不能得到最大程度的發揮。為了能將定點與浮點的優勢集於一身,突破DSP技術上的瓶頸,人們又推出了一種高級
多重處理 結構--VLIW結構,該結構可以在不提高時鐘速度的情況下,實現很強的
數位訊號處理 能力,而且它能同時具備定點DSP和浮點DSP所有的優點。為了能推出一系列更高檔的新技術平台,人們又開始注重DSP的
核心 技術的開發,因為DSP的核心就相當於計算機的CPU一樣,被譽為DSP的心臟,大量的算法和操作都得通過它來完成,因此該核心結構的質量如何,將會直接影響整個DSP晶片的性能、 功耗和成本。
考慮到未來無線訪問Internet網際網路和開展多媒體業務的需要,現在美國的Sun公司又開始準備準將該公司的拳頭產品--PersonalJava語言嵌入到DSP中,以便能進一步提高DSP在處理信號方面的自動化程度和智慧型化程度。當然,在以前DSP中也潛入了其他軟體語言,例如高級C語言,但這種語言在處理網路資源以及
多媒體信息 方面無能為力;而PersonalJava是一種適合個人網路連線和套用的Java環境,基於該環境的個人通信系統可以從網路和Internet網上下載數據和圖像。此外,人們還在研究開發符合
MPEG-4 無線
解壓縮 標準DSP,該壓縮標準將為未來通信傳輸各種多媒體信息提供了依據。
作為一個案例研究,我們來考慮數字領域裡最通常的功能:
濾波 。簡單地說,濾波就是對信號進行處理,以改善其特性。例如,濾波可以從信號里清除噪聲或靜電干擾,從而改善其信噪比。為什麼要用微處理器,而不是模擬器件來對信號做濾波呢?我們來看看其優越性:
模擬濾波器(或者更一般地說,模擬電路)的性能要取決於溫度等環境因素。而
數字濾波器 則基本上不受環境的影響。
數字濾波 易於在非常小的寬容度內進行複製,因為其性能並不取決於性能已偏離正常值的器件的組合。
一個模擬濾波器一旦製造出來,其特性(例如通帶頻率範圍)是不容易改變的。使用
微處理器 來實現數字濾波器,就可以通過對其重新編程來改變濾波的特性。