1. 程式人生 > >DSP學習初階的一些筆記

DSP學習初階的一些筆記

這些內容都是一些基礎的、概述性的知識,是本人在學習、使用DSP開始階段的一些總結,對於DSP內部結構:各個暫存器的配置使用、各種外設的詳細配置、中斷處理機制、記憶體管理以及各種程式設計、除錯的經驗,以後有空會另外貼出。

一、DSP晶片概述:

1、各平臺:

C6000平臺,包含定點C62x和C64x以及浮點C67x,追求至高效能,最高達1GHz。

C5000平臺,TI公司推出雙核處理器OMAP,包含一個ARM和一個C5000系列的DSP。

C2000平臺,包含16位的C24xx和32位的C28xx定點DSP。

C5000和C6000和C28xx系列都配有實時作業系統RTOS核心和C/C++編譯器;C24xx系列僅有C編譯器。

 

2、C28xx系列主要特色:

1)  峰值速度高達150MIPS;

2)  具有4K字的RAM和最高達128K字的FLASH;

3)  採用雙電壓設計,外設電壓3.3V,核心電壓1.8V;

4)  12位A/D,取樣速度高達80ns;

5)  軟體上支援C++和實時作業系統RTOS,其數學庫:智慧Q格式數學庫。

 

3、分頁機制:

資料儲存空間採用分頁機制,2407整個空間分成512頁,通過暫存器的9位指標DP來指定。分頁機制有助於縮短彙編指令長短,提高訪問速度。

 

4、外設:

SCI:經電平轉換後,可用作RS-232通訊。

SPI:帶有同步時鐘,可用來連線一些帶有SPI器件,如序列E2PROM等。

EV:事件管理器,主要用途:通用定時器和PWM發生器,還包括捕獲單元,QEP解碼器。

10位A/D:F240取樣轉換時間最快是6.1us,LF< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />2407A最快500ns。

 

5、GEL:通用擴充套件語言的縮寫:

GEL是一個大小寫敏感但缺少型別檢查的解釋性語言,語法上可看作是C語言的一個子集。GEL主要用來擴充套件CC的功能,方便除錯。

 

二、Q格式:

1、定點微處理器不能直接處理小數,比如要表達精度為0.01Hz的頻率變數f,有三種方法:

1)把f定義為float型別。C語言中自動呼叫執行時函式來處理浮點運算,float型別精度最高,運算速度也最慢。一個簡單的浮點加法也要好多彙編指令來實現。

2)仍定義為整型,採用放大若干倍來表示小數,但做法僵硬,精度變化時,要修改很多地方以防止溢位。

3)仍定義為整型,採用定標法。常用Q格式來表示定標,當假定小數點位於第0位的右側時,為Q0,當小數點位於第15位的右側時,為Q15.

浮點數Xf轉換為定點數Xq時,Xq = (int)(Xf * 2^Q)

定點數Xf轉換為浮點數Xq時,Xf – (float)(Xq * 2^-Q)

有符號32位數的Q15格式表示範圍為-65536<=X<=65535.9999695。

2、定點運算:

任何數制運算都要考慮溢位,定點數之間的運算也要考慮溢位。

1)定點加減法< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />

必須是具有相同Q格式的資料才能相加,不同Q格式的資料必須先通過移位至相同Q格式,然後才能相加。

2)定點乘法:( )

不同Q格式資料相乘,相當於Q值相加。

3)定點除法:( )

不同Q格式資料相除,相當於Q值相減。

3、Q15格式:

程式中最常用的是Q0和Q15格式,int型變數的Q15格式數值範圍是一個不超過1的小數。小數間乘法仍是小數,永遠不會溢位。

如果一個數既包含整數又有小數,使用Q格式時,選定一個合適的Q格式來表示。還可以:把全部資料轉化為小數,再用Q15格式表示。

假設整數x取值範圍不會超過某一極限最大值,設此極限最大值為MAX,將x除以MAX轉換成一個小數,再轉換成Q15格式。

 

三、可重入性:

    當被兩個以上執行緒呼叫時,函式的結果仍能保證正確,當然是插入式呼叫的。

 

DSP學習初階的一些筆記 - 傲笑紅塵 - 傲笑紅塵

保障可重入性的技術:

(1)       只使用區域性變數,不使用全域性變數。

