DSP复习要点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP复习要点
第一章:
1.DSP 技术应用非常广泛,例如:移动通信系统、VOIP 、HFC 、软件无线电、数码相机、DB DIGITAL AC-3、汽车多媒体系统、噪声消除算法、机顶盒(SET-TOP-BOX )、飞机驾驶模拟器、全球定位系统(GPS )、雷达/声纳、巡航导弹、F-117发射激光制导灵巧炸弹、图像识别、图像鉴别、医院用的B 超、CT 、核磁共振、卫星遥感遥测;
天气预报,地震预报,地震探矿;风动试验;数字化士兵,数字化战争;高清晰度电视、虚拟仪器
2. 主要DSP 芯片厂商有:AD 公司、AT&T 公司(现在的Lucent 公司)、 Motorola 公司、TI 公司(美国德州仪器公司)、NEC 公司。

3. 3. DSP 芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。

DSP 芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP 指令,可以用来快速的实现各种数字信号处理算法。

4.冯·诺伊曼(Von Neuman )结构
该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。

5. 哈佛(Harvard )结构
该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。

6. DSP 芯片的特点:
7. 根据芯片工作的数据格式,按其精度或动态范围,可将通用DSP 划分为定点DSP 和浮点DSP 两类。

7. 一般来说,选择DSP 芯片时应考虑的重要因素:运算速度、价格、功耗第二章
4. 改进型的哈佛结构是采用双存储空间和数条总线,即一条程序总线和多条数据总线,允许在程序空间和数据空间之间相互传送数据。

5. DSP 芯片都采用多总线结构,可同时进行取指令和多个数据存取操作。

8. 若字长n=8,求以下带符号整数的二进制、十六进制和十进制之间的转换。

正整数 0100 1011B=4BH=26
+23
+21
+20
=64+8+2+1=75 负整数 1111 1101B=FDH=-3 7.典型的DSP 系统结构图
8.选择DSP 芯片时应考虑如下一些因素:DSP 芯片的运算速度,DSP 芯片的价格,DSP 芯片的运算精度,DSP 芯片的开发工具,DSP 芯片的功耗,DSP 芯片的硬件资源等
9. TMS320C54x (简称’C 54x )是TI 公司为实现低功耗、高速实时信号处理而专门设计的16位定点数字信号处x (t )
抗混叠
滤波器
A/D 转换器
x (n ) y (n ) y (t )
数字信号处理器
D/A
转换器
低通滤波器
理器,采用改进的哈佛结构,具有高度的操作灵活性和运行速度,适应于远程通信等实时嵌入式应用的需要,现已广泛地应用于无线电通信系统中。

10. TMS320C54x的CPU采用先进的多总线结构,通过1组程序总线、3组数据总线和4组地址总线来实现。

40位算术逻辑运算单元ALU,包括1个40位桶形移位寄存器和2个独立的40位累加器。

17×17位并行乘法器,与40位专用加法器相连,可用于进行非流水线的单周期乘法-累加运算。

11. 主机接口HPI 是一个与主机通信的并行接口,主要用于DSP
与其它总线或CPU进行通信。

12.指数编码器,是一个支持单周期指令EXP的专用硬件。

可以在一个周期内计算40位累加器数值的指数。

11.累加器A=FF 0123 4567H,执行带移位的STH和STL指令后,求暂存器T和A的内容。

STL A,-8, T
运行结果: T = 2345H,
A=FF 0123 4567H
STH A,-8, T
运行结果: T = FF01H,
A=FF 0123 4567H
12.累加器A=FF 0123 4567H,执行带移位的STH和STL指令后,求暂存器T和A的内容。

STH A,8, T
运行结果: T = 2345H,
A=FF 0123 4567H
STL A, 8, T
运行结果: T = 6700H,
A=FF 0123 4567H
13.TMS320C54x的40位桶形移位寄存器主要用于累加器或数据区操作数的定标。

它能将输入数据进行0~31位的左移和0~16位的右移。

14.乘法-累加单元功能框图
15.ST0的结构:每部分的意义
ARP TC C OV A OVB DP
DP:数据存储器页指针。

