DSP芯片技术及应用.docx

上传人:b****5 文档编号:5362264 上传时间:2022-12-15 格式:DOCX 页数:22 大小:98.69KB
下载 相关 举报
DSP芯片技术及应用.docx_第1页
第1页 / 共22页
DSP芯片技术及应用.docx_第2页
第2页 / 共22页
DSP芯片技术及应用.docx_第3页
第3页 / 共22页
DSP芯片技术及应用.docx_第4页
第4页 / 共22页
DSP芯片技术及应用.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

DSP芯片技术及应用.docx

《DSP芯片技术及应用.docx》由会员分享,可在线阅读,更多相关《DSP芯片技术及应用.docx(22页珍藏版)》请在冰豆网上搜索。

DSP芯片技术及应用.docx

DSP芯片技术及应用

DSP总结:

以下总结仅针对宁波大学DSP芯片技术及应用(通信类非控制类)这门课,个人根据重点、考点总结的,用于期末复习(请结合课本以及PPT的例子),不足之处请见谅,基本能过就是,如若其中有错请联系QQ:

493288964。

还是建议您平时学点,理解为先!

将该文章用于XX等兑换积分的行为是可耻的!

第一章绪论(简介)

1、DSP芯片特点:

采用哈佛结构;多总线结构;流水线技术;专用的硬件乘法器;特殊的DSP指令;快速的指令周期;硬件配置强;支持多处理器结构

1)CPU是冯.诺伊曼结构;DSP是数据和地址空间分开的哈佛结构。

冯.诺依曼结构:

单存储空间;统一的程序和数据空间;共享的程序和数据总线;程序指令只能串行执行

单指令周期:

100ns,现在单指令周期为:

10ns

哈佛结构:

双存储空间;程序存储器和数据存储器分开;程序总线和数据总线分开;独立编址、独立访问

改进型哈佛结构:

双存储空间、多条总线;多条数据总线;高速缓冲器(重复指令,只需读入一次)

2)采用多总线结构:

TMS320C54X:

4组总线;单机器周期内可完成的操作;

3)流水线操作

4)专用的硬件乘法器

硬件乘法累加器是DSP区别于通用微处理器的一个重要标志

MAC(乘累加)单元(独立的乘法器和加法器;单周期内完成一次乘法和一次加法运算

;MPY,MAC,MACA,MACSU等指令)

分类:

工作时钟和指令类型:

静态和一致性DSP芯片;用途分:

通用和专用型;数据格式分:

定点和浮点型

2、DSP按数据格式分为定点型和浮点型

定点DSP芯片:

数据长度16位/24位TMS320C2000/5000/6000

价格便宜、功耗较低、但运算精度稍低。

浮点DSP芯片:

数据长度32位/40位MS320C3X/4X/VC33/C67X/C8X

价格稍贵、功耗较大、但运算精度高。

3、芯片简介

TMS320VC5416PGE160主处理器芯片的性能:

频率:

160MHz   速度:

160MIPS 周期:

6.25ns

第二章:

TMS320C54X的硬件结构

1、C54X:

为低功耗,高性能而专门设计的16位定点DSP芯片

C54基本结构:

中央处理器(CPU)、内部总线结构、存储器、片内外设。

1、内部总线结构

8组16-bit总线

1组程序总线:

PB(传送从程序存储器来的指令代码和立即数)

3组数据总线:

DB、CB、EB(CB和DB总线传送从数据存储器读出的操作数。

EB总线传送写入存储器中的数据)

对应的4组地址总线:

PAB、DAB、CAB、EAB:

提供执行指令所需的地址

2、中央处理单元(CPU)

CPU主要包括以下几部分:

40位的算术逻辑单元(ALU)

2个40位累加器ACCA、ACCB

40位桶形移位寄存器

乘累加单元(MAC)

比较、选择和存储单元(CSSU)

指数编码器

CPU状态和控制寄存器

1)两个40位累加器A和B;