(2)       全域性變數設定為只讀型別(加關鍵詞const),由於不進行寫操作,則程式仍具有可重入性。

(3)       如果將函式和全域性變數封裝在一起,即封裝成一個物件,且函式只能訪問此物件內的成員變數,則函式具有可重入性。這就是面嚮物件語言(C++)的好處,提高可重入性。

(4)       遮蔽中斷:當函式訪問到全域性變數時,為保證可重入性,在變數修改前禁止中斷,修改完後再開中斷。

(5)       函式只能返回一個值,當想要通過一個函式返回多個變數值時,可以採取的措施是直接在函式體內處理全域性變數或傳遞全域性變數的地址。此時的全域性變數就變成了過程量(狀態量),此時可用區域性變數在函式內代替全域性變數。

(6)       16位DSP中,若輸出變數是32位,賦值操作會用兩條指令——先賦值變數低16位,再賦值高16位,這中間就可能因發生中斷而不能得到正確結果。解決方法是賦值前禁止中斷即可。

 

四、C語言生成的段和CMD檔案:

通用目標檔案格式COFF,是一種很流行的二進位制可執行檔案格式。二進位制可執行檔案包括庫檔案(.lib結尾)、目標檔案(.obj)、最終可執行檔案(.out)等。

詳細的COFF檔案格式包括有段頭、可執行程式碼和初始化資料、可重定位資訊、行號入口、符號表、字串表等。這些屬於編寫作業系統和編譯器人員關心的範疇,從應用的層面講,DSP的C語言應掌握兩點:通過偽指令定義段,並給段分配空間。

編譯器處理段得過程為:每個原始檔都編譯成獨立的目標檔案(.obj),每個目標檔案含有自己的段;聯結器把這些目標檔案中相同段名得部分連線在一起,生成最終的可執行檔案(.out)。

1、段分兩大類:已初始化段和未初始化段。

1)已初始化段含有真實的指令和資料,存放在程式儲存空間。程式儲存空間在DSP片內是FLASH。除錯程式碼時,下載程式碼到片外的程式儲存空間——此時多為RAM。

.text:包含可執行的彙編指令程式碼。如果不宣告,程式碼就歸屬.text段;

.data:一般包括常數資料。如用來對變數初始化的資料或一個正弦表格等;

.sect:使用者可自行定義已初始化段;

.asect:作用類似於.sect,但多了絕對地址定位功能。

.cinit:存放用來對全域性和靜態變數初始化的常數。

.switch:存放switch語句產生的常數表格。

2)未初始化的段只是保留變數的地址空間,未初始化的段存放在資料儲存空間中,資料儲存空間多為RAM儲存單元。

.bss:定義變數存放空間;

.usect:使用者可自行定義未初始化段;

.stack:存放C語言的棧;

.sysmen:存放C語言的堆;

.const:簡單而言,是用來存放一些特殊的常數和字元等。

 

2、DSP C24系列堆疊向高地址方向增長,所以堆疊段定義在資料儲存空間的最後區域,即使堆疊發生溢位,也不會覆蓋其他有用的資料。

 

3、#pragma CODE_SECTION(symbol,”section name”);

symbol是符號,可以是函式名也可是全域性變數名,section name是使用者自己定義的段名。

CODE_SECTION用來定義程式碼段,DATA_SECTION定義資料段。二者在彙編層次上分別是由偽指令.sect和.usect實現的。

使用注意:不能在函式體內宣告#pragma。必須在符號被定義和使用前使用#pragma。

 

4、CMD檔案中,page0代表程式空間,page1代表資料空間。

page0:.text,.cinit,通過#pragma CODE_SECTION定義的段;

page1:.switch,.const,.bss,.stack,.sysmen,通過#pragma DATA_SECTION定義的段。

CMD檔案支援C語言的塊註釋符“/**/”,但不支援“//”。

CMD檔案兩大功能:指示儲存空間和分配段到儲存空間:

1)通過MEMORY來指示儲存空間:

MEMORY

{

PAGE0:name 0 [(attr)] : origin=constant, length=constant

PAGEn:name 0 [(attr)] : origin=constant, length=constant

}

2)通過SECTIONS來分配段到儲存空間:

SECTIONS

{

name:[property,property,property,…]

name:[property,property,property,…]

}

(1)       name輸出端的名;

(2)       property輸出段的屬性。

A、load:定義輸出段被裝載到哪裡的關鍵字,load = allocation

