‘壹’ CCS怎么实现同时将多个程序下载到多个不同的DSP中
CCS实现同时将多个程序下载到多个不同的DSP中:打开两个工程可以,但active工程只有一个,可以切换的。
CCS3.3一个开发环境,不能够跑程序,程序弄好了要在芯片里面运行才能够有效果,如果不是直接下载,想在线调试(可以说在线硬件仿真),需要XDS100或者XDS510仿真器(更高级的XDS560 PLUS等等),一根JTAG连接线连接至DSP+一根USB连接线连接至PC。
数字滤波器:
大略可分为有限冲激响应型和无限冲激响应型两类,可用硬件和软件两种方式实现。在硬件实现方式中,它由加法器、乘法器等单元所组成,这与电阻器、电感器和电容器所构成的模拟滤波器完全不同。数字信号处理系统很容易用数字集成电路制成。
显示出体积小、稳定性高、可程控等优点。数字滤波器也可以用软件实现。软件实现方法是借助于通用数字计算机按滤波器的设计算法编出程序进行数字滤波计算。
‘贰’ 请教VC++写的算法怎么移植到CCS里调试
不能,ccs 和VC++不是一个概念----VC++是高级语言编码器 而ccs 是集成开发环境,这两个不相关的东西怎么能移植,而且目前没有一个插件出现来让他们在一起使用,所以不行是不太可能
‘叁’ 对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少
我用的是28XX系列的,不知道经验对你有没有用,因为不同系列的芯片多少有些差别。
TI提供的库已经相当可以了,兼顾易用与效率。我当时做过这样的测试
1. 用IQMATH实现
2. 直接C语言实现
3. C语言优化实现
4. 原生汇编实现
IQMATH的运行周期在1000左右,比方案3快几十个周期,比方案4慢几个周期,方案2是10000多个周期。
另外,因为只是单独测的算法,汇编之所以快是快在寄存器的使用上,操作数可以直接入寄存器,但是考虑到程序其他部分是用C语言编写的话,把操作栈的时间也加上,并不比方案1快。毕竟我对TI的汇编吃的也不透。
在编写上,无疑是方案1提供了最接近C语言风格的实现,几乎不用考虑ISA方面的问题。
另外对于执行效率,我觉得主要考虑三点:
1.分支的使用
CCS对C语言的优化我没做过太多比对。其实单从反汇编的结果看,我接触过的嵌入式开发环境的编译器都能做出很好的优化。但是几乎每个编译器都会在逻辑的优化上有欠缺——它只能对一些显而易见的判断条件进行优化,而在写程序的过程中,我们经常出于易读性的考虑,或者稳定性的考虑,或者其他的考虑加入几乎不会发生的分支,这样的分支判断会消耗一定比率的代码段执行效率,视乎代码段内有用功能的长度而定,越长这个比率越小,越短这个比率越高。
2.一般操作,就是各种赋值操作
在一般的操作上,编译器的优化已经很令人满意了,基本上可以作为编写汇编的范本。我觉得所谓效率能达到90%就是针对这个部分说的。
3.特殊操作,比如对整块内存的操作,或者是浮点运算上。
在一些特殊的操作上,就要看是否有现成的库,或者看硬件是否支持。比如对整块内存操作就别用循环一个字节一个字节的搬了。
以上三点都能考虑到的话,相信执行效率方面已经没有太大的提升空间了。
另外如果你的代码发生在初始化部分,也就是只在系统运行开始的时候运行一次,那么优化不优化其实没有太大的必要,除非你对系统初始化的时间有严格的要求。但是如果你的代码是作为任务要被反复运行的,那就有优化的必要了。
在CCS里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。
‘肆’ CCS软件C语言编程输出SPWM脉宽调制波控制感应电机转速程序算法解读
1、PWM波是控制直流电机的
通俗的说,5V直流电机在5V的情况下肯定速度最快,在0V的情况下肯定不转了
这样电源0~5V就对应了不同的速度
问题是怎么才能实现0~5V的变化呢?
于是就用PWM波控制mos管来给直流电机供电。PWM就是一个矩形波,通过控制高电平和低电平的时间来控制MOS管导通的时间。MOS管在高电平的时候导通,就相当于5V电源直接加到电机上;MOS管在低电平的时候截止,就相当于0V电源加到电机上。
PWM又叫脉宽调制,就是控制高电平占一个周期的比例。而这个PWM波就是控制5V电源加到电机上的时间,从而控制了电机。
2、例程:
#include <reg52.h>
sbit KEY1 = P3^4;
sbit PWM = P1^5;
unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms
unsigned char PWM_ON ;//定义高电平时间
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
unsigned char PWM_Num;//定义档位
TMOD |=0x01;//定时器设置 1ms in 12M crystal
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定时1mS
IE= 0x82; //打开中断
TR0=1;
CYCLE = 10;// 时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步
while(1)
{
if(!KEY1)
{
delay(10000);
if(!KEY1)
{
PWM_Num++;
if(PWM_Num==4)PWM_Num=0;
switch(PWM_Num){
case 0:P0=0x06;PWM_ON=0;break;//高电平时长
case 1:P0=0x5B;PWM_ON=4;break;
case 2:P0=0x4F;PWM_ON=6;break;
case 3:P0=0x66;PWM_ON=8;break;
default:break;
}
}
}
}
}
/********************************/
/* 定时中断 */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定时1mS
if (count==PWM_ON)
{
PWM = 1; //灯灭
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0) //如果左右时间是0 保持原来状态
PWM = 0;//灯亮
}
‘伍’ 卷积算法实验。用CCS软件做的。求实验报告模板。在线等,高分哟~
计算机,CCS软件,DSP仿真器,试验箱做的实验
‘陆’ 如何用CCS5.5和matlab对dsp进行实时数据交换
采用MATLAB的DSP调试方法
时间:2010-06-22 04:16:08 来源: 作者:
本文结合具体例证,介绍基于MATLAB 的DSP 应用程序调试方法。
MATLAB 具有强大的分析、计算和可视化功能,利用MATLAB 提供的数十个专业工具箱,可以方便、灵活地实现对自动控制、信号处理、通信系统等的算法分析和仿真,是算法设计人员和工程技术人员必不可少的软件工具。
数字信号处理器(DSP)作为一种可编程专用芯片,是数字信号处理理论实用化过程的重要技术工具,在语音处理、图像处理等技术领域得到了广泛的应用。但对于算法设计人员来讲,利用汇编语言或C 语言进行DSP 功能开发,对于具有周期长、效率低的缺点,不利于算法验证和产品的快速开发。
由MathWorks 公司和TI 公司联合开发的MATLAB Link for CCS Development Tools(简称CCSLink)是MATLAB6.5 版本(Release13)中增加的一个全新的工具箱,它提供了MATLAB、CCS 和DSP 目标板的接口,利用此工具可以像操作MATLAB变量一样来操作DSP 器件的存储器和寄存器,使开发人员在MATLAB 环境下完成对DSP 的操作,从而极大地提高DSP 应用系统的开发进程。
1 CCSLink 初步
CCSLink 工具通过双向连接将MATLAB、CCS 和DSP 目标板联系起来,允许开发者利用MATLAB 强大的可视化、数据处理和分析函数对来自CCS 的数据进行分析和处理,极大地简化TI 公司DSP 软件的分析、调试和验证过程。三者关系如图1示。
图1 CCSLink连接关系
CCSLink 的主要特点为:在MATLAB 环境下完成对DSP器件的调试、数据传递和验证;在MATLAB 和DSP 之间实现数据实时传递;支持XDS510 和XDS560 仿真器;提供嵌入式对象,可以访问C/C++变量;扩展了MATLAB 和eXpressDSP工具调试能力。
MATLAB 6.5 版集成了CCSLink1.0 工具,支持CCS 能识别的所有板卡及硬件DSP,包括TIC2000、C5000、C6000 DSP及EVM 板、DSK 板、simulator 及任何符合标准的用户板和第三方板。CCSLink 正常工作除了需要MATLAB 及其信号处理工具箱外,还需要TI 的编译器(compiler)、汇编器(assembler)、链接器(linker)、CCS IDE2.1、CCS 配置工具信其他软件工具。
在MATLAB 环境下输入命令
help ccslink
若CCSLink 已正确安装,则会显示产品信息及进行CCS 和RTDX 操作的函数列表:
MATLAB Link for Code Composer Studio(tm)
Version 1.0 (R13) 28-Jun-2002。
若MATLAB 不能返回信息,则表明CCSLink 未安装成功,需进行重新安装。
‘柒’ 指纹识别预处理
介绍了采用TI公司的高速DSP芯片TMS320VC5402的指纹识别系统的预处理算法和编程实现。算法实现采用的DSP集成开发环境(IDE)为CCS 2.2。通过采用极值滤波、平滑滤波、拉普拉斯锐化、二值化等对指纹图像进行预处理,取得了良好的试验结果。
利用生物认证技术取代传统的使用钥匙、身份证、密码等方法进行个人身份鉴定,可广泛应用于银行、机场、公安等领域的出入管理。将信息技术与生物技术相结合的生物认证技术是本世纪最有发展潜力的技术之一,而指纹识别技术则是其中非常有前景的一种。
数字信号处理器(DSP)是指以数值计算的方法对数字信号进行处理的芯片。它具有处理速度快、灵活、精确、抗干扰能力强、体积小、使用方便等优点。DSP应用于指纹识别已经成为一个新的科技领域和独立的学科体系,当前已形成了有潜力的产业和市场。
本文选定100MHz DSP TMS320VC5402作为指纹信号的处理器,利用其流水线编码的操作特点,并结合指纹识别技术,实现基于DSP CCS2.2的指纹识别预处理系统。CCS 2.2(Code Composer Studio)是一种针对标准TMS320调试接口的集成开发环境(IDE),由TI公司于1999年推出。指纹识别的处理流程如图1所示。
指纹处理过程可分为三个阶段:
(1) 获取原始指纹图像,进行预处理;
(2) 提取指纹特征点;
(3) 指纹识别分析判断。
在上述三个阶段中,指纹图像的预处理阶段尤为重要,该阶段对图像处理的好坏直接关系到后面两个阶段工作的开展。本文结合TMS320VC5402的特点,重点研究指纹识别的预处理算法及其DSP实现问题,其中包括指纹的极值滤波、平滑滤波、拉普拉斯锐化、迭代二值化和该算法在DSP开发平台CCS2.2的C5000上的仿真实现。这一问题的解决,可为未来指纹识别系统的脱机应用提供很有价值的参考。
1 指纹识别预处理算法
指纹识别预处理的目的是使指纹图像更清晰,边缘更明显,以便提取指纹的特征点进行识别。本文采取极值滤波和改进的平滑滤波进行噪声消除,使图像不失真;采取拉普拉斯锐化对指纹进行纹线增强,突出边缘信息,为自适应阀值的迭代二值化提供方便。
1.1 极值滤波
解梅、马争[1]认为极值滤波器的设计是基于这样一种理念:在指纹图像的采集过程中,指纹图像所受到的冲击性噪声表现为一些斑点或亮点。在一般情况下,可以认为绝大数冲击性噪声是被真实的灰度值所包围。同时噪声污染的像素要远远小于真实灰度值的像素。因此在噪声的消除过程中,无需对大多数没有被噪声污染的像素进行改变处理,只需对那些被污染的像素进行“真实值”代替处理,而这些值的确定可通过图像像素邻域的相关性来确定。
指纹处理过程可分为三个阶段:
(1) 获取原始指纹图像,进行预处理;
(2) 提取指纹特征点;
(3) 指纹识别分析判断。
在上述三个阶段中,指纹图像的预处理阶段尤为重要,该阶段对图像处理的好坏直接关系到后面两个阶段工作的开展。本文结合TMS320VC5402的特点,重点研究指纹识别的预处理算法及其DSP实现问题,其中包括指纹的极值滤波、平滑滤波、拉普拉斯锐化、迭代二值化和该算法在DSP开发平台CCS2.2的C5000上的仿真实现。这一问题的解决,可为未来指纹识别系统的脱机应用提供很有价值的参考。
1 指纹识别预处理算法
指纹识别预处理的目的是使指纹图像更清晰,边缘更明显,以便提取指纹的特征点进行识别。本文采取极值滤波和改进的平滑滤波进行噪声消除,使图像不失真;采取拉普拉斯锐化对指纹进行纹线增强,突出边缘信息,为自适应阀值的迭代二值化提供方便。
1.1 极值滤波
解梅、马争[1]认为极值滤波器的设计是基于这样一种理念:在指纹图像的采集过程中,指纹图像所受到的冲击性噪声表现为一些斑点或亮点。在一般情况下,可以认为绝大数冲击性噪声是被真实的灰度值所包围。同时噪声污染的像素要远远小于真实灰度值的像素。因此在噪声的消除过程中,无需对大多数没有被噪声污染的像素进行改变处理,只需对那些被污染的像素进行“真实值”代替处理,而这些值的确定可通过图像像素邻域的相关性来确定。
设有一待处理器像素为s0,其周围8邻域像素排列为
取邻域相关像素的均值为Ai,i∈{1,2,...8},并以四个像素为一组处理单元,则改进的极值滤波[1]算法可表述如下:
如果A0>max(Ai),i∈{1,2,...8},则
如果A0 < min(Ai), i∈{1,2,...8}, 则
s1=s2=s4=s0=min(A1,A2,A4)
s2=s3=s5=s0=min(A2,A3,A5)
s4=s6=s7=s0=min(A4,A6,A7) (3)
s5=s7=s8=s0=min(A5,A7,A8)
如果min(Ai)≤Ai≤max(Ai),i∈{1,2,...8},则将像素原值输出,不作处理。
实验结果表明,该方法能得到与中值滤波类似的效果,达到了初步去除噪声的目的。
1.2 平滑滤波
经过上面的极值滤波处理之后,图像传输过程中所形成的大多数冲击性噪声均被除去,但指纹图像中还存在着随机噪声,需进一步对图像进行平滑处理。本文采取两次平滑滤波,一次是在极值滤波之后,一次是在锐化滤波之后。改进的平滑卷积核为
系数取1/15而非原来的1/17的原因在于提高图像的对比度;而卷积核中心像素加权系数取为5是为了突出该点像素。实验结果表明,该改进是可行的,有利于突出中心像素并有效去除随机噪声。
1.3 锐化滤波
对于由于积分运算所造成的模糊图像,有必要对其模糊进行校正,进而增强指纹图像的边界。具体做法为增强指纹脊线与谷的对比度。这种增强指纹图像的高频成分,使其边缘清晰的方法称为锐化。因此,锐化的目的在于使经过平均或积分运算后变得模糊的图像的边缘和轮廓变得清晰,并使细节清晰[2]。在本文中,锐化卷积核采用拉普拉斯算子[3]:
通过该卷积核对图像进行卷积预算,能实现高通滤波,进而得到锐化后的指纹脊线。
1.4 迭代阀值二值化
指纹图像经过极值滤波、平滑滤波、拉普拉斯锐化滤波、平滑滤波后,大多数噪声都已被消除,这就为特征点提取提供了基础。为了提取特征点,需对指纹图像进行分割。本文采取迭代阀值的方法对指纹图像进行阀值分割。在图像处理中,反复地用一种运算直至条件满足而得到输出图像的方法称为迭代。迭代阀值方法如下:
①设定初始灰度阀值T(如令T=127),把指纹图像的灰度值分为两组R1和R2。
②计算两组的平均灰度值u1和u2。
③重新设定新的灰度阀值T。新的T定义为:T=(u1+u2)/2。
④依据新的T对指纹图像进行阀值分割。
这种方法是以自适应的阀值对指纹图像进行二值化处理。实验结果表明,该方法比设定固定阀值进行处理更有普遍意义,且行之有效。
2 指纹图像在CCS 2.2上的输入与输出
在设计中,采用DSP集成开发环境CCS2.2对指纹识别算法进行模拟验证。用指纹成像系统采集一幅*bmp格式指纹图像,如finger.bmp指纹图像。在该指纹图像的数据上面添加一个COFF文件的文件头。以文件名finger.out保存。*.out文件为TI的公共目标文件。利用CCS中的File-Load Data 可以将finger.out的指纹图像放到DSP的相应内存中去,本次设计中将finger.out存放于DSP的数据存储空间。利用CCS中的Image菜单,通过设置相关选项可以观察处理前的图像与处理后的图像。
3 实际指纹图像预处理效果
依据上述指纹识别预处理算法,通过CCS2.2的模拟功能,实现了指纹识别预处理的DSP处理,达到了DSP处理指纹图像的应用目的。结果如图2所示。
图2 实际指纹预处理结果
本文针对TMS320VC5402 DSP的快速、高效的特点,采取了DSP集成开发环境CCS2.2对指纹图像进行预处理。在指纹的预处理中,由于DSP具有10ns指令周期,使采用改进的极值滤波和改进的卷积核平滑滤波对指纹图像进行一次、二次平滑实时处理成为可能。实验结果表明,该方法能有效地处理指纹图像的冲击性噪声和随机噪声。而迭代二值化的运算充分利用了DSP 五级流水线操作,达到了利用DSP对指纹图像进行预处理的应用目的。
‘捌’ ccs下如何编写符合XDM标准的算法
我觉得在CCS上写算法没什么要求,按平常写就行了,符合xDM标准就是在封装的时候注意xDM接口的函数调用就行了,这是我的理解,不知道对不对
‘玖’ 什么是eXpressDSPeXpressDSP是什么意思
以往DSP软件的开发没有任何标准,不同的人写的程序一般无法连接在一起。DSP软件的调试工具也非常不方便。使得DSP软件的开发往往滞后于硬件的开发。 eXpressDSP集成了CCS(Code Composer Studio)开发平台,DSP BIOS实时软件平台,DSP算法标准和第三方支持四部分。利用该技术,可以使你的软件调试,软件进程管理,软件的互通及算法的获得,都便的容易。这样就可以加快你的软件开发进程。
1)CCS是eXpressDSP的基础,因此你必须首先拥有CCS软件。
2)DSP BIOS是eXpressDSP的基本平台,你必须学会所有DSP BIOS。
3)DSP算法标准可以保证你的程序可以方便的同其它利用eXpressDSP技术的程序连接在一起。同时也保证你的程序的延续性。
3G技术和internate的发展,要求处理器的速度越来越高,体积越来越小,DSP的发展正好能满足这一发展的要求。因为,传统的其它处理器都有不同的缺陷。MCU的速度较慢;CPU体积较大,功耗较高;嵌入CPU的成本较高。
‘拾’ 怎么使用CCS的simulator测试自己的算法
建议将这个问题发到C6000相关论坛,会得到更快速准确的答案。