DSP复习总结.docx

上传人:b****6 文档编号:3799780 上传时间:2022-11-25 格式:DOCX 页数:21 大小:244.40KB
下载 相关 举报
DSP复习总结.docx_第1页
第1页 / 共21页
DSP复习总结.docx_第2页
第2页 / 共21页
DSP复习总结.docx_第3页
第3页 / 共21页
DSP复习总结.docx_第4页
第4页 / 共21页
DSP复习总结.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

DSP复习总结.docx

《DSP复习总结.docx》由会员分享,可在线阅读,更多相关《DSP复习总结.docx(21页珍藏版)》请在冰豆网上搜索。

DSP复习总结.docx

DSP复习总结

第一章(1、2、3、4要记忆)

1.什么是DSP?

一是digitalsignalprocessing数字信号处理技术,二是digitalsignalprocessor数字信号处理芯片。

2.数字信号处理的一般方法:

1)通用计算机加软件2)通用计算机加加速卡3)单片机

4)通用可编程DSP芯片5)专用DSP芯片

3.DSP特点

1)改进的哈佛结构2)指令的流水线执行方式(取指、译码、取操作数、执行)

3)硬件乘法器4)多处理单元5)特殊DSP指令6)丰富的片内硬件资源等

4.TI的DSP芯片市场占有率很高,分2000系列(电机控制等)、5000系列(便携式通信设备)、6000系列(基站或图像处理)。

5402为16位定点DSP。

什么是流水线技术?

(课后题)

每条指令可通过片内多功能单元完成取指、译码、取操作数和执行等多个步骤,实现多条指令的并行执行,从而在不提高系统时钟频率的条件下减少每条指令的执行时间。

利用这种流水线结构,加上执行重复操作,就能保证在单指令周期内完成数字信号处理中用得最多的乘法-累加运算

第二章

STM320C54x是16位定点DSP

STM320C54x有一组程序总线和三组数据总线

1.5402主要特性(表2-1)及硬件组成框图(图2-1)

总线CPU接口

程序写在片内

2.总线结构(4组,PAB、PB;CAB、CB;DAB、DB;EAB、EB),外部只有一组总线。

(记忆)

在TMS32054x内部有P、C、D、E四种16位总线

1条程序总线(PB):

传送取自程序存储器的指令代码和立即操作数

3条数据总线(CB、DB和EB):

将内部各单元连接在一起

4条地址总线(PAB、CAB、DAB和EAB):

传送执行指令所需的地址

3.PMST、ST0、ST1的功能

{PMST中的IPTR、MP/MC、OVLY、DROM

ST0中的TC、C、DPST1中的INTM、FRCT、CPL是重点}

处理器工作方式控制及寄存器PMST:

IPTR:

中断向量指针。

IPTR饿9位字段(15~7)中断向量驻留的128字的程序存储区地址。

自举加载时,可将中断向量重新映射到RAM。

复位时,这9位全置成1。

复位向量总是驻留在程序存储空间的地址FF80H。

RESET复位指令不影响这个字段的内容。

MP/MC:

微处理器或微计算机(微控制器)工作方式(片内ROM用不用)

若MP/MC=0,则不能寻址片内ROM(微计算机状态)

若MP/MC=1,则可以寻址片内ROM(微处理器状态)

OVLY:

RAM重复占位标志(片内RAM是否映射到ROM空间)

若OVLY=1,则片内RAM安排为程序和数据空间

若OVLY=0,则片内RAM只安排为数据存储空间

DROM:

数据ROM位,(用来控制片内ROM是否映射到RAM)

若DROM=1,则部分片内ROM安排为数据空间

若DROM=0,则片内ROM不安排为数据空间

CLKOFF:

时钟关断位。

CLKOFF=1,CLKOUT引脚禁止输出,保持高电平;CLKOFF=0,CLKOUT输出时钟脉冲。

状态寄存器ST0:

TC:

测试/控制标志。

用来保存ALU的测试位操作结果。

同时,可由TC的状态控制条件分支的转移和子程序调用,并判断返回是否执行。

C:

进位标志。

加法进位时,置位。

减法借位时,清零。

在加法无进位或减法无借位的情况下,完成一次加法,此标志位清零;完成一次减法,此标志位置位。

带16位移位操作的加法只能对它置位,而减法只能清零。

此时加减操作不影响进位标志。

