DSP考试文档格式.docx

上传人:b****3 文档编号:7968360 上传时间:2023-05-09 格式:DOCX 页数:16 大小:99.07KB
下载 相关 举报
DSP考试文档格式.docx_第1页
第1页 / 共16页
DSP考试文档格式.docx_第2页
第2页 / 共16页
DSP考试文档格式.docx_第3页
第3页 / 共16页
DSP考试文档格式.docx_第4页
第4页 / 共16页
DSP考试文档格式.docx_第5页
第5页 / 共16页
DSP考试文档格式.docx_第6页
第6页 / 共16页
DSP考试文档格式.docx_第7页
第7页 / 共16页
DSP考试文档格式.docx_第8页
第8页 / 共16页
DSP考试文档格式.docx_第9页
第9页 / 共16页
DSP考试文档格式.docx_第10页
第10页 / 共16页
DSP考试文档格式.docx_第11页
第11页 / 共16页
DSP考试文档格式.docx_第12页
第12页 / 共16页
DSP考试文档格式.docx_第13页
第13页 / 共16页
DSP考试文档格式.docx_第14页
第14页 / 共16页
DSP考试文档格式.docx_第15页
第15页 / 共16页
DSP考试文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DSP考试文档格式.docx

《DSP考试文档格式.docx》由会员分享,可在线阅读,更多相关《DSP考试文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

DSP考试文档格式.docx

数据写总线(EB、FB):

2组,16位。

2、C55x的CPU组成

●指令缓冲单元(I单元)

●程序流单元(P单元)

●地址-数据流单元(A单元)

●数据运算单元(D单元)

●存储器接口单元(M单元)

3、

(a)179脚BGA封装(底视图)(b)144脚PGE封装(顶视图)

4、电源引脚

数字电源,+1.6V,专为CPU内核提供电源。

数字电源,+3.3V,为I/O引脚提供电源。

数字电源,+3.3V,专为USB模块的I/O引脚(DP,DN和PU)提供电源。

数字电源,+1.6V。

专为USBPLL提供电源。

数字电源,+3.3V。

专为RTC模块的I/O引脚提供电源。

数字电源,+1.6V。

专为RTC模块提供电源。

数字地

模拟电源,专为10位A/D模块提供电源

模拟地,10位A/D内核部分接地引脚

模拟数字地,10位A/D模块的数字部分接地引脚

数字地,用于USBPLL

1.6V是为了降低功耗

5、对于ST0_55、ST1_55和ST3_55,对于其中一个地址,所有的C55x位均可访问;

在另外一个地址(称为保护地址),某些保护位不能被修改。

保护地址是为了提供对C54x代码的支持,以便写入ST0、ST1以及PMST(C54x对应ST3_55)

6、每个累加器分为低字(ACxL)、高字(ACxH)和8个保护位(ACxG),用户可以使用访问存储器映射寄存器的寻址方式,分别访问这3部分

7、CPU包括4个16位通用T寄存器:

T0、T1、T2、T3

8、低字的作用:

用于AR间接寻址模式,以及双AR间接寻址模式。

提供7位数据页内的16位偏移量(形成一个23位地址);

存放位地址;

作为通用寄存器或计数器。

9、CPU可以连接这个寄存器形成一个扩展系数数据指针(XCDP)

高7位(CDPH)用于指定要访问数据空间的数据页

低字(CDP)用来作为16位偏移量与7位数据页形成一个23位地址

10、如果C54CM=0,C55xCPU不支持C54x代码

如果C54CM=1,C55x的CPU支持C54x编写的代码

在使用C54x代码时就必须置位该模式,所有C55xCPU的资源都可以使用

在移植代码时,可以利用C55x增加的特性优化代码

可用以下指令或伪指令来改变模式:

BCLRC54CM;

清零C54CM(运行时)

.C54CM_off;

告知汇编器C54CM=0

BSETC54CM;

置位C54CM(运行时)

.C54CM_on;

告知汇编器C54CM=1

11、如果M40=0,D单元的计算模式选择32位模式

如果M40=1,D单元的计算模式选择40位的带符号移位模式

12、MPNMC位使能或禁止片上ROM

MPNMC=0:

微计算机模式。

使能片上ROM,可以在程序空间寻址。

MPNMC=1:

微处理器模式。

禁止片上ROM,不映射在程序空间里。