Allocation可以是強制地址,如:load=0x100,更多時候,allocation是儲存空間的名稱。

B、run:定義輸出段將會在哪裡執行的關鍵字。CMD檔案規定當只出現一個關鍵字load或run時,表示load地址和run地址是重疊的。

 

5、複雜的.const段:

三種情況會產生.const段:

1)關鍵詞const:

由關鍵詞const限定的帶有全域性變數的初始值。但由const限定的區域性變數的初始值,不會產生.const段。區域性變數都是執行時開闢在.bss段中的。

2)字串常數:

出現在表示式中的字串常數,如“strcpy(s,“abc”);”字串常數用來初始化指標變數,如“char *p=“abc”;”,但當字串常數用來初始化陣列變數時,不論是全域性還是區域性陣列,都不會產生.const段,此時字串常數生成的是.cinit段。

3)陣列和結構體的初始值:

陣列和結構體是區域性變數,其初始化值會產生.const段。但當陣列和結構體時全域性變數時,其初始化值不會產生.const段,此時生成的是.cinit段。

.const段存放的是初始化的常數值,理應存放在page0才對,否則一掉電,豈不是這些常數都沒有了?這是基於靈活性考慮的,程式中常會有大量的常數佔用資料空間。

把.const段從page0搬移到page1,需要在兩個地方設定:

A、CMD檔案中的位置

B、修改連線的rts2xx.lib

 

六、CCS設定及TI中FFT庫:

1、CCS的設定:

主要就是設定路徑(標頭檔案Linker、庫檔案linker、目標檔案compiler—Files等的路徑),堆疊大小,入口地址以及Linker Order等。

2、TI的FFT演算法:

TI公司為了加快實數FFT,巧妙的使用了壓縮演算法:對2N點的實數做N點複數FFT,最後再劈分還原,得到實數2N點實數FFT計算結果。

補充:

1)如果取樣資料不足2的冪次方,補零,雖然很多地方說沒影響,但實際補零對輸出的影響,是一個複雜的插值函式關係。

2)考慮到共軛關係,對[1,N-1]點幅值結果應該乘以2,才是真正的某次諧波的幅值平方。(TI的程式只給出幅值平方,沒給出幅值,如果是幅值平方則應該乘以4.)

TI手冊中列出結構體型別FFT128R如下:

Typedef struct{

       int *ipcbptr;

       int *magptr;

       int peakmag;

       int peakfrq;

       int normflag;

       int size;

       int *winptr;

void (*init1)(void);

void (*init2)(void);

void (*calc)(void *);

void (*split)(void *);

void (*mag)(void *);

void (*win)(void *);

}FFT128R;

 

DSP學習初階的一些筆記 - 傲笑紅塵 - 傲笑紅塵

DSP學習初階的一些筆記 - 傲笑紅塵 - 傲笑紅塵

例示:

#include “fft.h”

#pragma DATA_SECTION(ipcb,”FFTipcb”)

#define TWON 128

int ipcb[TWON+2]; //存放FFT處理的資料,Q15格式

FFT128R fft=FFT128R_DEFAULTS;

DSP學習初階的一些筆記 - 傲笑紅塵 - 傲笑紅塵

-------DSP學習初階的一些筆記 - 傲笑紅塵 - 傲笑紅塵 

}

DSP學習初階的一些筆記 - 傲笑紅塵 - 傲笑紅塵

 

以下是個人節選,內容來自http://www.weeqoo.com/zhuanti/dsp/,都是些有用的知識,貼在這裡,共同學習。

 

1、DSP的應用:

 

語音處理:語音編碼、語音合成、語音識別、語音增強、語音郵件、語音儲存等。

  影象/圖形處理:二維和三維圖形處理、影象壓縮與傳輸、影象識別、動畫、機器人視覺、多媒體、電子地圖、影象增強等。

  軍事:保密通訊、雷達處理、聲吶處理、導航、全球定位、跳頻電臺、搜尋和反搜尋等。

  儀器儀表:頻譜分析、函式發生、資料採集、地震處理等。

  自動控制:控制、深空作業、自動駕駛、機器人控制、磁碟控制等。

  醫療:助聽、超聲裝置、診斷工具、病人監護、心電圖等、CT、CAT。

  家用電器:數字音響、數字電視、可視電話、音樂合成、音調控制、玩具與遊戲等。

 

