日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

献给初学者-DSP入门教程

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 献给初学者-DSP入门教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉載連接:?http://blog.chinaunix.net/uid-23023942-id-3079644.html

?

獻給初學者-DSP入門教程

helloDSP論壇

前言:此資料也是來源于網絡,并不是我們原創,但是希望這些資料能夠給初學DSP的 朋友們一點幫助,也希望你們能夠把這里當成是你們學習DSP技術的一個家園,讓我們攜手共建,為更多 的朋友創造學習的條件~

1、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都有其主要應用領域.

?

2、設計中如何得到技術參考資料以及如何得到相關源碼
原 則是碰到問題就去www.ti.com
1) 在TI網站的搜索中用keyword搜索資 料,主要要注意的就是Application Notes,user guides比如不知道怎樣進行VC5402的McBSP編程,搜McBSP和VC5402?如果不知道如何設計VC5402和TLV320AIC23的接口以及編程,搜TLV320AIC23和VC5402;?這樣可以搜到一堆的資料,這些資料一般均有PDF文 檔說明和相應的源程序包提供,download后做少許改動即可
2)來DSP交流網,HELLODSP真誠歡迎每一位有需要的朋友
3)google搜
4)再不濟,找技術支持,碰運 氣了

3、如何看待TI?DSP龐雜的技術文檔
新手進行DSP開發學習之時,常常感覺技術文檔太多,哪 本都有用,哪本都想看,無從下手。此時原則是只看入門必須的、只看和芯片相關的。根據經驗,如下的資料必看不可:
1) 講述DSP的CPU,memory,program memory addressing,data memory addressing的資料都需要看、外設資源的資料可以只看自己用到的部分;
2)C和匯編的編程指南需要看
3)匯編指令和C語言的運行時間支持庫、DSPLIB等資料需要看其他的如:Applications Guide,Optimizing CC++ Compiler User's Guide,Assembly Language Tools User's Guide等資料留待入門之后再去看體會會 更深一些。

4、如何高效開始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等都引進去有利于調試

5、如何高效開始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編程,模塊化是必須的

6、選擇C還是選擇ASM進 行編程
記住一條原則,TI的 工程師在不斷改進CCS的C程序優化編譯 器,現在C優化的效率可達到手工匯編的90% 甚至更高。當然有的時候如果計算能力和內存資源是瓶頸,ASM還是有優勢,比如G.729編解碼。但是針對一般的應用開發,C是最好的 選擇。?
新手編程則選擇C和匯編混 合編程更有利一些

7、選擇什么仿真器
一 般來說,買個并口的EPP就夠了,價格便宜又穩定,現在用的比較多的是USB接口的仿真器

8、關于TI 54X系列DSP的bootloader過程?
請 詳細閱讀TI文檔SPRA618A、SPRA571,這些文檔對boot的機制進行了詳細 說明同時說明了利用hex500將*.out文 件轉化為*.hex文件時,需要編寫的cmd文 件的寫法。

9。如何選擇外部時鐘??
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

10。軟件等待的如何使用??
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, 高電平時不等待。 軟件等待由外部存儲器接口控制寄存器決定,總線訪問外部存儲器或設備的時序可以設置,可以方便的同異步的存儲器或外設接口。

11。仿真工作正常對于DSP的基本要求?
1)DSP電源和地連接正確。?2)DSP時 鐘正確。?3)DSP的主要控制信號,如RS和HOLD信號接高電平。?4)C2000的watchdog關掉。?5)不可屏蔽中斷NMI上拉高電平。?
CCS或Emurst運行時提示“Can't Initialize Target?DSP”?
1)仿真器連接是否正常?
2)仿真器的I/O設置是否正確??
3)XDSPP仿真器的 電源是否正確??
4)目標系統是否正確??
5)仿 真器是否正常?
6)DSP工作的基本條件是否具備。?
建議使用目標板測試。?
?