既可作为ALU或MAC的输入源,也可存放运算结果;

累加器A和B的区别:

累加器A的16~32位能被用作乘法-累加单元中的乘法器输入,而累加器B不行

累加器的各部分AG,BG,AH,BH,AL,BL都是存储器映象寄存器,可使用寄存器寻址方式

2)算术逻辑单元(ALU)

完成多数算术逻辑运算:

由1个40位的ALU和2个40位累加器完成

多数算术逻辑运算指令都是单周期指令

ALU的输入和输出:

X输入源、Y输入源。

X输入源(桶形移位寄存器、数据总线DB的操作数)、Y输入源(暂存器T、累加器A/B、数据总线CB的操作数)

SXM:

符号位扩展方式控制位

ALU对输入数据的预处理受SXM值的影响:

当数据存储器操作数在低16位时:

SXM=0,高位用0填充(进行无符号数运算);SXM=1,高位进行符号扩展(带符号数运算)

当数据存储器操作数在高16位时:

SXM=0,高位用0填充,低16位用0填充;SXM=1,高位进行符号扩展,低16位用0填充

对16位数:

最大正数为7FFFH,最小负数为8000H

对32位数:

最大正数为7FFFFFFFH,最小负数为80000000H

CMPSsrc,Smem:

比较src累加器高端和低端两个16位二进制补码的大小,将较大值放入Smem存储器中.

EXP编码器:

支持指数运算指令的专用硬件电路

EXP指令:

说明:

计算src的指数值并以二进制补码形式存放于T寄存器中.(TS:

D0~D5)

举例:

1.A=FFFFFFFFCBH,执行EXPA指令后A和T的值分别为多少?

A=FFFFFFFFCBH,T=0019H

EXP常与NORM联合使用,实现累加器的归一化(定点数的定标)。

NORM指令:

NORMsrc[,dst]

功能:

(src)<

例一:

EXPA

NORMA

假设A=FFFFFFF001H,以上两条指令执行后,A和T的值分别为多少?

T=0013HA=FF80080000H

例二:

NORMB,A

若A=FFFF8FF302H,B=210A0A0A0AH,T=FFF9H

思考:

执行后A、B及T的值?

A=0042141414HB=210A0A0A0AHT=FFF9H

3)乘累加单元

MAC单元由以下部分组成:

乘法器,40位的专用加法器,带符号/无符号输入控制,暂存器(TREG),小数控制(FRCT),零检测器,舍入器(二进制补码)和溢出/饱和逻辑.

FRCT:

小数相乘方式控制位

当FRCT=1时,乘法结果左移1位,消去多余的符号位,相应的定标值加1

乘法器的两个输入:

例:

MACPSmem,pmad,src

MACASmem,B

4)CPU状态和控制寄存器

C54x有三个16位的状态和控制寄存器

状态寄存器ST0

状态寄存器ST1

处理器工作方式状态寄存器PMST

ST0、ST1中包含各种工作条件和工作方式的状态

PMST中包含存储器的设置状态和其他控制信息

ST0:

反映寻址要求和计算的中间运行状态

ARP:

辅助寄存器指针(AR0~AR7)

TC:

测试/控制标志位

如:

CMPMSmem,#lk

BCagain,NTC

C:

进位标志,加法进位时,置1;减法借位时,清0

OVA/OVB:

累加器A/B的溢出标志

当运行结果送入累加器A或B中且发生溢出时,OVA或OVB置1。

DP:

数据存储器页指针,对应16位数据存储器地址的高9位(基地址)

如:

ld#4,dp

st#1,1;指令中给出低7位地址(偏移地址)

ST1:

反映寻址要求,计算的初始状态设置,I/O及中断控制。

BRAF:

块重复操作标志位(RPTB指令)

CPL:

直接寻址选用何种指针,SP(CPL=1)或DP(CPL=0)

XF:

控制XF通用外部I/O引脚输出状态,可对XF进行复位和置位

