第一篇: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.xiexiebang.com/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类型搞定之,木有技术含量,发现自己基本功相当之不扎实。