DSP原理与应用_考试复习题答案(可编辑修改word版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.CMD 文件的有两大功能,一是通过MEMORY 伪指令来指示存储空间,二是通过SECTIONS 伪指令来指明存储空间位置。
填空:
1.TI 公司的定点DSP 产品主要有TMS320C2000 系列、TMS320C5000 系列和TMS320C6000 系列。
2.TMS320X2812 主频高达150mhz
,采用哈佛总线结构模式。
3.TMS320X2812 芯片的封装方式有 176 引脚的PGF 低剖面四芯线扁平LQFP 封装和179 针的GHH 球形网络阵列 BGA 封装。
4.TMS320X2812 的事件管理器模块包括 2 个通用定时器、 3 个比较单元、 3 个捕获单元、以及 1 个正交编码电路。
5.CMD 文件的有两大功能,一是通过MEMORY 伪指令来指示存储空间,二是通过sections 伪指令来分配到存储空间。
6.“# pragma DATA_SECTION”命令用来定义数据段,“# pragma DATA_SECTION”命令用来定义。
7.TMS320X2812 三级中断分别是CPU 级、 PIE 中断和外设级。
8.F2812 存储器被划分成程序空间和数据空间、保留区和 CPU 中断向量。
9.SCI 模块的信号有外部信号、控制信号和中断信号。
10.F2812 DSP 中传送执行指令所需的地址需要用到 PAB 、DRAB 和EAB 这3 条地址总线。
11.C 语言程序经过编译后会生成两大类的段:代码段和数据段。
简答:
1.DSP 芯片有哪些主要特点?
DSP 的主要特点有:
1.哈佛结构
2.多总线结构
3.流水线结构
4.多处理单元
2.简述典型DSP 应用系统的构成。
5 特殊的DSP 指令
6.指令周期短
7.运算精度高
8.硬件配置强。
一个典型的DSP 系统应包括抗混叠滤波器、数据采集A/D 转换器、数字信号处理器DSP、D/A 转换器和低通滤波器等组成。
输入信号首先进行带限滤波和抽样,然后进行数模变换将信号变换成数字比特流,根据奈奎斯特抽样定理,对低通模拟信号,为保持信号的不丢失,抽样频率至少必须是输入带限信号最高频率的 2 倍。
3.简述DSP 应用系统的一般设计开发过程。
如何选择DSP 芯片?
答:DSP 应用系统的一般开发过程有:系统需求说明;定义技术指标;选择DSP 芯片及外围芯片;软件设计说明、软件编程与测试;硬件设计说明、硬件电力与调试;系统集成;系统测试,样机、中试与产品。
DSP 芯片的选择:1.DSP 芯片的运算速度
2.DSP 芯片的价格
3.DSP 芯片的硬件资源(存储器、ADC、PWM 等等)
4.D SP 芯片运算精度
5.芯片开发工具:软件硬件
6..DSP 芯片功耗
7.其他:封装、应用场合、售后服务等。
答:C20x、C24x、C5x、C54x、C62xx、C3x、C4x、C67xx。
5.DSP 控制器的应用领域有哪些?
答:(1)信号处理:数字滤波、快速FFT、相关运算、谱分析、模式匹配、加窗、波形产生等。
(2)通信:调制解调器、数据压缩、多路复用、传真、数据加密、扩频通信、纠错编码、可视电话等。
(3)语言:语音邮件、语音存储、语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认等。
(4)图形/图像:图像增强、动画、机器人视觉、二维/三维处理器、图像压缩与传输等。
(5)军事:导航、雷达处理、声纳处理、导弹制导等。
(6)医学:病人监控、修复手术、超声设备等。
(7)控制:机器人控制、发动机控制、激光打印控制。
(8)汽车控制:自适应驾驶控制、导航、震动分析等。
(9)家用电器:数码相机、音乐合成、移动电话等。
6.哈佛结构与冯·诺依曼结构计算机存储器的组成有何不同?
答:二者的区别是:冯·诺依曼结构的程序空间和数据空间是合在一起,取指令和取操作数都是通过一条总线分时进行的。
而哈佛结构则不同,它的程序空间和数据空间是分开的,可同时取指令和操作数。
7.DSP 应用系统的软件开发流程是什么?
答:C 编译器将其编译成汇编语言后,送到TMS320C54X 汇编器进行汇编,汇编后生成COFF 格式(公共目标文件格式)的目标文件,再调用链接器进行链接,生成在TMS320C54X 上可执行的目标代码,并且利用调试工具对可执行的目标代码进行软件仿真或硬件在线仿真器的调试,以保证应用软件的正确无误且满足使用要求。
8.采用CCS 集成开发环境进行软件开发调试的步骤是什么?
答:1.识别问题。
2.收集信息。
3.分析收集的数据。
4.修改BUG。
9.说明.text 段、.data 段、.bss 段分别包含什么内容?
一个程序的 3 个基本段:text 段,data 段,bss 段。
text 段在内存中被映射为只读,但.data 和.bss 是可写的。
text 段:就是放程序代码的,编译时确定,只读;
data 段:存放在编译阶段(而非运行时)就能确定的数据,可读可写。
也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存放在这个区域;
bss 段:定义而没有赋初值的全局变量和静态变量,放在这个区域存储空间;
(详细版)答:text 段在内存中被映射为只读,但.data 和.bss 是可写的。
bss 是英文Block Started by Symbol 的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。
BSS 段属于静态内存分配。
它的初始值也是由用户自己定义的连接定位文件所确定,用户应该将它定义在可读写的RAM 区内,源程序中使用malloc 分配的内存就是这一块,它不是根据data 大小确定,主要由程序中同时分配内存最大值所确定,不过如果超出了范围,也就是分配失败,可以等空间释放之后再分配。
text 段是程序代码段,表示程序段的大小,它是由编译器在编译连接时自动计算的,当你在链接定位文件中将该符号放置在代码段后,那么该符号表示的值就是代码段大小,编译连接时,该符号所代表的值会自动代入到源程序中。
data 包含静态初始化的数据,所以有初值的全局变量和static 变量在data 区。
段的起始位置也是由连接定位文件所确定,大小在编译连接时自动分配,它和你的程序大小没有关系,但和程序使用到的全局变量,常量数量相关
10.链接命令文件包括哪些主要内容?如何编写?
答:利用C54x 的链接器lnk500.exe,
根据链接命令或链接命令文件(.cmd 文件)对已汇编的一个或多个目标文件(.obj 文件)进行链接,生成一个可以执行的目标文件(.out 文件)以及在目标系统中德存储器配置文件(.map 文件)。
常用得链接器命令为:
Lnk500 1%.cmd
(1)标识符和常数(2)数据转换(3)表达式(4)声明(5)预处理
12.DSP 的硬件仿真器(Emulator)和软件仿真器(Simulator)有什么异同点?
答:软件仿真器:这种方法主要是使用计算机软件来模拟运行,实际的单片机运行因此仿真与硬件无关的系统具有一定的优点。
用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。
软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最终的设计
硬件仿真器:使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。
使用了附加硬件后用户就可以对程序的运行进行控制,例如单步,全速,查看资源断点等。
硬件仿真是开发过程中所必须的。
13.C28x DSP 的串行通信接口有哪些特点?
答:数据是一位一位依次传输的,每位数据占一个固定的时间长度。
适用于远距离通信。
14.异步串行通信的数据格式有哪些?如何设置?
答:异步串行采用的数据格式是一组不定“位数”数组组成。
第1 位成其实位,它的宽度位1 位,低电平;接着传送一个字节(8 位)的数据,以高电平位“1”,低电平位“0”;最后是停止位,宽度可以是1 位,1.5 位或 2 位,在两个数据之间可有空闲位。
15.如何设置异步串行通信的波特率?
答:异步串行通信的波特率是由串行口的初始化完成的。
设置串行口数据长度位16 位,是能串行口中断,对串行口进行极性控制。
16、TMS320X2812 芯片具有哪些片上外设?
主要包括配置寄存器,输入寄存器,输出寄存器和状态寄存器
17、单片机、DSP、ARM 以及FPGA 器件有什么区别,在不同应用场合下如何选择。
FPGA 和其它的不同之处在于, 它内部的门电路是未编程的,可以灵活的配置编程,而其它的内部的数字电路都已经固化定型。
单片机,ARM,DSP,内部都有处理器,通过软件和硬件设计可以用于某些特定环境。
有些ARM 芯片内部含有DSP 部件,可以完成DSP 功能。
PLC 用于工业环境,例如,车间,电梯,大型设备等。
FPGA 内部是逻辑门电路,应用比较广泛。
18、通用目标文件格式COFF(Common Object File Format),是一种很流行的二进制可执行文件格式。
二进制可执行文件包括哪些?平时烧写程序时使用的是以什么结尾的文件?
COFF 目标文件的段可以分为两大类:已初始化段和未初始化段。
一般地,COFF 目标文件包含 3 个缺省的段:
text 段、data 段、bss 段。
如下图所示为目标文件中的段与目标系统中存储器的关系。
段的使用非常灵活,但常用以下约定:
.text —此段存放程序代码。
.data —此段存放初始化了的数据。
.bss —此段存入未初始化的变量。
.sect '名称' —定义一个有名段,放初始化了的数据或程序代码。
19、编译器处理段的过程是什么?
编译器是由词法分析器,语法分析器,语义分析器,中间代码生成,代码优化和目标代码生成。
编译程序的处理过程:
预处理---词法分析---文法分析---生成中间代码---生成目标代码
20、在CCS 中构建一个完整的工程项目,需要添加哪几类文件,后缀名分别是什么?
一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和CMD 文件组成,缺一不可
21、为保证TMS320X2812 系统能正常工作,必须注意哪几点?
如何提高F2812 AD 的转换精度
采用软件补偿,参考文档spra989a。
程序经常跑飞
程序没有结尾或不是循环的程序。
nmi 管脚没有上拉。
在看门狗动作的时候程序会经常跑飞。
程序编制不当也会引起程序跑飞。
硬件系统有问题。
程序访问了非法的地址
22、TMS320X2812 有三级中断,分别是什么?成功实现中断的必要步骤有哪些?
Tms320x2812 的中断管理有三种;外设级中断管理,pie 级中断管理,cpu 级中断管理
一般中断都是外部触发的,中断产生后,CPU 首先保存好当前的运行环境(CPSR, PC),然后跳转到中断向量表(0X18),在地址 0X18 处,你应该放置一条跳转指令,跳转到你的中断处理程序里面去.在中断处理程序里面,你执行你需要的工作,然后根据 SPSR 和 LR 的值,返回到中断的地方,继续程序的运行
23、#Pragma code_section 和 #Pragma data_section 语句的作用分别是什么?
#pragma DATA_SECTION(函数名或全局变量名,"用户自定义在数据空间的段名");
#pragma CODE_SECTION(函数名或全局变量名,"用户自定义在程序空间的段名");不能在函数体内声明。
必须在定义和使用前声明 #pragma 可以阻止对未调用的函数的优化
24、CMD 文件的两大功能分别是什么,分别通过什么伪指令来实现相应的功能? 事件管理器的计数模式有哪些?
1、用户声明的整个系统里的存储器资源。
2、用户如何分配这些存储器资源,即关于资源分配情况的声明。
MEMORY 、SECTIONS 两个伪指令的使用,MEMORY 和 SECTIONS 的相关语句必须使用大写字符。
MEMORY 是用以配置目标存储器的,而 SECTIONS 是用以指定段的存放位置的
25、SPI 模块主机的数据是如何发送和接收?
1.如果用主从机切换的方法的话,切换的时机不好掌握,比较方便的方法是主机定周期发送数据(也可以 是空数据包),同时收取从机数据包,一般情况下都可以满足通信要求。
2.其实也不是,选用何种通信方式主要是取决于通信协议的要求,还有从设备的接口方式,合适的才是最好的。
关于 SPI 通信从机送信好像还有一种办法,就是从机有送信要求时给主机一个信号,一般用一个端子电平变化,主机利用外部中断截获这个信号,然后驱动通信,应该也可以。
27、阅读以下系统控制模块初始化程序。
如果外部晶振是 30MHz ,请问系统时钟频率是多少?高速预定标时钟频率是多少?低速预定标时钟频率 是多少?
28. 定时器 0 配置函数如下所示:
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
{
Uint32 temp;
Timer->CPUFreqInMHz = Freq;
Timer->PeriodInUSec = Period;
temp = (long) (Freq * Period);
Timer->RegsAddr->PRD.all = temp;
Timer->RegsAddr->TPR.all = 0;
Timer->RegsAddr->TPRH.all = 0;
Timer->RegsAddr->TCR.bit.TIF=1;
Timer->RegsAddr->TCR.bit.TSS = 1;
Timer->RegsAddr->TCR.bit.TRB = 1;
Timer->RegsAddr->TCR.bit.SOFT = 1; void InitSysCtrl(void)
{
SysCtrlRegs.WDCR= 0x0068;
SysCtrlRegs.PLLCR = 0xA;
for(i= 0; i< 5000; i++){}
SysCtrlRegs.HISPCP.all = 0x0001;
SysCtrlRegs.LOSPCP.all = 0x0002;
}
Timer->RegsAddr->TCR.bit.FREE = 1;
Timer->RegsAddr->TCR.bit.TIE = 1;
Timer->InterruptCount = 0;
}
在主函数中调用这个子程序,程序为:
ConfigCpuTimer(&CpuTimer0, 150, 200000);
问定时器 0 每隔多长时间中断一次,请写出计算过程。
29.事件管理器初始化程序如下:
void InitEva(void)
{
EvaRegs.T1PR = 4;
EvaRegs.T1CMPR = 3;
EvaRegs.T1CNT = 0x0000;
EvaRegs.T1CON.bit.FREE = 0;
EvaRegs.T1CON.bit.SOFT = 0;
EvaRegs.T1CON.bit.TMODE = 1;
EvaRegs.T1CON.bit.TPS = 0;
EvaRegs.T1CON.bit.TENABLE = 1;
EvaRegs.T1CON.bit.TCLKS10 = 0;
EvaRegs.T1CON.bit.TCLD10 = 0;
EvaRegs.T1CON.bit.TECMPR = 1;
}
请问定时器工作于什么计数模式,并用图形的方式画出定时器计数寄存器 T1CNT 值变化过程。
30.寄存器 SCICTL1 高8 位保留不用,低 8 位的各位定义情况如下图所示,请用位域定义方法为其编写寄存器结构体类型。
(6 分)
31.下表所示为 SCI 模块各寄存器及其地址,试采用寄存器文件方式,为其定义结构体类型,假设寄存器文件名称为 SCI_REGS。
(6 分)
struct SYS_CTRL_REGS
{ Uint16 rsvd1[10];
union HISPCP_REG HISPCP;
union LOSPCP_REG LOSPCP;
union PCLKCR_REG PCLKCR;
Uint16 rsvd2;
Uint16 LPMCR0;
Uint16 LPMCR1;
Uint1 rsvd3;
Uint16 PLLCR;
union SCSR_REG SCSR;
Uint16 WDCNTR;
Uint16 rsvd4;
Uint16 WDKEY;
Uint16 rsvd5[3];
Uint16 WDCR;
Uint16 rsvd6[6];
};
32、T M S320F2812系统的高速外设时钟H S P C L K为75M H z,设通用定时器T1、T2的时钟预定标因子为p=1。
EVA 的 T1PWM、T2PWM 引脚分别输出 1KHz、占空比为 40%的不对称的 PWM 波形,设定 T1PWM 的极性为低电平有效,设定 T2PWM 的极性为高电平有效。
(1)定时器 Tx(x=1,2)的时钟脉冲 TCLK 的计算公式:
TCLK =HSPCLK / 2 p(其中p 为时钟预定标因子)
(2)定时器 Tx(x=1,2)输出不对称的 PWM 波形的周期计算公式:
T =
TxPR +1
,其中x =1, 2 TCLK ⨯106
(3)定时器 Tx(x=1,2)输出不对称 PWM 波形,当引脚极性为高电平有效时的占空比D 的计算公式:
D =TxPR + 1 -TxCMPR
,其中x = 1, 2 TxPR +1
当引脚极性为低电平有效时的占空比D 的计算公式:
D =TxCMPR
,其中x = 1, 2 TxPR +1
1.通过上面分析,得出 EVA 中各个定时器周期寄存器 TxPR、比较寄存器 TxCMPR 的值,其中x=1,2。
(8 分)
2.请编写程序将(1)中得到的值赋值给相应的寄存器。
(4 分)
33. 编写 SCI 初始化程序,使之能实现格式为“波特率 19200,8 位数据格式,无数据校验,2 位停止位”的数据通信。