2、TI DSP的選型:

 

主要考慮處理速度、功耗、程式儲存器和資料儲存器的容量、片內的資源,如定時器的數量、 I/O 口數量、中斷數量、DMA 通道數等。DSP 的主要供應商有 TI,ADI,Motorola,Lucent 和 Zilog 等,其中 TI 佔有最大的市場份額。

 

TI 公司現在主推四大系列 DSP

 

1)C5000  系列(定點、低功耗):C54X,C54XX,C55X 相比其它系列的主要特點是低功

耗,所以最適合個人與行動式上網以及無線通訊應用,如手機、PDA、GPS 等應用。處理

速度在 80MIPS--400MIPS 之間。C54XX 和 C55XX 一般只具有 McBSP 同步串列埠、HPI 並行

介面、定時器、DMA 等外設。值得注意的是 C55XX 提供了 EMIF 外部儲存器擴充套件介面,

可以直接使用 SDRAM,而 C54XX 則不能直接使用。兩個系列的數字 IO 都只有兩條。

 

2)C2000 系列(定點、控制器):C20X,F20X,F24X,F24XX  ,C28x 該系晶片具有大量 外設資源,如:A/D、定時器、各種串列埠(同步和非同步),WATCHDOG、CAN 匯流排/PWM 發 生器、數字 IO 腳等。是針對控制應用最佳化的 DSP,在 TI 所有的 DSP 中,只有 C2000 有 FLASH,也只有該系列有非同步串列埠可以和 PC的 UART 相連。

 

3)C6000 系列:C62XX,C67XX,C64X 該系列以高效能著稱,最適合寬頻網路和數字影

像應用。32bit,其中:C62XX 和 C64X 是定點系列,C67XX 是浮點系列。該系列提供 EMIF

擴充套件儲存器介面。該系列只提供 BGA 封 裝,只能製作多層 PCB。且功耗較大。同為浮點

系列的 C3X 中的 VC33  現在雖非主流產品,但也仍在廣泛使用,但其速度較低,最高在

150MIPS。

4)OMAP 系列:OMAP 處理器整合 ARM 的命令及控制功能,另外還提供 DSP 的低功耗 實時訊號處理能力,最適合移動上網裝置和多媒體家電。

其他系列的 DSP 曾經有過風光,但現在都非 TI 主推產品了,除了 C3X 系列外,其他基本 處於淘汰階段,如:C3X 的浮點系列:C30,C31,C32 C2X 和 C5X 系列:C20,C25,C50 每個系列的 DSP 都有其主要應用領域.

 

3、如何高效開始 TI DSP 的硬體開發:

 

1)根據應用領域選擇 TI 推薦的 DSP 型別

2)參考選定的 DSP 之 EVM 板,DSK 等原理圖,完成 DSP 最小系統的搭建(包括外擴內 存空間、電源復位系統、各控制訊號管腳的連線、JTAG 口的連線等);

3)根據具體應用需要,選擇外圍電路的擴充套件,一般如語音、視訊、控制等領域均有成熟的 電路可以從 TI 網站得到。外圍電路與 DSP 的介面可參看 EVM 或 DSK,以及所選外圍電路 晶片的典型介面設計原理圖;最好外圍電路晶片也選擇 TI 的,這樣的話不管硬體介面有現 成原理圖、很多連 DSP 與其介面的基本控制原始碼都有。

4)地址譯碼、IO 擴充套件等用 CPLD 或者 FPGA 來做,將 DSP 的地址線、資料線、控制訊號 線如 IS/PS/DS 等都引進去有利於除錯。

 

4、如何高效開始 TI DSP 的軟體開發:

 

如果你不是純做演算法,而是在一個目標版上進行開發,需要使用 DSP 的片上外設,需要控 製片外介面電路,那麼建議在寫程式前先好好將這個目標版的電路設計搞清楚。最重要的是 程式、資料、I/O 空間的譯碼。不管是否純做演算法還是軟硬結合,DSP 的 CPU,memory,program memory addressing, data mem.ory addressing 的資料都需要看.

 

1)看 CCS 的使用指南

2)明白 CMD 檔案的編寫

3)明白中斷向量表文件的編寫,並定位在正確的地方

4)執行一個純 simulator 的程式,瞭解 CCS 的各個操作

5)到 TI 網站下相關的原始碼,參考原始碼的結構進行程式設計

