DSP原理及应用课程重点知识讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、简述DSP系统的构成和工作过程。
答:DSP系统的构成:
一个典型的DSP系统应包括抗混叠滤波器、数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等。
DSP系统的工作过程:
①将输入信号x(t)经过抗混叠滤波,滤掉高于折叠频率的分量,以防止信号频谱的混叠。
②经过采样和A/D转换器,将滤波后的信号转换为数字信号x(n)。
③数字信号处理器对x(n)进行处理,得数字信号y(n)。
④经D/A转换器,将y(n)转换成模拟信号;
⑤经低通滤波器,滤除高频分量,得到平滑的模拟信号y(t)。
2、简述DSP系统的设计步骤。
答:①明确设计任务,确定设计目标。
②算法模拟,确定性能指令。
③选择DSP芯片和外围芯片。
④设计实时的DSP芯片系统。
⑤硬件和软件调试。
⑥系统集成和测试
3、TMS320C54X芯片的基本结构都包括哪些部分?
答:①中央处理器
②内部总线结构
③特殊功能寄存器
④数据存储器RAM
⑤程序存储器ROM
⑥I/O口
⑦串行口
⑧主机接口HPI
⑨定时器
⑩中断系统
4、TMS320C54X芯片的CPU主要由哪几部分组成?
答:①40位的算术运算逻辑单元(ALU)。
②2个40位的累加器(ACCA、ACCB)。
③1 个运行-16至31位的桶形移位寄存器。
④17×17位的乘法器和40位加法器构成的乘法器-加法器单元(MAC)。
⑤比较、选择、存储单元(CSSU)。
⑥指令编码器。
⑦CPU状态和控制寄存器。
0、TMS320VC5402共有多少可屏蔽中断?它们分别是什么?RS和NMI属于哪一类中断源?
答:TMS320VC5402有13个可屏蔽中断,RS和NMI属于外部硬件中断
1.‘C54参数
指令周期:即执行一条指令所需的时间,通常以ns(纳秒)为单位.
MAC时间:即完成一次乘法-累加运算所需要的时间。
FFT执行时间:即运行一个N点FFT程序所需的时间
MIPS:即每秒执行百万条指令;
MOPS:即每秒执行百万次操作;
MFLOPS:即每秒执行百万次浮点操作;
BOPS:即每秒执行十亿次操作。
2.什么是冯诺依曼结构和哈佛结构?它们有什么区别?
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。
区别是地址空间和数据空间分开与否
冯诺依曼结构数据空间和地址空间不分开
哈佛结构数据空间和地址空间是分开的
3.什么是流水线技术?
每条指令的通过片内多功能单元完成取指、译码、取操作数的执行等多个步骤,实现多条指令的并行执行,从而在不提高系统时钟频率的条件下减少每条指令的执行时间。
4. TMS320C54xCPU的特点:
先进的多总线结构;
40位算术逻辑运算单元(ALU),包括一个40位桶形移位寄存器和两个独立的40位累加器;
17×17的并行乘法器与40位专用加法器相连;
比较、选择、存储单元(CSSU);
指数编码器;
双地址生成器包括8个辅助寄存器和两个辅助寄存器算术运算单元(ARAU)。
5. TMS320C54x的总线结构:
程序总线(PB)传送从程序存储器来的指令代码和立即数;
3组数据总线(CB、DB和EB)连接各种元器件,CB和DB总线传送从数据存储器读出的操作数,EB总线传送写入到存储器中的数据;
4组地址总线(PAB、CAB、DAB和EAB)传送执行指令所需的地址。
6.寻址方式
立即寻址:指令中有一个固定的立即数;
绝对地址寻址:指令中有一个固定的地址(16位);
累加器寻址:按累加器的内容作为地址去访问程序存储器中的一个单元;
直接寻址:指令编码中含有的7位地址与DP或SP一起合成数据存储器中操作数的实际地址;
间接寻址:通过辅助寄存器寻址;
存储器映射寄存器寻址:修改存储器映射寄存器中的值,而不影响当前数据页面指针DP和当前堆栈指针SP的值;
堆栈寻址:把数据压入或弹出系统堆栈。
7.段定义伪指令
.bss 在该段中保留若干字
.data 汇编入已初始化的数据段
.sect “section name” 汇编入已命名的段
.text 汇编入可执行的代码段
.float 初始化一个32-bit的浮点常数
.int 初始化一个或多个16-bit的无符号整数
.string 初始化一个或多个字符串
.word 初始化一个或多个16-bit的带符号整数
.list 开始源文件列表
.nolist 停止源文件列表
.length 设置源文件列表的页长度
.title 在列表文件每一页打印文件名
.copy /.include包含其他文件的源语句
.global 确认一个或多个全局(外部)符号
.mlib 定义宏库
.if/.else/.endif 条件汇编代码块
.loop/.endloop 循环汇编代码块
.break 终止循环汇编代码块
.equ/.set 使一个符号等于一个值
.end 结束程序
8.举例
1)定点加法temp3=temp1+temp2
ld temp1,a ;变量temp1装入累加器A
add temp2,a ;变量temp2与累加器A相加,结果放入A中
stl a,temp3 ;结果(低16位)存入变量temp3中。
2)定点减法
stm #temp1,ar3 ;变量temp1的地址装入ar3寄存器
stm #temp2,ar2 ;变量temp2的地址装入ar2寄存器
sub *ar2, *ar3,b ;变量temp2和temp1都左移16位,然后相减,结果放入累加器B中(高16位)
sth b,temp3 ;相减的结果(累加器B的高16位)存入变量temp3。
3)定点整数乘法
rsbx FRCT ;清FRCT标志,准备整数乘
ld temp1,T ;变量temp1装入T寄存器
mpy temp2,a ;temp2*temp1,结果放入累加器A(32位)
sth a,temp3 ;结果的高16位存入temp3
stl a,temp4 ;结果的低16位存入temp4
4)定点小数乘法
ssbx FRCT ;FRCT=1,准备小数乘法
ld temp1,16,a ;temp1装入A的高16位
mpya temp2 ;temp2乘A的高16位,结果在B中,同时将temp2装入T寄存器
sth b,temp3 ;将乘积的高16位存temp3
CPU状态和控制寄存器:
C54X有三个状态和控制寄存器,分别为状态寄存器ST0、状态寄存器ST1和处理器方式状态寄存器PMST。
ST0和ST1包括各种工作条件和工作方式的状态,PMST包括存储器配置状态和控制信息。
TMS320C54x的存储器:
64K字程序存储器、64K字数据存储器以及64K字I/O空间。
程序存储器空间包括程序指令和程序中所需的常数表格;数据存储器空间用于存储需要程序处理的数据或程序处理后的结果;I/O空间用于与外部存储器映象的外设接口。
程序存储器可以扩展。
所有TMS320C54x芯片都包括随机访问存储器(RAM)和只读存储器(ROM)。
RAM可分为两种:双访问RAM(DARAM)和单访问RAM(SARAM)。
FRCT位位于状态寄存器ST1的第几位?
第6位。
FRCT表示?小数方式位。
当FRCT=1时,表示做的是?乘法器输出左移一位,以消去多余的符号位。
语句标号
由字母、数字、_、$组成,最多不超过32个字符,对大小写敏感,第一个字符不能是数字。
后跟:,但分号不是语句标号的组成部分。
汇编程序语法
所有的语句必须由语句标号、空格、*号或;号开头。
语句标号不是必须的,如果用,就必须在第一列。
语句中的各部分之间,由一个或多个空格分开。
注释不是必须的。
注释可以从第一列的* 号或;号开头;如果不是从第一列开始,就必须用;号开头。
助记符
助记符不允许从第一列开始,否则被认为是语句标号。
助记符可以是汇编指令(如ABS,MPYU,SPH等)、伪指令(如.data, .list, .set等)、宏指令(如.macro, .var, .mexit等)和宏调用
操作数操作数可以是常数、符号或表达式。
当操作数多于一个时,用逗号分开。
汇编器允许指定常数、符号或表达式作为地址、立即数或间接地址。
操作数前缀规定如下:
#前缀:表示操作数为立即数。
如:
Label:ADD #123,B ;表示将操作数123(十进制)和累加器B中的内容相加
*前缀:操作数为间接地址。
使用操作数的内容作为地址。
如:
Label:LD *AR4,A ;操作数*AR4为间接地址,将AR4中的内容作为地址,然后将该地址的内容装入到指定的累加器A
9.编程举例
例1:使用C54X汇编语言编程计算
z1=x1+y1;z2=x1-y1;z3=x1*y1;z4=x2*y2。
其中,x1=20,y1=54,x2=0.5,y2=-0.5837
编写汇编源程序如下:
.title “suanshu.asm”
.mmregs
.bss x1,1
.bss x2,1
.bss y1,1
.bss y2,1
.bss z1,1
.bss z2,1
.bss z3_h,1
.bss z3_l,1
.bss z4,1
v1 .set 014h ;v1 =20
v2 .set 036h ;v2=54
v3 .set 04000h ;v3=0.5
v4 .set 0b548h ;v4=-0.5837
start:
LD #x1,DP
ST #v1,x1
ST #v2,y1
LD x1,A ;x1 A
ADD y1,A ;A+Y1 A
STL A,z1 ;保存AL z1
LD x1,A
SUB y1,A
STL A,z2
RSBX FRCT ;准备整数乘法,FRCT=0
LD X1,T
MPY Y1,A ;x1*y1 A
STH A,z3_h ;乘法结果高16位在z3_h 单元STL A,z3_l ;乘法结果低16位在z3_l单元
ST #v3,x2
ST #v4,y2
SSBX FRCT ;准备小数乘法,FRCT=1
LD x2,16,A ; 将x2加载到AH
MPYA y2 ;x2*y2 B,and y2 T STH B,z4 ;结果放到z4单元
例2:对数组x[8]={0,1,2,3,4,5,6,7}进行初始化
.bss x,8
.data
Table: .word 0,1,2,3,4,5,6,7
.text
Start: STM #x,AR5
RPT #7
MVPD table,*AR5+
…
例3:计算y =
.bss x,10
STM #x,AR1
STM #9,AR2
LD #0,A
LOOP: ADD *AR1+,A
BANZ LOOP,*AR2-
例4:对数据x[8]中的每个元素加1
.bss x,8
Begin: LD #1,16,B
STM #7,BRC
STM #x,AR4
RPTB next-1
ADD *AR4,16,B,A
STH A,*AR4+
next: LD #0,B
…
例5:求解.其中数据均为小数,且a1=0.3 a2=0.2 a3=-0.4,a4=0.1,x1=0.6,x2=0.5,x3=-0.1 x4=-0.2 .bss a,4
.bss x,4
.data
table: .word 3*32768/10
.word 2*32768/10
.word -4*32768/10
.word 1*32768/10
.word 6*32768/10
.word 5*32768/10
.word -1*32768/10
.word -2*32768/10
.text
Start: SSBX FRCT
STM #a,AR4
RPT #7
MVPD table,*AR4+
STM #x,AR5
STM #a,AR6
RPTZ A,#3
MAC *AR5+,*AR6+,A。