用来与指令中提供的7位地址结合形成1个
16位数据存储器的地址
OVA/B:累加器A/B的溢出标志。

用来反映A/B是否产生溢出
C:进位标志位。

用来保存ALU加减运算时所产生的进/借位。

TC:测试/控制标志。

用来保存ALU测试操作的结果。

ARP:辅助寄存器指针。

用来选择使用单操作数间接寻址时的辅助寄存器AR0~AR7。

16. ST1的结构:每部分的意义
17.比较、选择和存储单元CSSU单元主要完成累加器的高阶位与低阶位之间最大值的比较,即选择累加器中
较大的字,并存储在数据存储器中。

18.指数编码器是一个用于支持指数运算指令的专用硬件,可以在单周期内执行EXP指令,求累加器中数的指数值。

指数值=冗余符号位-8
19.定点表示并不意味着就一定是整数表示。

在许多情况下,需要由编程来确定一个数的小数点的位置,即数的定标。

20.定点数最常用的是Q表示法,其特点是什么?
它可将整数和小数表示方法统一起来。

其中,m表示数的2补码的整数部分,n表示数的2补码的小数部分,1位符号位,数的总字长为m+n+l位。

表示数的整数范围为-2m~2m -1,小数的最小分辨率为 2- n。

29.流水线操作是指各条指令以机器周期为单位,相差一个时间周期而连续并行工作的情况。

’C54x的流水线
操作是由6个操作阶段或操作周期组成。

六个操作阶段:
①预取指P; 将PC中的内容加载PAB
②取指F; 将读取到的指令字加载PB
③译码D; 将PB的内容加载IR
④寻址A; 若需要,数据1读地址加载DAB;若需要,数据2读地址加载CAB
⑤读数R; 数据1加载DB;数据2加载CB
⑥执行X。

执行指令;写数据加载EB
流水线结构:
预取指取指译码寻址读数执行
30. 内部存储器分为:双寻址存储器DARAM,单寻址存储器
31. DARAM分成若干个独立的存储器块,CPU可以在单个周期内对其访问2次。

①在单个周期内允许同时访问不同的DARAM块;
② CPU同时处理两条指令访问不同的存储块;
③处于流水线不同阶段的两条指令,可以同时访问同一个存储块。

两次访问分别发生在机器周期的前半周期和后半周期,不会发生时序冲突。

利用PAB/PB取指——前半周期
利用DAB/DB读第一操作数——前半周期
利用CAB/CB读第二操作数——后半周期
利用EAB/EB写操作数——后半周期
32. CPU访问DARAM会发生流水冲突的情况:
①同时从同一存储块中取指令和读操作数;
②同时对同一存储块进行写操作和读第二操作数。

当发生流水冲突时,CPU可通过写操作延迟一个周期,或通过插入一个空操作来解决流水线冲突。

例:分析流水线冲突,找出解决方法?
LD *AR2+,A ;AR2指向相同的DARAM块
i2 ;假定i2指令不访问DARAM
i3 ;假定i3指令不访问DARAM
i4 ;假定i4指令访问DARAM
33.单寻址存储器:CPU在单个周期内对每个存储器块访问一次。

分为:①单寻址读/写存储器SARAM;
②单寻址只读存储器ROM。

34.单寻址存储器的流水线操作中CPU同时访问两次同一个存储器块有时序冲突
解决办法: 将第二次寻址操作自动延迟到下一个周期。

35.’C54x的流水线结构,允许多条指令同时利用CPU的内部资源。

由于CPU的资源有限,当多于一个流水线上的指令同时访问同一资源时,可能产生时序冲突。

解决的办法:
①由CPU通过延时自动解决;
②通过程序解决,如重新安排指令或插入空操作指令。

36.流水线冲突情况:
①若采用C语言编写源程序,经编译后生成的代码不会产生流水线冲突;
②若采用汇编语言编写源程序,使用算术运算操作不会产生流水线冲突;
③若采用汇编语言编写源程序,初始化时对MMR寄存器进行设置,不会发生流水线冲突;
④通常流水线冲突发生在对MMR寄存器的写操作,可用等待周期表加以解决。

