APP下载

基于C语言的dsp程序设计研究

2022-05-24崔耿豪乔娇娇曹瑛婵

科技风 2022年12期
关键词:C语言

崔耿豪 乔娇娇 曹瑛婵

摘要:数字现代化是当今社会的潮流,是电子产品现代化的象征。数字信号处理器可以准确高效处理计算机的各种信号,这些都是模拟信号无法做到的。DSP芯片作为数字处理使用,在军事、医学等领域有着不可替代的作用,因此DSP技术作为各种电子产品的核心是当今大学生以及科研人员应该掌握的一门功课。

本文主要讲述采用C语言进行C55x软件开发的基础知识,参照TI公司系列资料以及其它有关教材与文献著作,结合本人三个月来的对开发DPS系统的学习体会,进行充实、提高和编撰而成。

关键词:C语言;DSP芯片;C55x

1 背景

1.1课题背景和基础研究的重要意义

当前,我国移动数字电话已拥有数亿多的用户,其中数字电视等各类数字产品已经进入千家万户,这些产品均充分采用了先进的数字信号处理(DSP)技术对信号进行快速处理。因此,研究本课题对于数字现代化发展和物联网等技术的进步有着深刻的意义,能大大推动智能现代化的趁势。所以做为研究生的我们必须熟练掌握DSP这门课程。

1.2 DSP芯片的主要发展过程简介

DSP芯片起源于20世纪70年代末,20世纪80年代后期和90年代初期DSP在硬件结构上更适合数字信号处理的要求,拥有了硬件乘法和单指令滤波处理两种功能。

现在,DSP的制造封装工艺普遍采用贴片式封装,甚至采用BGA封装。主频也普遍达到1GHz,指令周期普遍缩短到10ns以下。其储存容量也越来越大。现在的DSP芯片内部一般都采用多级流水线结构,使DSP数据处理等功能有了很大的提高。DSP的字长也由以前的8位逐渐增长到现在的64位。较完善的开发工具也给开发者开发应用程序带来了很大的方便。

2 集成开发环境

2.1集成开发环境CCS概述和软件安装

CCS5.4是基于Eclipse开放源软件架构的TI嵌入式处理器集成开发环境。E-clipse软件架构是作为一种建立开发工具的开放架构发展起来的,目前已广泛应用于建立软件开发环境,成为一种被很多嵌入式软件开发商采用的标准架构。

系统配置要求:windows2000/XP/Win7操作系统下,1GB以上RAM,4GB以上的剩余硬盘空间。

CCS5.4的安装过程十分简单。双击安装程序,按照提示操作就行了。安装完毕,把CCS5.4软件许可证文件拷贝到ccs\ccsv\ccs_base\debugServer路径下。安装成功后,桌面上自动会出现CCS5.4图标。

2.2 C语言工程的创建

(1)选择菜单“File”中“New……”菜单选项“CCS Project”项。弹出“New CCS Project”对话框。

(2)在Project name栏中,输入“Ex3_2.pjt”。

(3)在Output type栏中,选择“Executable”。

(4)在Use default location栏中选“√”。Location栏中将出现启动CCS时设置的Workspace路径。

(5)在Device-Family下拉选单中,选择“C55xx”。对于Device-Connection下拉选单中,选择空白。对于Advanced settings的各栏,均选择缺省项。

(6)在Project templates and example中选择“Empty Project”。单击“Finish”按钮,完成Ex3_2工程的建立。

2.3 C语言工程的创建与调试

建立配置文件。选择菜单“File→New→New Target Configuration”项,弹出“New Target Configuration”对话框,填入配置的文件名字,单击Finish按钮。在弹出的对话框中的“Connection”欄中选择:Texas Instrument Simulator,在“Board or Device”栏中选择:C55xx Rex2.x CPU Cycle Accurate Simulator,单击“Save”按钮退出,即可完成配置文件的建立。

进入Debug模式,出现Debug窗口。对于C语言工程来讲,程序入口地址为main()函数入口处。

C语言工程中单步运行、连续运行、断点的设置与取消等程序运行控制的方法与汇编语言工程基本相同。单击窗口上面“run”菜单进行操作。

2.4寄存器、存储器的观察和修改

通过执行菜单命令“View-Registers”或“View-Memory Browser”,可以打开寄存器窗口或储存器观察窗口,查看或修改C55x CPU寄存器的数值或存储单元的数值。如果想要修改某存储器单元的值,可以选中相应的存储单元,之后输入新的值,单击鼠标左键或键盘回车键即可。

2.5表达式窗口和变量窗口的使用

CCS5.4还提供了表达式(Expressions)窗口和变量(Variables)窗口,用于实时地观察和修改变局变量和局部变量的值。通过执行菜单命令“View-Expressions”和“View-Variables”可以打开相应的窗口。

2.6图形显示工具

执行菜单中的命令“Tools-Graph-XX”,可以打开相应的图形信息显示窗口。例如,执行菜单命令“Tools-Graph-Single Time”可以打开相应的图形性质(Graph Properties)窗口。这里要显示的是向量x的图形,其长度为200,数据类型为16位浮点(float型)。将相应参数填入图形性质(Graph Properties)窗口,单击OK按钮确认,即可直接得到如图所示的向量x的一个时域图形。

