武乾文,馮 妍
(中國電子科技集團公司第58研究所,江蘇 無錫,214035)
DSP(Digital Signal Processor)芯片,也稱數字信號處理器,是專門為快速實現各種數字信號處理算法而設計的、具有特殊結構、進行高速實時處理的專用微處理器,其處理速度要比最快的CPU還快10~50倍。DSP的典型特征有:每個處理周期能夠處理多條乘加操作,具有實時運算能力、實時仿真能力和實時模擬能力,具有很強的通用性、很高的可靠性同時造價低廉。
隨著信息技術革命的深入和計算機技術的飛速發展,數字信號處理技術已經逐漸發展成為一門關鍵的技術學科。業內人士預言,DSP將是未來集成電路中發展最快的電子產品,它將徹底變革人們的工作、學習和生活方式。通過DSP運算方法研究,可以更好地了解DSP結構。
1982年,世界誕生了首枚商用D S P芯片TMS32010,它每秒能處理500萬個指令(5 MIPS)。上世紀80年代中期,基于CMOS技術的第二代TMS320C20、TMS320C25 DSP芯片也應運而生,它的存儲容量和運算速度都成倍提高,成了圖像、語音處理的基礎芯片。
上世紀90年代是DSP發展最為迅猛的時期,這主要表現在運算速度進一步加快,集成度進一步提高,功能越來越強大,應用領域越來越廣泛。1988年TI公司推出首款浮點DSP——TMS320C3X。1989年TI公司推出業界性能最高的定點DSP產品TMS320C5X。1990年TI公司推出第二代DSP架構的浮點DSP產品TMS320C4X。在1996年TI公司推出TMS320F240。TMS320C6000系列是TI公司于上世紀90年代中后期推出的新一代DSP產品,它們是定點、浮點兼容的DSP序列,TI公司的浮點DSP C6713,頻率250MHz,浮點性能1.3GFLOPS。
全球DSP供應商主要是幾家美國公司,如德州儀器(TI)、朗訊、模擬器件公司(ADI)、摩托羅拉等等。其中TI處于絕對領先的地位,占據了整個市場份額的45%,其余幾家所占份額分別是28%、12%、12%,而其他國家的企業只占到3%。
近10年來,全球DSP產品向著高性能、低功耗、加強融合和拓展多種應用的趨勢發展,DSP芯片成為各種電子產品尤其是通信類電子產品的技術核心。據TI預測,到2012年,DSP芯片在單個芯片內將能集成6億只晶體管。目前,對DSP爆炸性需求的時代已經來臨,其主要應用前景十分可觀。
早期的微處理器采用馮·諾依曼(Vo n-Neumann)結構,如圖1所示,其片內程序空間和數據空間合在一起,取指令和取操作數都通過一條總線分時進行。當高速運算時,容易出現瓶頸。
DSP芯片的內部采用程序和數據分開的哈佛結構,如圖2所示。它允許同時取指令(來自程序存儲器)和取操作數(來自數據存儲器),而且允許在程序空間和數據空間相互傳送數據。具有專門的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP指令,可以用來快速實現各種數字信號處理算法。

圖1 馮·諾依曼(Von-Neumann)結構

圖2 哈佛(Harvard)結構
根據數字信號處理的要求,DSP芯片一般具有如下主要特點:
(1)在一個指令周期內可完成一次乘法和一次加法;
(2)程序和數據空間分開,可以同時訪問指令和數據;
(3)片內具有快速RAM,通常可通過獨立的數據總線在兩塊中同時訪問;
(4)具有低開銷或無開銷循環及跳轉的硬件支持;
(5)快速的中斷處理和硬件I/O支持;
(6)具有在單周期內操作的多個硬件地址產生器。
在定點DSP芯片中,采用定點數進行數值運算,其操作數一般采用整型數來表示。一個整型數的最大表示范圍取決于DSP芯片所給定的字長,一般為16位或24位。顯然,字長越長,所能表示的數的范圍越大,精度也越高。以下以16位字長為例。
DSP芯片的數以2的補碼形式表示。每個16位數用一個符號位來表示數的正負,0表示數值為正,1則表示數值為負。其余15位表示數值的大小。因此二進制數0010000000000011b=8195,二進制數1111111111111100b=-4。
對DSP芯片而言,參與數值運算的數就是16位的整型數。但在許多情況下,數學運算過程中的數不一定都是整數。其中的關鍵就是由程序員來確定一個數的小數點處于16位中的哪一位。這就是數的定標。
通過設定小數點在16位數中的不同位置,就可以表示不同大小和不同精度的小數了。數的定標有Q表示法和S表示法兩種。表1列出了一個16位數的16種Q表示、S表示及它們所能表示的十進制數值范圍。