DP:

数据存储器指针。

将DP的9位数作为高位与指令中的低7位作为低位结合,形成16位直接寻址方式下的数据存储器地址。

这种寻址方式要求ST1中的编译方式位CPL=0,DP字段可用LD指令加载一个短立即数或从数据存储器加载。

ARP:

辅助寄存器指针,用于间接寻址单操作数的辅助寄存器的选择。

当DSP处于标准运行方式时(CMPT=0),APR=0。

OVA:

累加器A的溢出标志。

溢出时,OVA=1,运算一旦发生溢出,OVA将一直保持置位状态,直到硬件复位或软件复位(OVB跟OVA一样)

状态寄存器ST1:

INTM:

中断方式控制位。

此位置位(INTM=1,由SSBX指令控制),关闭所有可屏蔽中断;

此位清零(INTM=0,由RSBX指令控制),开放所有可屏蔽中断。

此位不影响不可屏蔽中断RS。

NMI不能用存储器操作设置。

FRCT:

小数方式控制位。

FRCT=1乘法器输出自动左移1位,消去多余的符号位。

CPL:

直接寻址编辑方式标志位,标志直接寻址选用何种指针。

CPL=1,表示选用堆栈指针(SP)的直接寻址方式;

CPL=0,表示选用页指针(DP)的直接寻址方式。

BRAF:

块重复操作标志。

BRAF=1,表示正在执行块重复操作指令;BRAF=0,表示没有进行块操作。

XF:

XF引脚状态控制位,控制XF通用外部I/O引脚输出状态。

可以通过软件置位或清零控制XF引脚输出电平。

OVM:

溢出方式控制位。

OVM=1,若ALU运算发生正数溢出,则目的累加器置成正的最大值(007FFFFFFFH);若发生负数溢出,则置成负的最大值(FF80000000)。

OVM=0,直接加载实际运算结果。

此位可由指令SSBX和RSBX置位或清零。

SXM:

符号位扩展方式控制位,用以确定符号位是否扩展。

SXM=1,表明数据进入ALU之前进行符号位扩展;SXM=0,表明数据进入ALU之前进行符号位禁止扩展。

此位可由指令SSBX和RSBX置位或清零。

C16:

双16位/双精度算术运算方式控制位。

C16=1,表示ALU工作于双16位算术运算方式;C16=0,表示ALU工作于双精度算术运算方式。

FRCT:

小数方式控制位。

FRCT=1,乘法器输出自动左移1位,消去多余的符号位。

4.5402可访64KRAM、64KI/O、1MROM。

其中内RAM中的0000~001FH为CPU寄存器、0020~005FH为片内外设寄存器。

(记忆)

5.稳定状态时,2个机器周期的低电平即可可靠复位。

复位后的状态值为ST0=1800H、ST1=2900H、PMST=FF80H。

(记忆)

TMS320C54x芯片的CPU主要由哪几部分构成?

他们的功能是什么?

(所有课后题都不确定是否考)

(1)一个40位算术逻辑运算单元(ALU):

输出40位的数据送往累加器A或B,进行溢出处理、进位位和双十六位算术运算。

(2)2个40位累加器(ACCA/ACCB)(累加器A和B):

可以配置成乘法器/加法器或ALU目的寄存器。

(3)一个桶形移位器:

为输入的数据定标、对累加器的值进行算术或逻辑移位。

(4)17×17位乘法器/加法器单元:

在一个流水线状态周期内完成一次乘法累加(MAC)运算。

(5)比较,选择和存储单元:

专为Viterbi算法设计的进行加法/比较选择运算的硬件单元。

(6)指数编码器:

它可以在单个周期内执行EXP指令,求得累加器中数的指数值,并以2的补码形式存放到T寄存器中。

(7)CPU状态控制寄存器:

C54x有3个状态控制寄存器:

状态寄存器0(ST0)、状态寄存器1(ST1)、处理器工作方式状态寄存器(PMST)。

ST0和ST1中包含各种工作条件和工作方式状态;PMST中包含存储器的设置状态及其他控制信息。

控制部件是芯片的中枢神经,控制器控制CPU时序,并按时间序列发出一系列控制命令,完成指令的预取、取指令、译码、取操作数及执行等操作。

TMS320C5402增加了存储器映射程序计数器扩展寄存器XPC,以及6条扩展程序空间寻址指令。

