DSP软件编程与算法实现西北工业大学论题目录
DSP应用系统的一般开发流程
DSP与 MCS51,PC硬件结构对算法的影响
针对不同的算法来选择 DSP与编程语言
DSP常用算法简介
DSP算法的仿真
DSP算法的移植与实现
DSP应用系统的一般开发流程
1,概念分析与建立模型
2,算法设计与仿真
3,算法移植与软件编程
4,DSP软件仿真
5,DSP实时调试仿真
MCS51单片机内核
累加器 ACC
算术单元逻辑
ALU
堆栈指针 SP
指令计数器 PC
一般处理器内核
Cache结构
CPU内总线
PCI总线桥
流水线结构
PCI总线单内核 DSP
多总线结构
硬件乘法器
流水线结构
内部 PLL
多内核 DSP
分组 FILE结构
VLIW指令结构
EMIF接口
DSP内核特点对算法的影响
1)硬件上采用了多总线哈佛结构,提高了数据的处理能力与速度。
我们可以利用块搬移指令在程序与数据空间,两块数据空间之间实现快速的数据块搬移。
2)采用了独立的硬件乘加器,极大地提高了数字信号处理算法的运行速度。
特别在实现 FIR滤波器、相关器、卷积器等数字信号处理算法时应当充分利用这个特性。
权衡现有优化算法与算法的 DSP优化间的利弊注意现有优化算法不一定适合 DSP的实现
3) DSP设有循环寻址、位反转寻址等特殊指令循环寻址在实现滤波器,多采样率滤波器上有很大好处。
位反转寻址加速了 FFT算法的实现。
4)内部独立的 DMA总线控制器,通过 DSP器件中一组或多组独立的 DMA总线,可以实现程序执行与数据传输的并行工作。
5)指令执行采用流水线结构,具有较高的指令执行速度,我们在设计算法,特别是程序编写时应特别注意一方面利用好流水线,另一方面有效地防止流水线冲突。
针对不同的算法来选择
DSP与编程语言
汇编语言,线性汇编语言,高级语言?
首先的问题是您要做什么?
其次是您选择什么样的 DSP?
然后是您的应用对系统实时性要求如何?
最后,您可以权衡一下采用那一种语言。
DSP常用算法简介
1) 通用数字信号处理算法
FIR滤波器,IIR滤波器,DFT变换,FFT变换。
2) 机电控制算法电机伺服,PLC算法
3) 通信类算法
DTMF收发、调制解调算法、通信信道编解码
4) 信号处理算法语音信号编解码算法
G.723,G.729,MP3,AAC
静止图象编解码算法
JPEG,JPEG2000,小波变换压缩算法视频编解码算法
MPEG1,MPEG2,MPEG4,H.263压缩算法
DSP算法的仿真
选择仿真工具
常用的算法仿真工具 MATLAB,C
对于通信类还可选用 SYSTEMVIEW
高端仿真工具 SPW,COSSAP
MATLAB简介在具体编程实现某个 DSP算法之前,一般首先需要对其进行模拟仿真。 MATLAB目前已经成为非常优秀的仿真工具、现行的版本已经包含了许多强大的工具软件包。被各个学科广泛使用。
单独使用 MATLAB语言就可以实现 C,FORTRAN等语言的许多功能,并且实现起来更加简洁方便,同时它也提供同 C语言的接口。
MATLAB的不足
MATLAB有其不足之处,如数值计算只能按固定精度进行,很难作底层硬件控制,运算效率也不如 C,等等因为它主要用于数值计算,所以对于仿真、特别是定点
DSP的仿真来说、这些缺陷不影响其强大的仿真功能。
MATLAB仿真在实现某种 DSP算法功能前,一般可以先充分利用
MATLAB的编程简单、调试方便的优点来求取各种必须的系统参数,并利用所求得的系统参数模拟实现 DSP过程,来进行算法的验证和各项参数的调整。等仿真通过各项指标都以达到设计要求。然后再考虑用 C语言、或
DSP的汇编语言来实现。
FIR滤波器仿真实例仿真结果输出滤波器系数采用 C语言进行仿真在 DSP的 C编译器出现以前,C语言担当的主要是算法仿真的角色。与 MATLAB相比、它没有强大的工具软件包。但它的优势是可以很快地形成商业化软件,另外由于历史原因,国际上的各种算法的交流,都是在
UNIX平台上,用 C语言编写。所以 C也成为被广泛使用的仿真工具。
在有了 C编译器、特别是 CCS开发系统开发系统以后
C语言直接可在 CCS开发平台上完成一些系统仿真从商业化的 C,C++到 DSP的移植工作也容易了许多通常要非常注意以下两个问题
1。内存空间的使用问题
2。数据类型与精度控制问题图象小波变换的仿真实例程序仿真结果
DSP算法的移植与实现对于浮点 DSP处理器、算法的移植相对简单一些但也要注意数据的范围和精度的控制。
对于定点 DSP处理器、就要特别注意定点化工作和防止数据溢出的处理。
定点运算中数的定标
在定点 DSP中,都是采用定点数进行数值运算,其操作数一般采用整型数来表示。而许多算法的仿真往往是使用浮点数进行的。
对于定点 DSP编程来说,数的定标是一个关键性的问题
对于 16位的 DSP而言,由程序员来确定一个数的小数点将处于 16位中的哪一位。
我们可以用 Q,S法来表示,不同的表示方法所带来的数的范围和精度的
Q,S表示法及数的范围浮点数与定点数之间的转换
浮点数 ( f) 转换为定点数 I,I = f × 2Q
定点数 ( I) 转换为浮点数 f,f = I × 2-Q
例如,浮点数 f=0.5 采用 Q=15 的定标后,
则定点数 I = 0.5 × 215 = 16384
此时所表示数的范围为 –1 到 1
所表示数的精度为 2-15
数的定标要注意的问题
1,在作运算时最重要的就是保证两个操作数的定标值一样
2,程序变量的 Q值的确定,直接影响到系统的性能指标,特别对于中间变量,若 Q值定高了,提高了系统的精度,但可能会带来中间结果的溢出。若 Q值定低了就能保证不溢出,但是损失了精度。
关键就在于用理论分析或统计的方法估计出每一中间变量的可能动态范围 MAX,然后以 2MAX的数据范围来定标。
简单谈一下 COFF文件格式
TI 公司的汇编器和链接器创建的目标文件采用一种称为 COFF( Common Object File Format)。 公共目标文件格式
采用这种格式的目的是为了模块化编程的方便。通过这种格式,程序员可以自己进行代码段的管理和目标系统存储器的管理。
在 COFF文件格式中,程序员在编程时是基于代码段的概念。
块的概念
目标文件中最小单位称为块,
一个块就是存储器映像中占据连续空间空间的一块代码或数据
目标文件中每个块都是相互独立的
一般文件包括三个缺省的块。
.text 通常包含可执行代码
.data 通常包含已初始化数据
.bss 为未初始化数据保留空间
其它块
.sect,usect,const,stack
DSP编译流程使用,cmd文件来定位块
在 DSP编程中使用,cmd文件,
来定位程序块和数据块一个在 CCS上图象处理实例
CCS的安装与设置建立仿真项目
CCS上的,cmd文件设置图像仿真窗口初始化仿真图像编译程序输入,out目标文件初始化程序指针运行程序仿真仿真结果感谢各位