13、数据类型

C55x指令集支持以下数据类型:

字节(B):

8位

字(W):

16位

长字(LW):

32

14、DSP处理中断的步骤

(1)接收中断请求。

(2)响应中断请求。

(3)准备进入中断服务子程序。

(4)执行中断服务子程序。

15、可屏蔽中断

所有的可屏蔽中断都是硬件中断。

无论硬件何时请求一个可屏蔽中断,在一个中断标志寄存器里就有相应的中断标志置位。

该标志一旦置位,相应的中断还必须使能,否则不会得到处理。

16、当CPU接收到一个不可屏蔽中断请求时,立即无条件响应,并很快跳转到相应的中断服务子程序(ISR)

第三章

1、C55x通过以下三种寻址方式访问数据空间、存储器映射寄存器、寄存器位和I/O空间:

绝对寻址方式通过在指令中指定一个常数地址完成寻址

直接寻址方式使用地址偏移量寻址

间接寻址方式使用指针完成寻址

2、

语法元素

含义

Smem

来自数据空间、I/O空间或存储器映射寄存器的16位数据

Lmem

来自数据空间或存储器映射寄存器的32位数据

Cmem

来自内部数据空间的16位数据

3、绝对寻址方式

绝对寻址方式

k16绝对寻址方式

该寻址方式使用7位的DPH和16位的无符号立即数组成一个23位的数据空间地址,可用于访问存储器空间和存储器映射寄存器

k23绝对寻址方式

该寻址方式使用23位的无符号立即数作为数据空间地址,可用于访问存储器空间和存储器映射寄存器

(片外)I/O绝对寻址方式

该寻址方式使用16位无符号立即数作为I/O空间地址,可用于寻址I/O空间

4、直接寻址方式

寻址方式

描述

DP直接寻址

该方式用DPH与DP合并的扩展数据页指针寻址存储空间和存储器映射寄存器

SP直接寻址

该方式用SPH与SP合并的扩展堆栈指针寻址存储空间中堆栈

寄存器位直接寻址

该模式用偏移地址指定一个位地址,用于寻址寄存器中的一个或相邻的两个位

PDP直接寻址

该模式使用PDP和一个偏移地址寻址I/O空间

5、DP直接寻址方式和SP直接寻址方式是相互排斥的,只能有一种方式存在。

通过设置ST1_55的CPL位选择

CPL

寻址模式的选择

DP直接寻址模式

1

SP直接寻址模式

6、计算偏移地址的方法

访问空间

偏移地址(Doffset)的计算

数据空间

Doffset=(Daddr-.dp)&

7Fh

Daddr是一个16位的局部地址,.dp指DP的值,“&

”表示与操作

存储器映射寄存器

Doffset=Daddr&

Daddr是一个16位的局部地址,“&

”表示与操作,需要使用mmap()指令

7、间接寻址方式(代表性即可)

AR间接寻址

该模式使用AR0~AR7中的任一个寄存器访问数据。

CPU使用辅助寄存器产生地址的方式取决于访问数据的来源:

数据空间、存储器映射寄存器、I/O空间或是独立的寄存器位

双AR间接寻址

该模式与单AR间接寻址相似,只是借助两个辅助寄存器,可以同时访问两个或更多的数据

CDP间接寻址

该模式使用系数数据指针(CDP)访问数据。

CPU使用CDP产生地址的方式取决于访问数据的来源:

系数间接寻址

该模式与CDP间接寻址方式相似,它可以在访问数据空间某区块的数据的同时,借助双AR间接寻址访问别的区块的两个数据

8、P81-85例题例3-17P89例3-1890、91例题P122例3-56P123例3-57

第四章

1、软件开发环境

集成开发环境CCS(CodeComposerStudio)

非集成开发环境

2、C/C++编译器