整个程序空间分成16页,每页64KW。

如果片内程序区被寻址,则它只能在第0页。

扩展存储器的页号由XPC寄存器设定,XPC映射到数据存储单元001EH,硬件复位时,XPC=0。

复位方式:

上电复位、手动复位、软件复位

第三章

LD#0FFH,A(操作码LD/操作数#0FFH):

结果:

将立即数0FFH传送至累加器A中

1.七种寻址方式()

立即寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映射寄存器寻址、堆栈寻址。

要求理解直接寻址时CPL取值与DP、SP的关系;间接寻址中位码倒序的实现方法和循环寻址的实现方法。

立即数寻址:

RPT#99;将紧跟在RPT后面的下一条指令循环执行100次

RPT#0FFFFH;将紧跟在RPT的下一条指令循环执行10000H次

绝对地址寻址:

1.数据存储器地址寻址(dmad)如:

MVKDDATA1,*AR2把数据空间DATA1标注的地址里的数复制到由AR2指向的数据存储单元中;

2.程序存储器地址寻址(pmad)如:

MVPDTABLE1,*AR2把用TABLE1标注的程序存储器单元中的一个字复制到AR2所指向的数据存储器单元中

3.端口寻址(PA)如:

PORTRF2F0,*AR5把一个数从端口地址为F2F0的I/O口复制到AR5指向的数据存储器单元中。

4.*(1k)寻址如:

LD*(BUFFER),A把地址为BUFFER的数据单元中的数装载到累加器A中。

单数据存储器Smem

累加器寻址:

READA:

把累加器A所确定的程序存储器单元中的一个字,传送到Smem操作数所确定的数据存储器单元中

WRITA:

把Smem操作数所确定的数据单元中的一个字,传送到累加器A所确定的程序寄存器单元中

直接寻址:

直接寻址指令中的低7位是一个数据页内的偏移地址,而所在的数据页由数据页指针DP或SP决定。

该偏移量加上DP和SP的值,决定了在数据存储器中的实际地址。

直接寻址的语法格式中,用一个符号或一个常数来确定偏移值。

ADDSAMPLE,A;把存储器单元SAMPLE中的内容加到累加器A中去

ADD@x,A;将符号@加在变量x的前面

在直接寻址中,指令代码包含了数据存储器地址的低7位。

当ST1中直接寻址编译方式位CPL=0时,dmad值与9位的DP值相结合形成16位数据存储器地址;当ST1中直接寻址编辑方式位CPL=1时,dmad值加上(正偏移)SP的值形成16位的数据存储器地址。

间接寻址:

(操作数在RAM里)

间接寻址方式按照辅助寄存器中的地址访问存储器。

在间接寻址中,64KW×16bit数据空间任意单元都可通过一个辅助寄存器中的16位地址进行访问。

TMS320C54x有

8个16位辅助寄存器(AR0~AR7),两个辅助寄存器算术单元(ARAU0和ARAU1),可以根据辅助寄存器的内容进行操作,完成无符号的16位算术运算。

堆栈寻址:

共有以下4条指令使用堆栈寻址方式访问堆栈:

(1)PSHD——把一个数据存储器的值压入堆栈

(2)PSHM——把一个存储器映射寄存器的值压入堆栈

(3)POPD——把一个数据存储器的值弹出堆栈

(4)POPM——把一个存储器映射寄存器的值弹出堆栈

存储器映射寄存器寻址:

用来修改存储器映射寄存器而不影响当前数据页指针(DP)或堆栈指针(SP)的值,以存储器映射寄存器中的修改值去寻址。

在直接寻址方式下,让数据寄存器地址的高9位清零,而不管DP/SP的值;在间接寻址方式下,只用当前辅助寄存器的低7位。

例如:

AR1是用来指向一个存储器映射寄存器,包含的值为FF25H。

低7位是0025H,且PRD的地址为0025H,那么AR1指向定时器周期寄存器。

执行后,放在AR1中的值为0025H。

2.指令系统

算术运算类指令、逻辑运算类指令、程序控制类指令、装载类指令、单个循环类指令。

要求理解单条指令循环操作和多条指令(块循环)的实现方法。

单条指令不能被中断块指令可以被中断

长度为R的循环缓冲器必须从一个N位地址的边界开始,N与R应满足何种关系?

(课后题)

答:

N是满足2N>R的最小整数。