12。為什么CCS需要安裝Driver??
CCS是開放的軟件平臺,它可以支持不同的硬件接口,因此不同的 硬件接口必須通過標準的Driver同CCS連 接。?
Driver安裝的常見問題??
請 認真閱讀“安裝手冊”和Driver盤中的Readme。?1)對于SEED-XDS,安裝Readme中的步驟,將I/O口設為240/280/320/340。?2)對于SEED-XDSPP,安裝Readme中的步驟,將I/O口設為378或278。3)對于SEED-XDSUSB, 必須連接目標板,安裝?Readme中的步驟,將I/O口 設為A,USB連接后,主機將自動激活相應 的Driver。?4)對于SEED-XDSPCI,安裝Readme中的步驟,將I/O口設為240,PCI接口板插入主機后,主機將自動激活相應的Driver。?5)對于Simulator,需要選擇不同的CFG文件,以模擬不同的DSP。?6)對于C5402 DSK,將I/O口設為請認真閱讀“安裝手冊”和Driver盤中的Readme。?1)對于SEED-XDS,安裝Readme中的步驟,將I/O口設為240/280/320/340。?2)對于SEED-XDSPP,安裝Readme中的步驟,將I/O口設為378或278。注意主機BIOS中并口的型式必須同xds510pp.ini?中 一致。?3)對于SEED-XDSUSB, 必須連接目標板,安裝Readme中的步驟,將I/O口 設為240/280/320/340,USB連 接后,主機將自動 激活相應的Driver。?4)對 于SEED-XDSPCI,安裝Readme中 的步驟,將I/O口設為240/280/320/340,PCI接口板插入主機后,主機將自動激活相 應的Driver。?5)對于Simulator,需要選擇不同的CFG文件,以模擬不同的DSP。?6)對于C5402 DSK,將I/O口設為378或278。?7)對于C6211/6711 DSK,將I/O口設為378或278。?8)對于C6201/C6701 EVM,將I/O口設為0。

13。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?
}

14。如何將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?
}

15。為什么CCS需要安裝Driver??

CCS是開放的軟件平臺, 它可以支持不同的硬件接口,因此不同的硬件接口必須通過標準的Driver同CCS連接。?

16。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?
}?

17DSP的C語言同主機C語言的主要區別??
1)?DSP的C語言是標準的ANSI C,它不包括同外設聯系的擴展部 分,如屏幕繪圖等。但在CCS中,為了方便調試,可以將數據通過prinf命令虛擬輸出到主機的屏幕上。
2)DSP的C語言的編譯過程為,C編譯為ASM,再由ASM編譯為OBJ。因此C和ASM的對應關系非常明確,非常便于人工優化。?
3)DSP的代碼需要絕對定位;主機的C的代碼有操作系統定位。?
4)DSP的C的效率較高,非常適合于嵌入系統。?

18。為什么在CCS下編譯工具工作不正常??
在CCS下有部分客戶會碰到編譯工具工作不正常,常見錯誤為:?
1)autoexec.bat的路 徑“out of memory”。修改autoexec.bat,清除無用的PATH路徑。?
2)編譯的輸出文件(OUT文件)寫保護,無法覆蓋。刪除或修改輸出文件的屬性。?
3)Windows有問題。重新安 裝windows。?
4)Windows下有程序對CCS有影響。建議用一“干凈”的計算機。?

19。在CCS下,如何選擇有效的存儲器空間??
CCS下的存儲器空間最好設置同你的硬件,沒有的存儲器不要有效。這樣便于調試,CCS會發現你調入程序時或程序運行時,是 否訪問了無效地址。?
1)在GEL文件中設置。參見CCS中的示例。?
2)在Option菜單下,選擇Memory Map選項,根據你的硬件設置。注意一定要將Enable Memory Mapping置為使能。?

20。在CCS下,OUT文件加載時提示“Data verification failed...”的原因??
Link的CMD文件分配的地址同GEL或設置的有效地址空間不符。中斷向量定位處或其它代碼、數據段定位處,沒有RAM,無法加載OUT文件。解決方法:?
1)調整Link的CMD文件,使得定位段處有RAM。?
2)調整存儲器設置,使得RAM區有效。?