37.分析下列指令的流水线冲突。

STLM A,AR1
LD *AR1,B
第三章
21.’C54x有7种基本的数据寻址方式:
22.立即寻址:由指令提供一个操作数。

运行速度较快,但需占用程序存储空间,并且数值不能改变。

例如:L D#F180H,A;将立即数F180加载到A
注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。

23.绝对寻址:由指令提供一个操作数地址,指令中包含一个固定的16位地址,能寻址所有数据存储空间,但运行速度慢,需要较大的存储空间。

24.累加器寻址:以累加器的内容为地址访问程序空间某单元
25.直接寻址:寻址地址为DP或SP的值加上指令提供的偏移量
直接寻址标识:①变量前加@,如@x;②在偏移量前加@,如@5。

26.间接寻址:利用辅助寄存器访问存储器,是根据辅助寄存器
(AR0~AR7)给出的16位地址进行寻址。

例:1)ADD *AR2,8,A ;将当前辅助寄存器AR2所指的地址里的数据左移8bit后加给AccA
2)ADD *AR2+,8,A,AR4 ;将当前辅助寄存器AR2所指的地址里的数据左移8bit后加给AccA后,将当前辅助寄存器加1,然后选择AR4作为当前辅助寄存器
27.存储器映像寄存器寻址:用来改变映像寄存器,但不影响DP 或SP的值
28.堆栈寻址:用来管理系统堆栈中的操作,利用SP指针,按照先进后出的原则进行寻址。

堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。

’C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。

SP总是指向栈顶。

堆栈寻址就是利用SP指针,按照先进后出的原则进行寻址。

当进栈操作时,SP先减小,然后数据进入堆栈;
当出栈操作时,数据先出栈,然后SP增加。

常用指令功能,指令运行前后存储单元的变化:
【2】ADD A,-8,B
指令执行前指令执行后
A 00 0540 1200H A 00 0540 1200H
B 00 0000 1800H B 00 0005 5812H
C 1 C 0
【3】 ST T,*AR7-
指令执行前指令执行后T 4231H T 4231H AR7 0333H AR7 0332H 数据存储器
0333H 1010H 0333H 4231H
【4】ST A,*AR4-
||MPY *AR5,B
指令执行前指令执行后
A FF 8421 1234H A FF 8421 1234H
B 00 0000 1111H B 00 1000 0000H
T 4000H T 4000H ASM 00H ASM 00H
FRCT 1 FRCT 1
AR4 0100H AR4 00FFH
AR5 0200H AR5 0200H 数据存储器
0100H 1111H 0100H 8421H
0200H 4000H 0200H 4000H 【3】M A C#345H,A,B
【例4】M A C#345H,A,B
指令执行前指令执行后
A 00 0000 1000H A 00 0000 1000H
B 00 0000 0000H B 00 001A 3800H
T 0400H T 0400H FRCT 1 FRCT 1
22.直接寻址:利用数据指针DP和堆栈指针SP寻址。

指令中只含有数据存储器的低7位地址(偏移地址dmad);16位数据存储器地址由基地址(数据页指针DP或堆栈指针SP)和偏移地址(dmad)共同构成。

当状态寄存器ST1中的CPL位等于0时,ST0中的DP值(9位地址)与指令中的7位地址一起形成16位数据存储器地址,
当ST1中的CPL位等于1时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地址,直接寻址标识:①变量前加@,如@x;②在偏移量前加@,如@5。

23.位倒序寻址用于快速傅氏变换算法FFT。

24.实现方法:①设AR2=01100000,作为基地址,指向X(0)的存储单元。

②设AR0=00001000,取FFT长度的一半。

程序: RPT #15 ;重复执行下条指令16次
PORTW *AR2+0B,PA ;采用位码倒序的间接寻址,向PA口输出数据
解释什么是位码倒序?
24.’C54x的助记符指令是由操作码和操作数两部分组成。

25. ’C54x的程序控制指令共有31条,可分为6类:分支转移指令
子程序调用指令、中断指令、返回指令、堆栈操作指令、其他程序控制指令
26.程序计数器PC是一个16位计数器,用来保存某个内部或外部程序存储器的地址。

