第一篇:PVDM和DSP的學(xué)習(xí)總結(jié)
PVDM(全稱是packet voice dsp module)代表分組話音DSP模塊;它是思科為一種可以向系統(tǒng)提供數(shù)字信號處理資源的模塊所取的產(chǎn)品名稱。DSP代表數(shù)字信號處理器;它是一個通用的行業(yè)術(shù)語。一個PVDM模塊由一個或者多個DSP構(gòu)成??梢詧?zhí)行壓縮、話音活動檢測、抖動管理和回聲消除等功能,另外在CCM上的MTP(媒體終結(jié)點,可以完成hold,transfer等等)也是需要DSP的。另外,在會議,編碼轉(zhuǎn)換。語音呼叫的時候是一定要用到DSP資源的。如果在GW上你沒有插PVDM的話則你會發(fā)現(xiàn)你根本就建立不了voice-port。會提示你沒有足夠的DSP資源。下面是我自己的總結(jié),分兩方面,一個是PVDM。另一方面是DSP。
首先看下什么是PVDM2。
其實很象我們平時見到的內(nèi)存條。每個PVDM2包括一下DSP:
PVDM2-8 8通道分組傳真/話音DSP模塊 1 DSP(TI 2505)PVDM2-16 16通道分組傳真/話音DSP模塊 1 DSP(TI 2510)PVDM2-32 32通道分組傳真/話音DSP模塊 2 DSP(TI 2510)PVDM2-48 48通道分組傳真/話音DSP模塊 3 DSP(TI 2510)PVDM2-64 64通道分組傳真/話音DSP模塊 4 DSP(TI 2510)
基于上表,其實我們可以看成,上面圖上的一個黑色的芯片就叫一個DSP。-64有4個這樣的芯片所以有4DSP。而-32有2個所以有2個DSP。
在老一點的還有PVDM,他們的區(qū)別如下: PVDM2 PVDM 80針SIMM接口 72針SIMM接口
T1 TNETV2505GGW或者TNETV2510GGW T1 549或者542 DSP 每個DSP均為200Mhz、200MIPs 每個DSP均為100Mhz、100MIPs 每個DSP配有8M×16外置SDRAM 每個DSP配有256K×16外置SDRAM
所以他們不能兼容。在執(zhí)行編解碼的過程中,G.711的復(fù)雜度是最低的。占用的DSP資源也最少。而G.729的復(fù)雜度是最高的。所以占用的資源就最高。具體支持的channel如下表: 名稱 說明 DSP個數(shù) G.711中通道的最大個數(shù) 高復(fù)雜性的編解碼器通道的最大個數(shù)(包括G.723.1、G.728、G.729、G.729b、GSM-EFR 和調(diào)制解調(diào)器中繼)中等復(fù)雜性的編解碼器通道的最大個數(shù)(包括G.7111、G.729a、G.729ab、G.726、GSM-FR和傳真中繼)
PVDM2-8 8路分組傳真/話音DSP模塊 1 8 4 4 PVDM2-16 16路分組傳真/話音DSP模塊 1 16 6 8 PVDM2-32 32路分組傳真/話音DSP模塊 2 32 12 16 PVDM2-48 48路分組傳真/話音DSP模塊 3 48 18 24 PVDM2-64 64路分組傳真/話音DSP模塊 4 64 24 32
從以上的表格中可以看出,根據(jù)你的GW的板卡選型。如果是兩路的E1的話。你可以選擇PVDM2-64來支持E1的共60個channel。換句話說,如果是采用的G.711的編碼的話,PVDM2-64可以同時支持64路通話。而如果采用G.729。則只能同時支持32路通話。
PVDM2支持NM-HDV2、NM-HDV2-1T1/E1和NM-HDV2-2T1/E1,IOS版本包括12.3(7)T(需要帶有IP PLUS功能集和跨平臺IP VOICE功能集)或者更高版本。NM-HDV2、NM-HDV2-1T1/E1和NM-HDV2-2T1/E1的支持受Cisco 2600XM系列、Cisco 2691、2811、2821、2851、3725和3745系列接入路由器。
我覺得在此有必要插入一下對相關(guān)模塊的介紹。對于FX0和E&M這樣的模擬接口卡,是自帶DSP資源的,不需要單獨的購買PVDM。而對于T1/E1這樣的數(shù)字語音接口卡。則需要單獨購買PVDM。大家都知道。Wic和vic卡都是插在Module上的。但原來我有一個誤區(qū)。就是認(rèn)為象VWIC2-2MFT-E1或者T1這樣的語音的VIC卡是不能直接插在路由器上的。一定要插在NM-HDV或NM-HDV2上才行。后來才知道,原來這是不對的。對于ISR的28和38系列路由器,其實并不需要NM-DHV這樣的模塊,也可以直接插VWIC2-2MFT-T1/E1到路由器的接口卡插槽上。但只能在28和38上這樣插才行。原因是只有28和38系列的ISR的集成多業(yè)務(wù)路由器的主板上已經(jīng)內(nèi)置了PVDM的插槽。同時由于是面向語音的路由器系列并把原來處理語音呼叫改為專門的ASICC芯片來處理,性能上已經(jīng)有了很大的提升。但每種具體型號的路由器帶的PDVM插槽不一樣。我們可以對比一下。如下面的圖片所示。
上面是2801的截面圖。圖中的14和15就是2801自帶的PDVM插槽??梢钥吹?801自帶有2個PVDM的插槽。而且2801根本就沒有NM模塊。只有自帶的4個接口卡插槽。其中只有3個能支持VIC或VWIC卡。再換句話說,就是2801只能支持最大3×VWIC-2MFT-E1卡。也就是能最大支持3×2×30=180個channel。
對比一下看2851的:
可以看到2處是路由器的內(nèi)存插槽。3處是PVDM插槽??梢钥吹?851上有3個PVDM插槽。
同時有4個接口卡插槽。(看前面板)。同時還能支持1個NME模塊(NME模塊和NM模塊是向下兼容的)然后接口卡右邊那個長方橢圓的口就是擴(kuò)展語音模塊插槽。僅能支持一種卡叫EVM-HD-8FXS/DID卡。(我沒查這卡的具體參數(shù)很少有用的)。但從2811-2851的所有4個接口卡插槽都能支持VIC和VWIC卡。我個人算了下。如果滿配的話,(不考慮DSP資源)。最大能支持4個VWIC卡,每個是2個E1就是4×30×2=240路channel。再加上NME模塊上可以再插一個NM-HDV2-2T1/E1。又可以支持1×2×30=60路。所以2851最多支持300路。如果是國外就是T1,那可能就支持得少一點了。另外有誰能告訴我2821和2851的區(qū)別嗎?從我能查到的資料來看就是2821的交流IP最大饋線配電是240W。而2851是360W。如果還有更大的需求只能選擇38系列了。
3845支持4個NM。3825也支持2個。如果需求還要高的話,那就需要選用AS5400或者AS5850了。這兩款都是運營商級別的。5850號稱最多支持2688個數(shù)據(jù),語音, 傳真服務(wù)進(jìn)程。沒接觸過。各型號路由器所能支持的NM如下:
Platform Maximum Number of NM-HDAs Allowed 2600/2600XM/2691 1 2811/2821/2851 1 3640/A 3 3660 6 3725 2 3745 4 3825 2 3845 4
Module Locations in Cisco 2851 Router.jpg
再傳一張2851的圖
另外二代的PVDM只支持在28和38系列的ISR系列路由器上。PVDM2受Cisco 2801、2811、2821和2851多業(yè)務(wù)接入路由器的支持,IOS版本包括12.3(8)T4(需要帶有IP VOICE功能集)或者更高版本;另外還受Cisco 3825和3845多業(yè)務(wù)接入路由器支持,IOS版本包括12.3(11)T(需要帶有IP VOICE功能集)或者更高版本。
在上面看了一下路由器上的支持。我覺得有必要再來看看NM-HDV的模塊。
上圖是NM-HDV的前面板。
下圖是NM-HDV的空中俯視圖。通過兩張圖可以清楚的看到。在一個NM-HDV的模塊中,是自帶了5個PVDM的插槽的。同時還帶了一個VWIC接口卡插槽。VWIC接口卡可以單獨買也可以購買已經(jīng)集成好的模塊如NM-HDV2-1T1/E1或NM-HDV2=2T1/E1。我查了下官網(wǎng),NM-HDV已于09/25/2006停產(chǎn)。因為象NM-HDV這樣的模塊都不支持PVDM2。必須要NM-HDV2才支持。NM-HDV最大只能支持5條1代的PVDM。
而NM-HDV2=2T1/E1的PVDM-2的插槽只有4跟。分別在左右兩邊各兩根。以下為圖片
請參考其他以下一些圖片: NM-HDV-1T1-24E:
還有一點請放心,就是在cisco路由器上的PVDM的DSP資源是可以被路由器上所有的E1/T1卡來共享的。有了以上的這些認(rèn)識,DSP也就差不多是這個意思了。那電話會議能否與同一個DSP的話音編碼轉(zhuǎn)換或者話音呼叫共享資源?
答案是不行。電話會議需要一個專用的DSP資源。如果某個DSP被分配給某個會議會話,它將不能被用于話音編碼轉(zhuǎn)換、話音呼叫發(fā)起或者端接。但是,話音編碼轉(zhuǎn)換和話音呼叫可以共享同一個DSP的資源。注意:會議需要一個專用的DSP,但是并非一個專用的PVDM2模塊。例如,PVDM2-64包含4個DSP;如果其中一個被用于會議功能,另外三個仍然可以被用于其他用途。
我覺得有了以上的這些文檔信息。我們來按照cisco官方提供的DSP選擇工具就可以進(jìn)行DSP的設(shè)備選型和需求選擇了。請參考下面的鏈接。
http://004km.cn/cgi-bin/Support/DSP/dsp-calc.pl
從上圖可以看出,分兩方面。一個是電話會議。電話會議是需要1個單獨的DSP的。
在開電話會議的時候。如果所有的參與方都是G.711的結(jié)構(gòu),那么每一個DSP可以同時支持8路會議。每路會議支持8個參與者。最大64個參與者。而如果是混雜模式,也就是至少有一個參與者是G.729A.。因為這樣就有編碼轉(zhuǎn)換的過程,會消耗很多資源。那么每一個DSP只能同時支持2路會議。每路會議8個參與者。最大16個參與者。同時會議不能跨越多個DSP。
其他三種應(yīng)用是可以共享DSP資源的。包括語音終結(jié),編碼解碼,MTP。每個DSP可以支持G.711下的以上三種類型的16路會話。每個DSP可以支持G.729A下以上三種類型的8路會話。每個DSP可以支持G.729下以上三種類型的6路會話。
以上這張圖則說明了DSP的分配情況。在ISR路由器上。有2-4個主板自帶的PVDM2資源。主板自帶的DSP是給HWIC/EVM這些接口卡用的。NM上的接口卡使用NM上的DSP資源。但T1/E1的接口卡是可以共享所有路由器上的DSP資源的。
請看以下這張圖,看DSP是怎樣被共享的。
原來共享是需要配置的。默認(rèn)是不共享??梢詤⒖紇oice dsp ?等還有dspfarm等命令。沒怎么研究。而且共享也僅針對E1/T1接口。不針對模擬接口FXO,BRI,E&M等接口。推薦是手工設(shè)置編碼的復(fù)雜度和實際使用的codec相匹配。附:
網(wǎng)絡(luò)模塊插槽—這些插槽可支持一個標(biāo)準(zhǔn)網(wǎng)絡(luò)模塊、增強(qiáng)網(wǎng)絡(luò)模塊(NME)、增強(qiáng)擴(kuò)展網(wǎng)絡(luò)模塊(NME-X)和高密度擴(kuò)展模塊(EVM-HD)。NME-X在可用時,其機(jī)型將寬于NME。兩個緊鄰的 NME插槽可結(jié)合起來,容納一個雙寬網(wǎng)絡(luò)模塊(NMD),或在適當(dāng)時,容納一個雙寬增強(qiáng)擴(kuò)展網(wǎng)絡(luò)模塊(NME-XD)。
以上僅是我自己的個人理解。請大家指正。參考了以上鏈接以及產(chǎn)品手冊以及NETWORK2006。
第二篇:DSP學(xué)習(xí)總結(jié)
DSP學(xué)習(xí)總結(jié)
根據(jù)一學(xué)期以來對DSP這門課程的學(xué)習(xí),學(xué)到了很多DSP相關(guān)的知識。了解了如何根據(jù)實際需求選擇DSP芯片,也知道了C54x的匯編和鏈接過程,還掌握了C54x的尋址方式。對于老師的授課方法也有一定的見解。
開始學(xué)DSP的時候比較著急,因為也感覺什么都不會,不知道從哪里下手。手上的資料只有書,后來去圖書館看了兩本,一本是《DSP原理與開發(fā)》,除了有詳細(xì)的理論說明之外,還會在每個章節(jié)之后配上一個例程,缺點就是錯誤也不少,估計時間太倉促,校對沒做好。另一本書是清華大學(xué)出版社的《TMS320C28X系列DSP的CPU與外設(shè)》,是從TI的英文的技術(shù)手冊翻譯過來的,分上、下兩冊,可以作為工具書,很實用,缺點是沒有例子。書看了一兩遍,覺得還是一頭霧水。后來有相應(yīng)的實驗開課,慢慢對DSP有點了解了,剛開始都不知道怎么建PROJECT,后來問了同學(xué),然后再看TI的例程,仿照它的程序框架,邊看例程,邊對著實驗指導(dǎo)書,看得主要是如何初始化,需要對每個外設(shè)進(jìn)行哪些寄存器的初始化,寄存器為什么這樣設(shè)置,程序如何進(jìn)中斷,如何出中斷等等。邊看書邊做實驗,效率會高很多,也就能慢慢理解了。
對于剛學(xué)DSP的新手我覺得掌握一些初級知識就差不多了。
第一步:硬件入門。1.先學(xué)習(xí)DSP的硬件基礎(chǔ):了解CPU結(jié)構(gòu)、中斷、EMIF、HPI、GPIO、SPI、Timer、供電方式、時鐘;2.了解DSP互連的存儲器:SDRAM、FLASH、FIFO、雙口RAM、SDSRAM等不需深入研究;3.了解CPLD/FPGA的硬件結(jié)構(gòu)、連接原理、VerilogHDL編程語言需深入研究;4.了解DSP Bootloader不需深入研究;5.了解DSP和外部通信的接口:PCI、USB、LAN、UART等,有時間可以看看DM642的VideoPort
第二步:工具入門。1.學(xué)習(xí)數(shù)字電路、模擬電路、電路分析的知識;2.學(xué)好一種PCB繪制軟件如Protel DXP2006;3.學(xué)習(xí)信號完整性、學(xué)習(xí)傳輸線理論,特性阻抗知識;
關(guān)于老師上課的方式我認(rèn)為:1.太多的理論知識枯燥乏味,因為有實驗課,我覺得老師可以根據(jù)實驗要做的內(nèi)容在課堂上深入講解,這樣在講述的同時能讓同學(xué)們認(rèn)真聽,認(rèn)真記以便于實驗課程的順利完成,比純理論效果會好點。2.課上應(yīng)該多講解一些例子,由淺而深,我覺得上課關(guān)鍵是調(diào)動同學(xué)的積極性,能吸引學(xué)生的很多是夾雜著現(xiàn)實生活中的事,中國的DSP才剛剛起步,發(fā)展正方興未艾,嚴(yán)格意義上符合DSP兩大核心特征的公司,更是非常之少,整個國內(nèi)網(wǎng)絡(luò)展示廣告領(lǐng)域?qū)τ贒SP的理解都遠(yuǎn)遠(yuǎn)沒有達(dá)到普及的程度,有很大的發(fā)展?jié)摿?,讓同學(xué)們意識到學(xué)習(xí)DSP是有用的。
第三篇:Dsp學(xué)習(xí)筆記
GPIO作為通用I/O口使用
a)EALLOW;//防止私自寫或覆蓋寄存器的內(nèi)容,加了這句,接下來可以操作寄存器了 b)GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;// GPIO0復(fù)用為普通I/O功能 c)GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;// 1,設(shè)置為輸出;0設(shè)置為輸入 d)EDIS;//加了這句,接下來不可以操作寄存器
注:EALLOW,EDIS總是成對出現(xiàn)中斷過程(代碼以配置SCIB模塊的接收中斷為例,LSPCLK是37.5MHz)
中斷共分三級,1,外設(shè)級;2,PIE級;3,CPU級;外設(shè)級的中斷標(biāo)志必須手動清零;PIE級和CPU級的中斷標(biāo)志位由硬件自動清零。中斷響應(yīng)例程:
第一步,配置中斷源,即允許產(chǎn)生什么類型點中斷。例如,定時器中斷,串口中斷,外部中斷等。ScibRegs.SCICTL2.bit.RXBKINTENA =1;允許接收中斷
第二步,配置PIE(外部中斷擴(kuò)展)
a)InitPieCtrl();//初始化Pie控制
b)InitPieVectTable();//初始化Pie向量表控制
c)EALLOW;
d)PieVectTable.SCIRXINTB=&scibreceive;//指定中斷服務(wù)程序地址e)EDIS;
f)PieCtrlRegs.PIECTRL.bit.ENPIE=1;//使能從PIECTRL中讀取中斷向量 g)PieCtrlRegs.PIEIER9.bit.INTx3=1;//使能SCIB的接收中斷
h)IER |= M_INT9;//允許外部中斷
i)EINT;
j)ERTM;
第三步,中斷響應(yīng)
在中斷服務(wù)程序里,必須用PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;//清楚中斷已響應(yīng)標(biāo)識,再寫自己等程序代碼串口配置
InitScibGpio();scib_echoback_init();AD轉(zhuǎn)換
InitAdc();//允許ADC時鐘,帶隙和參考電路上電,核中模擬電路上電
AdcRegs.ADCTRL2.all = 0x2000;//ADC模塊開始轉(zhuǎn)換
程序在FLASH運行時,需要加如下兩句代碼:(不知道具體原因)
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();
第四篇:DSP各種知識點總結(jié)
DSP芯片的特點:(1).哈佛結(jié)構(gòu)(程序空間和數(shù)據(jù)空間分開)(2).多總線結(jié)構(gòu).(3)流水線結(jié)構(gòu)(取指、譯碼、譯碼、尋址、讀數(shù)、執(zhí)行)(4)多處理單元.(5)特殊的DSP指令(6).指令周期短.(7)運算精度高.(8)硬件配置強(qiáng).(9)DSP最重要的特點: 特殊的內(nèi)部結(jié)構(gòu)、強(qiáng)大的信息處理能力及較高的運行速度。2 三類TMS320:(1)TMS320C2000適用于控制領(lǐng)域(2)TMS320C5000應(yīng)用于通信領(lǐng)域(3)TMS320C6000應(yīng)用于圖像處理 DSP總線結(jié)構(gòu): C54x片內(nèi)有8條16位主總線:4條程序/數(shù)據(jù)總線和4條對應(yīng)的地址總線。1條程序總線(PB):傳送自程序儲存器的指令代碼和立即操作數(shù)。3條數(shù)據(jù)總線(CB、DB、EB):CB和EB傳送從數(shù)據(jù)存儲器讀出的操作數(shù);EB傳送寫到存儲器中的數(shù)據(jù)。4條地址總線(PAB、CAB、DAB、EAB)傳送相應(yīng)指令所需要的代碼 4存儲器的分類: 64k字的程序存儲空間、64K字的數(shù)據(jù)存儲空間和64K字的I/O空間(執(zhí)行4次存儲器操作、1次取指、2次讀操作數(shù)和一次寫操作數(shù)。
5存儲器空間分配 片內(nèi)存儲器的形式有DARAM、SARAM、ROM。RAM安排到數(shù)據(jù)存儲空間、ROM構(gòu)成程序存儲空間。(1)程序空間:MP/MC=1
40000H~FFFFH 片外
MP/MC=0 4000H~EDDDH 片外
FF00H~FFFFH 片內(nèi) OVLY=1 0000H~007FH 保留
0080H~007FH 片內(nèi)
OVLY=0 0000H~3FFFH片外(2)數(shù)據(jù)空間:DROM=1 F000H~F3FFH 只讀空間 FF00H~FFFH保留
DROM=0 F000H~FEFFH 片外
6數(shù)據(jù)尋址方式
(1)立即尋址(2)絕對尋址<兩位>(3)累加器尋址(4)直接尋址@<包換數(shù)據(jù)存儲器地址的低7位>優(yōu)點:每條指令只需一個字(5)間接尋址*按照存放某個輔助寄存器中的16位地址尋址的AR0~AR7(7)儲存器映像寄存器尋址(8)堆棧尋址
7尋址縮寫語 Smem:16位單尋址操作數(shù) Xmem Ymem 16位雙
dmad pmad PA16位立即數(shù)(0-65535)scr源累加器 dst目的累加器 lk 16位長立即數(shù)
8狀態(tài)寄存器ST0 15~13ARP輔助寄存器指針 12TC測試標(biāo)志位 11C進(jìn)位位 10累積起A的一出標(biāo)志位OVA 9OVB 8~0DP數(shù)據(jù)存儲器頁指針
9狀態(tài)寄存器ST1 CPL:直接尋址編輯方式
INTM =0開放全部可屏蔽中斷 =1關(guān)閉
C16 雙16位算數(shù)運算方式
10定點DSP 浮點DSP:定點DSP能直接進(jìn)行浮點運算,一次完成是用硬件完成的,而浮點需要程序輔助。
11重復(fù)操作:重復(fù)執(zhí)行單條指令,程序塊重復(fù)操作(可以響應(yīng)中斷)12復(fù)位操作:處理器從FF80h處取指 13中斷:兩大類:(1)可屏蔽:立即響應(yīng)(2)非屏蔽:(滿足下列條件才能響應(yīng))①優(yōu)先級別最高②狀態(tài)寄存器ST1中的INTM位為0③中斷屏蔽寄存器IMR中的相應(yīng)位為1 三個階段:(1)接受中斷請求(2)響應(yīng)中斷(3)執(zhí)行中斷服務(wù)程序
14復(fù)位的三種方式:上電復(fù)位,手動復(fù)位,軟件復(fù)位
15常用匯編命令:.bss為未初始化的變量保留空間;usect在一個未初始化的有命名的段中為變量保留空間;.data通常包含了初始化的數(shù)據(jù);.sect定義已初始化的帶命名段,其后的數(shù)據(jù)存入該段;.text該段包含了可執(zhí)行的代碼;title.接在后面的是程序名;int用來設(shè)置一個或多個16位無符號整型常數(shù);word用來設(shè)置一個或多個16位帶符號整型常數(shù) 16.DSP系統(tǒng)的特點:(1)精度高、抗干擾能力強(qiáng),穩(wěn)定性好。(2)編程方便、易于實現(xiàn)復(fù)雜算法(含自適應(yīng)算法)。(3)可程控。(4)接口簡單。(5)集成方便。
17.CPU部分:①先進(jìn)的多總線結(jié)構(gòu)(1條程序總線、3條數(shù)據(jù)總線和4條地址總線)。②位算術(shù)邏輯運算單元(ALU),包括1個40位桶形移位寄存器和2個獨立的40位累加器。③17×17位并行乘法器,與40位專用加法器相連,用于非流水線式單周期乘法/累加(MAC)運算。④比較、選擇、存儲單元(CSSU):用于加法/比較選擇。⑤指數(shù)編碼器:可以在單個周期內(nèi)計算40位累加器中數(shù)值的指數(shù)。⑥雙地址生成器:包括8個輔助寄存器和2個輔助寄存器算術(shù)運算單元(ARAU)存儲器空間
192 K字可尋址存儲空間:64 K字程序存儲空間、64 K字?jǐn)?shù)據(jù)存儲空間及64 K字I/O空間 ⑦功能結(jié)構(gòu)上分:運算部件和控制部件 18.累加器:目的寄存器 用來存放從ALU或乘法器/加法器單元輸出的數(shù)據(jù)。19.桶形移位器:立即數(shù);asm,T低6位
20.TMS320C54X有兩個通用引腳bio監(jiān)視外部 xf 握手信號
21.COFF3.公共目標(biāo)文件格式——COFF COFF的核心概念:使用代碼塊(段)和數(shù)據(jù)塊(段)編程,而不是指令或數(shù)據(jù)簡單的順序編寫。段的定義:就是在編寫匯編語言源程序時,采用的代碼塊或數(shù)據(jù)塊,它占據(jù)存儲器的某個連續(xù)空間。21.COFF包含的三個缺省段 1text 2data 3bss 22.DSP指令系統(tǒng):助記符和代數(shù)
23.Dsp開發(fā)工具:代碼生成工具和代碼調(diào)節(jié)工具 24.Dsp按照用途分類:通用型和專用型
AR3+是加2或者減2 25.1狹義理解為數(shù)字信號處理器,廣義理解為數(shù)字信號處理方法
26.程序計數(shù)器的直可通過復(fù)位操作、順序執(zhí)行指令、分支轉(zhuǎn)移、累加器轉(zhuǎn)移、塊重復(fù)、子程序調(diào)用、從累加器調(diào)用子程序、中斷操作改變
27.MMR寫操作流水線沖突時,采用推薦指令和插入空操作指令
28.定時器: 3個16位存儲器映射寄存器組成:定時器寄存器(TIM)、定時器周期寄存器(PRD)、定時器控制寄存器(TCR)。
.title “example.asm”
;用雙引號括起的源程序名
.mmregs
;定義存儲器映射寄存器的替代符號
STACK
.usect “STACK”, 10h
;在數(shù)據(jù)存儲器中留出16個單元作為
;堆棧區(qū),名為STACK
.bss
a, 4
.bss
x, 4
;在數(shù)據(jù)存儲器中空出4個存儲單元存放
;變量x1,x2,x3和x4..bss
y, 1
.def
start
;在此模塊中定義,可為別的模塊引用
.data
;緊跟其后的是已初始化數(shù)據(jù)
table:
.word 1, 2, 3, 4
;在程序存儲器標(biāo)號為table開始的8個單
.word 8, 6, 4, 2
;元存放初始化數(shù)據(jù)
.text
;緊跟其后的是匯編語言程序正文
start:
STM
#0, SWWSR
;SWWSR置0,不插等待周期
S
STM
#STACK+10H,SP
;設(shè)置堆棧指針
STM
#a, AR1
;AR1指向a的首地址
RPT
#7
;從程序存儲器向數(shù)據(jù)存儲器
MVPD
table, *AR1+
;重復(fù)傳遞共8個數(shù)據(jù)
CALL
SUM
;調(diào)用懲罰累加子程序 end:
B
end
;循環(huán)等待
SUM:
STM
#a, AR3
;將洗漱的首地址附給AR3
STM
#x, AR4
;降變量x的首地址附給AR4
RPTZ
A, #3
;降累加器清零,重復(fù)執(zhí)行下條指令4次
MAC
*AR3+, *AR4+, A
;乘法累加運算
STL
A, @y
;結(jié)果送往變量y的存儲單元
RET
.end
;結(jié)束匯編,匯編器將忽略
5.堆棧用法:
壓入操作:SP先減1,然后再將數(shù)據(jù)壓入棧頂。
彈出操作:數(shù)據(jù)彈出后,再將SP加1。堆棧設(shè)置: size
.set 100 stack.usect “STK”, size
;自定義一個名為STK的保留空間,共100個單元
STM
#stack+size, SP;將這個保留空間的高地址(#stack+size)賦給SP,作為棧底,【例4.14】 對數(shù)組x[5]中的每個元素加1。
.bss
x, 5 begin:
LD
#1, 16, B
STM
#4,BRC
;BRC賦值為4
STM
#x,AR4
RPTB
next-1
;next-1為循環(huán)結(jié)束地址
ADD
*AR4,16,B,A
STH
A,*AR4+ next:
LD
#0, B
…
用next-1作為結(jié)束地址是恰當(dāng)?shù)?。如果用循環(huán)回路中最后一條指令(STH指令)的標(biāo)號作為結(jié)束地址,若最后一條指令是單字指令也可以,若是雙字指令,就不對了。
【例4.15】 編寫一段程序,首先對數(shù)組x[20]賦值,再將數(shù)據(jù)存儲器中的數(shù)組x[20]復(fù)制到數(shù)組y[20]。
.title “exp15.asm”
.mmregs
STACK
.usect “STACK”, 30h
.bss
x, 20
.bss
y, 20
.data
table:
.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
.def start
.text Start:
STM
#x, AR1
RPT #19
MVPD
table, *AR1+;程序存儲器傳送到數(shù)據(jù)存儲器
STM #x, AR2
STM
#y, AR3
RPT
#19
MVDD *AR2+, *AR3+;數(shù)據(jù)存儲器傳送到數(shù)據(jù)存儲器 end:
B end
.end
計算 z=x+y-w LD @x,A ADD @y,A SUB @W, A STL A,@z 計算y=mx+b LD @m,T MPY @x,A ADD @b,A STL A,@y 計算 y=x1*a1+x2*a2 LD @x1,T MPY @a1,B LD @x2,T MAC @a2,B STL B,@y STH B, @y+1 找出最大值,并存放在累加器A中 STM #a,AR1 STM #x,AR2 STM #2, AR3 LD
*AR1+,T MPY *AR2+,A
;第一個成績累加器A中 Loop LD *AR1+.T
MPY *AR2+,B ;其他乘積在累加器B中
MAX A
;累加器A和B比較,選大的存在A中
BANZ loop,*AR3 ;此循環(huán)中共進(jìn)行三次乘法比較 數(shù)組 x【5】={1,2,3,4,5}初始化
.data TBL
.word
1,2,3,4,5
.bss
x,5
.text
STM
#x,AR5
RPT
#4
MVPD
TBL,*AR5+
第五篇:DSP調(diào)試總結(jié)
6416是定點型芯片,在項目中主要用來做下變頻后數(shù)據(jù)的譜計算。FPGA中對所采數(shù)據(jù)進(jìn)行下變頻后通過DSP的EMIF口(64bit)傳輸?shù)紻SP中進(jìn)行FFT運算,算完的譜數(shù)據(jù)再通過EMIF口回傳至FPGA,再傳至上位機(jī)進(jìn)行頻譜圖的顯示。
在這個過程中,并沒有用DSP做多少事情,只是有一個FFT計算和EMIF口以及MCBSP口的數(shù)據(jù)與控制命令的傳輸,總體來說功能還是蠻簡單的。
1、首先,F(xiàn)FT運算直接調(diào)用TI的C64XX的庫函數(shù)就可以完成。在這個調(diào)試過程中,首先使用的是simulater環(huán)境進(jìn)行軟件仿真計算,根據(jù)計算出來的譜圖發(fā)現(xiàn)結(jié)果是正確的,只是模擬數(shù)據(jù)和旋轉(zhuǎn)因子在軟仿真的時候耗費的時間太長(32K點)??捎蒑ATLAB產(chǎn)生數(shù)據(jù),然后導(dǎo)入數(shù)組,直接進(jìn)行FFT驗證之。
FFT消耗時間分析:在軟件中可以設(shè)置觀測FFT函數(shù)所消耗的時間,最后由兩種結(jié)果,Total cycle 和Cpu cycle,其根據(jù)600M主頻計算下來,做32K點時其耗時相差有100倍,即百毫秒與毫秒的差別,由于不確定時間應(yīng)采取哪種,所以進(jìn)而進(jìn)行了板級實驗。
在板級實驗過程中,發(fā)現(xiàn)程序“經(jīng)常偶爾”跑飛,一直也沒有找到原因。最后經(jīng)過多次試驗用示波器檢測出來的時間與用Cpu cycle計算出來的相近。此時,我們假設(shè)Cpu cycle是正確的,那換算出來的主頻就只為400M。用示波器對分頻時鐘進(jìn)行測試,發(fā)現(xiàn)現(xiàn)在CPU確實只工作在400M的主頻,而不是最大600M的主頻。
由此說明,芯片的配置可能有問題,并且還可以證明可以用Cpu cycle來計算程序的運行時間(當(dāng)然DSP主頻要確定)。
經(jīng)databook查詢,發(fā)現(xiàn)晶振的頻率與其設(shè)置的主頻選擇有誤,及用此晶振的頻率,要改變外圍電路配置才能達(dá)到最高頻率。當(dāng)然,也許maybe可能這個問題與DSP經(jīng)常跑飛有關(guān)聯(lián)。
改了之后發(fā)現(xiàn)其運行在666M的狀態(tài),超了66M,不曉得對芯片有沒有影響,知道的大神可告知小弟,不勝感激...2、EMIF 與 MCBSP 的可按照自己的需要進(jìn)行配置初始化。
EMIF用到了64位,在傳輸64位數(shù)據(jù)上糾結(jié)了很久,C語言上long即為64位,可在此只為40位。經(jīng)一位大神提醒,使用long long類型搞定之,木有技術(shù)含量,發(fā)現(xiàn)自己基本功相當(dāng)之不扎實。