21。為什么要使用BIOS??
1)BIOS是Basic I/O System的簡稱,是基本的輸入、輸出管理。?
2)用于管理任務的調度,程序實時分析,中斷管理,跟蹤管理和實時數據交換。?
3)BIOS是基本的實時系統, 使用BIOS可以 方便地實現多任務、多進程的時間管理。?
4)BIOS是eXpress?DSP的標準平臺,要使用eXpress?DSP技術,必須使用BIOS。?

22DSP發展動態?
1.TMS320C2000 TMS320C2000系列包括C24x和C28x系列。C24x系列建議使用LF24xx系列替代C24x系列,LF24xx系列的價格比C24x便?宜,性能高于C24x,而且LF24xxA具有加密功能。?C28x系列主要用于大存儲設備管理,高 性能的控制場合。?
2.TMS320C3x TMS320C3x系列包括C3x和VC33,主要推薦使用VC33。C3x系列是TI浮點DSP的基礎,不可能停產,但價格不會進一步下調。?
3.TMS320C5x TMS320C5x系列已不推薦使 用,建議使用C24x或C5000系列替代。?
4.TMS320C5000 TMS320C5000系列包括C54x和C55x系列。其中VC54xx還不斷有新的器件出現,如:TMS320VC5471(DSP+ARM7)。?C55x系列是TI的第三代DSP,功耗為VC54xx的1/6,性能為VC54xx的5倍,是一個正在發展的系列。?C5000系列是目前TI?DSP的主流DSP,它涵蓋了從低檔到中高檔的應用領域,目前也是用戶最多的系列。?
5.TMS320C6000 TMS320C6000系列包括C62xx、C67xx和C64xx。此系列是TI的高檔DSP系列。其中C62xx系列是定點的DSP,系列芯片種類較?豐 富,是主要的應用系列。?C67xx系列是浮點的DSP,用于需要高速浮點處理的領域。?C64xx系列是新發展,性能是C62xx的10倍。?
6.OMAP系列?是TI專門用于多媒體領域的芯片,它是C55+ARM9,性能卓越,非常適合于手持設備、Internet終端等多媒體應用。?

23。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。?

24。為什么要片內RAM大的DSP效率高??
目前DSP發展的片內存儲器RAM越來越大,要設計高效的DSP系統,就應該選擇片內RAM較大的DSP。片內RAM同片外存儲器相比,有以下優點:?
1)片內RAM的速度較快,可以保證DSP無等待運行。
2)對于C2000/C3x/C5000系列,部分片 內存儲器可以在一個指令周期內訪問兩次,使得指令可以更加高效。?
3)片內RAM運行穩定,不受外部的干擾影響,也不會干擾外部。?
4)DSP片內多總線,在訪問片內RAM時,不會影響其它總線的訪問,效率較 高。?

25。為什么DSP從5V發展成3.3V??
超大規模集成電路的發展從1um,發展到目前的0.1um,芯片的電源電壓也隨之降低,功 耗也隨之降低。DSP也同樣從5V發展到目前的?3.3V,核心電壓發展到1V。目前主流的DSP的外圍均已發展為3.3V,5V的DSP的價格和功耗都價格,以逐漸被3.3V的DSP取代。?

26。如何選擇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。?

27。軟件等待的如何使用??
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,高電平時不等待。?軟件等待由外部存儲器接口控制寄存器決定,總線訪問外部存儲器或設備的時序可以設置,可以方便的同 異步的存儲器或外設接口。?

28。中斷向量為什么要重定位??
為了方便DSP存儲器的配置,一般DSP的中斷向量可以重新定位,即可以通過設置寄存器放在存儲器空間的任何地方。?注意:C2000的中斷向量不能重定位。?

29DSP的最高主頻能從芯片型號中獲得嗎??
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。?

30DSP可以降頻使用嗎??
可以,DSP的主頻均有一定的工作范圍,因此DSP均可以降頻使用。?

31。如何選擇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。

32DSP芯片有多大的驅動能力??
DSP的驅動能力較強,可以不加驅動,連接8個以上標準TTL門。?

33。調試TMS320C2000系列的常見問題??