第四章

1.开发流程及工具(图4-5)

若源程序采用C/C++语言编写,需调用C编译器将其编译成汇编语言后,送往汇编器进行汇编。

对于用汇编语言编写的一个或多个源程序,则直接送往汇编器进行汇编。

汇编后产生COFF格式的目标文件,再调用链接器进行链接,生成可执行的COFF格式的目标代码,并且利用调试工具对可执行的目标代码进行软件仿真程序或硬件在线仿真器的调试,以保证应用软件的正确无误并且满足使用的要求。

如果需要可以调用Hex代码转换工具,将COFF格式的目标代码转换成EPROM编程器能够接受的代码,将代码烧制进EPROM或加载到用户的应用系统中。

COFF文件中的段(记忆)

.text段(文本段)通常包含可执行代码;(已初始化段)

.data段(数据段)通常包含初始化数据;(已初始化段)

.bss段(保留空间段)通常为未初始化变量保留存储空间。

(未初始化段)

.sect段汇编命令建立的自定义段,是已初始化段

.usect段汇编命令建立的自定义段,是未初始化段

2..cmd命令文件中MEMORY、SECTIONS命令的作用(记忆)

MEMORY伪指令——用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度。

SECTIONS伪指令——用来指定链接器将输入段组合成输出段方式,以及输出段在存储器中的位置,也可用于指定子段。

第五章CCS

新建工程文件编程编译汇编链接装载运行、调试

第六章汇编语言程序设计完整理解例题6-26-7第七章应用程序开发例题7-47-3

第八章

1.中断系统

分为不可屏蔽中断和可屏蔽中断两大类

软件屏蔽是不可屏蔽中断

中断响应过程:

查询和硬件调用

DSP不可嵌套

响应时间3-8个机器周期

复位中断是一级中断(优先级高),其他是二级中断

向量的产生方法:

中断向量地址由PMST寄存器中的9位中断向量地址指针IPTR和左移2位后的中断向量号组成

2.定时器的使用方法及初值计算。

计算公式

定时周期

定时器组成框图

CLKOUT时钟TDDR分频系数PRD计数周期

减一制计数器,减到有借位会产生一个标志,定时器产生的是周期性中断。

有2个定时器

程序P250/251

TCR定时控制寄存器TRB控制位

定时器初始化步骤

1)TCR的TSS位置1,以停止定时器;

2)装载PRD;

3)启动定时器;

程序

.title紧跟其后的是用双引号括起的源程序名

.end结束汇编命令,汇编程序将忽略此后的任何源语句,所以它应是程序的最后语句

.text紧跟其后的是汇编语言程序正文

.data紧跟其后的是已初始化数据,通常含有数据表或预先初始化的数值

.int用来设置一个或多个16位无符号整型数常数

.word用来设置一个或多个16位带符号整型数常数

.bss未初始化变量保留的储存空间

.sect建立包含代码和数据的自定义段

.usect为未初始化变量保留储存空间的自定义段

.def在此模块中定义,可为别的模块引用

.mmregs将TMS320C54x各寄存器名定义为全局符号,这样就可以直接引用寄存器(符号)

6-2:

计算y=x1+x2+x3+x4+x5,主要程序如下

.title“zh1.asm”;程序名

.mmregs

STACK.usect“STACK”,10H;堆栈的设置

.bssx,5;为x预留5个单元空间

.bssy,1;为y预留1个单元空间

.defstart;定义标号

.data;定义数据段

table:

.word10,20,3,4,5;x1,x2,x3,x4,x5的值

.text;定义代码段

start:

STM#0,SWWSR;插入0个等待状态

STM#STACK+10H,SP;设置堆栈指针初值

STM#x,AR1;x所在单元地址传给AR1(AR1指向x)

RPT#4;重复下一指令5次

MVPDtable,*AR1+;将程序空间5个数传给数据存储器

LD#0,A;0给A

CALLSUM;调用SUM

end:

Bend;循环等待

SUM:

STM#x,AR3;将数据存储器第一个数x1的地址传给AR3

STM#4,AR2;4给AR2

loop:

ADD*AR3+,A;A=A+x1

BANZloop,*AR2-;若AR2!

=0,则循环,并修改AR2若AR2=0,则不循环

STLA,@y;将A的低端字存入结果y,高端字省去

RET;子程序返回

.end

