武汉理工 DSP原理及应用 实验指导书.docx
《武汉理工 DSP原理及应用 实验指导书.docx》由会员分享,可在线阅读,更多相关《武汉理工 DSP原理及应用 实验指导书.docx(60页珍藏版)》请在冰豆网上搜索。
武汉理工DSP原理及应用实验指导书
TMS320C5402芯片介绍
1DSP芯片介绍
1.1DSP芯片及系统
TI是全球DSP的主要供应商,其DSP芯片已经发展了好几代。
其发展过程如下:
1)C2x是技术比较成熟的一代DSP处理器,在我国有着广泛的应用。
不过它已逐渐退出历史舞台。
2)C2XX是TI公司的一代高性能、低价位定点DSP处理器。
主要有TMS320C203/C204/C205,TMSC209.TMS320F206/F207,时钟频率达40M,它是TI最早使用片内内存的一代DSP芯片。
3)C54x是TI推出的又一代高性能、低功耗定点DSP处理器。
包括541,542,545,548。
C54X满足实时嵌入设备的要求。
如电信设备,无线通线设备。
4)TMS320C62XX系列是新一代超高性能DSP处理器。
例如TMS320C6201.它的最大处理能力高达1600MIPS,即16亿次每秒定点运算,是当前市场中所有的定点DSP芯片中速度最快、处理能力最强的DSP处理器。
用于移动式无线基站、调制解调器、语音压缩、多媒体系统、家电领域。
TMS320系列中同一代芯片具有相同的CPU结构,但是片内存储器和片内外设的配置是不同的。
TMS320C54xDSP具有如下的优点:
1)具有哈佛结构的CPU,具有高度的并行性;
2)包含定点,浮点,多CPU;
3)主要用于实时处理;
4)灵活的指令集;
5)高速;
6)并行;
7)性价比高;
8)c编程。
TMS320C54xDSP芯片的总体结构如下:
从上图可以看出,DSP芯片具有计算,存储,和通信的功能。
这恰好与数字思想是吻合的。
只要对数字比特进行运算和存储及传输就能完成任何复杂的功能,这就是数字化的思想。
在此CPU充当计算功能,而片内存储起数据缓存作用,另外片内外围电路则是传输通道。
除上述结构特征外,DSP芯片还具有适合于数字信号处理的特点:
1)改进的哈佛结构。
冯·诺依曼结构,其特点是程序和数据共用一个存储空间。
统一编址依靠令计数器提供的地址进行区分。
由于对数据和程序进行分时读写,执行速度慢。
哈佛结构是程序和数据具有独立的存储空间,有着各有的独立总线。
由于可同时对数据和程序进行寻址,它大大地提高了数据处理能力。
改进型哈佛结构是在数据总线和程序总线之间建立交叉连接。
这样允许数据存放在程序存储器内,另外指令可存储在CACHE中。
2)流水线操作。
一个指令是分为取指令、译码、取操作数、执行。
显然是顺序的,但如果有多条这样的流水同时进行,将会大大减少指令执行时间。
3)采用硬件乘法器。
4)一套专门为数字信号处理而设计的指令系统。
5)快速的指令周期。
6)良好的多机并行运行特性,提供了并行运行的通信接口。
一个相对完备的DSP系统框图如下所示
DSP系统具有如下特点:
1)精度高,相比R/L/C网络只要提高A/D和D/A的精度将有效提高整体精度。
2)可靠性强。
由数字电路的特点所决定。
3)集成度高。
4)接口方便。
对于系统集成接口设计是关键。
5)灵活性好。
可编程。
6)保密性好。
1.2CPU及总线结构
TMS320C54xCPU包括:
1)具有一条程序总线,三条数据总线,四条地址总线的哈佛结构。
2)40bit的算术逻辑单元,包含一个40bit桶行移位器和两个40bit的寄存器,寄存器是用来保存CPU的运算结果或提供数据输入的。
3)可以在一个周期内执行乘及累加操作的硬件单元mac指令。
4)比较,选择,保存单元,CSSU。
5)指数编码器。
6)两个地址产生单元,包括八个辅助寄存器和两个辅助寄存器算术单元。
a)数据地址产生单元
b)程序地址产生单元
7)桶形移位器。
8)17×17bit乘法器
TMS320C54x具有增强的哈佛结构,它共有八条总线,如下图:
分开的程序和数据空间允许同时访问程序和数据。
提供了高并行性。
例如在一个周期内可以执行三次读和一次写。
正是利用了这种结构,DSP可以执行特定指令的同时把结果并行的保存起来。
1)程序总线:
用来访问程序空间的指令代码和立即数。
例如系数表,可以用三个指令访问程序空间,MVPD、READA、WRITA。
2)三条数据总线与各种单元相连,包含CPU片内外围与数据空间等。
3)四条地址总线可以在一个周期产生两个数据空间地址(使用ARAU0和ARAU1)。
1.3内部存储器组织
存储空间分成三个空间:
程序,数据,I/O.空间。
例如:
C5402具有1M的程序空间,64k的数据空间,64KI/O空间。
也就是说CPU可以访问数据的空间最大是三者的和。
空间是空间,但要有物理实现。
为了提高访问速度和稳定性,DSP内部一般都实现了存储器。
1.4k的ROM。
内容包含:
1)BOOTLOADER
2)256字的u律表
3)256A律表
4)256字的sin查找表
5)中断向量表
2.16k的DARAM(地址范围0080-7FFF)。
DARAM分成2块,每块可以在一个周期两次读,或者一次读一次写。
这16K的DARAM本身是映射在数据空间的,但同时可以将16k的映射到程序空间。
C5402的存储空间映射如下图:
1.4数据寻址
包含以下几种方式寻址:
●立即寻址
●绝对寻址
●直接寻址
●间接寻址
●累加器寻址
●堆栈寻址
●存储器映射寻址
1)立即寻址
这种寻址将操作数编码在指令中即不用立即数可以是3,5,8,9,16。
例如ld#K,asm就是3bit的操作数。
2)绝对寻址
在此种方式中,用数字和符号来表示地址。
例如:
buffer.usect“buf”,10,分成4种:
●数据空间地址寻址
MVDKSmem,buffer
●程序空间地址寻址
mvpdpmad,Smem
●端口地址寻址
PORTRFIFO,*AR5
●*(lk)寻址
LD*(buffer),A
3)累加器寻址
使用累加器里的内容作为地址。
这种寻址主要用来访问程序空间的数据。
Reada,writa。
4)直接寻址
指令直接包括操作数的地址,但它只包括低7bit地址。
7bit是地址的偏移量。
所以这种寻址要结合基地址来访问操作数。
基地址可以是DP和SP的内容。
CPL=0由DP里的9bit和7bit偏移量来合成16bit地址
CPL=1由SP里的16bit地址加上7bit偏移量来合成16bit地址
5)间接寻址
指令中并包括地址,地址是由辅助寄存器来指示的。
所以指令要指明使用哪个辅助寄存器。
例如:
ld*ar2,a,使用间接寻址的好处:
可以方便的对一块连续的数据空间进行灵活多变的访问。
6)存储器映射寄存器寻址
这种寻址方式使用来访问存储器映射寄存器,它类似于直接寻址,
但它并不需要基址指示,因为0000-007f,因此在0页,例如
STM#12,AR3
7)堆栈寻址
一般程序都要用到堆栈区,堆栈寻址的指令有:
PSHD,PSHM,POPD,POPM。
定义堆栈的方法:
首先,分配一段存储空间用作堆栈
stack.usect“stack_buf”,100
ld#stack+100,sp
1.5片内外围
1)一般I/OXF(输出)BIO(输入)可以用来指示某种含义
SSBXXF
RSBXXF
2)定时器。
C54X定时器是内置于芯片的下数计数器,能用来周期性地产生定时器中断。
定时器因此提供了一个方便的方法来执行周期I/O或其它功能。
定时器的逻辑方框图如下:
●TSS停止计数=1重新计数
●TRB重新加载周期=1
●PSC预分频值
●TDDR定时器的下除率
●TINT向CPU中断
●TOUT定时时钟输出
3)时钟产生电路。
DSP芯片内具有振荡电路和锁相倍频电路。
具有两种时钟输入方式:
一是外接晶体,则内部振荡电路工作。
二是外接时钟源。
比如有源晶振。
不管哪一种,我们提供的都是频率较低的时钟,最终都要经内部倍频后供给CPU。
这样做好处是减小了外部对时钟的干扰,及它对外界的干扰。
4)主机接口是一个8bit的并行接口,它可以与任何主设备(例如PC和单片机)或主处理器接口。
54x和主设备之间的信息交换是通过54x内部的存储单元来实现的。
对于5409,5402由于它们具有增强的主机接口,所以主设备可以访问DSP内部的全部存储单元。
主机接口是54x的外围电路,而主设备作为接口的控制者,这极大的便利了任何主设备与DSP之间交换信息。
主机接口包括:
1)三个寄存器。
这三个寄存器分别是数据锁存寄存器,地址寄存器,控制寄存器。
2)HPI控制逻辑。
3)HPI控制寄存器。
4)与DSP内部交换数据和地址的逻辑电路。
总结以下,HPI接口信号线可以分为如下几类:
1)八根数据线(HD0-HD7)。
注意它不仅用来传送数据,也用来传送地址信息和控制信息。
所以这八根数据线是主设备和DSP交换信息的通道。
2)地址信息(HCNTL0/1,HBIL,HR/W)。
注意这里地址并不是真正意义上的地址线,因为主设备并不能直接访问DSP内部的存储单元,而只能访问内部HPI的三个寄存器,所以HPI的地址线实际只有4根。
3)控制访问时序的信号线。
包含地址锁存信号HAS,片选信号HCS,数据锁存信号HDS1,HDS2。
4)中断和准备传送输出。
1)在时间(a),控制信号HCNTL0,HCNTL1,HR/W,和HBIL设置成需要的逻辑电平。
这些信号指示了访问HPI的类型,以及是访问哪个寄存器,是读还是写。
2)在时间(b),HDS1的下降沿将控制信号HCNTL0,HCNTL1,HR/W,和HBIL锁存,这样就将HPI设置成所需要的访问模式。
3)在时间(c),HDS1的上升沿指示要写入的数据已呈现在HPI数据线HD0-HD7。
上。
如果是读数据,HDS1的上升沿指示数据已被读取。
4)根据时序,就可以设计PC并口与HPI的接口程序。
从上面已知道主设备与HPI的信息交换是通过读写三个寄存器实现的。
只有在实现了访问寄存器的基础上,才能实现任何复杂的通信。
可以把访问寄存器看作是HPI-to-PC的物理通道,只有通道畅通,才能在此通道实现所需要的数据交换。
根据时序,就可以设计PC并口与HPI的物理通道。
5)多通道缓冲串口〔McBsp〕。
它是一个非常重要的接口,多可与多种设备接口。
例如与满足工业标准的编码器接口,各种模拟接口芯片〔AIC〕,串行的A/D和D/A。
McBsp是一个双向的同步串口,它与外界是通过帧同步,时钟同步,及信号线通信.帧同步指示一个串行数据帧的开始,时钟同步确定何时采样信号线上的bit。
McBsp寄存器的访问:
外部对这些寄存器的访问是通过两个寄存器来完成的:
1)一个是存放偏移量的子段寄存器
2)一个是存放访问数据的寄存器
这两个寄存器都被映射到数据存储空间,并且地址是相连的MCBSP具体的通信过程是靠一系列寄存器来控制的。
以外部的接口连接来说是非常简单的,关键在于对寄存器的设置。
可以理解成串行通信=寄存器的设置。
初始化:
包括对5个寄存器的初始化
1)采样时钟发生器
2)引脚控制
3)控制寄存器1,控制寄存器2
4)接收控制寄存器
5)发送控制寄存器
1.6中断
分为内部中断和外部中断。
而内部中断又分为软中断和硬中断。
中断的产生:
1)过INTR,TRAP,RESET指令来申请软中断
2)件中断由外部设备信号触发
3)由外部的三个中断端口来触发
4)由片内外围电路来触发。
中断的处理三步曲,
中断处理的软件实现。
1)在程序一开始要重新映射中断向量表
中断向量表告诉我们中断服务程序的入口地址。
例如stm#0011000001100000b,PMST
;001100000~~~~~~~bIPTR:
中断向量驻留在03000h
;~~~~~~~~~1~~~~~~bMP/MC_:
片内ROM不使能
;~~~~~~~~~~1~~~~~bOVLY:
片内RAM映射到程序和数据空间
;~~~~~~~~~~~0~~~~bAVIS:
地址可见模式关闭
;~~~~~~~~~~~~0~~~bDROM:
片内ROM不映射到数据空间
;~~~~~~~~~~~~~0~~bCLKOFF:
CLOCKOUT不被禁止
;~~~~~~~~~~~~~~0~bSMUL:
乘饱和被禁止
;~~~~~~~~~~~~~~~0bSST:
保存饱和被禁止中断向量表里的入口地址
2)编辑好中断向量文件
例如
***********************************************************
*文件名:
vectors.asm*
*功能:
软异步串口程序的中断向量表*
*Author:
RobertJ.DeNardo*
*TexasInstruments,Inc*
*RevisionHistory:
*
*11/12/99OriginalCodeRobertDeNardo*
***********************************************************
.mmregs;用寄存器名表示映射寄存器是合法的
.sect"vecs"
.ref_c_int00;c语言程序入口标志;外部程序定义的,本程序引用
.refHS_HANDLE
.refVS_HANDLE
.refSAMPLE_HANDLE
.ref_UARTDMARxISR;DMA接收中断服务程序
.ref_UARTDMATxISR;DMA发送中断服务程序
ResetVector:
;复位向量,每个中断源占4个字
bd_c_int00;主程序入口,延迟跳转,不破坏流水线
stm#100,sp
nmi:
RETE;NMIVector,没使用该中断
NOP
NOP
NOP
sint17.space4*16;SWI17,软件中断空间
sint18.space4*16
sint19.space4*16
sint20.space4*16
sint21.space4*16
sint22.space4*16
sint23.space4*16
sint24.space4*16
sint25.space4*16
sint26.space4*16
sint27.space4*16
sint28.space4*16
sint29.space4*16
sint30.space4*16
int0:
BHS_HANDLE;外部中断0,无条件跳转
nop
nop
int1:
BVS_HANDLE;外部中断1
nop
nop
int2:
BSAMPLE_HANDLE;外部中断2
nop
nop
tint:
RETE;定时器中断,没使用该中断
nop
nop
nop
rint0:
RETE;McBSP0接收中断,没使用该中断
nop
nop
NOP
xint0:
RETE;McBSP0发送中断,没使用该中断
nop
nop
nop
rint2:
RETE;McBSP2接收中断,没使用该中断
nop
nop
nop
xint2:
RETE;McBSP2发送中断,没使用该中断
nop
nop
NOP
int3:
RETE;外部中断3,没使用该中断
nop
nop
nop
hpi:
RETE;主机接口中断,没使用该中断
nop
nop
NOP
rint1:
RETE;McBSP1接收中断,没使用该中断
NOP
NOP
NOP
xint1:
RETE;McBSP1发送中断,没使用该中断
NOP
NOP
NOP
DMAC4Vector:
;DMA通道4中断
b_UARTDMARxISR
nop
nop
DMAC5Vector:
;DMA通道5中断
b_UARTDMATxISR
nop
nop
b$;Reserved
nop
nop
b$;Reserved
nop
nop
1)设置IMR寄存器以允许该中断。
例如:
STM#1,IMR则使能外部中断0。
2)允许全局中断。
rsbxintm
中断服务程序该做的事。
3)将一些寄存器压入堆栈。
4)清除中断响应标志。
STM#01h,IFR;清中断标志。
5)暂时屏蔽该中断andm#0fffeh,*(imr)。
6)处理程序。
7)清中段屏蔽orm#1,*(imr)。
8)出栈。
9)返回。
1.7C5402引脚和信号说明
TMS320C54xx整个系列的型号基本上都采用薄的塑料或陶瓷四方扁平封装(TQFP)。
本节描述C54xx的引脚表示图及其对应的信号说明。
下图为球面封装引脚分配图。
1)3C5402引脚和信号说明
地址与数据信号
A19~A0
输出/高阻
并行地址总线A19~A0,用于对片外数据/程序存储器及I/O寻址。
A19~A16用于扩展程序存储器寻址。
另外,数据总线具有总线保持的特性。
D15~D0
输入/输出/高阻
并行数据总线D15~D0,用于在CPU内核、片外数据/程序存储器或I/O器件之间传递数据。
当没有输出,或者当RS或HOLD起作用时,D15~D0呈高阻。
初始化、中断和复位操作信号
IACK
输出/高阻
中断响应信号,说明芯片收到了一个中断。
INT0
INT1
INT2
INT3
输入
外部用户中断输入。
它们具有优先权,优先级高于中断屏蔽寄存器和中断方式位屏蔽。
NMI
输入
非屏蔽中断。
RS
输入
复位输入使它中止执行。
MP/MC
输入
微处理器/微计算机方式选择引脚。
如果复位时该信号为低(微计算机方式),那么内部程序ROM将映射到程序存储器空间。
一般I/O信号
BIO
输入
转移控制输入。
XF
输出/高阻
外部标志输出(软件可控信号)。
XF可由指令RSBX和SSBX,或写状态寄存器ST1使信号变为高或低。
存储器控制信号
DS
PS
IS
输出/高阻
数据、程序、I/O空间选择信号。
DS、PS和IS除非与一个特定的外部空间通信时被置为低,其他时候总为高。
有效期与有效地址对应。
READY
输入
数据准备好输入,表示一个外围设备正准备好对数据进行传输。
R/W
输出/高阻
读/写信号,表明在与外围设备通信时的传递方向。
IOSTRB
输出/高阻
I/O选通信号。
通常为高,除非外部总线访问一个I/O设备时才为低。
振荡器/定时信号
CLKOUT
输出/高阻
主时钟输出信号。
该信号周期为CPU的机器周期,片内机器周期与该信号的上升沿同步。
同样,CLKOUT在EMU1/OFF为低时呈高阻态。
CLKMD1
CLKMD2
CLKMD3
输入
时钟模式片外/片内输入信号。
该信号允许选择不同的时钟方式,如晶振外部时钟和各种PLL系数。
此设置可以由软件改变。
X2/CLKIN
输入
从晶振到内部振荡器的输入引脚。
如果没有使用内部(晶体)振荡器,外部时钟信号就会输入到使用该引脚的器件中去。
内部机器周期时钟工作方式引脚(CLKMD1、CLKMD2和CLKMD3)输入的时钟方式决定。
X1
输出
内部振荡器到外部晶振的输出引脚。
如果没有使用内部振荡器,X1应该不接。
OFF影响X1。
/
振荡器/定时信号
TOUT
输出
定时器输出。
TOUT在片内定时计数器减至0时产生一个脉冲信号,该脉冲为一个时钟周期宽度。
缓冲串口信号
BCLKR0
BCLKR1
输入
接收时钟。
输入的外部时钟用于数据接收脚(DB)到缓冲串口接收移位寄存器(RSR)的时序控制。
在缓冲串口传递期间,必须有该信号。
BCLKX0
BCLKX1
输入/输出/高阻
发送时钟。
该信号用于数据从串口发送移位寄存器(XSR)到数据发送引脚的时序控制。
BDR0
BDR1
输入
可缓冲的串口数据输入。
串行数据由BDR0/BDR1在RSR中接收。
BDX0
BDX1
输出/高阻
可缓冲的串口发送输出。
串行数据通过BDX从XSR发送。
当没有数据发送或EMU1/OFF为低时,BDX0O、BDX1呈高阻态。
BFSX0
BFSX1
输入/输出/高阻
用于发送的可输入/输出的帧同步脉冲。
BFSX的下降沿将初始化一个数据发送过程,同时启动XSR的时钟。
主机接口信号
HD0~HD15
输入/输出/高阻
并行双向数据总线。
HD0-HD7
输入/输出/高阻
并行双向数据总线。
HCNTL0
HCNTL1
输入
控制脉冲。
HBIL
输入
字节确认输入。
HCS
输入
片选输入。
HDS1
HDS2
输入
数据选通输入。
HAS
输入
地址选通输入。
HR/W
输入
读/写输入。
HRDY
输出/高阻
准备好输出。
处理机构向外围设备表示已准备好
HINT
输出/高阻
中断输出。
主机接口信号
HPIENA
输入
HPI模式选择输入。
电源的信号
CVDD
电源
+VDD。
CVDD是指定的CPU核的电源电压。
DVDD
电源
+VDD。
DVDD是指定的I/O引脚的电源电压。
VSS
电源
地。
Vss是指定的器件电源地。
IEEE1149.1测试引脚
TCK
输入
IEEE标准1149.1测试时钟。
TD1
输入
IEEE标准1149.1测试数据输入。
TDO
输出/高阻
IEEE标准1149.1测试数据输出。
TMS
输入
IEEE标准1149.1测试方式选择,具有内部上拉电阻。
TRST
输入
IEEE标准1149.1测试复位。
EMU0
输入/输出/高阻
仿真中断引脚0。
EMU1/OFF
输入/输出/高阻
仿真中断引脚1。
实验一DSP开发环境的建立
一、实验目的
1、了解CC(或CCS)的组件及其安装;
2、了解DSP实验系统的组成及仿真系统的安装;
二、实验步骤
1、认真阅读“附录Ⅰ”,了解CC(或CCS)的功能组件。
2、下面以CodeComposerStudio5000(以下简称CCS)为例,介绍CCS的安装过程。
打开CCS安装光盘,点击C5000(2.0)文件夹下Setup.exe进入安装界面,点击CodeComposerStudio开始安装,
点击Next,
点击YES,
点击Next,
点击Next,
选择安装路径后,点击Next(建议使用默认安装路径),
安装等待,
点击Finish完成安装。
安装程序将在自动批处理文件中添加变量,以确保CCS的正常工作。
实验二利用CC