27.对PC加载的方法:
●当执行子程序调用时,将PC+2的值压入堆栈,然后将调用指令下一个长立即数加载至PC;
●当执行返回指令时,将压入堆栈的值从栈顶取出,加载到PC,回到原来的程序处继续执行;
●当进行硬件中断或软件中断时,将PC值压入堆栈,并将适当的中断向量地址加载PC;
● 当执行中断返回时,将压入堆栈的值从栈顶取出,加载到PC ,继续执行被中断了的程序。

28.指令:NOP
功能说明:该指令除了执行PC 加1外,不执行任何操作。

应用说明:1)如果数据存在片外存储器,当需要从片外存取数据时,由于片内外速度不同,时序会发生错误,用NOP 指令等待,使速度匹配;
2)指令执行过程中,当流水线发生冲突时,插入NOP 指令产生延迟,避免冲突;
3)当执行程序块时,流水结束时最后一条指令未执行完,加NOP 指令使最后一条执行完。

29. ST A,*AR4-
||MAC *AR5,B ;A 中各位按原定移位后,A 中数据存入AR4中数据所指的存储单元,AR4中地址-1,
同时AR5中数据所指单元的数据与T 寄存器中数据相乘,乘积存入B 累加器
第五章
1.与分支转移一样,通过传送控制到程序存储器的其他位置,子程序调用会中断连续的指令流。

但是与分支转移不同的是,这种传送是临时的。

2.当函数的子程序被调用时,紧跟在调用后的下一条指令的地址
保存在堆栈中。

这个地址用于返回到调用程序并继续执行调用前的程序。

3. 子程序返回程序可以使程序重新在被中断的连续指令处继续执行。

返回指令通过将弹出堆栈的值(包含将要执行的下一条指令的地址),送到程序计数器PC 来实现返回功能。

4. 循环操作指令:BANZ 转移地址,辅助寄存器
指令功能:当辅助寄存器不为0时,则转至转移地址,否则顺序执行。

5. 循环操作程序
用AR2作为循环计数器,由BANZ 实现程序的循环控制。

∑==10
1 i i x
y 计算指令执行前
指令执行后A 00 0010 1111H A 00 0010 1111H B 00 0000 1111H
B 00 010
C 9511H
T 0400H
T 0400H
ASM 5 ASM 5 FRCT 0 FRCT 0 AR4 0100H AR4 00FFH AR5
0200H
AR5
0200H
数据存储器
0100H 1234H 0100H 0202H 0200H
4321H
0200H
4321H
.bss x,10 ;给x 保留10个空间 .bss y,1 ;给y 保留1个空间 STM #x,AR1 ;设置数据段的首地址 STM #9,AR2 ;设置循环计数值 LD #0,A ;
累加器清0
loop: ADD *AR1+,A ;累加运算,并修改地址
BANZ loop,*AR2- ;若计数值不为0,则循环,并计数值减1 若计数值为0,则结束循环 STL A, @y ;累加和存入y 中 6. 【例5.4.1】计算y = a ? x + b 程序:
LD @a, T ;取a 值,T=a MPY @x, B ;完成ax 乘积,B=ax ADD @b, B ;完成ax+b 运算,B=ax+b STL B, @y ;计算结果存入y 中 7. 【例5.4.2】计算y = xl ? al + x2 ? a2 程序:
LD @x1, T MPY @a1, B LD @x2, T MAC @a2, B STL B, @y STH B, @y+1 8. 【例5.4.3】计算 y = 程序:
******************************************** * example.asm * ******************************************** .title “example.asm ” .mmregs
stack .usect “STACK ”,10h ; .bss a,4 ; .bss x,4 .bss y,1 .def start .data
table: .word 1,2,3,4 .word 8,6,4,2 .text i
i i x
a ∑=4
1
start: STM #0,SWWSR
STM #STACK+10h,SP ;
STM #a,AR1
RPT #7 ;
MVPD table,*AR1+ ;
CALL SUM ;
end: B end
SUM: STM #a, AR3
STM #x, AR4
RPTZ A, #3 ;
MAC *AR3+,*AR4+,A ;
STL A,@ y
RET ;
.end
9.【例5.4.4】求4项乘积aixi(i=1,2,3,4)中的最大值,并存放累加器A中。