3 TMS320C55指令系统

3.1寻址方式

C55x可以用直接、间接、绝对三种类型的寻址方式来访问数据空间、存储器映射寄存器、寄存器位和I/O空间。

3.2指令系统

4  C语言程序设计

4. 1  C55x C语言的编程理论基础

在程序设计中,汇编语言较依赖于计算机的硬件,程序没有好的可移植性。其它的高级语言可以解决这一状况,但是汇编语言的一些功能难以在这些高级语言上实现。因此,我们通常选用C语言作为开发DSP的常用语言,并且这样还能直接对硬件进行操作,解决汇编语言上某些方面上的问题。

数据类型有字符型、带符号字符型、无符号字符型、浮点、双精度等类型,每种类型的长度、内容、最大值和最小值各有不同,使用时根据需要选择合适的类型[4]。

4.1.2.2 关键字

(1)const:当定义任意变量和数组时,这个关键词可以用来确保它们的值保持不变。

(2)ioport:编辑器对原始的C语言进行了扩展,增加了ioport这个词来支持I/O寻址模式。

Interrupt、onchip、volatile等其它关键词不再列举。

4.1.3 asm指令和Pragma指令

(1)asm指令:提供了C不能提供的对硬件的访问功能。

(2)pragma指令:告诉了编译器的预处理器如何运行函数。

4.2应用程序的设计

4.2.1基础算数运算

DSP程序也有像计算机语言程序一样的各种加减乘除算法,从而实现各种逻辑功能。此处不再一一列举。

数字滤波器是DPS的基本应用,分为有限冲击响应滤波器和无限冲击滤波器两大类。在对相位要求不高的情况下,可选用IIR滤波器,在需要线性相位的情况下,则选择用FIR滤波器[5]。

采用C语言也可以很容易地实现直接型FIR滤波器。例如:

float fir(float x_in,float *x,float *b,int L)

{

float y_out;int I;

for(i=L-1;i>0;i--)

{

x[i]=x[i-1];

}

x[0]=x_in;y_out=0.0;

for(i=0;i<L;i++)

{

y_out=y_out+b[i]*x[i];

}

Return y_out;

}

直接型FIR滤波器的实现有两个基本操作,一个是输入信号向量与滤波器系数向量的内积计算,另一个是输入信号的更新处理。每个采样周期信号缓冲器都要更新一次,最开始的采样x(n-L+1)被抛弃,而其它信号则向缓冲器的右方移动一个单元,一个新的采样被插入存储单元,并被标记x(n)。

实例程序[6]

6, 11

XE "6" :

Temp=xin;

for(k=0;k<N_IIR;k++)

{

w[0][k]=temp-a[1][k]*w[1][k]-a[2][k]*w[2][k];

temp=b[0][k]*w[0][k]+b[1][k]*w[1][k]+b[2][k]*w[2][k];

w[2][k]=w[1][k];

w[1][k]=w[0][k];

}

Xoutput=temp;

(1)DSPLLB是TI公司提供的一个优化的DSP函数库,它包括50多个在C程序中调用的汇编优化的通用信号处理程序。

(2)DSPLLB新定义了Q.15(DATA)、Q.31(LDATA)、Q.3.12三個数据类型。

Q.15(DATA):一个Q.15操作数表达为short数据类型(16bit),在dsplibh头文件中预定义为DATA。

Q.31(LDATA):一个Q.31操作数表达long数据类型(32bit),在dsplib.h头文件中预定义为LDATA。

Q.3.12:含有3个整数位和12个小数位。

(3)DSPLLB库函数采用的操作数通常为向量形式。威胁函数也可用于处理标量,标量可是为维数为1的向量。

(4)DSPLIB可以分为8类:FFT函数、滤波和卷积、自适应滤波、相关、数学、三角、矩阵、其它。

快速傅里叶变换是离散傅里叶变换的一种快速算法。虽然DFT的应用十分广泛,但是计算量太大,因此FFT算法就是为了实时应用而提出的。通过FFT算法,可以使DFT的计算量大大减少,运算时间缩短1到2个数量级。

参考文献:

[1] 黄鹤松,赵洪亮TMS320C55x DSP应用系统设计[M]. 北京:北京航空航天大学出版社,2014,3:31-36.

[2]赵中伟.DSP应用设计综合实验[M].杭州:浙江工商大学出版社,2013,1:51-53.

[3]杨勇.DSP控制技术与应用[M].北京:中国电力出版社,2015,5:79-80.

[4]苏涛.DSP接口电路设计与编程[M].西安:西安电子科技大学出版,2003,11:59-61.

[5]杨凤开.DSP原理及应用[M]湖北:华中科技大学出版社, 2012,2:45-46.

[6]郑红,刘振强.嵌入式DSP应用系统设计及实例剖析—基于TMS320C/DM64x平台[M].北京:北京航空航天大学出版社,2012,1:105-10

猜你喜欢

C语言
“新工科”背景下课程思政在《C语言程序设计》课程中的实践
基于C语言的计算机编程技术
“C语言程序设计”课程混合教学探索
浅谈基于C语言的计算机软件编程
基于C语言的计算机软件编程技术探究
中职计算机C语言教学的探讨与研究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
高职单片机C语言教学三步曲
基于TI C6000系列DSP的C/C++程序优化技术