INTM:

置1,关闭所有可屏蔽中断

OVM:

累加器是否溢出保护,置1(要保护)。

SXM:

符号位扩展方式控制位,控制进行无符号数运算还是带符号数运算。

C16:

双精度/双16位运算方式,置1(双16位)。

FRCT:

小数方式控制位。

ASM:

累加器移位方式控制位(5位)。

PMST:

设置并控制处理器的工作方式

IPTR:

中断向量指针,决定中断向量表起始地址的高9位。

复位时,FF80H

3、存储器(片内存储器)

包括片内ROM、DARAM、SARAM

DARAM:

双访问RAM单机器周期内可被访问2次

如:

MACXmem,Ymem,src

SARAM:

单访问RAM机器周期内只能被访问1次

片内DARAM和SARAM可映射到数据空间或程序空间

CPU在单周期内可执行4次存储操作:

1次取指、2次读操作数和1次写操作数

并行结构、多总线及片内RAM的双寻址能力

4、存储器空间:

C54xDSP具有三个独立的空间

程序空间:

随地址线根数不同而不同。

如:

16根(64K),20根(1M,C5402),23根(8M,C5416)

数据空间:

64K

程序空间:

64K

I/O空间:

64K

片内、片外程序空间统一编址!

片内、片外数据空间统一编址!

1)程序存储空间:

存放指令、立即数和系数表1兆字

C5416:

8M字的空间,整个程序空间分成128页(XPC=0~127)每页均64K字

与程序寻址相关的寄存器:

程序计数器PC:

包含程序存储器地址的16位寄存器

控制程序的运行过程,顺序执行时,PC=PC+1

扩展程序计数器XPC(7位寄存器)

程序长转移时,PC=程序存储器地址(0~15),XPC=程序存储器地址(16~22)。

内部ROM:

不同型号的芯片内部ROM配置不同

C5402:

有4K字的片内ROM

映射到程序空间的F000H~FFFFH:

高2千字由TI定义(F800H~FFFFH),图2.5.3

F800H:

引导程序

FF80H:

中断向量表

2)数据存储空间:

用来存储数据:

包括需处理的数据和数据处理的中间结果。

空间的配置:

共64K字

DROM标志位:

决定片内ROM是否映射到数据空间

F000H-FEFFH:

由DROM标志位控制定义在片内还是片外ROM存储器。

为了提高并行能力,片内DARAM和数据ROM细分成若干个数据块。

如图2.5.4:

每80H(128)个存储单元为一个数据块。

DP:

数据存储器的高9位地址

数据页0(DP=0,0000H-005FH):

特殊功能寄存器空间

存储器映射寄存器MMR:

通过访问映射寄存器就可实现对CPU和外设存储器的相应操作。

CPU寄存器(0000H~001FH):

27个

用于程序的运算处理和寻访方式的选择及设定,表2.5.2

片内外设寄存器(0020H~005FH)

用来控制片内外设电路的状态

寻址需2个机器周期

不同型号的‘C54X芯片具有不同的片内外设寄存器

3)I/O空间用于对片外设备的访问64K字

寻址指令仅两个:

PORTR和PORTW

相应的选通、控制信号

PMST寄存器的三个位共同影响存储器的结构:

MP/MC:

DSP工作于微处理器模式还是微计算机模式(程序存储空间是否使用片内ROM存储器):

F000H-FFFFH:

当MP/MC=0时,定义为内部ROM

当MP/MC=1时,定义为外部存储器

OVLY:

片内RAM是否映射到程序空间(1:

是,0:

否)

OVLY=0时,0000H-3FFFH:

全部定义为外部存储器

OVLY=1时,0080H-3FFFH:

定义为内部DARAM存储器

DROM:

片内ROM是否映射到数据空间(1:

是,0:

否)

5、片内外设电路

通用I/O引脚(XF(输出)BIO/(输入))

定时器

时钟发生器

主机接口HPI