6)不論是 C 程式設計還是 ASM 程式設計,模組化是必須的

 

5、關於 TI 54X 系列 DSP 的 bootloader 過程:

 

請詳細閱讀 TI 文件 SPRA618A、SPRA571,這些文件對 boot 的機制進行了詳細說明同時說明了利用 hex500 將*.out 檔案轉化為*.hex 檔案時,需要編寫的 cmd 檔案的寫法。

6、如何選擇外部時鐘?

DSP 的內部指令週期較高,外部晶振的主頻不夠,因此 DSP 大多數片內均有 PLL。但每個系列不盡相同。

 

1)TMS320C2000 系列:

TMS320C20x:PLL 可以÷2,×1,×2 和×4,因此外部時鐘可以為 5MHz-40MHz。

TMS320F240:PLL 可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5 和×9,因此外部時鐘 可以為2.22MHz-40MHz。

TMS320F241/C242/F243:PLL 可以×4,因此外部時鐘為 5MHz。 TMS320LF24xx:PLL 可 以由 RC 調節,因此外部時鐘為 4MHz-20MHz。

TMS320LF24xxA:PLL 可以由 RC 調節,因此外部時鐘為 4MHz-20MHz。

 

2)TMS320C3x 系列:

TMS320C3x:沒有 PLL,因此外部主頻為工作頻率的 2 倍。

TMS320VC33:PLL 可以÷2,×1,×5,因此外部主頻可以為 12MHz-100MHz。

 

3)TMS320C5000 系列:

TMS320VC54xx:PLL 可以÷4,÷2,×1-32,因此外部主頻可以為 0.625MHz-50MHz。

TMS320VC55xx:PLL 可以÷4,÷2,×1-32,因此外部主頻可以為 6.25MHz-300MHz。

 

4)TMS320C6000 系列:

TMS320C62xx:PLL 可以×1,×4,×6,×7,×8,×9,×10 和×11,因此外部主頻可以為 11.8MHz-300MHz。

TMS320C67xx:PLL 可以×1 和×4,因此外部主頻可以為 12.5MHz-230MHz。 TMS320C64xx:PLL 可以×1,×6 和×12,因此外部主頻可以為 30MHz-720MHz 軟體。

 

7、等待的如何使用?

    DSP 的指令週期較快,訪問慢速儲存器或外設時需加入等待。等待分硬體等待和軟體等待, 每一個系列的等待不完全相同。

 

1)對於 C2000 系列: 硬體等待訊號為 READY,高電平時不等待。 軟體等待由 WSGR 寄

存器決定,可以加入最多 7 個等待。其中程式儲存器和資料儲存器及 I/O 可以分別設定。

2)對於 C3x 系列: 硬體等待訊號為/RDY,低電平是不等待。 軟體等待由匯流排控制暫存器 中的 SWW 和WTCNY 決定,可以加入最多 7 個等待,但等待是不分段的,除了片內之外 全空間有效。

3)對於 C5000 系列: 硬體等待訊號為 READY,高電平時不等待。 軟體等待由 SWWCR 和 SWWSR 暫存器決定,可以加入最多 14 個等待。其中程式儲存器、控制程式儲存器和資料 儲存器及 I/O 可以分別設定。

4)對於 C6000 系列(只限於非同步儲存器或外設): 硬體等待訊號為 ARDY,高電平時不 等待。 軟體等待由外部儲存器介面控制暫存器決定,匯流排訪問外部儲存器或裝置的時序可 以設定,可以方便的同異步的儲存器或外設介面。

 

8、Link 的 cmd 檔案的作用是什麼?

 

Link 的 cmd 檔案用於 DSP 程式碼的定位。由於 DSP 的編譯器的編譯結果是未定位的,DSP 沒有作業系統來定位執行程式碼,每個客戶設計的 DSP 系統的配置也不盡相同,因此需要用 戶自己定義程式碼的安裝位置。以 C5000為例,基本格式為:

 

-o sample.out

-m sample.map

-stack 100

sample.obj meminit.obj

-l rts.lib

 

MEMORY

{

PAGE 0: VECT: origin = 0xff80, length 0x80

PAGE 0: PROG: origin = 0x2000, length 0x400

PAGE 1: DATA: origin = 0x800, length 0x400

}

 

SECTIONS