用来将C/C++语言源程序(.C或.CPP)自动编译为C55x的汇编语言源程序(.asm

汇编器

用来将汇编语言源文件(.asm)汇编成机器语言COFF目标文件(.obj)

链接器

将汇编生成的、可重新定位的COFF目标模块(.obj)组合成一个可执行的COFF目标模块(.out)

3、COFF目标文件通常包括3个默认段,即

.text段,通常包含可执行代码

.data段,通常包含初始化数据

.bss段,通常为未初始化变量保留存储空间

图4-2目标文件中的段与目标存储器的关系

4、段伪指令的使用

这是一个汇编语言程序经汇编后生成的.lst文件,每行包含4个区域:

Field1:

源代码行号

Field2:

段指针

Field3:

目标代码

Field4:

初始源代码

5、链接器有2条伪指令支持上述任务(通常放在链接器命令文件(.cmd)中执行,是命令文件的主要内容):

MEMORYSECTIONS

6、外部符号

可以用伪指令.def、.ref或.global来定义或引用

.def:

定义符号。

用来定义在当前模块中定义、可在别的模块中引用的符号

.ref:

引用符号。

在当前模块中引用在别的模块中定义的符号

.global:

定义全局符号。

可以是上面的任何一种情况

7、P145伪指令

8、P146宏定义仔细看

9、源语句格式

助记符指令源语句的每一行通常包含4个部分:

标号区、助记符区、操作数区和注释区

助记符指令语法格式:

[标号][:

]助记符[操作数][;

注释]

10、汇编程序中的符号用于标号、常数和替代字符。

由字母、数字以及下划线和美元符号(A~Z,a~z,0~9,_和$)等组成。

符号名最多可长达200个字符。

在符号中,第1位不能是数字,并且符号中不能含空格。

11、局部标号是一种特殊的标号,使用的范围和影响是临时性的

局部标号可以被取消定义,并可以再次被定义或自动产生

用$n来定义,n是0~9的十进制数

用NAME?

定义,NAME是任何一个合法的符号名

局部标号不能用伪指令来定义

12、在链接命令文件中,可使用MEMORY和SECTIONS伪指令,为实际应用指定存储器结构和地址的映射

MEMORY:

用来指定目标存储器结构

SECTIONS:

用来控制段的构成与地址

13、P163两个程序

第五章

1、软件仿真器模式(Simulator)

可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试

硬件在线编程模式(Emulator)

可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序

2、P176图5-10

3、断点的作用作业

暂停程序的运行,以便观察程序的状态,检查或修正变量,查看调用的堆栈、存储器和寄存器的内容等

断点可以设置在编辑窗口中源代码行上,也可以设置在反汇编窗口中的反汇编指令上

设置断点时应当避免以下两种情形:

将断点设置在属于分支或调用的语句上

将断点设置在块重复操作的倒数第一或第二条语句上

第六章

1、C/C++语言具有如下基本特点:

语言简洁、紧凑,使用方便、灵活

运算符丰富,表达式类型多样化

数据结构类型丰富

具有结构化的控制语句

语法限制不太严格,程序设计自由度大

C/C++语言允许访问物理地址,能进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作

2、P193数据类型表6-1

3、ioport类型限定词只能用于全局或静态变量。

局部变量不能用ioport限制,除非变量是个指针

C55xC编译器对标准C语言进行了扩展,增加了interrupt关键字,来指定某个函数为中断函数。

Onchip关键字声明一个特殊指针,该指针所指向的数据可用作双MAC指令的操作数。

在链接时这些数据必须被链接到DSP片上存储器,否则会导致总线错误。

volatile

在任何情况下,优化器会通过分析数据流来避免存储器访问。

如果程序依靠存储器访问,则必须使用volatile关键字来指明这些访问。

编译器将不会优化任何对volatile变量的引用

4、编译源代码有如下的模式:

NormalANSI模式

K&

RC模式

宽松ANSI模式

严格ANSI模式

5、编译器包括剖析器(parser)、优化器(optimizer)和代码产生器(codegenerator)

6、基本优化选项P206

–o0:

采取的主要优化措施有:

简化控制流程,把变量安排到寄存器,简化循环,忽略未用代码,简化语句和表达式,把调用函数扩展为内嵌函数等。

–o1:

在–o0级优化的基础上,进一步采取局部优化措施,如:

进行COPY扩展,删除未用分配,忽略局部公共表达式等。

–o2:

在–o1级优化的基础上,进一步采取全局部优化措施,如:

进行循环优化,删除全局公共子表达式,删除全局未用分配等。

–o3:

这是最大可能的优化级别。

在–o2级优化的基础上,进一步进行的主要优化措施包括:

对于从未调用的函数移除其代码,对于从未使用返回值的函数删除其返回代码,把小函数代码自动嵌入到程序中(参考-oi选项),重新安排函数声明的次序等。

-oi<

size>

当采用–o3级优化时,优化器自动嵌入被调用的小函数。

只有小于size的函数才能被嵌入。

程序级(Program-Level)优化选项

如果一个函数的特定参量的值不变,编译器就会用这个值替换函数中的这个参量。

如果一个函数的返回值从不使用,编译器就会删除该函数的返回代码。

如果一个函数从未被调用,编译器就会删除该函数。

7、嵌入函数有助于提高代码的运行效率,主要有以下两个优点:

省去了函数调用有关的操作;

优化器可以把嵌入函数代码和周围代码放在一起自由地进行优化。

但是,嵌入函数会大幅度地增加程序代码长度,适合于小函数和调用次数较少的场合。

嵌入函数有以下方法:

嵌入本征函数、自动嵌入小函数、利用inline关键字嵌入函数。

8、主要优化技术总结

优化技术

可能的性能提升

应用难度

使用频率

问题

生成高效循环代码

经常

降低可移植性

高效地使用MAC硬件

中等

使用本征函数

9、C和汇编语言混合编程概述

采用汇编语言编程能够针对所采用DSP芯片的具体特点,所编程序执行效率高。

但是,不同公司的DSP芯片所提供的汇编语言各不相同,即使是同一公司的芯片,由于芯片的类型不同,其汇编语言也不尽相同。

用汇编语言开发DSP产品周期很长,软件修改、升级、移植都非常困难。

采用C语言编程具有开发效率高的优点,有助于提高产品开发速度,程序修改、升级和移植也很方便。

但是,与汇编语言编写的程序相比,C语言的执行效率较低,通常不能满足实时性要求,且无法控制某些硬件。

10、混合使用C代码和汇编语言代码的主要方法有:

使用几个独立的汇编代码模块,并将它们与编译了的C模块进行链接,这是最通用的方法。

在C源代码中使用汇编语言变量和常数。

将汇编语言程序直接嵌入C源代码中。

在C源代码中使用本征函数直接调用汇编语言语句。

第七章

1、小数定标的概念

设定一个16位数的小数点处于该数中的哪一位

可以表示不同大小和不同精度的小数

Q表示法

表7-1列出了一个16位数的16种Q表示及它们所能表示的十进制数值范围

2、不同的Q所表示的数不仅范围不同,而且精度也不相同

Q越大,数值范围越小,但精度越高

Q越小,数值范围越大,但精度就越低

例如,

Q0的数值范围是-32768到+32767,其精度为1;

Q15的数值范围为-1到0.9999695,精度为1/32768=0.00003051

3、如果算术运算结果超出寄存器所能表示的最大数就会出现溢出

因为16位定点DSP的动态范围有限,所以在使用时必须注意动态范围以防溢出

溢出还与输入信号的特性和运算法则有关

4、C55x的溢出处理机制

C55x有以下几种硬件特性可以处理溢出:

保护位

C55x的每个累加器都有8个保护位(39~32位),允许连续256次乘加操作而累加器不溢出

溢出标志位

C55x的每个累加器都有相关的溢出标志位,当累加器操作结果出现溢出时,这个标志位就会置位

饱和方式位SATD和SATA

SATD控制D单元的操作,SATA控制A单元的操作。

如果SATD=1,当D单元发生溢出时,对D单元的结果进行饱和处理。

不管饱和方式位的值是什么,当累加器发生溢出时,相应的溢出标志位都会被置位

A单元没有溢出标志位,但如果SATA=1,发生溢出时,结果也会进行饱和处理

☼饱和处理是用最近的边界值代替溢出结果。

例如,16位寄存器的范围是8000h(最小负数)~7FFFh(最大正数),饱和处理就是用7FFFh代替比7FFFh大的结果;

用8000h代替比8000h小的结果。

5、溢出的处理方法

饱和。

饱和是一种处理溢出的方法,但是饱和会剪掉部分输出信号,可能会引起信号失真和引起系统非线性。

输入定标。

分析所要使用的系统,假定最坏的情况,然后对输入信号定标,以防止溢出。

但是这种方法会极大地降低输出信号的精确度。

固定定标。

假定最坏的情况,对中间结果定标。

这种方法可以防止溢出,同时增加了系统的信噪比。

动态定标。

可以监测中间结果的范围,只在需要的时候对中间结果定标。

这种方法可以防止溢出但会增加计算量。

6、在FIR滤波器中处理溢出的最好方法是设计时使滤波器的增益小于1,这样就不需要对输入信号定标。

这种方法和累加器的保护位结合起来,可以有效地防止溢出。

7、在FFT操作里,每次蝶形运算后数据平均增加一位。

输入定标需要移位(FFT长度为N),这会导致在计算FFT之前就衰减6dB。

在固定定标中,每级蝶形运算输出除以2,这是最常用的FFT定标方法,因为它简单而且有比较好的信噪比。

但是,对于大的FFT,这种定标可能会使信息丢失。

另一种方法是动态定标,即在输出溢出时再除以2。

在这种情况下,会在这个过程中指定一个变量,每定标一次变量的值加1,计算结束后根据变量的值把结果乘以一个系数。

动态定标的信噪比最好,但会增加FFT循环次数。

8、FIRP237-P239P249

第八章

1、时钟发生器有三种工作模式:

旁路模式(BYPASS)

锁定模式(LOCK)

Idle模式

2、如果PLLENABLE=0,PLL工作于旁路模式,PLL对输入时钟信号进行分频。

分频值由BYPASSDIV确定:

如果BYPASSDIV=00,输出时钟信号的频率与输入信号的频率相同,即1分频

如果BYPASSDIV=01,输出时钟信号的频率是输入信号的1/2,即2分频

如果BYPASSDIV=1x,输出时钟信号的频率是输入信号的1/4,即4分频

3、如果PLLENABLE=1,PLL工作于锁定模式,输出的时钟频率由下面公式确定:

4、为了降低功耗,可以加载Idle配置,使DSP的时钟发生器进入Idle模式

当时钟发生器处于Idle模式时,输出时钟停止,引脚被拉为高电平。

5、定时器由两部分组成:

预定标计数寄存器(PSC),4位

主计数器(TIM),16位

6、寄存器:

计数寄存器(PSC,TIM)

周期寄存器(TDDR,PRD):

在定时器初始化或定时值重新装入过程中,将周期寄存器的内容复制到计数寄存器中

7、定时器发送中断信号或同步事件信号的频率可用下式计算:

8、C55x提供了专门的通用输入输出引脚GPIO

每个引脚的方向可以由I/O方向寄存器IODIR独立配置

引脚上的输入/输出状态由I/O数据寄存器IODATA反映或设置

9、介绍TMS320VC5509A内部集成的10位的连续逼近式模数转换器(ADC)。

10、

下面的公式,表示ADC可编程时钟分频器之间的关系:

ADC时钟=(CPU时钟)/(CPUCLKDIV+1)

ADC转换时钟=(ADC时钟)/(2×

(CONVRATEDIV+1))(必须等于或小于2MHZ)

ADC采样保持时间=(1/(ADC时))/(2×

CONVRATEDIV+1+SAMPTIMEDIV))(必须大于等于40)。

