天天看點

dsp

DSP入門前的背景知識---相當酷!!!! 回複數:87,點選數:9624

【樓主位】 awsoft

積分:318

派别:

等級:------

來自:

    數字信号處理(DigitalSignal Processing,簡稱DSP)是一門涉及許多學科而又廣泛應用于許多領域的新興學科。20世紀60年代以來,随着計算機和資訊技術的飛速發展,數字信号處理技術應運而生并得到迅速的發展。在過去的二十多年時間裡,數字信号處理已經在通信等領域得到極為廣泛的應用。

    數字信号處理是利用計算機或專用處理裝置,以數字形式對信号進行采集、變換、濾波、估值、增強、壓縮、識别等處理,以得到符合人們需要的信号形式。

    數字信号處理是圍繞着數字信号處理的理論、實作和應用等幾個方面發展起來的。數字信号處理在理論上的發展推動了數字信号處理應用的發展。反過來,數字信号處理的應用又促進了數字信号處理理論的提高。而數字信号處理的實作則是理論和應用之間的橋梁。

    數字信号處理是以衆多學科為理論基礎的,它所涉及的範圍極其廣泛。例如,在數學領域,微積分、機率統計、随機過程、數值分析等都是數字信号處理的基本工具,與網絡理論、信号與系統、控制論、通信理論、故障診斷等也密切相關。近來新興的一些學科,如人工智能、模式識别、神經網絡等,都與數字信号處理密不可分。可以說,數字信号處理是把許多經典的理論體系作為自己的理論基礎,同時又使自己成為一系列新興學科的理論基礎。

    數字信号處理的實作方法一般有以下幾種:

      (1) 在通用的計算機(如PC機)上用軟體(如Fortran、C語言)實作;

      (2) 在通用計算機系統中加上專用的加速處理機實作;

      (3) 用通用的單片機(如MCS-51、96系列等)實作,這種方法可用于一些不太複雜的數字信号處理,如數字控制等;

      (4) 用通用的可程式設計DSP晶片實作。與單片機相比,DSP晶片具有更加适合于數字信号處理的軟體和硬體資源,可用于 複雜的數字信号處理算法;

      (5) 用專用的DSP晶片實作。在一些特殊的場合,要求的信号處理速度極高,用通用DSP晶片很難實作,例如專用于    FFT、數字濾波、卷積、相關等算法的DSP晶片,這種晶片将相應的信号處理算法在晶片内部用硬體實作,無需進行程式設計。

    在上述幾種方法中,第1種方法的缺點是速度較慢,一般可用于DSP算法的模拟;第2種和第5種方法專用性強,應用受到很大的限制,第2種方法也不便于系統的獨立運作;第3種方法隻适用于實作簡單的DSP算法;隻有第4種方法才使數字信号處理的應用打開了新的局面。

       雖然數字信号處理的理論發展迅速,但在20世紀80年代以前,由于實作方法的限制,數字信号處理的理論還得不到廣泛的應用。直到20世紀70年代末80年代初世界上第一片單片可程式設計DSP晶片的誕生,才将理論研究結果廣泛應用到低成本的實際系統中,并且推動了新的理論和應用領域的發展。可以毫不誇張地說,DSP晶片的誕生及發展對近20年來通信、計算機、控制等領域的技術發展起到十分重要的作用。

    在DSP系統中,輸入信号可以有各種各樣的形式。例如,它可以是麥克風輸出的語音信号或是電話線來的已調資料信号,可以是編碼後在數字鍊路上傳輸或存儲在計算機裡的錄影機圖像信号等。

    輸入信号首先進行帶限濾波和抽樣,然後進行A/D(Analog toDigital)變換将信号變換成數字比特流。根據奈奎斯特抽樣定理,為保證資訊不丢失,抽樣頻率至少必須是輸入帶限信号最高頻率的2倍。

    DSP晶片的輸入是A/D變換後得到的以抽樣形式表示的數字信号,DSP晶片對輸入的數字信号進行某種形式的處理,如進行一系列的乘累加操作(MAC)。數字處理是DSP的關鍵,這與其他系統(如電話交換系統)有很大的不同,在交換    系統中,處理器的作用是進行路由選擇,它并不對輸入資料進行修改。是以雖然兩者都是實時系統,但兩者的實時限制條件卻有很大的不同。最後,經過處理後的數字樣值再經D/A(Digital toAnalog)變換轉換為模拟樣值,之後再進行内插和平滑濾波就可得到連續的模拟波形。

    必須指出的是,上面給出的DSP系統模型是一個典型模型,但并不是所有的DSP系統都必須具有模型中的所有部件。如語音識别系統在輸出端并不是連續的波形,而是識别結果,如數字、文字等;有些輸入信号本身就是數字信号(如CD:Compact Disk),是以就不必進行模數變換了。

    數字信号處理系統是以數字信号處理為基礎,是以具有數字處理的全部優點:

(1) 接口友善。DSP系統與其他以現代數字技術為基礎的系統或裝置都是互相相容的,與這樣的系統接口以實作某種功能要比模拟系統與這些系統接口要容易得多;

(2) 程式設計友善。DSP系統中的可程式設計DSP晶片可使設計人員在開發過程中靈活友善地對軟體進行修改和更新;

(3) 穩定性好。DSP系統以數字處理為基礎,受環境溫度以及噪聲的影響較小,可靠性高;

(4) 精度高。16位數字系統可以達到10^(-5)的精度;

(5) 可重複性好。模拟系統的性能受元器件參數性能變化比較大,而數字系統基本不受影響,是以數字系統便于測試、調試和大規模生産;

(6) 內建友善。DSP系統中的數字部件有高度的規範性,便于大規模內建。

    當然,數字信号處理也存在一定的缺點。例如,對于簡單的信号處理任務,如與模拟交換線的電話接口,若采用DSP則使成本增加。DSP系統中的高速時鐘可能帶來高頻幹擾和電磁洩漏等問題,而且DSP系統消耗的功率也較大。此外,D SP技術更新的速度快,數學知識要求多,開發和調試工具還不盡完善。

    雖然DSP系統存在着一些缺點,但其突出的優點已經使之在通信、語音、圖像、雷達、生物醫學、工業控制、儀器儀表等許多領域得到越來越廣泛的應用。

    總的來說,DSP系統的設計還沒有非常好的正規設計方法。

    在設計 DSP 系統之前,首先必須根據應用系統的目标确定系統的性能名額、信号處理的要求,通常可用資料流程圖、數學_運算序列、正式的符号或自然語言來描述。

    第二步是根據系統的要求進行進階語言的模拟。一般來說,為了實作系統的最終目标,需要對輸入的信号進行适當的處理,而處理方法的不同會導緻不同的系統性能,要得到最佳的系統性能,就必須在這一步确定最佳的處理方法,即數字信号處理的算法(Algorithm),是以這一步也稱算法模拟階段。例如,語音壓縮編碼算法就是要在确定的壓縮比條件下,獲得最佳的合成語音。算法模拟所用的輸入資料是實際信号經采集而獲得的,通常以計算機檔案的形式存儲為資料檔案。如語音壓縮編碼算法模拟時所用的語音信号就是實際采集而獲得并存儲為計算機檔案形式的語音資料檔案。有些算法模拟時所用的輸入資料并不一定要是實際采集的信号資料,隻要能夠驗證算法的可行性,輸入假設的資料也是可以的。

    在完成第二步之後,接下來就可以設計實時DSP系統,實時DSP系統的設計包括硬體設計和軟體設計兩個方面。硬體設計首先要根據系統運算量的大小、對運算精度的要求、系統成本限制以及體積、功耗等要求選擇合适的DSP晶片。然後設計DSP晶片的外圍電路及其他電路。軟體設計和程式設計主要根據系統要求和所選的DSP晶片編寫相應的DSP彙程式設計式,若系統運算量不大且有進階語言編譯器支援,也可用進階語言(如C語言)程式設計。由于現有的進階語言編譯器的效率還比不上手工編寫彙編語言的效率,是以在實際應用系統中常常采用進階語言和彙編語言的混合程式設計方法,即在算法運算量大的地方,用手工編寫的方法編寫彙編語言,而運算量不大的地方則采用進階語言。采用這種方法,既可縮短軟體開發的周期,提高程式的可讀性和可移植性,又能滿足系統實時運算的要求。

      DSP硬體和軟體設計完成後,就需要進行硬體和軟體的調試。軟體的調試一般借助于DSP開發工具,如軟體模拟器、DSP開發系統或仿真器等。調試DSP算法時一般采用比較實時結果與模拟結果的方法,如果實時程式和模拟程式的輸入相同,則兩者的輸出應該一緻。應用系統的其他軟體可以根據實際情況進行調試。硬體調試一般采用硬體仿真器進行調試,如果沒有相應的硬體仿真器,且硬體系統不是十分複雜,也可以借助于一般的工具進行調試。

    系統的軟體和硬體分别調試完成後,就可以将軟體脫離開發系統而直接在應用系統上運作。當然,DSP系統的開發,特别是軟體開發是一個需要反複進行的過程,雖然通過算法模拟基本上可以知道實時系統的性能,但實際上模拟環境不可能做到與實時系統環境完全一緻,而且将模拟算法移植到實時系統時必須考慮算法是否能夠實時運作的問題。如果算法運算量太大不能在硬體上實時運作,則必須重新修改或簡化算法。

  DSP晶片,也稱數字信号處理器,是一種特别适合于進行數字信号處理運算的微處理器,其主要應用是實時快速地實作各種數字信号處理算法。根據數字信号處理的要求,DSP晶片一般具有如下主要特點:

(1)在一個指令周期内可完成一次乘法和一次加法;

(2)程式和資料空間分開,可以同時通路指令和資料;

(3)片内具有快速 RAM,通常可通過獨立的資料總線在兩塊中同時通路;

(4)具有低開銷或無開銷循環及跳轉的硬體支援;

(5)快速的中斷處理和硬體I/O支援;

(6)具有在單周期内操作的多個硬體位址産生器;

(7)可以并行執行多個操作;

(8)支援流水線操作,使取指、譯碼和執行等操作可以重疊執行。

   當然,與通用微處理器相比,DSP晶片的其他通用功能相對較弱些。

   DSP晶片的發展

   世界上第一個單片 DSP 晶片應當是1978年 AMI公司釋出的 S2811,1979年美國Intel公司釋出的商用可程式設計器件2920是DSP晶片的一個主要裡程碑。這兩種晶片内部都沒有現代DSP晶片所必須有的單周期乘法器。1980年,日本 NEC 公司推出的μP D7720是第一個具有乘法器的商用 DSP 晶片。

   在這之後,最成功的DSP 晶片當數美國德州儀器公司(Texas Instruments,簡稱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%。

第一個采用CMOS工藝生産浮點DSP晶片的是日本的 Hitachi 公司,它于1982年推出了浮點DSP晶片。1983 年 日本Fujitsu 公司推出的MB8764,其指令周期為 120ns,且具有雙内部總線,進而使處理吞吐量發生了一個大的飛躍。而第一個高性能浮點DSP晶片應是 AT&T 公司于1984 年推出的DSP32。

  與其他公司相比,Motorola公司在推出 DSP 晶片方面相對較晚。1986年,該公司推出了定點處理器MC56001。1990年,推出了與IEEE 浮點格式相容的浮點 DSP 晶片 MC96002。

  美國模拟器件公司(AnalogDevices,簡稱AD)在DSP晶片市場上也占有一定的份額,相繼推出了一系列具有自己特點的DSP晶片,其定點DSP晶片有ADSP2101/2103/2105、ASDP2111/2115、ADSP2161/2162/2164以及ADSP2171/2181,浮點DSP晶片有ADSP21000/21020、ADSP21060/21062等。自1980年以來,DSP晶片得到了突飛猛進的發展,DSP晶片的應用越來越廣泛。從運算速度來看,MAC(一次乘法和一次加法)時間已經從20世紀80年代初的400ns(如TMS32010)降低到10ns以下(如TMS320C54X、TMS320C62X/67X等),處理能力提高了幾十倍。DSP晶片内部關鍵的乘法器部件從1980年的占模片區(diearea)的40%左右下降到5%以下,片内RAM數量增加一個數量級以上。從制造技術來看,1980年采用4μm

的 N溝道MOS(NMOS)工藝,而現在則普遍采用亞微米(Micron)CMOS工藝。DSP晶片的引腳數量從1980年的最多64個增加到現在的200個以上,引腳數量的增加,意味着結構靈活性的增加,如外部存儲器的擴充和處理器間的通信等。此外,DSP晶片的發展使DSP系統的成本、體積、重量和功耗都有很大程度的下降。表1.1 是TI公司DSP晶片1982年、1992年、1999年的比較表。表1.2則是世界上主要DSP晶片供應商的代表晶片的一些資料。

  DSP晶片可以按照下列三種方式進行分類。

1.按基礎特性分

  這是根據DSP晶片的工作時鐘和指令類型來分類的。如果在某時鐘頻率範圍内的任何時鐘頻率上,DSP晶片都能正常工作,除計算速度有變化外,沒有性能的下降,這類DSP晶片一般稱為靜态DSP晶片。例如,日本OKI 電氣公司的DSP晶片、TI公司的TMS320C2XX系列晶片屬于這一類。

如果有兩種或兩種以上的DSP晶片,它們的指令集和相應的機器代碼機管腳結構互相相容,則這類DSP晶片稱為一緻性DSP晶片。例如,美國TI公司的TMS320C54X就屬于這一類。

2.按資料格式分

  這是根據DSP晶片工作的資料格式來分類的。資料以定點格式工作的DSP晶片稱為定點DSP晶片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列,AD公司的ADSP21XX系列,AT&T公司的DSP16/16A,Motolora公司的MC56000等。以浮點格式工作的稱為浮點DSP晶片,如TI公司的TMS320C3X/C4X/C8X,AD公司的ADSP21XXX系列,AT&T公司的DSP32/32C,Motolora公司的MC96002等。

不同浮點DSP晶片所采用的浮點格式不完全一樣,有的DSP晶片采用自定義的浮點格式,如TMS320C3X,而有的DSP晶片則采用IEEE的标準浮點格式,如Motorola公司的MC96002、FUJITSU公司的MB86232和ZORAN公司的ZR35325等。

3.按用途分

  按照DSP的用途來分,可分為通用型DSP晶片和專用型DSP晶片。通用型DSP晶片适合普通的DSP應用,如TI公司的一系列DSP晶片屬于通用型DSP晶片。專用DSP晶片是為特定的DSP運算而設計的,更适合特殊的運算,如數字濾波、卷積和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就屬于專用型DSP晶片。

本書主要讨論通用型DSP晶片。

DSP晶片的選擇    設計DSP應用系統,選擇DSP晶片是非常重要的一個環節。隻有標明了DSP晶片,才能進一步設計其外圍電路及系統的其他電路。總的來說,DSP晶片的選擇應根據實際的應用系統需要而确定。不同的DSP應用系統由于應用場合、應用目的等不盡相同,對DSP晶片的選擇也是不同的。一般來說,選擇DSP晶片時應考慮到如下諸多因素。

  1.DSP晶片的運算速度。

 運算速度是DSP晶片的一個最重要的性能名額,也是選擇DSP晶片時所需要考慮的一個主要因素。DSP晶片的運算速度可以用以下幾種性能名額來衡量:

(1) 指令周期:即執行一條指令所需的時間,通常以ns(納秒)為機關。如TMS320LC549-80在主頻為80MHz時的指令周期為12.5ns;

(2) MAC時間:即一次乘法加上一次加法的時間。大部分DSP晶片可在一個指令周期内完成一次乘法和加法操作,如TMS320LC549-80的MAC時間就是12.5ns;

(3) FFT執行時間:即運作一個N點FFT程式所需的時間。由于FFT運算涉及的運算在數字信号進行中很有代表性,是以FFT運算時間常作為衡量DSP晶片運算能力的一個名額;

(4) MIPS:即每秒執行百萬條指令。如TMS320LC549-80的處理能力為80 MIPS,即每秒可執行八千萬條指令;

(5)MOPS:即每秒執行百萬次操作。如TMS320C40的運算能力為275 MOPS;

(6) MFLOPS:即每秒執行百萬次浮點操作。如TMS320C31在主頻為40MHz時的處理能力為40 MFLOPS;

(7)BOPS:即每秒執行十億次操作。如TMS320C80的處理能力為2 BOPS。

  2.DSP晶片的價格。

  DSP晶片的價格也是選擇DSP晶片所需考慮的一個重要因素。如果采用價格昂貴的DSP晶片,即使性能再高,其應用範圍肯定會受到一定的限制,尤其是民用産品。是以根據實際系統的應用情況,需确定一個價格适中的DSP晶片。當然,由于DSP晶片發展迅速,DSP晶片的價格往往下降較快,是以在開發階段選用某種價格稍貴的DSP晶片,等到系統開發完畢,其價格可能已經下降一半甚至更多。

  3.DSP晶片的硬體資源。

  不同的DSP晶片所提供的硬體資源是不相同的,如片内RAM、ROM的數量,外部可擴充的程式和資料空間,總線接口,I/O接口等。即使是同一系列的DSP晶片(如TI的TMS320C54X系列),系列中不同DSP晶片也具有不同的内部硬體資源,可以适應不同的需要。

  4.DSP晶片的運算精度。

  一般的定點DSP晶片的字長為16位,如TMS320系列。但有的公司的定點晶片為24位,如Motorola公司的MC56001等。浮點晶片的字長一般為32位,累加器為40位。

  5.DSP晶片的開發工具。

  在DSP系統的開發過程中,開發工具是必不可少的。如果沒有開發工具的支援,要想開發一個複雜的DSP系統幾乎是不可能的。如果有功能強大的開發工具的支援,如C語言支援,則開發的時間就會大大縮短。是以,在選擇DSP晶片的同時必須注意其開發工具的支援情況,包括軟體和硬體的開發工具。

  6.DSP晶片的功耗。

  在某些DSP應用場合,功耗也是一個需要特别注意的問題。如便攜式的DSP裝置、手持裝置、野外應用的DSP裝置等都對功耗有特殊的要求。目前,3.3V供電的低功耗高速DSP晶片已大量使用。

       7.其他。

    除了上述因素外,選擇DSP晶片還應考慮到封裝的形式、品質标準、供貨情況、生命周期等。有的DSP晶片可能有DIP、PGA、PLCC、PQFP等多種封裝形式。有些DSP系統可能最終要求的是工業級或軍用級标準,在選擇時就需要注意到所選的晶片是否有工業級或軍用級的同類産品。如果所設計的DSP系統不僅僅是一個實驗系統,而是需要批量生産并可能有幾年甚至十幾年的生命周期,那麼需要考慮所選的DSP晶片供貨情況如何,是否也有同樣甚至更長的生命周期等。

在上述諸多因素中,一般而言,定點DSP晶片的價格較便宜,功耗較低,但運算精度稍低。而浮點DSP晶片的優點是運算精度高,且C語言程式設計調試友善,但價格稍貴,功耗也較大。例如TI的TMS320C2XX/C54X系列屬于定點DSP晶片,低功耗和低成本是其主要的特點。而TMS320C3X/C4X/C67X屬于浮點DSP晶片,運算精度高,用C語言程式設計友善,開發周期短,但同時其價格和功耗也相對較高。

   DSP應用系統的運算量是确定選用處理能力為多大的DSP晶片的基礎。運算量小則可以選用處理能力不是很強的DSP晶片,進而可以降低系統成本。相反,運算量大的DSP系統則必須選用處理能力強的DSP晶片,如果DSP晶片的處理能力達不到系統要求,則必須用多個DSP晶片并行處理。那麼如何确定DSP系統的運算量以選擇DSP晶片呢?下面我們來考慮兩種情況。

1.按樣點處理

    所謂按樣點處理就是DSP算法對每一個輸入樣點循環一次。數字濾波就是這種情況。在數字濾波器中,通常需要對每一個輸入樣點計算一次。例如,一個采用LMS算法的256 抽頭的自适應FIR濾波器,假定每個抽頭的計算需要3個MAC周期,則256抽頭計算需要256×3=768個MAC周期。如果采樣頻率為8kHz,即樣點之間的間隔為125ms,DSP晶片的MAC周期為200ns,則768個MAC周期需要153.6ms的時間,顯然無法實時處理,需要選用速度更高的DSP晶片。表1.3示出了兩種信号帶寬對三種 DSP 晶片的處理要求,三種DSP晶片的MAC周期分别為200ns、50ns和25ns。從表中可以看出,對話帶的應用,後兩種DSP晶片可以實時實作,對聲頻應用,隻有第三種DSP晶片能夠實時處理。當然,在這個例子中,沒有考慮其他的運算量。

2.按幀處理   有些數字信号處理算法不是每個輸入樣點循環一次,而是每隔一定的時間間隔(通常稱為幀)循環一次。例如,中低速語音編碼算法通常以10ms或20ms為一幀,每隔10ms或20ms語音編碼算法循環一次。是以,選擇DSP晶片時應該比較一幀内DSP晶片的處理能力和DSP算法的運算量。假設DSP晶片的指令周期為 p(ns),一幀的時間為Dt

(ns),則該DSP晶片在一幀内所能提供的最大運算量為 Dt/p條指令。例如TMS320LC549-80的指令周期為12.5ns,設幀長為20ms,則一幀内TMS320LC549-80所能提供的最大運算量為160萬條指令。是以,隻要語音編碼算法的運算量不超過160萬條指令,就可以在TMS320LC549-80上實時運作。

  DSP晶片的應用

  自從20世紀70年代末80年代初DSP晶片誕生以來,DSP晶片得到了飛速的發展。DSP晶片的高速發展,一方面得益于內建電路技術的發展,另一方面也得益于巨大的市場。在近20年時間裡,DSP晶片已經在信号處理、通信、雷達等許多領域得到廣泛的應用。目前,DSP晶片的價格越來越低,性能價格比日益提高,具有巨大的應用潛力。DSP晶片的應用主要有:

(1) 信号處理——如數字濾波、自适應濾波、快速傅立葉變換、相關運算、譜分析、卷積、模式比對、加窗、波形産生等;

(2) 通信——如數據機、自适應均衡、資料加密、資料壓縮、回波抵消、多路複用、傳真、擴頻通信、糾錯編碼、可視電話等;

(3) 語音——如語音編碼、語音合成、語音識别、語音增強、說話人辨認、說話人确認、語音郵件、語音存儲等;

(4) 圖形/圖像——如二維和三維圖形處理、圖像壓縮與傳輸、圖像增強、動畫、機器人視覺等;

(5) 軍事——如保密通信、雷達處理、聲納處理、導航、飛彈制導等;

(6) 儀器儀表——如頻譜分析、函數發生、鎖相環、地震處理等;

(7) 自動控制——如引擎控制、聲控、自動駕駛、機器人控制、磁盤控制等;

(8) 醫療——如助聽、超聲裝置、診斷工具、病人監護等;

(9) 家用電器——如高保_真音響、音樂合成、音調控制、玩具與遊戲、數字電話/電視等。

   随着DSP晶片性能價格比的不斷提高,可以預見DSP晶片将會在更多的領域内得到更為廣泛的應用。

繼續閱讀