程序:
STM #a, AR1
STM #x, AR2
STM #2, AR3
LD *AR1+,T
MPY *AR2+,A
loop1: LD *AR1+,T
MPY *AR2+,B
MAX A
BANZ loop1,*AR3-
10. 条件减法指令:
SUBC Smem, src
功能:(src)-(Smem)<<15→ALU输出端
若ALU输出 0,则(ALU输出)<<1+1→src
否则(src)<<1→src
11. 重复指令:
RPT #K
功能:RC=#K,重复执行下条指令K+1次。

12. 在’C54x中没有除法器硬件,也没有专门的除法指令。

但是,利用条件减法指令(SUBC)和重复指令(RPT)可实现两个无符号数的除法运算
13. 例: 编写16384÷512的程序
.bss num,1
.bss den,1
.bss quot,1
table .word 16 384
.word 512
.text
start: STM #num,AR1
RPT #1
MVPD table,*AR1+
LD @den,16,A
MPYA @num
ABS A
STH A,@den
LD @num,A
ABS A
RPT #15
SUBC @den,A
XC 1,BLT
NEG A
STL A,@quot
14. 例: 编写0.4÷(-0.8)的程序.bss num,1
.bss den,1
.bss quot,1
.data
table .word 4*32768/10 ;0.4 .word -8*32768/10 ;-0.8 .text start: STM #num,AR1
RPT #1
MVPD table,*AR1+
LD @den,16,A
MPYA @num
STH A,@den
LD @num,16,A
ABS A
RPT #14
SUBC @den,A
XC 1,BLT
NEG A
STL A,@quot
15. SUBC指令仅对无符号数进行操作,因此先对被除数和除数取绝对值,然后利用乘法操作获取商的符号,最后通过条件操作指令给商加上适当的符号。

16. 并行指令均为单字单周期指令;并行指令先存储,后加载或算术运算;
并行指令的操作均在累加器的高位中进行,并且大多数指令受ASM位的影响。

17. 并行运算
【例5.4.8】编写计算z=x+y和f=e+d的程序
· bss x,3
· bss d,3
STM #x,AR5
STM #d,AR2
LD #0,ASM
LD *AR5+,16,A
ADD *AR5+,16,A
ST A,*AR5 ;并行指令;*AR5=A>>(16-ASM)
||LD *AR2+,B ;B=*AR2<<16,AR2=AR2+1
ADD *AR2+,16,B
STH B,AR2
18. 实现重复操作的指令:
RPT ——重复下条指令;
RPTZ——累加器清0,并重复下条指令;
RPTB——块重复指令。

利用RPT和RPTZ可重复执行紧随其后的一条指令。

重复次数由该指令的操作数决定,并且等于操作数加1。

19. 利用重复指令可实现比BANZ指令更快的循环程序。

20. 【例5.5.1】对数组进行初始化,使x[8]={0,0,0,0,0,0,0,0}。

方法1:
.bss x, 8
STM #x, AR1
LD #0, A
RPT #7
STL A,*AR1+
方法2:
.bss x, 8
STM #x, AR1
RPTZ A, #7
STL A, *AR1+
21. 用于块程序重复操作指令为RPTB和RPTBD。

程序块的长度由块程序重复指令RPTB的操作数来确定,而重复次数由块重复计数器BRC来决定。

22. 块程序重复指令的特点是对任意长程序段的循环开销为0。

23. 【例5.5.2】对数组x[8]中的每一元素加1。

.bss x, 8 ;设置数组空间
begin: LD #1,16,B ;立即数1送入BH
STM #7,BRC ;设置重复次数,BRC=7,循环8次
STM #x,AR4 ;数组首地址x送入AR4
RPTB next-1 ;设置循环结束地址,RSA=PC+2,REA=next-1
ADD *AR4,16,B,A ;数组数据左移16位与BH相加
STH A,*AR4+ ;存入数组结果,并修改地址
next: LD #0,B ;B清0
24. RPT重复操作可以和块重复操作RPTB以及循环操作BANZ进行嵌套,实现多重嵌套。