1)單步可以運行,連續運行時總回0地址:?Watchdog沒有關,連續運行復位DSP回到0地址。?
2)OUT文件不能load到片內flash中:?Flash不是RAM,不能用簡單的寫指令寫入,需要專門的程序寫入。CCS和C Source Debuggerload命 令,不能對flash寫入。?OUT文件只能load到片內RAM,或片外RAM中。?
3)在flash中如何加入斷點:?在flash中可以用單步調試,也可以用硬件斷 點的方法在flash中加入斷點,軟件斷點是不能加在ROM中的。硬件斷點,設置存儲器的地址,當訪問該地址時產生中斷。?
4)中斷向量:?C2000的中斷向量不可重定位,因此中 斷向量必須放在0地 址開始的flash內。 在調試系統時,代碼放在RAM中,中斷向量也必須放在flash內。?

34。調試TMS320C3x系列的常見問題??
1)TMS320C32的存儲器配置:?TMS320C32的程序存儲器可以配置為16位或32位;數據存儲器可以配置為8位、16位或32位。?
2)TMS320VC33的PLL控制:?TMS320VC33的PLL控制端只能接1.8V,不能接3.3V或5V。?

35。如何調試多片DSP??
對于有MPSD仿真口的DSP(TMS320C30/C31/C32),不能用一套仿真器同時調試,每次只能調試其中的一個DSP;對于有JTAG仿真口?的DSP,可以將JTAG串接在一起,用一套仿真器同時調試多個DSP,每個DSP可以用不同的名字,在不同的窗口中調試。注意:如果在JTAG和DSP?間加入驅動,一定要用快速的門電路,不能 使用如LS的慢速 門電路。?

36。在DSP系統中為什么要使用CPLD??
DSP的速度較快,要求譯碼的速度也必須較快。利用小規模邏輯器件譯碼的方式,已不能滿足DSP系統的要求。同時,DSP系統中也經常需要外部快速部件的?配合,這些部件往往是專門的電路,有可編程器件實現。?CPLD的時序嚴格,速度較快,可編程性 好,非常適合于實現譯碼和專門電路。?

37DSP系統構成的常用芯片有哪些??
1)電源:?TPS73HD3xx,TPS7333,TPS56100,PT64xx...?
2)Flash:?AM29F400,AM29LV400,SST39VF400...?
3)SRAM:?CY7C1021,CY7C1009,CY7C1049...?
4)FIFO: CY7C425,CY7C42x5...?
5)Dual port:?CY7C136,CY7C133,CY7C1342...?
6)SBSRAM:?CY7C1329,CY7C1339...?
7)SDRAM:?HY57V651620BTC...?
8)CPLD:?CY37000系列,CY38000系列,CY39000系列...?
9)PCI:?PCI2040,CY7C09449...?
10)USB:?AN21xx,CY7C68xxx...?
11)Codec:TLV320AIC23,TLV320AIC10...?
12)A/D,D/A:ADS7805,TLV2543...?

38。什么是boot loader??
DSP的速度盡快,EPROM或flash的速度較慢,而DSP片內的RAM很快,片外的RAM也較快。為了使DSP充分發揮它的能力,必須將程序代碼放?在RAM中運行。為了方便的將代碼從ROM中搬到RAM中,在不帶flash的DSP中,TI在出廠時固化了一段程序,在上電后完成從ROM或外設將代碼?搬 到用戶指定的RAM中。 此段程序稱為“boot loader”。?

38。TMS320C3x如何boot??
在MC/MP管腳為高時,C3x進入boot狀態。C3x的boot loader在reset時,判斷外部中斷管腳的電平。根 據中斷配置決定boot的方式為存儲器加載還是串口加載,其中ROM的地址可以為三個中的一個,ROM可以為8位。?

39。Boot有問題如何解決??
1)仔細檢查boot的控制字是否正確。?
2)仔細檢查外部管腳設置是否正確。?
3)仔細檢查hex文件是否轉換正確。?
4)用仿真器跟蹤boot過程,分析錯誤原因。?

