DSP詳細指導(下)
2016-12-22 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
三十一.DSP同MCU相比的特點?
1)DSP的速度比MCU快,主頻較高。
2)DSP適合于數(shù)據(jù)處理,數(shù)據(jù)處理的指令效率較高。
3)DSP均為16位以上的處理器,不適合于低檔的場合。
4)DSP可以同時處理的事件較多,系統(tǒng)級成本有可能較低。
5)DSP的靈活性較好,大多數(shù)算法都可以軟件實現(xiàn)。
6)DSP的集成度較高,可靠性較好。
三十二.DSP同嵌入CPU相比的特點?
1)DSP是單片機,構(gòu)成系統(tǒng)簡單。 2)DSP的速度快。 3)DSP的成本較低。 4)DSP的性能高,可以處理較多的任務(wù)。
三十三。如何編寫C2000片內(nèi)Flash?
DSP中的Flash的編寫方法有三中:
1.通過仿真器編寫:在我們的網(wǎng)頁上有相關(guān)的軟件,在銷售仿真器時我們也提供相關(guān)軟件。其中LF240x的編寫可以在CCS中加入一個插件,F24x的編寫需要在windows98下的DOS窗中進行。具體步驟見軟件中的readme。有幾點需要注意: a.必須為MC方式; b.F206的工作頻率必須為20MHz; c.F240需要根據(jù)PLL修改C240_CFG.I文件。建議外部時鐘為20MHz。 d.LF240x也需要根據(jù)PLL修改文件。 d.如果編寫有問題,可以用BFLWx.BAT修復。
2.提供串口編寫:TI的網(wǎng)頁上有相關(guān)軟件。注意只能編寫一次,因為編寫程序會破壞串口通信程序。
3.在你的程序中編寫:TI的網(wǎng)頁上有相關(guān)資料。
三十四。如何編寫DSP外部的Flash?
DSP的外部Flash編寫方法:
1.通過編程器編寫:將OUT文件通過HEX轉(zhuǎn)換程序轉(zhuǎn)換為編程器可以接受的格式,再由編程器編寫。
2.通過DSP軟件編寫:您需要根據(jù)Flash的說明,編寫Flash的編寫程序,將應(yīng)用程序和編寫Flash的程序分別load到RAM中,運行編寫程序編寫。
三十五。對于C5000,大于48K的程序如何BOOT?
對于C5000,片內(nèi)的BOOT程序在上電后將數(shù)據(jù)區(qū)的內(nèi)容,搬移到程序區(qū)的RAM中,因此FLASH必須在RESET后放在數(shù)據(jù)區(qū)。由于C5000,數(shù)據(jù)區(qū)的空間有限,一次BOOT的程序不能對于48K。解決的方法如下:
1.在RESET后,將FLASH譯碼在數(shù)據(jù)區(qū),RAM放在程序區(qū),片內(nèi)BOOT程序?qū)⒊绦?span>BOOT到RAM中。
2.用戶初試化程序發(fā)出一個I/O命令(如XF),將FLASH譯碼到程序區(qū)的高地址。開放數(shù)據(jù)區(qū)用于其它的RAM。
3.用戶初試化程序中包括第二次BOOT程序(此程序必須用戶自己編寫),將FLASH中沒有BOOT的其它代碼搬移到RAM中。
4.開始運行用戶處理程序。
三十六.DSP外接存儲器的控制方式
對于一般的存儲器具有RD、WR和CS等控制信號,許多DSP(C3x、C5000)都沒有控制信號直接連接存儲器,一般采用的方式如下:
1.CS有地址線和PS、DS或STRB譯碼產(chǎn)生;
2./RD=/STRB+/R/W; 3./WR=/STRB+R/W。
三十七.GEL文件的功能?
GEL文件的功能同emuinitNaNd的功能基本相同,用于初始化DSP。但它的功能比emuinit的功能有所增強,GEL在CCS下有一個菜單,可以根據(jù)DSP的對象不同,設(shè)置不同的初始化程序。以TMS320LF2407為例:
#define SCSR1 0x7018 ;定義scsr1寄存器
#define SCSR2 0X7019 ;定義scsr2寄存器
#define WDKEY 0x7025 ;定義wdkey寄存器
#define WDNTR 0x7029 ;定義wdntr寄存器
StartUp() ; 開始函數(shù)
{
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); 定義數(shù)據(jù)空間從0000-10000可讀寫
GEL_MapAdd(0xffff,2,1,1,1); 定義i/o 空間0xffff可讀寫
GEL_MapOn(); 存儲空間打開
GEL_MemoryFill(0xffff,2,1,0x40); 在i/o空間添入數(shù)值40h
*(int *)SCSR1=0x0200; 給scsr1寄存器賦值
*(int *)SCSR2=0x000C; 給scsr2寄存器賦值,在這里可以進行mp/mc方式的轉(zhuǎn)換
*(int *)WDNTR=0x006f; 給wdntr寄存器賦值
*(int *)WDKEY=0x055; 給wdkey寄存器賦值
*(int *)WDKEY=0x0AA; 給wdkey寄存器賦值
}
三十八。使用TI公司模擬器件與DSP結(jié)合使用的好處。
1)在使用TI公司的DSP的同時,使用TI公司的模擬可以和DSP進行無縫連接。器件與器件之間不需要任何的連接或轉(zhuǎn)接器件。這樣即減少了板卡的尺寸,也降低了開發(fā)難度。
2)同為TI公司的產(chǎn)品,很多器件可以固定搭配使用。少了器件選型的煩惱
3)TI在CCS中提供插件,可以用于DSP和模擬器件的開發(fā),非常方便。
三十九.C語言中可以嵌套匯編語言?
可以。在ANSI C標準中的標準用法就是用C語言編寫主程序,用匯編語言編寫子程序,中斷服務(wù)程序,一些算法,然后用C語言調(diào)用這些匯編程序,這樣效率會相對比較高
四十。在定點DSP系統(tǒng)中可否實現(xiàn)浮點運算?
當然可以,因為DSP都可以用C,只要是可以使用c語言的場合都可以實現(xiàn)浮點運算。
四十一.JTAG頭的使用會遇到哪些情況?
1)DSP的CLKOUT沒有輸出,工作不正常。
2)Emu0,Emu1需要上拉。
3)TCK的頻率應(yīng)該為10M。
4)在3.3V DSP中,PD腳為3.3V 供電,但是仿真器上需要5V電壓供電,所以PP仿真器盒上需要單獨供電。
4)仿真多片DSP。在使用菊花鏈的時候,第一片DSP的TDO接到第二片DSP的TDI即可。注意當串聯(lián)DSP比較多的時候,信號線要適當?shù)脑黾域?qū)動。
四十二.include頭文件(.h)的主要作用
頭文件,一般用于定義程序中的函數(shù)、參數(shù)、變量和一些宏單元,同庫函數(shù)配合使用。因此,在使用庫時,必須用相應(yīng)的頭文件說明。
四十三.DSP中斷向量的位置
1)2000系列dsp的中斷向量只能從0000H處開始。所以在我們調(diào)試程序的時候,要把DSP選擇為MP(微處理器方式),把片內(nèi)的Flash屏蔽掉,免去每次更改程序都要重新燒寫Flash工作。
2)3x系列dsp的中斷向量也只能在固定的地址。
3)5000,6000系列dsp的中斷向量可以重新定位。但是它只能被重新定位到Page0范圍內(nèi)的任何空間。
四十四。有源晶振與晶體的區(qū)別,應(yīng)用范圍及用法
1)晶體需要用DSP片內(nèi)的振蕩器,在datasheet上有建議的連接方法。晶體沒有電壓的問題,可以適應(yīng)于任何DSP,建議用晶體。
2)有源晶振不需要DSP的內(nèi)部振蕩器,信號比較穩(wěn)定。有源晶振用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。
四十五。程序經(jīng)常跑飛的原因
1)程序沒有結(jié)尾或不是循環(huán)的程序。
2)nmi管腳沒有上拉。
3)在看門狗動作的時候程序會經(jīng)常跑飛。
4)程序編制不當也會引起程序跑飛。
5)硬件系統(tǒng)有問題。
四十六。并行FLASH引導的一點經(jīng)驗
最近BBS上關(guān)于FLASH和BOOT的討論很活躍,我也多次來此請教。前幾天自制的DSP板引導成功,早就打算寫寫這方面的東西。我用的DSP是5416,以其為核心,做了一個相對獨立的子系統(tǒng)(硬件、軟件、算法),目前都已基本做好。下面把在FLASH引導方面做的工作向大家匯報一下,希望能對大家有所幫助。本人經(jīng)驗和文筆都有限,寫的不好請大家諒解。
硬件環(huán)境:
DSP:TMS320VC5416PGE160
FLASH:SST39VF400A-70-4C-EK 都是貼片的,FLASH映射在DSP數(shù)據(jù)空間的0x8000-0xFFFF
軟件環(huán)境: CCS v2.12.01
主程序(要燒入FLASH的程序): DEBUG版,程序占用空間0x28000-0x2FFFF(片內(nèi)SARAM),中斷向量表在0x0080-0x00FF(片內(nèi)DARAM),數(shù)據(jù)空間使用0x0100-0x7FFF(片內(nèi)DARAM)。因為FLASH是貼片的,所以需要自己編一個數(shù)據(jù)搬移程序,把要主程序搬移到FLASH中。在寫入FLASH數(shù)據(jù)時,還應(yīng)寫入引導表的格式數(shù)據(jù)。最后在數(shù)據(jù)空間的0xFFFF處寫入引導表的起始地址(這里為0x8000)。
搬移程序: DEBUG版,程序空間0x38000-0x3FFFF(片內(nèi)SARAM),中斷向量表在0x7800-0x78FF(片內(nèi)DARAM),數(shù)據(jù)空間使用0x5000-0x77FF(片內(nèi)DARAM)。搬移程序不能使用與主程序的程序空間和中斷向量表重合的物理空間,以免覆蓋。燒寫時,同時打開主程序和搬移程序的PROJECT,先LOAD主程序,再LOAD搬移程序,然后執(zhí)行搬移程序,燒寫OK!附:搬移程序(僅供參考)
volatile unsigned int*pTemp=(unsigned int *)0x7e00; unsigned int iFlashAddr;
int iLoop; /* 在引導表頭存放并行引導關(guān)鍵字 */
iFlashAddr=0x8000;
WriteFlash(iFlashAddr,0x10aa);
iFlashAddr++; /* 初始化SWWSR值 */
WriteFlash(iFlashAddr,0x7e00);
iFlashAddr++; /* 初始化BSCR值 */
WriteFlash(iFlashAddr,0x8006);
iFlashAddr++; /* 程序執(zhí)行的入口地址 */
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++)
{ /* 從程序空間讀數(shù)據(jù),放到暫存單元 */
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”); /* 把暫存單元內(nèi)容寫入FLASH */
WriteFlash(iFlashAddr,*pTemp);
iFlashAddr++; } /* 中斷向量表長度 */
WriteFlash(iFlashAddr,0x0080);
iFlashAddr++; /* 中斷向量表裝載地址 */
WriteFlash(iFlashAddr,0x0000);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0080);
iFlashAddr++;
for (iLoop=0;iLoop《0x0080;iLoop++) { /* 從程序空間讀數(shù)據(jù),放到暫存單元 */
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”); /* 把暫存單元內(nèi)容寫入FLASH */
WriteFlash(iFlashAddr,*pTemp);
iFlashAddr++;
} /* 寫入引導表結(jié)束標志 */
WriteFlash(iFlashAddr,0x0000);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0000); /* 在數(shù)據(jù)空間的0xFFFF寫入引導表起始地址 */
iFlashAddr=0xffff;
WriteFlash(iFlashAddr,0x8000);
四十七。關(guān)于LF2407A的FLASH燒寫問題的幾點說明
TI現(xiàn)在關(guān)于LF24x寫入FLASH的工具最新為c2000flashprogsw_v112。可以支持LF2407、LF2407a、LF2401及相關(guān)的LF240x系列。建議使用此版本。在http://focus.ti.com/docs/tool/to。。。 Number=C24XSOFTWARE上可以下載到這個工具。我們仿真器自帶的光盤中也有此燒寫程序。在使用這個工具時注意:
一,先解壓,再執(zhí)行setup.exe。
二、進入cc中,在tools圖標下有燒寫工具;
1、關(guān)于FLASH時鐘的選擇,此燒寫工具默認最高頻率進行FLASH的操作。根據(jù)目標系統(tǒng)的工作主頻重新要進行PLL設(shè)置。方法:先在advance options下面的View Configfile中修改倍頻。存盤后,在相應(yīng)的目錄下(tic2xx\\algos\\相應(yīng)目錄)運行buildall.bat就可以完成修改了。再進行相應(yīng)的操作即可。
2、若是你所選的頻率不是最高頻率,還需要設(shè)定你自已的timings.xx來代替系統(tǒng)默認的最高頻率的timings.xx。例如LF2407a的默認文件是timings.40。Timings.xx可以利用include\\timings.xls的excel工作表來生成。然后在advance options下面的View Configfile中修改相應(yīng)的位置。存盤后,在相應(yīng)的目錄下運行buildall.bat就可以完成修改了。
3、對于TMS320LF240XA系列,還要注意:由于這些DSP的FLASH具有加密功能,加密地址為程序空間的0x40-0X43H,程序禁止寫入此空間,如果寫了,此空間的數(shù)據(jù)被認為是加密位,斷電后進入保護FLASH狀態(tài),使FLASH不可重新操作,從而使DSP報廢,燒寫完畢后一定要進行Progra passwords的操作,如果不做加密操作就默認最后一次寫入加密位的數(shù)據(jù)作為密碼。
4、2407A不能用DOS下的燒寫軟件燒寫,必須用c2000flashprogsw_v112軟件燒寫;
5、建議如下:
1)、一般調(diào)試時,在RAM中進行;
2)、程序燒寫時,避開程序空間0x40-0x43H加密區(qū),程序最好小于32k;
3)、每次程序燒寫完后,將word0,word1,word2,word3分別輸入自己的密碼,再點擊 Program password,如果加密成功,提示Program is arrayed,如果0x40-0x43h中寫入的是ffff,認為處于調(diào)試狀態(tài),flash不會加密;
4)、斷電后,下次重新燒寫時需要往word0~word3輸入已設(shè)的密碼,再unlock,成功后可以重新燒寫了;
6、VCPP管腳接在+5V上,是應(yīng)直接接的,中間不要加電阻。
7、具體事宜請閱讀相應(yīng)目錄下的readme1,readme2幫助文件。
8.注意*NaNd文件的編寫時應(yīng)該避開40-43H單元,好多客戶由于沒有注意到這里而把FALSH加密。
四十八。如何設(shè)置硬件斷點?
在profiler -》profile point -》 break point
四十七.c54x的外部中斷是電平響應(yīng)還是沿響應(yīng)?
是沿響應(yīng),準確的說,它要檢測到100(一個clk的高和兩個clk的低)的變化才可以。
參考程序,里面好象都要 disable wachdog,不知道為什么?
watchdog是一個計數(shù)器,溢出時會復位你的DSP,不disable的話,你的系統(tǒng)會動不動就reset。
四十九。時鐘電路選擇原則
1,系統(tǒng)中要求多個不同頻率的時鐘信號時,首選可編程時鐘芯片;
2,單一時鐘信號時,選擇晶體時鐘電路;
3,多個同頻時鐘信號時,選擇晶振;
4,盡量使用DSP片內(nèi)的PLL,降低片外時鐘頻率,提高系統(tǒng)的穩(wěn)定性;
5,C6000、C5510、C5409A、C5416、C5420、C5421和C5441等DSP片內(nèi)無振蕩電路,不能用晶體時鐘電路;
6,VC5401、VC5402、VC5409和F281x等DSP時鐘信號的電平為1.8V,建議采用晶體時鐘電路
五十.C程序的代碼和數(shù)據(jù)如何定位
1,系統(tǒng)定義:
.cinit 存放C程序中的變量初值和常量;
.const 存放C程序中的字符常量、浮點常量和用const聲明的常量;
tch 存放C程序tch語句的跳針表;
.text 存放C程序的代碼;
.bss 為C程序中的全局和靜態(tài)變量保留存儲空間;
.far 為C程序中用far聲明的全局和靜態(tài)變量保留空間;
.stack 為C程序系統(tǒng)堆棧保留存儲空間,用于保存返回地址、函數(shù)間的參數(shù)傳遞、存儲局部變量和保存中間結(jié)果;
.sysmem 用于C程序中malloc、calloc和realloc函數(shù)動態(tài)分配存儲空間
2,用戶定義:
#pragma CODE_SECTION (symbol, “section name”);
#pragma DATA_SECTION (symbol, “section name”)
五十一NaNd文件
由3部分組成:
1)輸入/輸出定義:.obj文件:鏈接器要鏈接的目標文件;.lib文件:鏈接器要鏈接的庫文件;.map文件:鏈接器生成的交叉索引文件;.out文件:鏈接器生成的可執(zhí)行代碼;鏈接器選項
2)MEMORY命令:描述系統(tǒng)實際的硬件資源
3)SECTIONS命令:描述“段”如何定位
五十二。為什么要設(shè)計CSL?
1,DSP片上外設(shè)種類及其應(yīng)用日趨復雜
2,提供一組標準的方法用于訪問和控制片上外設(shè)
3,免除用戶編寫配置和控制片上外設(shè)所必需的定義和代碼
五十三。什么是CSL?
1,用于配置、控制和管理DSP片上外設(shè)
2,已為C6000和C5000系列DSP設(shè)計了各自的CSL庫
3,CSL庫函數(shù)大多數(shù)是用C語言編寫的,并已對代碼的大小和速度進行了優(yōu)化
4,CSL庫是可裁剪的:即只有被使用的CSL模塊才會包含進應(yīng)用程序中
5,CSL庫是可擴展的:每個片上外設(shè)的API相互獨立,增加新的API,對其他片上外設(shè)沒有影響
五十四.CSL的特點
1,片上外設(shè)編程的標準協(xié)議:定義一組標準的APIs:函數(shù)、數(shù)據(jù)類型、宏;
2,對硬件進行抽象,提取符號化的片上外設(shè)描述:定義一組宏,用于訪問和建立寄存器及其域值
3,基本的資源管理:對多資源的片上外設(shè)進行管理;
4,已集成到DSP/BIOS中:通過圖形用戶接口GUI對CSL進行配置;
5,使片上外設(shè)容易使用:縮短開發(fā)時間,增加可移植。
五十五。為什么需要電平變換?
1)DSP系統(tǒng)中難免存在5V/3.3V混合供電現(xiàn)象;
2)I/O為3.3V供電的DSP,其輸入信號電平不允許超過電源電壓3.3V;
3)5V器件輸出信號高電平可達4.4V;
4)長時間超常工作會損壞DSP器件;
5)輸出信號電平一般無需變換
五十六。電平變換的方法
1,總線收發(fā)器(Bus Transceiver):
常用器件: SN74LVTH245A(8位)、SN74LVTH16245A(16位)
特點:3.3V供電,需進行方向控制,
延遲:3.5ns,驅(qū)動:-32/64mA,
輸入容限:5V
應(yīng)用:數(shù)據(jù)、地址和控制總線的驅(qū)動
2,總線開關(guān)(Bustch)
常用器件:SN74CBTD3384(10位)、SN74CBTD16210(20位)
特點:5V供電,無需方向控制
延遲:0.25ns,驅(qū)動能力不增加
應(yīng)用:適用于信號方向靈活、且負載單一的應(yīng)用,如McBSP等外設(shè)信號的電平變換
3,2選1切換器(1 of 2 Multiplexer)
常用器件:SN74CBT3257(4位)、SN74CBT16292(12位)
特點:實現(xiàn)2選1,5V供電,無需方向控制
延遲:0.25ns,驅(qū)動能力不增加
應(yīng)用:適用于多路切換信號、且要進行電平變換的應(yīng)用,如雙路復用的McBSP
4,CPLD
3.3V供電,但輸入容限為5V,并且延遲較大:>7ns,適用于少量的對延遲要求不高的輸入信號
5,電阻分壓
10KΩ和20KΩ串聯(lián)分壓,5V×20÷(10+20)≈3.3V
五十七。未用的輸入/輸出引腳的處理
1,未用的輸入引腳不能懸空不接,而應(yīng)將它們上拉活下拉為固定的電平
1)關(guān)鍵的控制輸入引腳,如Ready、Hold等,應(yīng)固定接為適當?shù)臓顟B(tài),Ready引腳應(yīng)固定接為有效狀態(tài),Hold引腳應(yīng)固定接為無效狀態(tài)
2)無連接(NC)和保留(RSV)引腳,NC 引腳:除非特殊說明,這些引腳懸空不接,RSV引腳:應(yīng)根據(jù)數(shù)據(jù)手冊具體決定接還是不接
3)非關(guān)鍵的輸入引腳,將它們上拉或下拉為固定的電平,以降低功耗
2,未用的輸出引腳可以懸空不接
3,未用的I/O引腳:如果確省狀態(tài)為輸入引腳,則作為非關(guān)鍵的輸入引腳處理,上拉或下拉為固定的電平;如果確省狀態(tài)為輸出引腳,則可以懸空不接
相關(guān)標簽搜索:DSP詳細指導(下) ADS電磁培訓 ADS電磁培訓課程 ADS電磁分析 ADS電磁在線視頻教程 ADS電磁技術(shù)學習教程 ADS電磁軟件教程 ADS電磁資料下載 ADS電磁代做 ADS電磁基礎(chǔ)知識 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