串行通信接口

软件可编程等待状态发生器

可编程分区转换逻辑

片内外设寄存器(0020H~005FH)

程序存储器:

存放程序代码,系数表和立即数等

PC:

程序计数器,16位寄存器,64K空间

XPC:

扩展程序计数器,7位寄存器,访问扩展程序存储器,长转移,长调用,如FB[D],FCALL[D]等

程序存储器操作数pmad等,如MVPD,MACP等

复位时,PC=FF80H

顺序执行程序时,PC=PC+1

流水线:

预取指、取指、译码、寻址、读数和执行共6个操作阶段。

第三章TMS320C54XDSP芯片的指令系统(ppt例题)

1、指令的表示方法

指令的两种表示法:

助记符形式和代数表达式

操作数域:

立即数,寄存器,程序空间地址,数据空间地址或I/O地址。

立即数:

#为前缀,间接寻址:

*为前缀。

程序存储器操作数(存储器地址):

Pmad,extpmad,Pmem

数据存储器操作数:

dmad,Dmem,Smem,Sind,Xmem,Ymem,Lmem(32位)

2、寻址方式:

数据寻址和程序寻址

数据寻址(7种基本方式)

1)立即数寻址

立即数寻址(K,k3,k5,k9,lk)

短立即数:

3,5,8,9位(单字指令中)

长立即数:

16位(双字指令中),

立即数:

#前缀

LD#80h,A

RPT#99;单字指令

RPT#7DFFH;双字指令

2)绝对地址寻址

数据寻址(绝对地址寻址):

指令中包含16位地址,寻址存储单元;至少为双字长指令,有四种类型:

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

操作数存放于数据存储单元,确定该单元地址

主要指令:

MVDKSmem,dmad;dmad=Smem

MVDMdmad,MMR

MVKDdmad,Smem

MVMDMMR,dmad

例:

MVDM2000H,T

RPT#19;数据块的复制

MVMDAR2,SAMPLE;SAMPLE为常数表示的地址

MVKD0200H,*AR2+

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

确定程序存储器中的一个地址

主要指令:

FIRSXmem,Ymem,pmad

MACDSmem,pmad,src

MACPSmem,pmad,src

MVDPSmem,pmad

MVPDpmad,Smem

例:

MVPDTABLE,*AR7-

MACP*AR3-,COEFFS,A

端口地址(PA)寻址(符号或常数):

确定外部I/O端口的地址

主要指令:

PORTRPA,Smem

PORTWSmem,PA

例:

PORTRFIFO,*AR5

PORTW*AR1+,FIFO1

*(lk)寻址:

用符号或常数指明数据存储器中的一个地址

不能与循环指令(RPT,RPTZ)一起使用!

例:

STLA,*(y)

STHA,*(y1)

LD*(PN),A

数据寻址举例

(1):

x.set2000h

portr20h,*(x)

stm#x,ar1

ld#100,b

macp*ar1,100h,b

3)累加器寻址:

对存放数据的程序存储器寻址

将累加器的内容作为地址(16位或23位)去访问程序存储器单元

仅两条指令:

WRITA和READA

循环执行,可实现数据块的传送。

READASmem

将累加器A所确定的程序存储器单元中的值传送到数据存储单元。

如:

若A=0000000100h,AR1=0200h,执行下列指令:

READA*AR1

WRITASmem

将Smem所确定的数据存储单元中的值传送到累加器A所确定的程序存储器单元。

如:

STM#0300H,AR2

LD#18000H,A

WRITA*AR2

4)直接寻址

由基地址(DP或SP提供)和低7位偏移地址(指令中提供)共同构成16位数据存储器地址。

64K的数据空间:

分成512页,每页128个单元

DP取值范围:

0~511

7位偏移地址范围:

0~127

不改变基地址,可寻址连续的128个单元

DP复位值为0

直接寻址指令代码的格式

图3.1.1

优点:

单字指令

基地址由DP还是SP提供?