25. 数据传送指令的特点
①传送速度比加载和存储指令要快;
②数据传送不通过累加器;
③可寻址程序存储器;
④与RPT结合,可实现数据块传送。

26. 重复执行MVPD指令,可以实现程序存储器至数据存储器的数据传送,在系统初始化过程中十分有用。

27. 【例5.6.1】数组x[8]={0,1,2,3,4,5,6,7}初始化。

. bss x,8
. data
TBL: . word 0,1,2,3,4,5,6,7
. text
START:STM #x,AR5
RPT #7
MVPD TBL,*AR5+
……
【例5.6.2】进行N点FFT运算时,为节约存储空间要用到原位计算,将数组X[16]赋到数组Y[16],计算一个蝶形后,所得输出数据可以立即存入原输入数据所占用的存储单元。

.bss x,16
.bss y,16

STM #x,AR2
STM #y,AR3
RPT #15
MVDD AR2+,*AR3+
28. 采用小数运算时,设定小数点在16位中的位置称为定标。

小数点在16位数中的位置不同,可以表示不同大小和不同精度的小数。

数的定标通常有Q表示法,如Q0,Q1,…,Q15。

Q越大,可以表示的数的范围越小,但精度越高。

29.例如:二进制小数转换为十进制小数
00000010.10100000——21+2-1+2-3 = 2.625
30. 2的补码小数表示方法:
将十进制小数乘以32 768,并将整数乘积转换成16进制数。

正数:乘以32 768,整数转换成16进制数;负数:其绝对值乘以32 768,整数取反加1。

31. 两带符号数相乘,其结果带有2个符号位。

解决办法:运算结果左移一位,消去多余符号位。

可通过对FRCT 位置1,乘法器自动将乘积结果左移一位。

在小数乘法编程时,应事先设置FRCT 位,如:
SSBX FRCT
MPY *AR2,*AR3,A STH A ,@Z 32. 编制计算的程序
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 .bss y,1 .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 #x,AR1 RPT #7
MVPD table,*AR1+
STM #x,AR2
STM #a,AR3 RPTZ A,#3
MAC *AR2+,*AR3+,A STH A,@y
done: B done ==4
1
i i i x a y ∑
==41i i i x a y
33. ’C54x是个定点DSP器件,但它支持浮点运算。

34.浮点数是由尾数和指数两部分组成,它与定点数的关系:
定点数 = 尾数?2-指数
35. 定点数转换成浮点数:’C54x通过三条指令可将定点数转换成浮点数。

① EXP A 提取指数指令
功能:若A=0,则T=0;
若A≠0,则T=(A的多余符号位数-8)。

即提取指数,A的内容不变,指数=多余符号位数-8。

例如:执行EXP B前,B=07 8543 2105 T=0007
B = 0000 0111 1000……
多余符号位数:4 指数:4-8=-4 T=FFFC
执行后,B=07 8543 2105 T=FFFC (-4)
② ST T,EXPONENT
功能:将保存在T中的指数存放在数据存储器EXP单元中。

③ NORM A
根据T对累加器进行格式化处理指令。

功能:根据T的内容,对累加器A进行移位。

T>0,A左移T位;T<0,A右移T位。

即A<<ts→a。

< bdsfid="472" p=""></ts→a。

<>
例如:NORM A
执行前: A=FF FFFF F001 T=0013 (19)
A=1111 (111111111000000000001)
左移19位后:A=11111111 1000 0000 0000 1000……
执行后: A=FF 8008 0000 T=0013 (19)
例如: NORM B,A
执行前: A=FF FFFF F001 B=21 0A0A 0A0A T=FFF9(-7)
B右移7位送入A A=00 4214 1414
执行后: A=00 4214 1414 B=21 0A0A 0A0A T=FFF9(-7)
36. 定点数→浮点数:
根据定点数,求其尾数和指数,然后将尾数按指数T进行移位。