{

.vectors : {} >PROG PAGE 0

.text : {} >PROG PAGE 0

.data : {} >PROG PAGE 0

.cinit : {} >PROG PAGE 0

.bss : {} >DATA PAGE 1

}

 

9、如何將 OUT 檔案轉換為 16 進位制的檔案格式?

 

DSP 的開發軟體集成了一個程式,可以從執行檔案 OUT 轉換到程式設計器可以接受的格式,使 得程式設計器可以用次檔案燒寫 EPROM 或 FLASH。對於 C2000 的程式為 DSPHEX;對於 C3x 程 序為 HEX30;對於 C54x 程式為HEX500;對於 C55x 程式為 HEX55;對於 C6x 程式為 Hex6x。 以 C32 為例,基本格式為:

sample.out

-x

-memwidth 8

-bootorg 900000h

-iostrb 0h

-strb0 03f0000h

-strb1 01f0000h

-o sample.hex

ROMS

{

EPROM: org = 0x900000,len=0x02000,romwidth=8

}

SECTIONS

{

.text: paddr=boot

.data: paddr=boot

}

 

10、為什麼在 CCS 下編譯工具工作不正常?

 

在 CCS 下有部分客戶會碰到編譯工具工作不正常,常見錯誤為:

1)autoexec.bat 的路徑“out of memory”。修改 autoexec.bat,清除無用的 PATH 路徑。

2)編譯的輸出檔案(OUT 檔案)防寫,無法覆蓋。刪除或修改輸出檔案的屬性。

3)Windows 有問題。重新安裝 windows。

4)Windows 下有程式對 CCS 有影響。建議用一“乾淨”的計算機。

 

11、在 CCS 下,如何選擇有效的儲存器空間?

 

CCS 下的儲存器空間最好設定同你的硬體,沒有的儲存器不要有效。這樣便於除錯,CCS 會發現你調入程式時或程式執行時,是否訪問了無效地址。

1)在 GEL 檔案中設定。參見 CCS 中的示例。

2)在 OptiON 選單下,選擇 Memory Map 選項,根據你的硬體設定。注意一定要將 Enable Memory Mapping 置為使能。

 

12、在 CCS 下,OUT 檔案載入時提示“Data verification failed...”的原因?

 

Link 的 CMD 檔案分配的地址同 GEL 或設定的有效地址空間不符。中斷向量定位處或其它 程式碼、資料段定位處,沒有 RAM,無法載入 OUT 檔案。解決方法:

1)調整 Link 的 CMD 檔案,使得定位段處有 RAM。

2)調整儲存器設定,使得 RAM 區有效。

 

13、為什麼要使用 BIOS?

 

1)BIOS 是 Basic I/O System 的簡稱,是基本的輸入、輸出管理。

2)用於管理任務的排程,程式實時分析,中斷管理,跟蹤管理和實時資料交換。

3)BIOS 是基本的實時系統,使用 BIOS 可以方便地實現多工、多程序的時間管理。

4)BIOS 是 eXpress DSP 的標準平臺,要使用 eXpress DSP 技術,必須使用 BIOS。

 

14、5V/3.3V 如何混接?

 

TI DSP 的發展同積體電路的發展一樣,新的 DSP 都是 3.3V 的,但目前還有許多外圍電路

是 5V 的,因此在 DSP 系統中,經常有 5V 和 3.3V 的 DSP 混接問題。在這些系統中,應注

意:

1)DSP 輸出給 5V 的電路(如 D/A),無需加任何緩衝電路,可以直接連線。

2)DSP 輸入 5V 的訊號(如 A/D),由於輸入訊號的電壓>4V,超過了 DSP 的電源電壓,DSP

的外部訊號沒有保護電路,需要加緩衝,如  74LVC245 等,將 5V 訊號變換成 3.3V 的訊號。

3)模擬器的 JTAG 口的訊號也必須為 3.3V,否則有可能損壞 DSP。

 

15、如何選擇 DSP 的電源晶片?

 

TMS320LF24xx:TPS7333QD,5V 變 3.3V,最大 500mA。

TMS320VC33: TPS73HD318PWP,5V 變 3.3V 和 1.8V,最大 750mA。

TMS320VC54xx:TPS73HD318PWP,5V 變 3.3V 和 1.8V,最大 750mA; TPS73HD301PWP, 5V 變 3.3V 和可調,最大 750mA。