40DSP為什么要初始化??
DSP在RESET后,許多的寄存器的初值一般同用戶的要求不一致,例如:等待寄存器,SP,中斷定位寄存器等,需要通過初始化程序 設置為用戶要求的數值。?初始化程序的主要作用:?
1)設置寄存器初值。?
2)建立中斷向量表。?
3)外圍部件初始化。?

41DSP有哪些數學庫及其它應用軟件??
TI公司為了方便客戶開發DSP,在它的網站上提供了許多程序的示例和應用程序,如MATH庫,FFT,FIR/IIR等,可以在TI的網頁免費下載。?

42。如何獲得DSP專用算法??
TI有許多的Third Party可以通過DSP上的多種算法軟件。可以通過TI的網頁搜索你所需的算法,找到通過算法的公司,同相應的公司聯系。注意這些算法都是要付費的。?

43。eXpressDSP是什么??
eXpressDSP是一種實時DSP軟件技術,它是一種DSP編程的標準,利用它可以加快你開發DSP軟件的速度。以往DSP軟件的開發沒有任何標準,?不同的人寫的程序一般無法連接在一起。DSP軟件的調試工具也非常不方便。使得DSP軟件的開發往往滯后于硬件的開發。?eXpressDSP集成了CCS(Code Composer Studio)開發平臺,DSP?BIOS實時軟件平臺,DSP算法標準和第三方支持四部分。利用該技術,可以使你的軟件調試,軟件進程管理,軟件的互通及算法的 獲得,都便的容易。這樣就?可以加快你的軟件開發進程。?
1)CCS是eXpressDSP的基礎,因此你必須首 先擁有CCS軟 件。?
2)DSP?BIOS是eXpressDSP的基本平臺,你必須學會所有DSP?BIOS。?
3)DSP算法標準可以保證你的程序可以方便的同其它利用eXpressDSP技術的程序連接在一起。 同時也保證你的程序的延續性。?

44。為什么要用DSP??
3G技術和internate的發展,要求處理器的速度越來越高,體積越來越小,DSP的發展正好能滿足這一發展的要求。因為,傳 統的其它處理器都有不同?的缺陷。MCU的速度較慢;CPU體積較大,功耗較高;嵌入CPU的成本較高。?DSP的發展,使得在許多速度要求較高,算法較復 雜的場合,取代MCU或其它處理器,而成本有可能更低。?

45。如何選擇DSP??
選擇DSP可以根據以下幾方面決定:?
1)速度:?DSP速度一般用MIPS或FLOPS表示,即百萬次/秒鐘。根據您對處理速度的要求選擇適合的 器件。一般選擇處理速度不要過高,速度高的DSP,系統實現也較困難。?
2)精度:?DSP芯片分為定點、浮點處理器,對于運算精度要求很高的處理,可選擇浮點處理器。定點處理器也可完成浮點 運算,但精度和速度會有影響。?
3)尋址空間:?不同系 列DSP程序、數據、I/O空間大小不一,與普通MCU不同,DSP在一個指令周期內能完成多個操作,所以DSP的指令效率很高,程序空間一般不會有問題, 關鍵是數據空間是否滿足。數據空間的大小可以通過DMA的幫助,借助程序空間擴大。?
4)成本:?一般定點DSP的成本會比浮點DSP的要低,速度也較快。要獲得低成本的DSP系統,盡量用定點算法,用定點DSP。?
5)實現方便:?浮點DSP的結構實現DSP系統較容易,不用考慮尋址空間的問題,指令對C語言支持的效率也較高。?
6)內部部件:根據應用要求,選擇具有特殊部件的DSP。如:C2000適合于電機控制;OMAP適合于多媒體等。?

46DSP同MCU相比的特點??
1)DSP的速度比MCU快,主頻較高。?
2)DSP適合于數據處理,數據處理的指令效率較高。?
3)DSP均為16位以上的處理器,不適合于低檔的場合。?
4)DSP可以同時處理的事件較多,系統級成本有可能較低。?
5)DSP的靈活性較好,大多數算法都可以 軟件實現。?
6)DSP的集成度較高,可靠性較好。?

47DSP同嵌入CPU相比的特點??
1)DSP是單片機,構成系統簡單。?
2)DSP的速度快。?
3)DSP的成本較低。?
4)DSP的性能高,可以處理較多的任務。?