当T>0,A左移T位;当T<0,A右移T位。

浮点数→定点数:
根据指数T,将尾数进行移位。

当T>0,A右移T位;当T<0,A左移T位。

37.编写16384÷512的程序
第四章
1.’C54x应用软件开发流程
’C54x应用软件的开发可在TI公司提供的开发环境中进行,用户可以用C/C++语言或汇编语言编写源文件,经C编译器、汇编器生成COFF格式的目标文件,再用链接器进行链接,生成在’C54x上可执行的目标代码,然后利用调试工具对可执行的目标代码进行仿真和调试。

当调试完成后,通过Hex代码转换工具,将调试后的可执行目标代码转换成EPROM编程器能接受的代码,并将该代码固化到EPROM 中或加载到用户的应用系统中,以便DSP目标系统脱离计算机单独运行。

2. TI公司提供的DSP开发环境和工具主要包括以下三个部分:
代码生成工具
代码调试工具
实时操作系统
3. 汇编器和链接器生成的目标文件,是一个可以由’C54x器件执行的文件。

这些目标文件的格式称之为公共目标文件格式(COFF)。

4.. 段定义伪指令有以下五个:
● .bss(未初始化段)
● .data(已初始化段)
● .sect(已初始化段)
● .text(已初始化段)
● .usect(未初始化段)
5. .bss和 .usect命令建立未初始化段。

未初始化段就是TMS320C54x存储器中的保留空间,它通常被定位在RAM区。

6. .text、.data和 .sect命令建立已初始化段。

已初始化段包括可执行代码或已初始化的数据。

5.宏是指由用户自己定义的,可以像指令一样被汇编执行
6.宏指令与子程序一样,都是重复执行某一段程序,但两者是有区别的,主要区别:
⑴宏指令和子程序都可以被多次调用,但是把子程序汇编成目标代码的过程只进行一次,而在用到宏指令的每个地方都要对宏指令中的语句逐条地进行汇编。

⑵在调用前,由于子程序不使用参数,故子程序所需要的寄存器等都必须事先设置好;而对于宏指令来说,由于可以使用参数,调用时只要直接代入参数就行了。

7. ’C54x提供2种编程语言,即汇编语言和C/C++语言。

8.条件操作程序
⊕若需要多个条件相与时,用单条指令表示。

如:BC new, AGT, AOV
转移条件:AGT和AOV的与逻辑
⊕若需要两个条件相或时,需用两条指令分别表示。

如:若累加器A大于0或溢出,则转移至sub
转移条件:AGT和AOV的或逻辑
BC sub, AGT
BC sub, AOV
3、什么是流水线操作?’C54x的流水线操作包括哪几个操作阶段?哪些情况下会产生流水线冲突?如何解决?
答:(14分)流水线操作是指各条指令以机器周期为单位,相差一个时间周期而连续并行工作的情况。

’C54x 的流水线操作是由6个操作阶段或操作周期组成。

六个操作阶段:①预取指P ②取指F ③译码D
④寻址A ⑤读数R ⑥执行X
1)CPU访问DARAM会发生流水冲突的情况:
①同时从同一存储块中取指令和读操作数;
②同时对同一存储块进行写操作和读第二操作数。

当发生流水冲突时,CPU可通过写操作延迟一个周期,或通过插入一个空操作来解决流水线冲突。

2)单寻址存储器的流水线操作中CPU同时访问两次同一个存储器块有时序冲突
解决办法: 将第二次寻址操作自动延迟到下一个周期。

3)’C54x的流水线结构,允许多条指令同时利用CPU的内部资源。

由于CPU的资源有限,当多于一个流水线上的指令同时访问同一资源时,可能产生时序冲突。

解决的办法:
①由CPU通过延时自动解决;
②通过程序解决,如重新安排指令或插入空操作指令。

存储指令、指数运算指令,repeat指令,repeatz指令、流水线操作,乘法累加指令den与0或1,并行运算指令,
程序分析对输入初始化,数据的传送,知道功能,要会补充完整乘法累加,算Z变换,看例子
各种寻址方式
选择判断等在总结的知识点里。

相关文档
最新文档