DSP期末复习整理
第一章绪论
1、基本概念(digital signal processing;digital signal processor;DSP技术)
①Digital Signal Processing:数字信号处理的理论和方法
②Digital Signal Processor:用于数字信号处理的微处理器
③DSP技术:用通用或专用的DSP处理器来完成数字信号处理的方法与技术
2、数字信号处理的优势
与模拟信号处理相比具有的优势:灵活性、精度高、可靠性好、可重复性好、抗干扰性能好、可以实现自适应算法、数据压对原信号缩影响小、可大规模集成。
3、DSP器件的结构特点
①采用哈佛结构和改善的哈佛结构:程序空间和数据空间分开编址,允许同时取指令(来自程序存储器)和取操作数(来自数据存储器),效率高。允许程序存储器与数据存储器之间进行数据传送。
②采用多总线结构:总线越多,可完成的功能就越复杂。
③采用流水线技术
④配有专用的硬件乘法-累加器
⑤具有特殊的DSP指令
⑥快速的指令周期
⑦硬件配置强
⑧支持多处理器结构
⑨省电管理和低功耗
4、什么是定点DSP,什么是浮点DSP,要求在TI网站上查找主流的定点DSP型号和浮点DSP型号。
定点DSP:数据以定点格式工作的DSP芯片称为定点DSP芯片;
TI公司:TMS320C1x/C2x、TMS320C2xx/C5x、TMS320C54xx/C62xx
浮点DSP:数据以浮点格式工作的DSP芯片称为浮点DSP芯片。
TI公司:TMS320C3x/C4x/C67x
DSP有定点与浮点两种。
定点:数据格式用整数和小数表示。大多是16位的,要考虑溢出范围,小数点的位置。
浮点:数据格式用尾数和指数表示。一般都是32位的,表示范围大,不需要考虑溢出,精度高,处理速度更快。
5、掌握利用定点DSP表述浮点数据的Q格式。如Q15数据2000H表示的十进制数值是多少?0.125用Q15表示值是多少?
定点数据表示:Qn.m
n:整数位数。
m:小数位数。
例:Q0.15
D15 D14 D13‥‥‥D1 D0
6、DSP器件的性能评价标准:传统评价标准,应用型评价标准,核心算法评价标准。
①传统的性能评价方法:MIPS:每秒执行百万条指令
MOPS:每秒执行百万次操作
MACS:每秒执行乘-累加次数
②应用型评价指标:使用完整的应用或一组应用来评价处理器的性能。如语音编码、
调制解调器应用。
③核心算法评价指标:使用核心算法应来评价处理器的性能。如FFT算法、滤波器
算法等。
7、主要产家及市场占有率:
TI:60% 、AD:16% 、MOTOROLA:14% 、LUCENT:5% 、Others:3%
8、DSP系统的构成和处理过程
X(t)——抗混叠滤波器—A/D转换器—数字信号处理—D/A转换器—低通滤波器——Y(t) DSP系统的处理过程:
①将输入信号进行抗混叠滤波,滤掉高于折叠频率的分量,防止信号频谱混叠;
②经采样和A/D转换器,将滤波后的信号转换为数字信号;
③数字信号处理器对其进行处理;
④经过D/A转换器,转成模拟信号;
⑤经过低通滤波器,滤除高频分量,得到平滑的模拟信号
9、TMS320VC5416-160的指令周期是多少毫秒?它的运算速度是多少MIPS?
解:f=160MHz,所以T=1/160M=6.25ns=0.00000625ms;运算速度=160MIPS
第二章54x系列DSP内部硬件结构
1、5416芯片的基本参数:工作电压、最高工作频率、数据宽度。
工作电压最高工作频率数据宽度
TMS320VC5416-120 1.5V 120MHz 120MIPS
TMS320VC5416-160 1.6V 160MHz 160MIPS
2、5416芯片引脚数,重点掌握引脚:I/O引脚XF、BIO、MP/MC、CLKMD1~CLKMD
3、CLKOUT、X1/X2、TOUT、RS、PS、DS、IS、NMI、INT0~INT3。
引脚数:144;
XF:外部标识输出信号,用于发送信号给外部设备。通过编程设置,可以控制外设工作。BIO:控制分支转移输入信号,用来检测外部设备状态,当BIO=0时,表示条件转移指令。MP/MC:DSP芯片工作方式选择信号微处理器或微计算机选择位。这一位的信息可以由硬件连接方式决定,也可以由软件置位或清零选择。=0,微控制器模式,可以访问片内ROM;=1,微处理器模式,不能访问片内ROM
3、5416内部包含哪些功能部件?CPU、存储器、总线、具体外设。
具体外设:I/O、定时器、时钟发生器、主机接口、软件可编程等待状态发生器、可编程分区开关、串行通信接口等。
4、CPU内部包含的功能部件?要求掌握各个功能部件的个数、位数、作用。ALU、累加器、乘法器、桶形移位器、CSSU、指数编码器、CPU控制与状态寄存器(要求掌握常用位的功能与设置方法)。
①40位算术逻辑运算单元(ALU):完成宽范围的算术逻辑运算
②2个40位累加器(ACCA和ACCB):可以作为ALU或MAC的目标寄存器,存放
运算结果,也可以作为ALU或MAC的一个输入。
③1个支持16~30位的桶形移位寄存器:
对运算前的输入数据进行数据定标;
对累加器的值进行算术或逻辑移位;
对累加器进行归一化处理;
在累加器的值存储到数据存储器之前,对欲存数据进行定标。
④17×17位乘法器:可以完成有符号数和无符号数的乘法运算。
⑤比较、选择和存储单元(CSSU):用来完成Viterbi算法中的加法/比较/选择操作。
⑥指数编码器(32位):用于支持指数运算指令的专用硬件,可以单周期内执行EXP
指令,求累加器中数的指数值。
⑦CPU控制和状态寄存器(16位):
状态寄存器0(ST0):主要是反映寻址要求和计算的中间运行状态。
状态寄存器1(ST1):主要反映寻址要求、计算的初始状态设置、I/O及中断控制。
处理器工作方式状态寄存器(PMST):主要是设定并控制处理器的工作方式,反
映处理器的工作状态
5、541
6、5402存储器的结构?寻址空间、具体配置。要会看存储器映射图。
OVLY位:RAM重复占位位;
=0,则片内RAM只安排到数据存储空间;
=1,则片内RAM可安排到程序和数据空间,这时,RAM是程序和数据共用,在具体编程使用时,用户要安排好用于程序存储和用于数据存储的范围,以免出现错误。
DROM位:数据ROM位,可让片内ROM映象到数据空间;
=0,片内ROM不能映象到数据空间;
=1,片内ROM的一部分可映象到数据空间
6、5416共有几条总线?如何分类?宽度?
8条16位总线:4条地址总线、4条数据总线。
①数据总线:
PB:用来传送取自程序存储器中的指令代码或立即数,一般称为程序总线
CB、DB:用来传送读自数据存储器中的操作数
EB:用来传送写到数据存储器中的数据
②地址总线:
PAB:传送指令代码所在的地址
CAB、DAB:传送读自数据存储器操作数的地址
EAB:传送写数据在数据存储器的目的地址。总之,是传送执行指令所需的地址
7、复位条件?复位时各个寄存器的复位值(PMST、ST0、ST1、IFR、IMR、XPC、PC、PRD、TIM、TCR)?复位时,各个中断号对应的中断入口地址是多少?
只要在RS引脚上出现2个外部时钟周期以上的低电平。
复位状态复位时:
PMST中的IPTR=1FFH
ST0=1800H
ST1=2900H(中断方式位INTM置1,关闭所有可屏蔽中断)
IFR=0000H
IMP
XPC=0
PC=FF80H
PRD=0FFFFH
TIM=0FFFFH
TCR中的TDDR=0000
XPC=0000H
8、中断的分类?软件中断,硬件中断;可屏蔽中断,不可屏蔽中断;内部中断,外部中断。5402、5416的中断源与优先级表格。
软件中断:由程序指令(INTR、TRAP或REST)产生中断
硬件中断:由外围硬件设备产生的中断
可屏蔽中断:SINT15~SINT0(16个)
不可屏蔽中断:____
RS(复位)、
_______
NMI
内部中断:
外部中断:
9、串行口有哪几种类型:同步串行口、缓冲串行口、时分多路串行口、多通道缓冲串行口
10、TLV0832的8位串行AD,用的是同步串行通信,SPI接口。
第三章DSP软件程序设计
1、公共目标文件格式(COFF0、COFF1、COFF2)概念。源文件、目标文件、可执行文件的扩展名是什么?
通过汇编器和链接器建立的可执行目标文件的格式称为公共目标文件格式,即COFF (common object file format)。
COFF文件有3种形式:COFF0、COFF1、COFF2。C54x汇编器和编译器默认建立的是COFF2文件。
?目标文件(.obj)
?源文件(.asm)(.c)
?可执行文件(.out)
?链接命令文件(.cmd)
?头文件(.h)
?列表文件名(.lib)
2、段的分类与定义方式:text、data、bss、自定义段(.sect,.usect)
段——就是在存储器中占据相邻空间的代码或数据块。每个目标文件都分成若干个段。
且每一个段都是分开和各不相同的。
所有的COFF文件都包含以下3种形式的段:
.text 已初始化段,用户程序代码(可执行文本).data 已初始化段,为某段存储空间初始化数据.bss 未初始化段,为变量保留空间
.sect 已初始化段,建立用户的自定义段.bss
.data
.text
RAM
RAM或ROM
ROM
.usect 未初始化段,建立用户的自定义段
3、汇编器与链接器的作用?什么文件是实现链接器任务?cmd文件,MEMORY,SECTIONS。
?汇编器:把指令译成代码,并根据汇编命令用适当的段将各部分程序代码和数据连
在一起,构成目标文件。
?链接器:分配存储单元,将各个段分配定位到相应的目标存储器中
各个段到底在存储器中的什么位置,对我们很重要,要弄清楚。
链接器的任务通过链接命令文件(.cmd)完成,链接命令文件则主要是通过2条命令实现:MEMORY此命令用来定义目标系统的存储器结构,包括对存储器各部分命名,以及规定它们的起始地址和长度
MEMORY
{PAGE 0: PROG: origin=0x0100,length=0x2000 /*OVLY=1,DARAM
vect: origin=0x0080,length=0x80
PAGE 1: DARAM: origin=0x2100,length=0x1000
PAGE 2: IO: origin=0x0000,length=0xffff
}
若5402工作在MP模式,OVLY=0,外部扩展一
个64K的程序存储器flash,要求片内DARAM
全部配置为数据空间,将64K的flash全部配置
为程序空间,且要把128字的中断向量地址范围
单独分个区间,请用MEMORY写出存储器配置
文件。
MEMORY
{ PAGE 0: PROG: origin=0x0000,length=0xff80
vect: origin=0xff80,length=0x80
PAGE 1: DARAM: origin=0x0000,length=0x4000
}
SECTIONS 此命令告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器的什么位置(地址分配)
4、DSP的C语言程序项目所包含的文件有哪些?C语言程序的入口是什么?C语言程序
常用的关键字有哪些?
若用户要建立一个C语言软件项目,该项目必须包括以下文件(以建一个项目example 为例):
vectors.asm ;定义复位、中断矢量源文件。
example.c ;主体源程序。
c5402.h ;定义C5402内部控制及状态寄存器。
c5402.cmd ;定义存储空间,并为段分配空间。
rts.lib ;运行库文件,由TI提供。
C的主程序是main,DSP复位时跳转到地址为FF80H的位置,如何从FF80H跳转到main执行?
Rts.lib运行时间支持库函数解决了该问题:它提供了名称为_c_int00的引导程序,通过执行该程序能进入到main主程序。
那如何从FF80H到_c_int00,我们只需在FF80H的位置放置一条汇编跳转指令:
B _c_int00
C语言程序的入口_c_int00
?ioport
用ioport定义I/O端口空间.格式为:ioport type port hex_num
即定义port hex_num是一个I/O端口,hex_num是这个I/O端口的地址.
如:ioport unsigned port0000
port0000=0x10 ;把10h数据写到地址为0000h端口
?interrupt
用来定义中断函数.与汇编语言中的中断子程序类似.如:
void interrupt c_int02()
{prevectors();
}
5、.h文件,.asm文件,.c文件,.cmd文件的编写
第四章中断系统程序设计
1、中断矢量的组成?中断矢量表? P60中断矢量表
中断服务程序在内存中的地址; 中断矢量表是中断矢量号与它相应的中断服务程序入口地址之间的转换表。中断矢量表占用存储器的最低地址区,因为每个中断矢量号要占用4个字节单元。
2、IFR、IMR寄存器的位功能?
中断标志寄存器(interrupt flag register)IFR是一个存储器映像寄存器,当一个中断出现时,IFR中的相应的中断标志位置1,知道CPU识别该中断为止。位功能见P268。
中断屏蔽寄存器(interrupt mask register)IMR是一个存储器映像的CPU寄存器,主要用于屏蔽外部和内部的硬件中断。如果状态寄存器ST1中的INTM=0,IMR寄存器中的某位置1,就能开放相应的中断。位功能见P269。
3、中断程序设计:中断初始化,矢量源文件的编写,主程序与中断服务子程序的编写
第四章定时器
1、540
2、5416内部定时器的个数?分别为2和1。P396
2、定时器的位数?是减计数器还是增计数器?
16位,减计数器。
3、定时器的控制寄存器PRD、TIM、TCR位功能?P231
PRD:用来存放定时时间常数
TIM:减1计数器
TCR:包含定时器的控制位和状态位
4、定时器定时时间计算?
定时半周期=CLKOUT*(TDDR+1)*(PRD+1)
TDDR是定时分频系数
PRD是周期数
5、假设时钟频率是40MHz,试编写在XF端输出一般周期为2ms的方波程序。
定时半周期=CLKOUT*(TDDR+1)*(PRD+1)
1/2T=(1/40M)*(9+1)*(3999+1)=1ms
#include
#include "c5416regs.h"
#define XF port3002
ioport unsigned int port3002;
main()
{
ST0=0x0;
ST1=0x4960;//CPL=1,INTM=1,SXM=1,FRCT=1,CMPT=1
asm(" SSBX INTM ");//关闭总开关
IMR=0x8;//开启定时器2
IFR=0x8;//设置定时器2工作
PMST=0xe0;//MP=1,OVLY=1,IPTR=1;
PRD=3999;//周期寄存器设置为3999+1
TCR=0x0be9;//分频系数设置为9+1
asm(" RSBX INTM ");//打开总开关
while(1);
}
void interrupt INT2_INT()
{
XF=~XF;
}
6、已知中断向量TINT=013H,中断向量地址指针IPTR=0111H,求中断向量地址是多少?
IPTR=0111H=0000 0001 0001 0001;取低9位作为中断向量地址的高9位
TINT= 013H=0000 0001 0011 ;取低7位作为中断向量地址的低7位
中断向量地址=1000 1000 1001 0011
7、时钟发生器?时钟频率与晶振频率的关系?
8、定时器程序设计:初始化、矢量源文件的编写,主程序与中断服务子程序的编写。
9、4个实验程序设计(.asm 文件,.c 文件,.cmd 文件,.h 文件) (1)基本输入输出程序设计 (2)FFT 程序设计 (3)中断程序设计 (4)定时器程序设计 10、FFT 程序设计
(1)FFT 变换时域与频域的对称关系?
时域周期性——频域离散性 时域离散性——频域周期性 时域非周期——频域连续性 时域连续性——频域非周期
(2)数字角频率与信号频率f 、采样频率fs 的关系,分辨率? πω
2=
f h s f f 2> 分辨率=N
f s (N 表示采样的点数) (3)FFT 变换对?蝶形因子的性质?(周期性与对称性)
对于长度为N 的有限长序列x(n),它的离散傅里叶变换(DFT )为: ∑-==
1
)()(N n nk N
W
n x k X ,k=0,1,2,3,4....,N-1
式中,N
j N e
W /2π-=,称为蝶形因子。
对称性:2/N k N k N W W +-= ()/2sin()/2cos(/2N k N k e W N j k
N πππ-==-) 周期性:N k N
k N W W += k N W 2的周期为N/2 PMST
ST0
ST1