表1 Q表示、S表示及數值范圍
從表1可以看出,同樣一個16位數,若小數點設定的位置不同,它所表示的數也就不同。例如:16進制數2000H,用Q0表示則等于8192,用Q15表示則等于0.25。
但對于DSP芯片來說,處理方法是完全相同的。
從表1還可以看出,不同的Q所表示的數不僅范圍不同,而且精度也不相同。Q越大,數值范圍越小,但精度越高;相反,Q越小,數值范圍越大,但精度就越低。例如,Q0的數值范圍是-32768到+32767,其精度為1,而Q15的數值范圍為-1到0.9999695,精度為 1/32768 = 0.00003051。因此,對定點數而言,數值范圍與精度是一對矛盾,一個變量要想能夠表示比較大的數值范圍,必須以犧牲精度為代價;而想提高精度,則數的表示范圍就相應地減小。
硬件乘法器是DSP的重要組成部分。乘法速度越快,DSP處理器的性能就越高。在通用的微處理器中,乘法指令是由一系列加法來實現的,故需許多個指令周期來完成。相比而言,DSP芯片的特征就是有一個專用的硬件乘法器。在TMS320系列中,由于具有專用的硬件乘法器,乘法可在一個指令周期內完成。主要指令有:

其中三條指令用來將乘數裝入到乘法器電路(LT)、移動數據(DMOV)以及將乘法結果(存在乘積寄存器P中)加到ACC中(APAC)。在典型的通用微處理器中,每個乘法需要30 ~ 40個指令周期,而TMS32010只需4條指令。如果采用特殊的DSP指令或采用 TMS320C6201等新一代的DSP芯片,可進一步降低乘法的計算時間。
兩個定點數相乘時可以分為下列三種情況:(1)小數乘小數

兩個Q15的小數相乘后得到一個Q30的小數,即有兩個符號位。一般情況下相乘后得到的滿精度數不必全部保留,只需保留16位單精度數。由于相乘后得到的高16位不滿15位的小數精度,為了達到15位精度,可將乘積左移1位,下面是上述乘法的程序:

(2)整數乘整數

(3)混合表示法
許多情況下,運算過程中為了既滿足數值的動態范圍又保證一定的精度,就必須采用Q0與Q15之間的表示法。比如,數值1.2345,顯然Q15無法表示,而若用Q0表示,則最接近的數是1,精度無法保證。因此,數1.2345最佳的表示法是Q14。

Q14的最大值不大于2,因此,兩個Q14數相乘得到的乘積不大于4。當了解到上述乘積不會大于1.8,就可以用Q14數表示乘積,而不是理論上的最佳情況Q13。程序如下:

上述方法為了保證精度均對乘的結果舍位,結果所產生的誤差相當于減去1個LSB(最低位)。采用簡單的舍入方法,可使誤差減少二分之一。
乘的過程中,測試程序可不考慮溢出而只需調整運算中的小數點。而加法則是一個更加復雜的過程。首先,加法運算必須用相同的Q點表示;其次,程序員或者允許其結果有足夠的高位以適應位的增長,或者必須準備解決溢出問題。如果操作數僅為16位長,其結果可用雙精度數表示。下面說明16位數相加的兩種途徑。
(1)保留32位結果

(2)調整小數點保留16位結果


加法運算最可能出現的問題是運算結果溢出。部分DSP提供了檢查溢出的專用指令BV,此外,使用溢出保護功能可使累加結果溢出時累加器飽和為最大的整數或負數。當然即使如此,運算精度還是大大降低。因此,最好的方法是完全理解基本的物理過程并注意選擇數的表達方式。
在通用DSP芯片中,一般不提供單周期的除法指令,為此必須采用除法子程序來實現。二進制除法是乘法的逆運算。乘法包括一系列的移位和加法,而除法可分解為一系列的減法和移位。下面來說明除法的實現過程。
設累加器為8位,且除法運算為10除以3。除的過程就是除數逐步移位并與被除數比較的過程,在每一步進行減法運算,如果能減則將位插入商中。

由于DSP沒有專門的除法指令,使用條件減指令SUBC可以完成有效靈活的除法功能。使用這一指令的唯一限制是兩個操作數必須為正。程序員必須事先了解其可能的運算數的特性,如其商是否可以用小數表示及商的精度是否可被計算出來。這里每一種考慮可影響如何使用SUBC指令的問題。


與DIV_A相同,這個程序中,分子在NUMERA中,分母在DENOM中,商存在QUOT中,TEMSGN為暫存單元。FRAC中規定商的精度,如商的精度為Q13,則調用程序前FRAC單元中的值應為13。
本文簡要介紹DSP的計算原理和方法,根據其運算原理,可以直接編寫匯編指令生成測試向量。DSP直流參數與交流參數的測試相對簡單,與普通邏輯電路相同,這里就不再詳細介紹。
[1] 蘇濤,等. DSP實用技術[M].西安:西安電子科技大學出版社,2002.
[2] 劉益成. TMS320C54x DSP應用程序設計與開發[M].北京:北京航空航天大學出版社,2002.
[3] TMS320C54x Instruction Set Simulator Technical Overview(Rev.A)(spru598a.pdf)[P].Texas Instruments.
[4] TMS320C54x DSP Programmer’s Guide(spru538.pdf) [P].Texas Instruments, 2001.
[5] TMS320C54x DSP Applications Guide Reference Set Volume 4(spru173.htm) [P].Texas Instruments, 1996.