48。如何編寫C2000片內Flash??
DSP中的Flash的編寫方法有三中:?
1.通過仿真器編寫:在我們的網 頁上有相關的軟件,在銷售仿真器時我們也提供相關軟件。其中?LF240x的編寫可以在CCS中加入一個插件,F24x的編寫需要在windows98下的DOS窗中進行。具體步驟見軟件中的readme。有幾點需?要注 意:?a.必須為MC方式;?b.F206的工作頻率必須為20MHz;?c.F240需要根據PLL修改C240_CFG.I文件。建議外部時鐘為20MHz。?d.LF240x也需要根據PLL修改文件。?d.如果編寫有問題,可以用BFLWx.BAT修復。?
2.提供串口編寫:TI的網頁上有相關軟件。注意只能編寫一 次,因為編寫程序會破壞串口通信程序。?
3.在你的程序中編寫:TI的網頁上有相關資料。?

49。如何編寫DSP外部的Flash??
DSP的外部Flash編寫方法:?
1.通過編程器編寫:將OUT文件通過HEX轉換程序轉換為編程器可以接受的格式, 再由編程器編寫。?
2.通過DSP軟件編寫:您需要根據Flash的說明,編寫Flash的編寫程序,將應用程序和編寫Flash的程序分別load到RAM中,運行編寫程序編寫。?

50。對于C5000,大于48K的程序如何BOOT?
對于C5000,片內的BOOT程序在上電后將數據區的內容,搬移 到程序區的RAM中, 因此FLASH必 須在RESET后 放在數據區。由于C5000,數據區的空間有限,一次BOOT的程序不能對于48K。解決的方法如下:?
1.在RESET后,將FLASH譯碼在數據區,RAM放在程序區,片內BOOT程序將程序BOOT到RAM中。?
2.用戶初試化程序發出一個I/O命令(如XF),將FLASH譯碼到程序區的高地址。開放數據區用于其它的RAM。?
3.用戶初試化程序中包括第二次BOOT程序(此程序必須用戶自己編寫),將FLASH中沒有BOOT的其它代碼搬移到RAM中。?
4.開始運行用戶處理程序。?

51DSP外接存儲器的控制方式?
對于一般的存儲器具有RD、WR和CS等控制信號,許多DSP(C3x、C5000)都沒有控制信號直接連接存儲器,一般采用的方式如下:?
1.CS有地址線和PS、DS或STRB譯碼產生;?
2./RD=/STRB+/R/W;?3./WR=/STRB+R/W。?

52。GEL文件的功能??
GEL文件的功能同emuinit.cmd的功能基本相同,用 于初始化DSP。但它的功能 比emuinit的 功能有所增強,GEL在CCS下 有一個菜單,可以根據DSP的對象不同,設置不同的初始化程序。以TMS320LF2407為例:?
#define SCSR1 0x7018?;定義scsr1寄存器?
#define SCSR2 0X7019?;定義scsr2寄存器?
#define WDKEY 0x7025?;定義wdkey寄存器?
#define WDNTR 0x7029?;定義wdntr寄存器?
StartUp() ;?開始函數?
{?
GEL_MapReset(); ;?存儲空間復位?GEL_MapAdd(0x0000,0,0x7fff,1,1);?定 義程序空間從0000-7fff?可讀寫?
GEL_MapAdd(0x8000,0,0x7000,1,1);?定義程序空間從8000-f000?可讀寫?
GEL_MapAdd(0x0000,1,0x10000,1,1);?定義數據空間從0000-10000可讀寫?
GEL_MapAdd(0xffff,2,1,1,1);?定義i/o?空間0xffff可讀寫?
GEL_MapOn();?存儲空間打開?
GEL_MemoryFill(0xffff,2,1,0x40);?在i/o空間添入數值40h?
*(int *)SCSR1=0x0200;?給scsr1寄存器賦值?
*(int *)SCSR2=0x000C;?給scsr2寄存器賦值,在這里可以進行mp/mc方式的轉換?
*(int *)WDNTR=0x006f;?給wdntr寄存器賦值?
*(int *)WDKEY=0x055;?給wdkey寄存器賦值?
*(int *)WDKEY=0x0AA;?給wdkey寄存器賦值?
}?

