当前位置:首页 » 编程语言 » c语言编程dsp

c语言编程dsp

发布时间: 2022-12-31 17:07:01

A. dsp的c语言程序为什么需要优化

曾几何时汇编编程是dsp工程师的一张名片。很多人到现在谈起汇编编程还是颇为自豪的,搞得你想说自己不会都要鼓起点勇气——那眼神是恨不得把你送回火星去。这主要是因为在最开始的时候DSP上的C语言编译器不是很普遍,编译器的水平也还在起步阶段,很难用到DSP相应的硬件特性,编译效率值得商榷。而且那时DSP应用场景和复杂度远不比今天,基本上限制在数字信号处理的典型算法上,FFT,FIR,IIR滤波器,等等。这些函数和滤波器的实现相对今天的应用比较简单,用汇编语言也容易突出DSP的硬件特性。还有一个原因是那时候DSP普遍都跑的很慢,基本上在几十兆的水平。这也限制了C语言的使用。试想一下一段C代码跑的比汇编慢十倍,几十兆的DSP一下就变几兆了。
但是今天再来看这所有的一切是完全不一样了。首先是DSP的应用范围越来越广,客户越来越多的希望用同一颗芯片,在同一个平台上实现更多的设计和应用。这对DSP的设计,DSP和MCU的融合都带来重大影响。DSP和MCU之间也不是过往那井水不犯河水的安宁。随着DSP和MCU的主频先后突破1GHz,在很多应用中DSP和MCU相伴相生的场景也开始被一颗强壮的芯代替,或者DSP或者MCU。在这样的应用中,操作系统,文件系统,USB协议栈,TCP/IP,海量数据存储,样样都会用到。数字信号处理也从骨灰级的滤波器变成全系列音视频处理,OFDM基带处理,天线阵列信号处理,彩色图像重建… 试想一下这些应用哪一个不是成千上万行代码。汇编语言在编程复杂度,可移植性和可维护性上真的是遇到了前所未有的挑战。而与此相对应的是C语言和C语言编译器的蓬勃发展。今天您可以很容易找到上面提到所有这些应用和算法的C语言实现,而C语言编译器在编译效率和成熟度上都有很大的突破。也让C语言在DSP上的应用得以受到愈来愈高的重视。

B. 对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里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。

C. 请问刚开始学习DSP应该怎么学习,编程应该学习C语言还是汇编语言呢,请高手指点一下。

呵呵,看到这个问题和一些网友的回答,感到走自学成才之路的人真多!
很多人都不懂由浅入深,循序渐进的路子。

C语言是在大一学的,有了初中水平即可掌握C语言。不上大学,也能学会C语言。
学会了C语言,并不能算有什么成就。

大约在大三、大四,学习了模电、数电等课程之后,才学到单片机和DSP。
学单片机和DSP,目的就是学习硬件和汇编。
在这个期间,怎么还能提到学C语言? C语言编程不是在前两年就会了吗?
学DSP,如果学不好汇编语言,可以说是根本就没有学会DSP。

学好了硬件和软件,用什么语言编写程序,并没有规定。
粗放型的,使用C即可,想要精雕细刻,就必须用汇编语言。

D. 怎样进行DSP的C语言编程

在CCS里写C语言程序啊……

E. 做DSP开发,用C语言,对数据结构的要求高吗

要求必须高,因为学习DSP主要是用来开发高速信号处理系统,那么对算法的时间复杂度比较高,而且,嵌入式系统本身没有多大的存储空间,这样对空间复杂度要求比较高,所以,这都要求一个好的数据结构设计,故而如此。

F. CDSP课程有什么内容

这个课程内容还是挺丰富的,比如谷安天下的课程涵盖了数据安全的基础知识、安全架构、关键设计和最佳实践等多个不同的方面。

G. 关于c语言和dsp编程的问题

这个问题太常见了呀,原因是路径设置错了。
进入界面后,选择OPTIONS--选择Directories
然后设置路径,(以下是我的设置,你参考)
1:INCLUDE文件夹所在路径,Include directories: E:\TC2\INCLUDE
2:Library文件夹所在路径,Library directories: E:\TC2\LIB
3:OuPut文件夹即文件编译输出到哪个目录下
4:TurbroC程序所在的目录

最后选择 OPTIONS下的SAVE OPTIONS即可。一定要SAVE呀。

H. 小弟初学DSP,请问各位大侠:用C语言对DSP进行编程需要做些什么

1.需要知道DSP的代码编译及执行的基本原理,工程文件基本包括的内容。一般跟着hellodsp的视频教程学,再在例程上边改边学比较快。DSP和单片机有很多相似的地方。初学的话一般从流水灯开始学起。2.Matlab的代码执行原理和语法完全不同于DSP的。用执行matlab的语句直接复制到DSP是肯定不行的。但是两者的语句又十分相似,稍加改动的话,代码移植比较容易,特别是算法部分(外设接口部分就很难)。

I. 最近学习DSP,要用C语言进行编程,有没有大神能推荐一本C语言的书,能跟DSP有联系,学起来方便一点的书

如果没有任何编程基础,先随便来一本水水的C语言编程书
感觉C语言有点底子了,看看K&R的《The C programming language》第二版
《深入理解计算机系统》的第2、3章,至少要搞懂整数表示、堆栈和函数调用,其余的章节就看你兴趣了。
如果都差不多搞懂了,此时你的C算是还行了,此时可以看看C标准和C标准库的实现,同时就找点C的经典书看看,查漏补缺。
希望能帮到你

J. DSP可不可以用C语言写

当然可以啦... 只要有编译开发环境,比如Code Composer Studio,编译就可以了

热点内容
如何更改笔记本电脑密码方式 发布:2025-07-02 11:34:07 浏览:50
安卓平板不知道怎么选 发布:2025-07-02 11:33:22 浏览:14
qq空间怎么设密码 发布:2025-07-02 11:30:29 浏览:717
跑跑卡丁车如何更改服务器 发布:2025-07-02 11:27:35 浏览:298
我的世界112服务器存档 发布:2025-07-02 11:25:02 浏览:946
php类函数调用 发布:2025-07-02 11:24:27 浏览:24
redhat存储 发布:2025-07-02 11:12:50 浏览:585
优酷不能用流量缓存 发布:2025-07-02 11:10:46 浏览:941
彩虹岛小草怎么设置脚本 发布:2025-07-02 11:10:33 浏览:922
越压缩越封闭 发布:2025-07-02 11:09:10 浏览:90