由CPL(ST1中)标志位的值决定

CPL=0:

基地址由DP(9位)提供

CPL=1:

基地址由SP(16位)提供

16位数据地址的形成过程:

CPL=0时,9位DP值为高位,指令中7位偏移值为低位,构成16位数据存储器地址。

CPL=1时,16位SP的值与指令中7位偏移值相加,形成16位数据存储器地址。

例如:

基地址由DP提供:

ld#4,dp;页指针指向数据M第4页,;片内数据区DARAM

st#1,1

st#2,2

st#3,3

st#4,4

基地址由SP提供:

STM#4000H,SP

SSBXCPL

ST#9876h,3

易混淆的问题!

LD#40H,DP

STLA,60H

;60H:

数据存储器2060H单元

STM#2000H,AR1

MVDK*AR1,60H

;60H:

数据存储器0060H单元

MVDP*AR1,60H

;60H:

程序存储器0060H单元

5)间接寻址

6)存储器映射寄存器寻址

用途:

主要用于不改变DP、SP的情况下,修改MMR中的内容。

7)堆栈寻址

“后进先出”的原则

堆栈:

保存PC值和保存数据参数

堆栈存放数据:

从高地址向低地址增长,SP总是指向堆栈中最后存入的数据单元

入栈:

先(SP)-1,数据再入栈.

出栈:

数据出栈,SP+1.

PSHMT

PSHD*AR3+;SP-1,*AR3所指单元数据入栈

POPMT

POPD*AR2;数据出栈,存入*AR2所指向单元,SP+1

寻址方式举例:

DDAT1.set1000H

PDAT1.set2000H

RSBXCPL

LD#1234h,A;立即数寻址

ST#5678h,*(DDAT1);立即数寻址和绝对地址寻址

LD#PDAT1,A

READA2H;立即数寻址,直接寻址(DP指针)和累加器寻址

SSBXCPL

ST#9876h,3H;直接寻址(SP指针)

RSBXCPL

STM#DDAT1,AR2

ST#9876h,*AR2;间接寻址

MVDK3H,DDAT1

MVKDDDAT1,1H;直接寻址和绝对地址(dmad)寻址

MVDP2H,PDAT1;直接寻址和绝对地址(pmad)寻址

STM#8888h,T;立即数寻址和存储器映射寄存器寻址

PSHMT

POPMT;堆栈寻址和存储器映射寄存器寻址

STM#4000h,AR0

RPT#29

MVPD1000H,*AR0+;程序存储器到数据存储器数据块的复制

STM#2000H,AR2

STM#3000H,AR3

LD#0,A

RPT#19

MAC*AR2+,*AR3+,A

STLA,*(y);完成20次乘累加操作

程序寻址(P47-48)

程序存储器:

存放程序代码,系数表和立即数

程序地址生成器(PAGEN)产生地址,再加载到PAB总线

3、指令系统

共有129条基本指令,包含了6种基本类型的操作:

数据传送指令

算术运算指令

逻辑运算指令

程序控制指令

并行操作指令

重复操作指令:

RPT:

单指令重复

RPTB:

块重复指令

几个寄存器:

BRC,RSA,REA,标志位BRAF

RPTZ:

多重循环,合理安排可减少执行时间

最内层循环:

RPT或RPTZ

次内层循环:

RPTB

其余层循环:

BANZ

第四章:

汇编语言程序的开发工具

核心:

链接命令文件的编写

编写C或汇编源程序,经c编译器和汇编器,.c.asm.objCOFF目标文件

经汇编器,.asm.objCOFF目标文件

经链接器,根据链接命令文件(.cmd),将多个.obj文件或库文件链接起来,分配各段地址,生成可执行文件(.out),用模拟器/仿真器,分析验证.out文件,用格式转换工具,.out.hex文件,并写入EPROM/FLASH中

注:

c编译器三个功能:

编译,汇编,链接

COFF:

公共目标文件格式

