新聞中心

        EEPW首頁 > 汽車電子 > DSP入門知識

        DSP入門知識

        ——
        作者: 時間:2006-12-13 來源: 收藏

        Digital Signal Processing 數字信號處理
        作為一個案例研究,我們來考慮數字領域里最通常的功能:濾波。簡單地說,濾波就是對信
        號進行處理,以改善其特性。例如,濾波可以從信號里清除噪聲或靜電干擾,從而改善其信
        噪比。為什么要用微處理器,而不是模擬器件來對信號做濾波呢?我們來看看其優越性:
        模擬濾波器(或者更一般地說,模擬電路)的性能要取決于溫度等環境因素。而數字濾波器
        則基本上不受環境的影響。
        數字濾波易于在非常小的寬容度內進行復制,因為其性能并不取決于性能已偏離正常值的器
        件的組合。
        一個模擬濾波器一旦制造出來,其特性(例如通帶頻率范圍)是不容易改變的。使用微處理
        器來實現數字濾波器,就可以通過對其重新編程來改變濾波的特性。
        信號處理方式的比較
        比較因素 模擬方式 數字方式
        修改設計的靈活性 修改硬件設計,或調整硬件參數 改變軟件設置
        精度 元器件精度 A/D 的位數和計算機字長,算法
        可靠性和可重復性 受環境溫度、濕度、噪聲、 不受這些因素的影響
        電磁場等的干擾和影響大
        大規模集成 盡管已有一些模擬集成電路, 但品種較少、集成度不高、價格較高 器件
        體積小、功能強、功耗小、一致性好、使用方便、性能/價格比高
        實時性 除開電路引入的延時外,處理是實時的 由計算機的處理速度決定
        高頻信號的處理 可以處理包括微波毫米波乃至光波信號 按照奈準則的要求,受S/H、A/D
        和 處理速度的限制
        Digital Signal Processor 數字信號處理器
        微處理器(Microprocessor)的分類
        通用處理器(GPP)
        采用馮.諾依曼結構,程序和數據的存儲空間合二而一
        8-bit Apple(6502),NEC PC-8000(Z80)
        8086/286/386/486/Pentium/Pentium II/ Pentium III
        PowerPc 64-bit CPU(SUN Sparc,DEC Alpha, HP)
        CISC 復雜指令計算機, RISC 精簡指令計算機
        采取各種方法提高計算速度,提高時鐘頻率,高速總線,多級Cashe,協處理器等
        Single Chip Computer/ Micro Controller Unit(MCU)
        除開通用CPU 所具有的ALU 和CU,還有存儲器(RAM/ROM)寄存器,時鐘,計數器,
        定時器,串/并口,有的還有A/D,D/A
        INTEL MCS/48/51/96(98)
        MOTOROLA HCS05/011

        采用哈佛結構,程序和數據分開存儲
        采用一系列措施保證數字信號的處理速度,如對FFT 的專門優化
        MCU 與 的簡單比較
        MCU DSP
        低檔 高檔 低檔 高檔
        指令周期(ns) 600 40 50 5
        乘加時間(ns) 1900 80 50 5
        US$/MIPS 1.5 0.5 0.15 0.1
        DSP 處理器與通用處理器的比較
        考慮一個數字信號處理的實例,比如有限沖擊響應濾波器(FIR)。用數學語言來說,FIR 濾
        波器是做一系列的點積。取一個輸入量和一個序數向量,在系數和輸入樣本的滑動窗口間作
        乘法,然后將所有的乘積加起來,形成一個輸出樣本。
        類似的運算在數字信號處理過程中大量地重復發生,使得為此設計的器件必須提供專門的支
        持,促成了了DSP 器件與通用處理器(GPP)的分流:
        1 對密集的乘法運算的支持
        GPP 不是設計來做密集乘法任務的,即使是一些現代的GPP,也要求多個指令周期來做一
        次乘法。而DSP 處理器使用專門的硬件來實現單周期乘法。DSP 處理器還增加了累加器寄
        存器來處理多個乘積的和。累加器寄存器通常比其他寄存器寬,增加稱為結果bits 的額外
        bits 來避免溢出。
        同時,為了充分體現專門的乘法-累加硬件的好處,幾乎所有的DSP 的指令集都包含有顯式
        的MAC 指令。
        2 存儲器結構
        傳統上,GPP 使用馮.諾依曼存儲器結構。這種結構中,只有一個存儲器空間通過一組總線
        (一個地址總線和一個數據總線)連接到處理器核。通常,做一次乘法會發生4 次存儲器訪
        問,用掉至少四個指令周期。
        大多數DSP 采用了哈佛結構,將存儲器空間劃分成兩個,分別存儲程序和數據。它們有兩
        組總線連接到處理器核,允許同時對它們進行訪問。這種安排將處理器存貯器的帶寬加倍,
        更重要的是同時為處理器核提供數據與指令。在這種布局下,DSP 得以實現單周期的MAC
        指令。
        還有一個問題,即現在典型的高性能GPP 實際上已包含兩個片內高速緩存,一個是數據,
        一個是指令,它們直接連接到處理器核,以加快運行時的訪問速度。從物理上說,這種片內
        的雙存儲器和總線的結構幾乎與哈佛結構的一樣了。然而從邏輯上說,兩者還是有重要的區
        別。
        GPP 使用控制邏輯來決定哪些數據和指令字存儲在片內的高速緩存里,其程序員并不加以
        指定(也可能根本不知道)。與此相反,DSP 使用多個片內存儲器和多組總線來保證每個指
        令周期內存儲器的多次訪問。在使用DSP 時,程序員要明確地控制哪些數據和指令要存儲
        在片內存儲器中。程序員在寫程序時,必須保證處理器能夠有效地使用其雙總線。
        此外,DSP 處理器幾乎都不具備數據高速緩存。這是因為DSP 的典型數據是數據流。也就
        是說,DSP 處理器對每個數據樣本做計算后,就丟棄了,幾乎不再重復使用。
        3 零開銷循環
        如果了解到DSP 算法的一個共同的特點,即大多數的處理時間是花在執行較小的循環上,
        也就容易理解,為什么大多數的DSP 都有專門的硬件,用于零開銷循環。所謂零開銷循環
        是指處理器在執行循環時,不用花時間去檢查循環計數器的值、條件轉移到循環的頂部、將
        循環計數器減1。
        與此相反,GPP 的循環使用軟件來實現。某些高性能的GPP 使用轉移預報硬件,幾乎達到
        與硬件支持的零開銷循環同樣的效果。
        4 定點計算
        大多數DSP 使用定點計算,而不是使用浮點。雖然DSP 的應用必須十分注意數字的精確,
        用浮點來做應該容易的多,但是對DSP 來說,廉價也是非常重要的。定點機器比起相應的
        浮點機器來要便宜(而且更快)。為了不使用浮點機器而又保證數字的準確,DSP 處理器在
        指令集和硬件方面都支持飽和計算、舍入和移位。
        5 專門的尋址方式
        DSP 處理器往往都支持專門的尋址模式,它們對通常的信號處理操作和算法是很有用的。
        例如,模塊(循環)尋址(對實現數字濾波器延時線很有用)、位倒序尋址(對FFT 很有用)。
        這些非常專門的尋址模式在GPP 中是不常使用的,只有用軟件來實現。
        6 執行時間的預測
        大多數的DSP 應用(如蜂窩電話和調制解調器)都是嚴格的實時應用,所有的處理必須在
        指定的時間內完成。這就要求程序員準確地確定每個樣本需要多少處理時間,或者,至少要
        知道,在最壞的情況下,需要多少時間。
        如果打算用低成本的GPP 去完成實時信號處理的任務,執行時間的預測大概不會成為什么
        問題,應為低成本GPP 具有相對直接的結構,比較容易預測執行時間。然而,大多數實時
        DSP 應用所要求的處理能力是低成本GPP 所不能提供的。
        這時候,DSP 對高性能GPP 的優勢在于,即便是使用了高速緩存的DSP,哪些指令會放進
        去也是由程序員(而不是處理器)來決定的,因此很容易判斷指令是從高速緩存還是從存儲
        器中讀取。DSP 一般不使用動態特性,如轉移預測和推理執行等。因此,由一段給定的代
        碼來預測所要求的執行時間是完全直截了當的。從而使程序員得以確定芯片的性能限制。
        7 定點DSP 指令集
        定點DSP 指令集是按兩個目標來設計的:
        使處理器能夠在每個指令周期內完成多個操作,從而提高每個指令周期的計算效率。
        將存貯DSP 程序的存儲器空間減到最小(由于存儲器對整個系統的成本影響甚大,該問題
        在對成本敏感的DSP 應用中尤為重要)。
        為了實現這些目標,DSP 處理器的指令集通常都允許程序員在一個指令內說明若干個并行
        的操作。例如,在一條指令包含了MAC 操作,即同時的一個或兩個數據移動。在典型的例
        子里,一條指令就包含了計算FIR 濾波器的一節所需要的所有操作。這種高效率付出的代
        價是,其指令集既不直觀,也不容易使用(與GPP 的指令集相比)。
        GPP 的程序通常并不在意處理器的指令集是否容易使用,因為他們一般使用象C 或C++等
        高級語言。而對于DSP 的程序員來說,不幸的是主要的DSP 應用程序都是用匯編語言寫的
        (至少部分是匯編語言優化的)。這里有兩個理由:首先,大多數廣泛使用的高級語言,例
        如C,并不適合于描述典型的DSP 算法。其次,DSP 結構的復雜性,如多存儲器空間、多
        總線、不規則的指令集、高度專門化的硬件等,使得難于為其編寫高效率的編譯器。
        即便用編譯器將C 源代碼編譯成為DSP 的匯編代碼,優化的任務仍然很重。典型的DSP 應
        用都具有大量計算的要求,并有嚴格的開銷限制,使得程序的優化必不可少(至少是對程序
        的最關鍵部分)。因此,考慮選用DSP 的一個關鍵因素是,是否存在足夠的能夠較好地適應
        DSP 處理器指令集的程序員。
        8 開發工具的要求
        因為DSP 應用要求高度優化的代碼,大多數DSP 廠商都提供一些開發工具,以幫助程序員
        完成其優化工作。例如,大多數廠商都提供處理器的仿真工具,以準確地仿真每個指令周期
        內處理器的活動。無論對于確保實時操作還是代碼的優化,這些都是很有用的工具。
        GPP 廠商通常并不提供這樣的工具,主要是因為GPP 程序員通常并不需要詳細到這一層的
        信息。GPP 缺乏精確到指令周期的仿真工具,是DSP 應用開發者所面臨的的大問題:由于
        幾乎不可能預測高性能GPP 對于給定任務所需要的周期數,從而無法說明如何去改善代碼
        的性能。



        關鍵詞: DSP

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 栾川县| 通化市| 延川县| 景宁| 离岛区| 北流市| 武邑县| 阿拉善右旗| 高雄市| 朔州市| 庆云县| 开封县| 武冈市| 宜州市| 威远县| 英德市| 修水县| 信丰县| 明溪县| 通化市| 托里县| 江川县| 松阳县| 伊吾县| 增城市| 额尔古纳市| 南靖县| 廊坊市| 扶风县| 苍南县| 遵义市| 无极县| 正安县| 达尔| 双鸭山市| 雅江县| 南充市| 正宁县| 侯马市| 鄂托克前旗| 偃师市|