53。使用TI公司模擬器件與DSP結合使用的好處。?
1)在使用TI公司的DSP的同時,使用TI公司的模擬可以和DSP進行無縫連接。器件與器件之間不需要任何的連接或轉接器件。這樣即減少了板卡的尺寸,也降低了開發 難度。?
2)同為TI公 司的產品,很多器件可以固定搭配使用。少了器件選型的煩惱?
3)TI在CCS中提供插件,可以用于DSP和模擬器件的開發,非常方便。?

54。C語言中可以嵌套匯編語言??
可以。在ANSI C標準中的標準用法就是用C語言編寫主程序,用匯編語言編寫子程序,中斷服務程序,一些算法,然后用C語言調用這些匯編程序,這樣效率會相對比 較高,在定點DSP系統中可否實現浮點運算。
當然可以,因為DSP都可以用C,只要是可以使用c語言的場合都可以實現浮點運算。?
JTAG頭的使用會遇到哪些情況
1)DSP的CLKOUT沒有輸出,工作不正常。?
2)Emu0,Emu1需要上拉。?
3)TCK的頻率應該為10M。?
4)在3.3V?DSP中,PD腳為3.3V?供電,但是仿真器上需要5V電壓供電,所以PP仿真器盒上需要單獨供電。?
4)仿真多片DSP。在使用菊花鏈的時候,第一片DSP的TDO接到第二片DSP的TDI即可。注意當串聯DSP比較多的時候,信號線要適當的增加驅動。?

55。include頭文件(.h)的主要作用?
頭文件,一般用于定義程序中的函 數、參數、變量和一些宏單元,同庫函數配合使用。因此,在使用庫時,必須用相應的頭文件說明。?
DSP中斷向量的位置?
1)2000系列dsp的中斷向量只能從0000H處開始。所以在我們調試程序的時候,要把DSP選擇為MP(微處理器方式),把片內的Flash屏蔽掉,免去每次更改程序都要重新燒寫Flash工作。?
2)3x系列dsp的中斷向量也只能在固定的地址。?
3)5000,6000系列dsp的中斷向量可以重新定位。但是它只能被重新定位到Page0范圍內的任何空間。?

56。有源晶振與晶體的區別,應用范圍及用法?
1)晶體需要用DSP片內的振蕩器,在datasheet上有建議的連接方法。晶體沒有電壓的問題,可以適應于任何DSP,建議用晶體。?
2)有源晶振不需要DSP的內部振蕩器,信號比較穩定。有源晶振用 法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。?

57。程序經常跑飛的原因?
1)程序沒有結尾或不是循環的程序。?
2)nmi管腳沒有上拉。?
3)在看門狗動作的時候程序會經常跑飛。?
4)程序編制不當也會引起程序跑飛。?
5)硬件系統有問題。?