编写汇编程序时,采用段sections(代码段,数据段等)的形式,模块化编程方便,程序可移植性大

汇编器和链接器提供一些伪指令来建立和管理各种段

段(sections):

指在存储器中占据相邻空间的代码或数据块

每个COFF文件都被分成若干个段

每行汇编语句都从属一个段

一般,COFF文件都包含3种形式的段:

.text段:

代码段

.data段:

已初始化数据段

.bss段:

未初始化变量段

两种基本类型的段:

三个已初始化段

.text段:

存放程序代码

.data段:

存放已初始化数据

.sect段:

自定义段,存放初始化数据或程序代码

两个未初始化段

.bss段:

为未初始化变量保留存储空间

.usect段:

自定义段,保留存储空间

链接器有2条伪指令:

MEMORY伪指令

SECTIONS伪指令

PAGE0:

程序存储器

PAGE1:

数据存储器

第五章:

汇编语言程序设计(结合PPT和书上例题)

1)程序的控制

常用程序控制指令:

B,BC,BANZ,CALL,CC,RET,RC

2)条件操作程序

3)算术运算指令

4)堆栈的使用

5)两种数据排列方法

偶地址排列:

指令中给出的地址为偶地址

奇地址排列:

指令中给出的地址为奇地址

可修改.cmd文件实现

常使用偶地址排列法

6)小数运算程序

对DSP处理的同一个整数,小数点位置不同,表示数的大小和精度就不同。

常用:

Q表示法.

用Q0,Q1,Q2,……,Q15表示小数点分别在D0,D1,D2,……,D15位之后整数(Q0)小数(Q15)混合小数(Q1---Q14)

如,2000H(Q0和Q15各表示多少?

对Q15的小数进行定标

乘以32768(215)

如:

定义一个已初始化数据0.907:

.word32768*907/1000

第六章:

应用程序设计(结合PPT和书上例题)

第七章:

片内外设、接口及应用

1)3个16位定时器MMR:

定时寄存器TIM:

复位或定时中断时TIM内装入PRD值,并进行自减操作。

(0024H)

定时周期寄存器PRD:

存放定时时间常数。

(0025H)

定时控制寄存器TCR:

存放定时器的控制位和状态位。

(0026H)

2)定时周期计算公式:

定时周期=CLKOUT*(TDDR+1)*(PRD+1)

重新装载PSC,TIM

SRESET/:

DSP器件复位时,硬件复位

TRB:

定时器单独复位

PSC:

PSC—>0TIM:

TIM—>0

3)定时器的初始化:

初始化定时器步骤:

TSS=1,停止定时器

装载PRD值

重新载入TCR,初始化TDDR,置TSS=0和TRB=1来重载定时器周期,启动定时器

注意:

TIM和PSC的初始值!

举例:

STM#0010H,TCR;TSS=1

(1)

STM#99,PRD;加载PRD

(2)

STM#0269H,TCR

;PSC=1001B,TDDR=1001B,TSS=0,TRB=1

(加载分频系数,启动定时器)(3)

4)设置定时器中断方法:

IFR:

中断标志寄存器

当某个中断触发时,相应位置1,直到CPU识别该中断为止;

将置位1写入相应的IFR标志位,就可清除正被挂起的中断

IMR:

中断屏蔽寄存器(各位定义与IFR类似)

用于屏蔽外部和内部的硬件中断

相应位置1,允许该中断;置0,屏蔽该中断

INTM标志位:

用于使能或禁止所有可屏蔽中断(ST1中D11位)

当INTM=0,所有可屏蔽中断被使能

当INTM=1,所有可屏蔽中断被禁止

设置IFR中的TINT=1:

清除挂起的定时器中断

设置IMR中的TINT=1:

启动定时器中断

将INTM置0:

开启中断

设置定时器中断举例:

STM#0008H,IFR;清除尚未处理完

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

当前位置:首页 > 求职职场 > 职业规划

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

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