ADC总转换时间=ADC采样保持时间+(13×

(1/(ADC转换时钟)))

11、下边给出一个设置ADC的例子,设DSP系统时钟为144MHz。

(1)首先对系统主时钟分频,产生ADC时钟,该时钟应尽量运行在较低频率下,以降低功率消耗,在本例中ADC时钟是通过对系统时钟36分频产生的,则此时ADC时钟=144MHz/36=4MHz,根据公式

ADC时钟=(CPU时钟)/(CPUCLKDIV+1)

得出CPUCLKDIV=35

(2)对ADC时钟分频产生ADC转换时钟,该时钟最大值为2MHz。

为了获得2MHz的ADC转换时钟,需要对ADC时钟2分频。

ADC转换时钟=ADC时钟/(2×

(CONVRATEDIV+1))

得出CONVRATEDIV=0,

以及

ADC转换时间=13×

1/(ADC转换时钟)=13×

(1/2MHz)=6.5us。

(3)对采样和保持时间进行设置,这个值必须大于40。

ADC采样保持时间

=(1/(ADC时钟))/(2×

(CONVRATEDIV+1+SAMPTIMEDIV))

=(1/(4MHZ))/(2×

(0+1+SAMPTIMEDIV))

=250NS×

(2×

SAMPTIMEDIV)=40

由此得出SampTimeDiv=79

(4)整个转换时间为:

40(采样保持时间)+6.5(转换时间)=46.5us,

采样率=1/46.5=21.5kHz。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2