58。并行FLASH引導的一點經驗-阿哲?
最近BBS上關于FLASH和BOOT的討論很活躍,我也多次來此請教。前幾天自制的DSP板引導成功,早就打算寫寫這方面的東西。我用的?DSP是5416,以其為核心,做了一個相對獨立的子 系統(硬件、軟件、算法),目前都已基本做好。下面把在FLASH引導方面做的工作向大家匯報一下,?希望能對大家有所幫助。本人經驗和文筆都有限,寫的不好請大家諒解。?硬件環境:?
DSP:TMS320VC5416PGE160?
FLASH:SST39VF400A-70-4C-EK?都是貼片的,FLASH映射在DSP數據空間的0x8000-0xFFFF?
軟件環境:?CCS v2.12.01?
主程序(要燒入FLASH的程序):?DEBUG版,程序占用空間0x28000-0x2FFFF(片內SARAM),中斷向量表在0x0080-0x00FF(片內DARAM),數據空間使?用0x0100-0x7FFF(片內DARAM)。因為FLASH是貼片的,所以需要自己編一個數 據搬移程序,把要主程序搬移到FLASH中。在寫入?FLASH數據時,還應寫入引導表的格式數據。最后在數據空間的0xFFFF處寫入引導表的起始地址(這里為0x8000)。?
搬移程序:?DEBUG版,程序空間0x38000-0x3FFFF(片內SARAM),中斷向量表在0x7800-0x78FF(片內DARAM),數據空間使用?0x5000-0x77FF(片內DARAM)。?搬移程序不能使用與主程序的程序空間和中斷向量表重合的物理空間,以免覆蓋。燒寫時,同時打開主程 序和搬移程序的PROJECT,先LOAD主程序,再?LOAD搬移程序,然后執行搬移程序,燒寫OK!?附:搬移程序(僅供參考)?
volatile unsigned int *pTemp=(unsigned int *)0x7e00; unsigned int iFlashAddr;?
int iLoop; /*?在引導表頭存放并行引導關鍵字?*/?
iFlashAddr=0x8000;?
WriteFlash(iFlashAddr,0x10aa);?
iFlashAddr++; /*?初始化SWWSR值?*/?
WriteFlash(iFlashAddr,0x7e00);?
iFlashAddr++; /*?初始化BSCR值?*/?
WriteFlash(iFlashAddr,0x8006);?
iFlashAddr++; /*?程序執行的入口地址?*/?
WriteFlash(iFlashAddr,0x0002);?
iFlashAddr++;?
WriteFlash(iFlashAddr,0x8085);?
iFlashAddr++; /*?程序長度?*/?
WriteFlash(iFlashAddr,0x7f00);?
iFlashAddr++; /*?程序要裝載到的地址?*/?
WriteFlash(iFlashAddr,0x0002);?
iFlashAddr++;?
WriteFlash(iFlashAddr,0x8000);?
iFlashAddr++;?
for (iLoop=0;iLoop<0x7f00;iLoop++)?
{ /*?從程序空間讀數據,放到暫存單元?*/?
asm(" pshm al");?
asm(" pshm ah");?
asm(" rsbx cpl");?
asm(" ld #00fch,dp");?
asm(" stm #0000h, ah");?
asm(" MVDM _iLoop, al");?
asm(" add #2800h,4,a");?
asm(" reada 0h");?
asm(" popm ah");?
asm(" popm al");?
asm(" ssbx cpl"); /*?把暫存單元內容寫入FLASH */?
WriteFlash(iFlashAddr,*pTemp);?
iFlashAddr++; } /*?中斷向量表長度?*/?
WriteFlash(iFlashAddr,0x0080);?
iFlashAddr++; /*?中斷向量表裝載地址?*/?
WriteFlash(iFlashAddr,0x0000);?
iFlashAddr++;?
WriteFlash(iFlashAddr,0x0080);?
iFlashAddr++;?
for (iLoop=0;iLoop<0x0080;iLoop++) { /*?從程序空間讀數據,放到暫存單元?*/?
asm(" pshm al");?
asm(" pshm ah");?
asm(" rsbx cpl");?
asm(" ld #00fch,dp");?
asm(" stm #0000h, ah");?
asm(" MVDM _iLoop, al");?
asm(" add #0080h,0,a");?
asm(" reada 0h");?
asm(" popm ah");?
asm(" popm al");?
asm(" ssbx cpl"); /*?把暫存單元內容寫入FLASH */?
WriteFlash(iFlashAddr,*pTemp);?
iFlashAddr++;?
} /*?寫入引導表結 束標志?*/?
WriteFlash(iFlashAddr,0x0000);?
iFlashAddr++;?
WriteFlash(iFlashAddr,0x0000); /*?在數據空間的0xFFFF寫入引導表起始地址?*/?
iFlashAddr=0xffff;?
WriteFlash(iFlashAddr,0x8000);?

59。關于LF2407A的FLASH燒寫問題的幾點說明?
TI現在關于LF24x寫入FLASH的工具最新為c2000flashprogsw_v112。可以支持LF2407、LF2407a、?LF24

總結

以上是生活随笔為你收集整理的献给初学者-DSP入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。