DSP数字信号处理知识点(三)

发布时间:2024年01月24日

一、延迟间隙

延迟间隙:一条指令在第一个执行节拍E1以后占用的CPU周期数。

延迟间隙数:一条指令的执行或结果获得的潜在周期。

单周期类型指令(如ADD),在第i个周期读取源操作数,指令执行结果在第i+1周期才被访问,延迟间隙为0;

多周期类型指令(如MPY),在第i周期读取源操作数,指令执行结果在第i+2周期才能被访问,延迟间隙为1。?

TMS320C64xDSP各指令对应的延迟间隙数

Branch为分支跳转指令,例如go to指令;i+5=i+6-(i+1)

二、并行操作

一次取8条指令为一个取指包,宽256位(8个字)

取指包的基本格式

1)一个执行包最多包含8条指令;

2)执行包中每条指令必须使用不同的功能单元;

3)P=1代表 该指令与后一条指令并行

例如

0?0?1?1?0?1?1?0? ? ? ? ? ? ? ?——>? ?共有A、B、C//D//E 、F//G//H 4个执行包

A B C D E F G H? ? ? ? ? ?

三、资源对公共指令集的限制

1.使用相同功能单元指令的限制

在一个执行包中两条指令不可以使用同一个功能单元。

2.使用交叉通路(1X和2X)的限制

同一执行包不用同一交叉通路。

3.数据读/写的限制

1)不能对同一寄存器组同时读/写。

2)数据读写使用的地址寄存器必须与所用的功能单元(.D)处于同一个数据通路。

4.使用长定点类型(40位)数据的限制

1)每个寄存器只有一个长定点类型的数据。

2)不可以同时读/写。

5.存储器读取的限制

对同一寄存器的读取次数<=4;条件寄存器除外。

6.存储器存储的限制

在同一周期内,两条指令不可以对同一寄存器进行写操作;不同周期内就可以,可以并行执行。

四、汇编代码结构

label:? ? ? ? parallel bass? ? ? ? [condition]? ? ? ? instruction? ? ? ? unit? ? ? ? operands? ? ? ? comments

标号? ? ? ? ????并行符号? ? ? ? ? ? ? ?条件? ? ? ? ? ? ? ? ?指令? ? ? ? ? 功能单元? ? ?操作数? ? ? ? ? ? ? ? 注释

五、汇编伪指令

1.段定义伪指令

.bss? ? ? ? ? 变量段,为未初始化的变量保留空间

.data? ? ? ? 数据段,该段包含已初始化的数据

.text? ? ? ? ? 代码段,该段包含可执行代码

.sect? ? ? ? ?定义初始化了的带名称的段

.usect? ? ? ? 在一个未初始化的段中保留空间

2.初始化常数的伪指令

.int? ? ? ? .word? ? ? ? .char????????

3.格式化输出清单文件的伪指令

.list????????.nolist????????.length????????.title

4.引用其他文件的伪指令

.copy/.include????????.global????????.mlib

5.条件汇编伪指令

.if/.else/.endif? ? ? ? .loop/.endloop? ? ? ? .break

6.定义宏的伪指令

.macro? ? ? ? .endm? ? ? ? .var

7.汇编符号伪指令

.asg? ? ? ? .eval? ? ? ? .set? ? ? ? .equ? ? ? ? .end

六、C源程序转为可执行文件步骤

创建C源文件——创建工程文件——链接器命令文件——编译全部工程文件——链接——生成可执行文件

七、链接器命令文件的编写和使用

链接命令文件(CMD):DSP和目标板的存储器空间的定义,以及代码段、数据段如何分配到这些存储空间

MEMORY:定义目标系统的存储器配置空间。

SECTIONS:指定链接器将输入段组合成输出段的方式;输出段在存储器中的位置。

例如
MEMORY
{

? ?PAGE 0: PROM:origin=0x8000,length=0x06
? ?PAGE 0: VECT:origin=0xFF80,length=0x04
? ?PAGE 1: DATA:origin=0xA000,length=0x500
}
SECTIONS
{
? ? .text ? ? >PROM?PAGE 0
? ? .bss ? ? ?>DATA PAGE 1
? ? .const ? >DATA PAGE 1
}

?PAGE 0代表程序空间; ?PAGE 1代表数据空间;

MEMORY指令将程序空间分为两部分,一部分名字为PROM,起始地址为0x8000,长度为0x06;另一部分名字为VECT,起始地址为0xFF80,长度为0x04;数据空间名为DATA,起始地址为0xA000,长度为0x500;

SECTIONS指令将三个段进行分配,.text段分配到PROM程序空间中,.bss和.const段分配到DATA数据空间中。

八、DSP/BIOS的组件构成

作用:实时调度和同步;主机-目标系统通信和实时监测。

意义:减少对CPU和内存资源的占用;可重复使用,减少软件的维护费用。

九、DSP软件开发过程

十、C语言代码的优化

1.选用C编译器提供的优化选项

-o????????-pm????????-mg????????-mt? ? ? ? -ms????????-mh????????-mx

2.数据类型

3.减小存储器的相关性

4.使用内联函数(Intrinsics)

下划线开头;const/restrict

5.尽量少进行函数调用

6.使用逻辑运算代替乘除运算

7.软件流水线技术的使用

十一、汇编代码的优化

1.C代码转换为线性汇编

2.使用并行指令

3.延时间隙的利用

4.循环优化

5.软件流水技术

6.Cache优化

文章来源:https://blog.csdn.net/qq_61271980/article/details/135753430
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。