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