<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > DSP應用基礎知識

          DSP應用基礎知識

          作者: 時間:2008-06-21 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/258063.htm
          eXpress是什么?

            eXpress是一種實時軟件技術,它是一種DSP編程的標準,利用它可以加快你開發(fā)DSP軟件的速度。以往DSP軟件的開發(fā)沒有任何標準,不同的人寫的程序一般無法連接在一起。DSP軟件的調(diào)試工具也非常不方便。使得DSP軟件的開發(fā)往往滯后于硬件的開發(fā)。 eXpressDSP集成了CCS(Code Composer Studio)開發(fā)平臺,DSP BIOS實時軟件平臺,DSP算法標準和第三方支持四部分。利用該技術,可以使你的軟件調(diào)試,軟件進程管理,軟件的互通及算法的獲得,都便的容易。這樣就可以加快你的軟件開發(fā)進程。

          1)CCS是eXpressDSP的基礎,因此你必須首先擁有CCS軟件。
          2)DSP BIOS是eXpressDSP的基本平臺,你必須學會所有DSP BIOS。
          3)DSP算法標準可以保證你的程序可以方便的同其它利用eXpressDSP技術的程序連接在一起。同時也保證你的程序的延續(xù)性。

          為什么要用DSP?

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


          5.使用TI公司模擬器件與DSP結合使用的好處。

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

          C語言中可以嵌套匯編語言?

            可以。在ANSI C標準中的標準用法就是用C語言編寫主程序,用匯編語言編寫子程序,中斷服務程序,一些算法,然后用C語言調(diào)用這些匯編程序,這樣效率會相對比較高

          在定點DSP系統(tǒng)中可否實現(xiàn)浮點運算

          當然可以,因為DSP都可以用C,只要是可以使用c語言的場合都可以實現(xiàn)浮點運算。

          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即可。注意當串聯(lián)DSP比較多的時候,信號線要適當?shù)脑黾域?qū)動。

          include頭文件(.h)的主要作用

            頭文件,一般用于定義程序中的函數(shù)、參數(shù)、變量和一些宏單元,同庫函數(shù)配合使用。因此,在使用庫時,必須用相應的頭文件說明。

          DSP中斷向量的位置

          1) 2000系列dsp的中斷向量只能從0000H處開始。所以在我們調(diào)試程序的時候,要把DSP選擇為MP(微處理器方式),把片內(nèi)的Flash屏蔽掉,免去每次更改程序都要重新燒寫Flash工作。
          2)3x系列dsp的中斷向量也只能在固定的地址。
          3)5000,6000系列dsp的中斷向量可以重新定位。但是它只能被重新定位到Page0范圍內(nèi)的任何空間。

          有源晶振與晶體的區(qū)別,應用范圍及用法

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

          程序經(jīng)常跑飛的原因

          1) 程序沒有結尾或不是循環(huán)的程序。
          2)nmi管腳沒有上拉。
          3)在看門狗動作的時候程序會經(jīng)常跑飛。
          4)程序編制不當也會引起程序跑飛。
          5)硬件系統(tǒng)有問題。

          并行FLASH引導的一點經(jīng)驗-阿哲

            最近BBS上關于FLASH和BOOT的討論很活躍,我也多次來此請教。前幾天自制的DSP板引導成功,早就打算寫寫這方面的東西。我用的DSP是 5416,以其為核心,做了一個相對獨立的子系統(tǒng)(硬件、軟件、算法),目前都已基本做好。下面把在FLASH引導方面做的工作向大家匯報一下,希望能對大家有所幫助。本人經(jīng)驗和文筆都有限,寫的不好請大家諒解。 硬件環(huán)境:
          DSP:TMS320VC5416PGE160
          FLASH:SST39VF400A-70-4C-EK 都是貼片的,F(xiàn)LASH映射在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ù)時,還應寫入引導表的格式數(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; /* 在引導表頭存放并行引導關鍵字 */
          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;iLoop0x7f00;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;iLoop0x0080;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++;
          } /* 寫入引導表結束標志 */
          WriteFlash(iFlashAddr,0x0000);
          iFlashAddr++;
          WriteFlash(iFlashAddr,0x0000); /* 在數(shù)據(jù)空間的0xFFFF寫入引導表起始地址 */
          iFlashAddr=0xffff;
          WriteFlash(iFlashAddr,0x8000);


          6.cmd文件
          由3部分組成:
          1)輸入/輸出定義:.obj文件:鏈接器要鏈接的目標文件;.lib文件:鏈接器要鏈接的庫文件;.map文件:鏈接器生成的交叉索引文件;.out文件:鏈接器生成的可執(zhí)行代碼;鏈接器選項
          2)MEMORY命令:描述系統(tǒng)實際的硬件資源
          3)SECTIONS命令:描述“段”如何定位

          為什么要設計CSL?
          1,DSP片上外設種類及其應用日趨復雜
          2,提供一組標準的方法用于訪問和控制片上外設
          3,免除用戶編寫配置和控制片上外設所必需的定義和代碼

          什么是CSL?
          1,用于配置、控制和管理DSP片上外設
          2,已為C6000和C5000系列DSP設計了各自的CSL庫
          3,CSL庫函數(shù)大多數(shù)是用C語言編寫的,并已對代碼的大小和速度進行了優(yōu)化
          4,CSL庫是可裁剪的:即只有被使用的CSL模塊才會包含進應用程序中
          5,CSL庫是可擴展的:每個片上外設的API相互獨立,增加新的API,對其他片上外設沒有影響

          CSL的特點
          1,片上外設編程的標準協(xié)議:定義一組標準的APIs:函數(shù)、數(shù)據(jù)類型、宏;
          2,對硬件進行抽象,提取符號化的片上外設描述:定義一組宏,用于訪問和建立寄存器及其域值
          3,基本的資源管理:對多資源的片上外設進行管理;
          4,已集成到DSP/BIOS中:通過圖形用戶接口GUI對CSL進行配置;
          5,使片上外設容易使用:縮短開發(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
          應用:數(shù)據(jù)、地址和控制總線的驅(qū)動
          2,總線開關(Bus Switch)
          常用器件:SN74CBTD3384(10位)、SN74CBTD16210(20位)
          特點:5V供電,無需方向控制
          延遲:0.25ns,驅(qū)動能力不增加
          應用:適用于信號方向靈活、且負載單一的應用,如McBSP等外設信號的電平變換
          3,2選1切換器(1 of 2 Multiplexer)
          常用器件:SN74CBT3257(4位)、SN74CBT16292(12位)
          特點:實現(xiàn)2選1,5V供電,無需方向控制
          延遲:0.25ns,驅(qū)動能力不增加
          應用:適用于多路切換信號、且要進行電平變換的應用,如雙路復用的McBSP
          4,CPLD
          3.3V供電,但輸入容限為5V,并且延遲較大:>7ns,適用于少量的對延遲要求不高的輸入信號
          5,電阻分壓
          10KΩ和20KΩ串聯(lián)分壓,5V×20÷(10+20)≈3.3V

          未用的輸入/輸出引腳的處理
          1,未用的輸入引腳不能懸空不接,而應將它們上拉活下拉為固定的電平
          1)關鍵的控制輸入引腳,如Ready、Hold等,應固定接為適當?shù)臓顟B(tài),Ready引腳應固定接為有效狀態(tài),Hold引腳應固定接為無效狀態(tài)
          2)無連接(NC)和保留(RSV)引腳,NC 引腳:除非特殊說明,這些引腳懸空不接,RSV引腳:應根據(jù)數(shù)據(jù)手冊具體決定接還是不接
          3)非關鍵的輸入引腳,將它們上拉或下拉為固定的電平,以降低功耗
          2,未用的輸出引腳可以懸空不接
          3,未用的I/O引腳:如果確省狀態(tài)為輸入引腳,則作為非關鍵的輸入引腳處理,上拉或下拉為固定的電平;如果確省狀態(tài)為輸出引腳,則可以懸空不接


          上一頁 1 2 3 下一頁

          關鍵詞: DSP 內(nèi)部指令

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();