第一章绪论
1. DSP与DSP技术
(1)DSP(Digital Signal Processing)----数字信号处理的理论和方法。
(2)DSP(Digital Signal Processor)----用于数字信号处理的可编程微处理器。
(3)DSP技术(Digital Signal Process)----是利用专门或通用数字信号处理芯片,完成数字信号处理的方法
和技术。
2. DSP系统的特点
(1)精度高、抗干扰能力强,稳定性好。(2)编程方便、易于实现复杂算法(含自适应算法)。(3)可程控。(4)接口简单。(5)集成方便。
3. DSP芯片的结构特点
(1)改进的哈佛结构
①哈佛结构DSP处理器将程序代码和数据的存储空间分开,各有自己的地址总线和数据总线。(目的是为了同时取指令和取操作数,并进行指令和数据的处理,从而大大提高运算速度)
②改进的哈佛结构在哈佛结构的基础上,使得程序代码和数据的存储空间之间也可以进行数据的传送。(2)多总线结构多总线结构可以保证在一个机器周期内多次访问程序空间和数据空间。
TMS320C54x内部有P、C、D、E 4条总线
P:传送取自ROM的指令代码和立即数;
C、D:传送从RAM读出的操作数;
E:传送写入到RAM中的数据;
(3)流水线技术将各指令的各个步骤重叠起来执行,而不是一条指令执行完成之后,才开始执行下一条指令。即第一条指令取指后,在译码时,第二条指令就取指,第一条指令取数时,第二条指令译码,而第三条指令就开始取指,。。。。。以此类推。
(4)多处理单元;(5)特殊的DSP指令;(6)指令周期短、功能强;(7)运算精度高;
(8)丰富的外设;(9)功耗低。
DSP最重要的特点:特殊的内部结构、强大的信息处理能力及较高的运行速度。
4.DSP芯片可以归纳为三大系列:
①TMS320C2000系列:适用于控制领域
②TMS320C5000系列:应用于通信领域
③TMS320C6000系列:应用于图像处理
第二章TMS320C54x的硬件结构
1. TMS320C54x内部结构(3大块)
(1)CPU(2)存储器系统(3)片内外设与专用硬件电路
CPU部分
①先进的多总线结构(1条程序总线、3条数据总线和4条地址总线)。
②位算术逻辑运算单元(ALU),包括1个40位桶形移位寄存器和2个独立的40位累加器。
③17×17位并行乘法器,与40位专用加法器相连,用于非流水线式单周期乘法/累加(MAC)运算。
④比较、选择、存储单元(CSSU):用于加法/比较选择。
⑤指数编码器:可以在单个周期内计算40位累加器中数值的指数。
⑥双地址生成器:包括8个辅助寄存器和2个辅助寄存器算术运算单元(ARAU)
存储器空间192 K字可寻址存储空间:64 K字程序存储空间、64 K字数据存储空间及64 K字I/O空间2.C54xDSP的三个状态和控制寄存器
(1)状态寄存器0(TS0)
(2)状态寄存器1(TS1)
(3)工作方式状态寄存器(PMST)
状态寄存器ST0(功能:反映寻址要求和计算中的状态)
DP:数据存储器页指针(共512页,每页64K字)
当ST1中的CPL=0时,DP值(9位地址)与指令中的低7位地址一道形成16位数据存储器地址。DP值也由LD指令装入。RESET指令将DP赋为0。
状态寄存器ST1 (功能:反映寻址要求、计算初始状态、I/O终端控制)
INTM:中断方式位。
(1)INTM=0,开放全部可屏蔽中断;
(2)INTM=1,关闭所有可屏蔽中断。
SSBX指令可置INTM为1,RSBX指令可将INTM清0。当复位时,INTM置1;当执行RETE或RETF指令(中断返回)时,INTM清0。
工作方式寄存器(功能:设定并控制处理器的工作方式,反映处理器工作状态)
IPTR:中断向量指针。(15~7位,共9位)
复位时,这9位全部置1,复位值为1FFh,复位向量PC=IPTR+0000000=FF80h。
3.累加器A和B
40位,其中32位数据位(双16位,双精度操作方式),8位冗余位(防止迭代运算时溢出)。
4. C54X中断系统(为实现中断功能而设置的各种硬件和软件。)
(1)中断源:最多32个(2个保留)其中: 硬件14个,软件16个
(2)中断分类:①非可屏蔽中断16个,②可屏蔽中断16(14)个
非可屏蔽中断:不能由用户用软件来屏蔽的中断。特点:一旦有非屏蔽中断请求,CPU必须予以响应。用途:用于某些十分重要的事件发生,如:掉电;
可屏蔽中断:用户根据需要可用软件开放或禁止CPU响应中断。特点:软件指令控制,灵活方便。用途:一般事件处理。
(3)硬件中断分为两类:①片内外设触发的内部硬件中断;②片外信号触发的外部硬件中断。
5. 中断处理一般过程:
(1)中断源请求中断;(2)CPU响应中断;(3)保护现场;
(4)转中断服务;(5)恢复现场;(6)中断返回;
6. C54xDSP内部的两个中断寄存器
(1)中断标志寄存器IFR
置位:当硬件或软件中断发生时,相应位置“1”(挂起)。
识别:CPU通过读IFR来识别挂起的中断。
清0:①C54复位;②中断得到处理;③写1到IFR相应位,相应的未处理的中断被清除;④IFR任何位为1时,表示一个未处理的中断。可将当前IFR内容写入IFR来清除。
(2)中断屏蔽寄存器IMR(用来屏蔽外部和内部中断)
复位时,IMR均为0,
当IMRi=0 屏蔽该中断;IMRi =1 开放该中断
当INTM=0且IMR某一位为0时,开放相应的中断。
7.中断响应时间
(1)软件和非屏蔽中断:通常情况下,CPU立即响应,并进入中断服务程序。
(2)硬件可屏蔽中断:满足以下三个条件后,在3--8机器周期之间响应。
三个条件:
①当前的中断源相应IFR标志为=1,且优先级为最高;
②IMR=1(不屏蔽);
③INTM=0(中断允许);
8.软件中断及中断向量
INTR K ;
注:? PC=中断向量地址指针+中断向量号 ? 该指令屏蔽其它可屏蔽中断 ? 该指令不影响IFR 标志位
? 不允许中断嵌套 中断向量(地址)
① 组成:IPTR + 中断向量序号 <<2
(9位) (5位)左移两位→(7位)
注:? 中断向量地址指针IPTR 位于PMST (CPU 方式控制R) 的高9位(D15~D7),可用程序设置;中断向量序号有相应的中断源(硬件或软件)提供。比如,INT0中断向量号为16(10h ),左移2位后就变成40h ,若IPTR=0001h ,那么中断向量地址为00C0h 。 ② 向量中断实现过程举例: [例1]:软硬件复位
分析:① 复位时:IPTR 全为“1”(IPTR=1FFh ),指向程序存储器最后一页(第511页) ② 软硬件复位中断向量序号为00000B 解:中断向量=1111111110000000B=FF80H
中断服务程序:从FF80H 单元开始存放(通常放一条转移指令,转到应用程序的入口处)
[例2]:已知外部中断1的中断服务入口地址为2500H ,中断向量地址指针为1F0H,试述向量中断实现过程。 分析:INT1中断向量序号为17(11H )
第三章C54x 指令系统 1.基本寻址方式(7种)
①立即寻址;②绝对寻址;③累加器寻址;④直接寻址;⑤间接寻址; ⑥存储器映射寄存器寻址;⑦堆栈寻址。 待续。。。。
第四章
【例4.1】 汇编语言程序编写方法举例
.title “example.asm ” ;用双引号括起的源程序名
.mmregs ;定义存储器映射寄存器的替代符号 STACK .usect “STACK ”, 10h ;在数据存储器中留出16个单元作为 ;堆栈区,名为STACK
??
???=<<+-==++--禁止其它可屏蔽中断
12)715(0,INTM K IPTR PC S
T PC SP IPTR K 1111 1000 0000 0000
F 8 0 0 1111 1000 0100 0100 F 8 4 4 M ...
2500H
......RETE
2500H XX XX PM
.bss a, 4
.bss x, 4 ;在数据存储器中空出4个存储单元存放
;变量x1,x2,x3和x4.
.bss y, 1
.def start ;在此模块中定义,可为别的模块引用
.data ;紧跟其后的是已初始化数据
table: .word 1, 2, 3, 4 ;在程序存储器标号为table开始的8个单
.word 8, 6, 4, 2 ;元存放初始化数据
.text ;紧跟其后的是汇编语言程序正文
start: STM #0, SWWSR ;adds no wait states
STM #STACK+10H,SP ;set stack pointer
STM #a, AR1 ;AR1 point to a
RPT #7 ;move 8 values
MVPD table, *AR1+ ;from program memory into
; data memory
CALL SUM ;call SUM subroutine
end: B end
SUM: STM #a, AR3 ;The subroutine implement
STM #x, AR4 ;multiply-accumulate
RPTZ A, #3
MAC *AR3+, *AR4+, A
STL A, @y
RET
.end ;结束汇编,汇编器将忽略
;此后的任何源语句
2. 段定义伪指令(5条)
作用:把汇编语言程序的各个部分划分在适当的段中。
.bss 为未初始化的变量保留空间;
.data通常包含了初始化的数据;
.sect 定义已初始化的带命名段,其后的数据存入该段;
.text该段包含了可执行的代码;
.usect在一个未初始化的有命名的段中为变量保留空间。
.bss和.usect伪指令创建未初始化的段;.text、.sect.、.data伪指令创建已初始化的段.
3.公共目标文件格式——COFF
COFF的核心概念:使用代码块(段)和数据块(段)编程,而不是指令或数据简单的顺序编写。段的定义:就是在编写汇编语言源程序时,采用的代码块或数据块,它占据存储器的某个连续空间。
COFF目标文件包含的段:
.text 段(此段通常包含可执行代码);
.data段(此段通常包含初始化数据);
.bss 段(此段通常为未初始化变量保留存储空间)。
.sect 建立的自定义段是已初始化段;
.usect 建立的自定义段是未初始化段。
4.MEMORY命令和SECTIONS命令的作用
(1) MEMORY命令。定义目标系统的存储器配置图,包括对存储器各部分命名,以及规定它们的起始地址和长度;
(2) SECTIONS命令。告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置。
5.堆栈用法:
压入操作:SP先减1,然后再将数据压入栈顶。
弹出操作:数据弹出后,再将SP加1。
堆栈设置:
size .set 100
stack .usect “STK”, size ;自定义一个名为STK的保留空间,共100个单元
STM #stack+size, SP ;将这个保留空间的高地址(#stack+size)赋给SP,作为栈底,
【例4.14】对数组x[5]中的每个元素加1。
.bss x, 5
begin: LD #1, 16, B
STM #4,BRC ;BRC赋值为4
STM #x,AR4
RPTB next-1 ;next-1为循环结束地址
ADD *AR4,16,B,A
STH A,*AR4+
next: LD #0, B
…
用next-1作为结束地址是恰当的。如果用循环回路中最后一条指令(STH指令)的标号作为结束地址,若最后一条指令是单字指令也可以,若是双字指令,就不对了。
【例4.15】编写一段程序,首先对数组x[20]赋值,再将数据存储器中的数组x[20]复制到数组y[20]。
.title “exp15.asm”
.mmregs
STACK .usect “STACK”, 30h
.bss x, 20
.bss y, 20
.data
table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
.def start
.text
Start: STM #x, AR1
RPT #19
MVPD table, *AR1+ ; 程序存储器传送到数据存储器
STM #x, AR2
STM #y, AR3
RPT #19
MVDD *AR2+, *AR3+ ; 数据存储器传送到数据存储器
end: B end
.end
/ exp15.cmd*/链接命令
vectors.obj
exp15.obj
-o exp15.out -m exp15.map -e start
MEMORY
{
PAGE 0:
EPROM: org=0E000h len=01F80h
VECS: org=0FF80h len=00080h PAGE 1:
SPRAM: org=00060h len=00030h DARAM: org=00090h len=01380h }
SECTIONS {
.vectors:> VECS PAGE 0 .text:> EPROM PAGE 0 .data:> EPROM PAGE 0 .bss:> SPRAM PAGE 1 .STACK:> DARAM PAGE 1 }
第六章DSP 片内外设 1.定时器的结构及特点
(1)C5402内部有定时器0(20位)和定时器1(20位)两个定时器。每个定时器有3个控制寄存器:①TIM 定时器寄存器(减1计数器);②PRD 定时器周期寄存器;③TCR 定时器控制寄存器。 (2)DSP 定时器的主要特点 ①定时器是一个减计数器。
②由16位计数器和4位预分频计数器(共20位)组成。16位计数器的触发脉冲由预分频计数器提供,预分频计数器由CPU 工作时钟决定。
③ 有复位功能。④可以选择调试断点时定时器的工作方式。 2.
定时器的中断周期
3. 定时器初始化:
(1) 将TCR 中的TSS 位置1,停止定时器。 (2) 加载PRD 。
(3) 重新加载TCR 以初始化TDDR 。
(4) 重新启动定时器。TSS 位为0,TRB 位为l, 以重载定时器周期值,使能定时器。 4.使能定时器中断(假定INTM=1):
(1) 将IFR 中的TINT 位置1,清除尚未处理完(挂起)的定时器中断。 (2) 将IMR 中的TINT 位置l ,使能定时器中断。 (3) 可以将ST1中的INTM 位清0,使能全局中断。
【例6.1】 利用定时器Timer0在XF 引脚产生周期为1s 的方波。 分析:设f=100MHz ,
定时最大值是: =10(ms), 要输出1s 的方波,1和0分别为500ms.
可定时5ms ,再在中断程序中加个100计数器, 定时器周期=10ns ×(1+9)×(1+49999)=5ms 。
CounterSet .set 100 ;定义计数次数 PERIOD .set 49999 ;定义计数周期
.asg AR1,Counter ;AR1做计数指针,重新命名以便识别 STM #CounterSet,Counter ;设计数器初值 STM #0000000000010000B,TCR ;停止计数器
STM #PERIOD,TIM ;给TIM 设定初值49999 STM #PERIOD,PRD ;PRD 与TIM 一样 STM #0000001001101001B,TCR ;开始定时器的工作
CLK TDDR PRD =T (T 1)(T 1)
?+?+
STM #0008H,IMR ;开TIME0的中断
RSBX INTM ;开总中断
End: NOP
B End
中断服务程序:TINT0_ISR
TINT0_ISR:
PSHM ST0 ;保护ST0,因要改变TC
BANZ Next,*Counter- ;计数器不为0,计数器减1,推出中断
STM #CounterSet,Counter ;计数器为0, 根据当前XF的状态,
BITF *AR2,#1 ;分别到setXF或ResetXF
BC ResetXF,TC
setXF:SSBX XF ;置XF为高
ST #1,*AR2
B Next
ResetXF:RSBX XF ;置XF为低
ST #0,*AR2
Next:
POPM ST0
RETE
end
5.串口分为4种:
(1)标准同步串口(SP); (2)带缓冲的串行接口(BSP);
(3)时分复用(TDM)串行口; (4)多通道带缓冲串行接口(McBSP)
6.标准同步串行口(SP)
标准同步串行口是一种高速、全双工同步串行口。每个串行口的发送和接收部分都有独立的时钟、帧同步脉冲以及串行移位寄存器。它由16位数据接收寄存器(DRR)、数据发送寄存器(DXR)、接受移位寄存器(RSR)、发送移位寄存器(XSR)以及控制电路组成。
7.通用I/O引脚
(1)分支转移控制输入引脚()
BIO
它可以用于监控外部设备的状态。
当时间要求严格时,它代替中断非常有用。
根据它输入的状态可以有条件地执行一个分支转移。
(2)外部标志输出引脚(XF)
XF可以用来为外部设备提供输出信号;
XF引脚由软件控制。
复位时,XF为高电平。
第8章
1.正弦信号发生器的3种基本方法
(1)查表发(2)泰勒级数展开法(3)迭代法
2.C54实现FIR滤波器的两种方法
(1)线性缓冲区法(2)循环缓冲区法
一、单项选择题
1.TMS320C54X DSP软硬件复位时,中断向量为________。
A FF00H
B FF80H
C 0080H
D 0000H
2.TMS320C54X DSP主机接口HPI是________位并行口。
A 32
B 16
C 8
D 2
3. TMS320C54X DSP采用改进的哈佛结构,围绕______条_______位总线建立。
A 8,16
B 16,8
C 8,8
D 16,16
4.TMS320C54XDSP多通道缓冲串口(MCBSP)发送和接收通道数最多可达________路。
A 128
B 64
C 32
D 16
5.TMS320C54X DSP的32个中断源分为14级,其中________级别最高。
A INTR
B NMI
C RS
D INT0
6. TMS320C54X DSP共有129条指令,分为________大类。
A 6
B 5
C 4
D 3
7.TMS320C54X DSP最多可与________个器件进行时分串行通信。
A 16
B 8
C 4
D 2
8.可编程数字信号处理器简称________。
A CPU
B DSP
C MCS
D MCU
二、填空题
1.TMS320C54X DSP共有______种基本的数据寻址方式。
2.DSP实现FIR滤波器延时一个采样周期的方法有两种,一是采用________缓冲区法,二是采用________缓冲区法。
3.DSP技术(Digital Signal Process)是利用专用或通用数字信号处理芯片,通过________________的方法对信号进行处理。
4.TMS320C54X可编程定时器的定时周期=(时钟周期)*(定标器+1)*(________________ +1)。5.TMS320C54X具有两个通用I/O口,________用于输入外设的状态;________用于输出外设的控制信号。
三、判断题
1.TMS320C54X DSP缓冲串行接口是在同步串口基础上,增加了一个自动缓冲单元,主要提供灵活的数据串长度,并降低服务中断销。()
2.循环缓冲区是一个滑动窗,包含最近的数据,若有新的数据到来,它将覆盖旧的数据。()
3.浮点DSP与定点DSP相比,价格便宜、功耗较小、运算精度稍低。()
4.TMS320C54X DSP的40位ALU和累加器,仅支持16位算术运算。()
5.C5000系列DSP低功耗、大运算量,主要用于便携式信息处理终端产品。()
四、简答题
1.DSP实现FIR滤波器的基本运算有哪些?
2.TMS320C54X DSP片内可编程定时器有哪些主要特征?
3.请简述一下TMS320C54X DSP如何将三个独立的可寻址存储空间区分开,又是通过哪些信号完成对外部程序或数据存储器的访问、I/O设备的访问和控制数据传送方向?
4.链接命令文件CMD的作用是什么?该文件由哪些部分组成?
5.TMS320C54X DSP的串行接口有哪几种类型,它们之间有什么区别?
五、编程题
按下述要求分别编写出TMS320C54X DSP汇编源程序。
1.试编写一段程序,将程序存储器中的5个数据(2,4,6,9,10)首先传送到BUF1开始的5个数据存储器单元,然后将BUF1开始的5个单元内容分别加5后,传送到BUF2开始的单元中。
要求:A源程序含必要的伪指令;
B加入适当的指令注释。
六、应用题(12分)
用TMS320C5402作为方波发生器实例如下,试分析该程序有哪几部分组成?各部分完成的主要功能?画出程序流程图。
;源程序清单
;---------------------------------- TIM0 .set 0024H
PRD0 .set 0025H
TCR0 .set 0026H
;----------------------------------- t0_flag .usect“vars”, 1
ST #1, t0_flag
STM #79, TIM0
STM #79, PRD0
STM #0269H, TCR0
;---------------------------------- STM #0008H, IFR
STM #0008H, IMR
RSBX INTM
;---------------------------------- …LOOP: B LOOP
;----------------------------------- timer0_rev: PSHM TRN
PSHM T
PSHM ST0
PSHM ST1
BITF t0_flag, #1
BC xf_out,NTC
SSBX XF
ST #0, t0_flag
B next
xf_out: RSBX XF
ST #1, t0_flag
next: POPM ST1
POPM ST0
POPM T
POPM TRN
RETE