電子設備應用越來越多地涉及信號處理。家庭影院、計算機圖形學、醫學成像和電信都依賴于信號處理技術。信號處理需要在復雜但重復的算法中進行快速數學運算。許多應用需要實時計算:即,信號是時間的連續函數,必須對其進行采樣并將其轉換為數字,以進行數值處理。因此,處理器必須執行算法,在樣本到達時對樣本執行離散計算。
數字信號處理器(DSP)的架構經過優化,可處理此類算法。一個好的信號處理引擎的特點包括:快速、靈活的算術計算單元(例如,乘法器、累加器、桶形移位器);進出計算單元的不受約束的數據流;擴展計算單元的精度和動態范圍(以避免溢出并最大限度地減少舍入誤差);雙地址發生器(用于同時處理二元運算的兩個輸入);高效的程序排序(包括有效處理循環和中斷的能力);和易于編程。
DSP與精簡指令集計算機(RISC)具有其中一些共同特征。此外,兩者都是圍繞某些核心指令構建的,使它們能夠以非常高的指令速率運行;兩者都避開了內部微碼。然而,它們是根本不同的“動物”。RISC和DSP之間的差異在處理器的
計算單位
數據地址生成器
內存架構
中斷功能
循環硬件
條件指令
界面特點
DSP 屬于兩個基本類:定點,一種基于 16 位整數數據類型的(通常)16 位架構,以及浮點,通常具有 32 位架構,基于同時具有尾數和指數的數據類型。
圖1.SHARC 內部架構。
計算單元:DSP都包含并行硬件乘法器以支持單周期乘法,其乘法器通常在單個周期中組合乘法和累加。DSP 具有專用累加器,其寄存器明顯寬于標稱字大小,以保持精度,例如 32 位 ADSP-2106x SHARC 系列中的 80 位(圖 1)。硬件可能支持從累加器溢出中恢復,如ADSP-21xx系列。此外,DSP都包含功能齊全的算術邏輯單元(ALU),與乘法器無關。
ALU 可能具有特殊功能,例如能夠同時生成求和和差分以加速快速傅里葉變換 (FFT) 中的內核例程,FFT 是一種用于在時域和頻域之間轉換信號的算法。高級DSP將在計算單元中包含飽和邏輯,以防止數據溢出。它還可以提供零開銷(即,不需要額外的時鐘周期)陷阱來中斷算術異常的例程。
復雜的DSP還可能包含單周期桶移器(即能夠在一個時鐘周期內將一個單詞向左或向右移動任意數量的位),以及用于數據縮放,數據壓縮/擴展或打包/解包和位操作的優先級編碼器。它還可能包括專用硬件,以最大限度地減少快速除法、平方根和超越函數計算所需的時間。具有這些特殊功能的計算元件在RISC處理器上找不到。
地址生成: 高效的DSP將使其計算單元至少提供來自兩個獨立數據地址生成器的數據。分接延遲塊和系數緩沖器是DSP的特征,但在通用計算中大多是未知的。高效的DSP需要循環緩沖器硬件來支持緩沖器。循環緩沖區指針需要每個周期更新,而不會產生開銷。此外,緩沖區結束的比較測試需要一個無延遲命令來重置緩沖區結束處的指針。另一方面,RISC處理器需要為每個比較測試提供一個額外的周期。
內存架構: DSP 通常支持與通用計算系統不同的系統存儲器架構。DSP采用哈佛架構,允許從兩個不同的外部存儲器持續單周期訪問兩個單詞的數據。例如,ADI公司的SHARC DSP具有集成在片內的2或4 Mb雙端口SRAM。該內存是直接尋址的,而不是像RISC處理器那樣的緩存。對于CPU來說,這種片上存儲器看起來像一個獨特的存儲器,而不僅僅是系統中其他位置的存儲器的高速復制品。原因是DSP通常是嵌入式處理器。它們的片上存儲器通常足以容納任務所需的完整、重復的DSP程序。每個內存塊都是雙端口,用于內核處理器和 I/O 處理器或 DMA 控制器進行單周期獨立訪問(圖 2)。雙端口存儲器和獨立的片上總線允許在一個周期內從內核傳輸兩個數據,從I/O傳輸一個數據。
中斷功能: 由于DSP旨在在實時系統中運行,因此高效、復雜且可預測的中斷處理對于DSP至關重要。RISC處理器具有高度流水線的架構,往往具有緩慢的中斷響應時間和有限的中斷能力。上下文切換應該非???。高級DSP,如新型ADSP-21csp01和ADI公司的ADSP-2106x浮點系列,支持完整的替代寄存器集,允許單周期上下文切換以支持中斷處理。(寄存器文件窗口不同,因為它的目的是加速參數傳遞,而不是保存整個上下文。
除內部中斷外,高級DSP還將支持至少四個獨立的外部中斷。中斷延遲將保持在幾個周期內,并且必須是可預測的。中斷應該是可嵌套的和可優先的。此外,應該很容易實時啟用和禁用特定中斷。
硬件循環:高效環路對于數字信號處理至關重要,因為信號處理算法是重復的。一個好的DSP將支持具有專用內部硬件的零開銷環路。也就是說,芯片將監控環路條件和終止,以與所有其他操作并行決定是否將程序計數器或分支遞增到環路頂部,而不會造成周期時間損失。另一方面,RISC處理器必須在每個循環結束時進行測試和分支,每個循環和每次通過至少要花費一個額外的周期。嵌套循環在信號處理算法中也很常見;DSP 環路硬件應支持至少四級嵌套環路的深度。RISC處理器尚未發展到支持這些基本的信號處理需求。
條件執行:數據相關執行對于信號處理非常重要。因此,ADSP-2100系列和ADSP-2106x SHARC浮點系列等高級DSP支持有條件地執行其大部分基本指令:在單個指令中,處理器測試條件代碼,如果為真,則在同一周期內執行操作。這可以對計算密集型算法產生巨大的影響。英特爾在 i860 中發現了這個問題,并添加了一個圖形單元來處理高性能 Z 緩沖所需的條件存儲操作。
接口: DSP基于來自模數轉換器的實際信號工作,并將結果發送到D/A轉換器。因此,DSP通常包含串行端口,用于與這些設備進行廉價接口。高級DSP增加了硬件以提高操作效率,例如雙緩沖和自動緩沖。由于這些輸入/輸出信號可能來自非線性編解碼器,因此高級DSP可能具有用于零開銷A律和μ律擴容的專用硬件。此外,串行端口可能具有簡化與T1和CEPT數據傳輸線接口的功能。
圖2.高效的 SHARC 內存架構允許 I/O 帶寬跟上計算速度。
SHARC串行端口旨在通過靈活的硬件最大限度地提高吞吐量,但針對各種信號類型進行了調整。它們的特點包括:每個串行端口可以自動接收和/或發送整個數據塊,獨立發送和接收每個數據緩沖寄存器以及移位寄存器,TDM多通道模式。
編程注意事項: 曾經,DSP和RISC之間的顯著區別在于它們的編程模型。DSP本質上是性能驅動的,因此DSP的編程主要使用匯編語言完成,以便從處理器獲得最佳性能。對于定點DSP,通常仍然如此,但使用ADSP-2100系列的直觀代數匯編語言則更容易(圖3)。在不犧牲性能的情況下,它改善了易用性問題,這個問題促使許多程序員偏愛像C這樣的高級語言。
圖3.FFT 代碼示例。
另一方面,浮點DSP用高級語言編程效率更高。浮點計算避免了分數數據類型,C 中不存在分數數據類型。此外,體系結構決策可能會影響編譯器效率。例如,ADSP-2106x SHARC系列的大而統一的地址空間使編譯器更容易分配存儲器。此外,其大而靈活的寄存器文件提高了效率。
我們產品戰略的核心是提供工具和DSP內核,以便能夠使用高級語言對定點和浮點DSP進行高效編程。這就是ADSP-21csp背后的驅動力,ADSP-21csp是一個新的并發信號處理器系列。然而,盡管使用高級語言,DSP程序員必須能夠在語言級別下降(以最小的痛苦)來提高時間關鍵例程的性能。
DSP設計越來越多地按照這樣的順序進行編程:首先,用高級語言編寫和調試軟件原型。此原型通常會產生足夠的性能。然而,更一般地說,需要提高性能,因此在模擬中對高級代碼進行直方圖處理,以找到需要最多執行時間的部分。然后用匯編語言手工編碼關鍵部分。直方圖和手動編碼過程將迭代,直到達到性能目標。
雖然DSP和RISC之間的差異很多,但這兩種架構往往在編程領域趨同,這種融合是由上市時間和DSP在應用中不斷變化的作用驅動的。程序員擅長快速開發工作C程序,使用它們更快地將產品推向市場。同時,DSP承擔更多的系統管理功能,如用戶界面或系統控制,并且需要提供高水平的語言效率,以與以前分配這些控制任務的μC和RISC處理器競爭。
審核編輯:郭婷
-
dsp
+關注
關注
555文章
8142瀏覽量
355191 -
嵌入式
+關注
關注
5141文章
19526瀏覽量
314883 -
計算機
+關注
關注
19文章
7626瀏覽量
90163
發布評論請先 登錄
采用光線傳感與DSP嵌入式技術實現地震加速度信號處理系統設計

評論