TMS320VC55xx:TPS73HD301PWP,5V 變 3.3V 和可調,最大 750mA。 TMS320C6000:PT6931,TPS56000,最大 3A。

 

16、DSP 的最高主頻能從晶片型號中獲得嗎?

 

TI 的 DSP 最高主頻可以從晶片的型號中獲得,但每一個系列不一定相同。

1)TMS320C2000 系列:

TMS320F206-最高主頻 20MHz。

TMS320C203/C206-最高主頻 40MHz。

TMS320F24x-最高主頻 20MHz。

TMS320LF24xx-最高主頻 30MHz。

TMS320LF24xxA-最高主頻 40MHz。

TMS320LF28xx-最高主頻 150MHz。

2)TMS320C3x 系列:

TMS320C30:最高主頻 25MHz。

TMS320C31PQL80:最高主頻 40MHz。

TMS320C32PCM60:最高主頻 30MHz。

TMS320VC33PGE150:最高主頻 75MHz。

3)TMS320C5000 系列:

TMS320VC54xx:最高主頻 160MHz。

TMS320VC55xx:最高主頻 300MHz。

4)TMS320C6000 系列:

TMS320C62xx:最高主頻 300MHz。

TMS320C67xx:最高主頻 230MHz。

TMS320C64xx:最高主頻 720MHz。

 

17、如何選擇 DSP 的外部儲存器?

 

DSP 的速度較快,為了保證 DSP 的執行速度,外部儲存器需要具有一定的速度,否則 DSP 訪問外部儲存器時需要加入等待週期。

1)對於 C2000 系列: C2000 系列只能同異步的儲存器直接相接。 C2000 系列的 DSP 目前 的最高速度為150MHz。建議可以用的儲存器有:

CY7C199-15:32K×8,15ns,5V;

CY7C1021-12:64K×16,15ns,5V; CY7C1021V33-12:64K×16,15ns,3.3V。

 

2)對於 C3x 系列: C3x 系列只能同異步的儲存器直接相接。 C3x 系列的 DSP 的最高速度, 5V 的為40MHz,3.3V 的為 75MHz,為保證 DSP 無等待執行,分別需要外部儲存器的速度 <25ns 和<12ns。建議可以用的儲存器有:

ROM: AM29F400-70:256K×16,70ns,5V,加入一個等待;

AM29LV400-55(SST39VF400):256K×16,55ns,3.3V,加入兩個等待(目前沒有更快的 Flash)。 SRAM:CY7C199-15:32K×8,15ns,5V;

 

 

CY7C1021-15:64K×16,15ns,5V;

CY7C1009-15:128K×8,15ns,5V;

CY7C1049-15:512K×8,15ns,5V;

CY7C1021V33-15:64K×16,15ns,3.3V;

CY7C1009V33-15:128K×8,15ns,3.3V;

CY7C1041V33-15:256K×16,15ns,3.3V。

 

3)對於 C54x 系列: C54x 系列只能同異步的儲存器直接相接。 C54x 系列的 DSP 的速度為 100MHz 或160MHz,為保證 DSP 無等待執行,需要外部儲存器的速度<10ns 或<6ns。建議 可以用的儲存器有:

ROM: AM29LV400-55(SST39VF400):256K×16,55ns,3.3V,加入 5 或 9 個等待(目前 沒有更快的Flash)。

SRAM: CY7C1021V33-12:64K×16,12ns,3.3V,加入一個等待; CY7C1009V33-12:128K×8,12ns,3.3V,加入一個等待。

4)對於 C55x 和 C6000 系列: TI 的 DSP 中只有 C55x 和 C6000 可以同同步的儲存器相連, 同步儲存器可以保證系統的資料交換效率更高。

ROM: AM29LV400-55(SST39VF400):256K×16,55ns,3.3V。 SDRAM: HY57V651620BTC-10S:64M,10ns。

SBSRAM: CY7C1329-133AC,64k×32;

CY7C1339-133AC,128k×32。

FIFO:CY7C42x5V-10ASC,32k/64k×18。

 

    以上都節選自http://www.weeqoo.com/zhuanti/dsp/,裡面包含很多很好很強大的內容,基本分兩部分,開始介紹DSP處理器的相關內容,之後通過例項介紹了DSP在實際應用中的各個典型領域中的一些疑問及解決。有問題,大家可以一塊交流學習。