/*zh1.cmd*/

MEMORY

{PAGE0:

EPROM:

org=0E000Hlen=0100H

VECS:

org=0FF80Hlen=0004H

PAGE1:

SPRAM:

org=0060Hlen=0020H

DARAM:

org=0080Hlen=0100H

}

SECTIONS

{.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

.bss:

>SPRAMPAGE1

STACK:

>DARAMPAGE1

.vectors:

>VECSPAGE0

}

例6-2中用AR2做为循环计数器,设初值为4,共执行5次加法。

也就是说,应当用迭代次数减一后加载循环计数器。

执行结果:

数据存储单元0065H的内容为002AH(42)

 

例6-7example.asmy=a1*x1+a2*x2+a3*x3+a4*x4

.title“example.asm”;程序名

.mmregs

STACK.usect“STACK”,10H;堆栈的设置

.bssa,4;为变量a分配4个字的存储空间

.bssx,4;为变量x分配4个字的存储空间

.bssy,1;为变量y分配4个字的存储空间

.defstart;定义标号

.data;定义数据段

table:

.word1,2,3,4;a1,a2,a3,a4值

.word8,6,4,2;x1,x2,x3,x4值

.text;定义代码段

start:

STM#0,SWWSR;插入0个等待状态

STM#STACK+10H,SP;设置堆栈指针初值

STM#a,AR1;AR1指向a(x所在单元地址传给AR1)

RPT#7;重复下一指令7次

MVPDtable,*AR1+;将程序空间8个数传给数据存储器

CALLSUM;调用SUM

end:

Bend;循环等待

SUM:

STM#a,AR3;将数据存储器第一个数a1的地址传给AR3

STM#x,AR4;将数据存储器第五个数x1的地址传给AR4

RPTZA,#3;A清零,重复4次下条指令

MAC*AR3+,*AR4+,A;执行乘法累加和,结果放在A中

STLA,@y;将A的低端字存入结果y,高端字省去

RET;循环等待

.end

 

例7-4FIR滤波器

存放h0--h79的系数表及存放数据的循环缓冲区均设在DARAM中

.title“FIR41.ASM”;定义源程序名

.mmregs;定义存储器映象寄存器

.defstart;定义语句标号start

.bssy,1;为结果y预留1个甘愿的空间

xn.usect“xn”,80;自定义数据空间

h.usect“h”,80;自定义数据空间

PA0.set0;定义PA0为输出端口

PA1.set1;定义PA1为输入端口

.data

table:

.word-6*32768/10000,-5*32768/10000;h0,h1

.word-1*32768/10000,4*32768/10000;h2,h3

.word9*32768/10000,9*32768/10000;h4,h5

.word3*32768/10000,-7*32768/10000;h6,h7

.word-16*32768/10000,-18*32768/10000;h8,h9

.word-9*32768/10000,10*32768/10000

.word29*32768/10000,35*32768/10000

.word20*32768/10000,-12*32768/10000

.word-47*32768/10000,-61*32768/10000

.word-40*32768/10000,12*32768/10000

.word71*32768/10000,100*32768/10000

.word74*32768/10000,-6*32768/10000

.word-103*32768/10000,-159*32768/10000

.word-131*32768/10000,-12*32768/10000

.word146*32768/10000,256*32768/10000

.word234*32768/10000,56*32768/10000

.word-218*32768/10000,-449*32768/10000

.word-475*32768/10000,-185*32768/10000

.word417*32768/10000,1195*32768/10000

.word1920*32768/10000,2357*32768/10000

.word2357*32768/10000,1920*32768/10000

.word1195*32768/10000,417*32768/10000

.word-185*32768/10000,-475*32768/10000

.word-449*32768/10000,-218*32768/10000

.word56*32768/10000,234*32768/10000

.word256*32768/10000,146*32768/10000

.word-12*32768/10000,-131*32768/10000

.word-159*32768/10000,-103*32768/10000

.word-6*32768/10000,-74*32768/10000

.word100*32768/10000,71*32768/10000

.word12*32768/10000,-40*32768/10000

.word-61*32768/10000,-47*32768/10000

.word-12*32768/10000,20*32768/10000

.word35*32768/10000,29*32768/10000

.word10*32768/10000,-9*32768/10000

.word-18*32768/10000,-16*32768/10000

.word-7*32768/10000,3*32768/1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1