长沙理工大学DSP期末考试题目修订版.V1.1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以下容在任亚洲同学原稿上(V1.0)稍作修改,仅做参考,为了保证答案的正确性跟同志们的过科率,希望大家踊跃发现并改正其中的错误,如有修改请在修改完成后注明修改后的版本,合作!(本版本V1.1)。
温馨提示:X表示
1. 2812芯片:定点32位芯片。
2. 2000系列功能比较强。
3.2812 I/O口供电电压3.3V,核供电电压1.8V或1.9V。
4. 2812编译时.CMD是什么文件,.OUT是什么文件?
答:CMD是命令文件,.OUT是最终可执行成文件。
5. 2812的3个CPU定时器是多少位? DSP采用段的概念,各个段的都有什么意思?
答:○132位;
○2已初始化的段:包含真实的指令跟数据,存放在程序储存空间。
未初始化的段:包含变量的地址空间,存放在数据存储空间。
6. 2812 时钟150M时,低速、高速外输时钟是多少?
答:低速37.5MHz,高速75MHz
7. DSP总线结构是什么样子?
答:先进型哈弗结构。
8. 2812 CPU的中断有可屏蔽中断和不可屏蔽中断,分别是哪些?
答:○1可屏蔽中断:INT1~INT14 14个通用中断;DLOGINT数据标志中断;RTOSINT实时操作系统中断。
○2不可屏蔽中断:软件中断(INTR指令和TRAP指令);硬件中断NMI,非法指令陷阱;硬件复位中断;用户自定义中断。
9. 2812实际寻址空间是多少?
答:地址:00000~3FFFF(4M)
10. 2812一个事件管理器(EV)能够产生8路PWM波。
(2路独立PWM波,3对6路互补PWM波)
11.DSP有3组地址总线,3组数据总线,分别是什么?
答:地址:程序地址总线、数据读地址总线、数据写地址总线。
数据:程序读数据总线、数据读数据总线、数据写数据总线。
12. ADC模块有多少路采样通道?8*2=16路
13. SCI和SPI口哪一个需要设置波特率?SCI
14. 把目标文件下载到实验板怎么操作?
答:File----load program
15. CAN通讯的最大带宽是多少?1M
16. 加上看门狗,2812部定时器一共有多少个?
答:3个CPU定时器,4个事件管理通用定时器,1个看门狗定时器,总共8个。
17. 2812DSP流水线深度为8。
18. TI公司生产的最牛cpu是667x有8个核,320Gmac /s。
注:mac是乘法累加
19. 2812AD满量程转换时,转换寄存器的值是多少?0xFFF0
20. 2812CPU最小系统:主芯片,电源模块,时钟电路,复位电路,JTAG电路
21. DSP生产厂家是TI公司,ADI公司,Freescale(飞思卡尔)公司。
22. TI公司的DSP芯片类型有C2000,C5000,C6000系列
23. DSP工程开发,需要编写4个文件:头文件,库文件,源文件,CMD文件。
24. 2812有2个事件管理器EV A、EVB,每一个事件管理器包含哪几个功能模块?
答:通用定时器;全比较单元;捕获单元;正交编码电路。
25. 2812定时器计数周期怎么算?T=(TDDRH:TDDR+1)*(PRDH:PRD+1) /150s
26. 2812在什么情况下工作于微处理器模式?MP/MC=0
27. 2812中断系统有一部分挂在PIE上面,这些都属于可屏蔽中断,那么能够响应中断的条件是什么?
答:INTM置0响应总中断,其他的置1响应。
(INTM=0,IFR=1,IER=1,PIEIFR=1,PIEIER=1,PIEACR=1)
28. 2812在进行引导时第一条程序在什么位置?0x3FFFC0注:就是程序运行的起始地址,2^20byte=1M
29. 2812AD转换器的输入电压0~3V。
30. 2812片flash有128k*16位。
31. 2812的OTP模块是可编程模块可以多次擦写吗?不可以,是一次擦写。
32. 2812ROM是只读存储器,flash是可以重复擦写的存储器。
33. 2812的供电电压?
答:当时钟频率为135MHZ时,核电压1.8V,时钟频率为150MHZ时,核电压1.9V
34. memory sections是CMD文件里面的容。
35. PIE支持多少个外部中断,实际上使用了多少个?最大支持96个,实际使用45个。
36. 看门狗是干什么的?通过软件,给看门狗计数器的密钥周期性的写明哪两个数?
答:为DSP的运行情况进行“把脉”,如果发现程序跑飞或者状态不正常,便立即使DSP 复位,提高系统的可靠性;周期性写入0x55,0xAA。
37. SPI口和SCI口是干嘛的?
答:SPI是串行外围设备接口,是一种高速的,全双工,同步的通信总线。
SCI是相对于并行通信的,是双线串行异步通信技术的一种总称。
SCI通信接口可以设计成rs232接口,也可以设计成rs485接口
38. 2812有多少个通用IO口?56个
39. 2812的乘法器是多少位?32位
40.6000系列更适合处理图像。
41. 2812下载的程序是在片外flash运行。
42. CCS用什么打开什么窗口显示存储器的数据?view-memory
43. 2812的AD的最高的采样速率是多少?12.5MSPS
44. 2812有4种工作模式:正常模式,空闲模式,暂停模式,备用模式最省电的是暂停模式
45. 2812的DSP用4字节空间用于存放中断服务程序的地址
46. CAN的抗通讯距离可以达到多远?10km
47. CMD文件下面有memory sections,其中memory下面的括号要写什么?
答:PAGE0(程序空间),PAGE1(数据空间)
48. CCS建立工程到下载程序分成哪三(ji)步?
答:新建工程—添加源文件、库文件、CMD文件—编译—下载
49. 2812的DSP可以实现倍频或者分频的是什么?PLL(锁相环)最大倍频系数为5
50. 2812一个周期能算32位的乘法,16x16位能算2个,32x32位能算1个。
51. 2812的RAM多大?18Kx16位
52. 使用厂家的bootloader进行引导时MP/MC应该怎么设置?MP/MC=0
53. SCI口是串口时,地址是什么?
答:0x00007050~0x0000705F,0x00007750~0x0000775F
54. 2812的高速外部时钟是不是一定比低速外部时钟快?不一定
55. 2812的中断向量的地址是不是不能改变?不是,能改变
56. DSP在编程时流水线是有冲突的。
如,下一条指令在用上一条指令的结果时,上一条指令还没有计算完,这就引起了流水线冲突,必须打断。
C语言写程序时有流水线冲突吗?答:C语言写的程序没有流水线冲突,汇编写程序时有流水线冲突。
57. DSP比51快,为什么?
答:因为DSP有改进型哈弗结构,多路数据总线,指令流水线,地址发生器,硬件的乘法器,零开销循环。
最后有20分是第一个实验,主要考CMD文件以及注释。
第一个实验
1.系统初始化函数
/**************************************************************************** *文件名:DSP28_SysCtrl.c
*功能:对2812的系统控制模块进行初始化
*作者: likyo from hellodsp
****************************************************************************/ #include "DSP28_Device.h"
/**************************************************************************** *名称:InitSysCtrl()
*功能:该函数对2812的系统控制寄存器进行初始化
*入口参数:无
*出口参数:无
****************************************************************************/ void InitSysCtrl(void)
{
Uint16 i;
EALLOW;
// 对于TMX产品,为了能够使得片RAM模块M0/M1/L0/L1LH0能够获得最好的性能,控制寄存器的位
// 必须使能,这些位在设备硬件仿真寄存器。
TMX是TI的试验型产品
DevEmuRegs.M0RAMDFT = 0x0300;
DevEmuRegs.M1RAMDFT = 0x0300;
DevEmuRegs.L0RAMDFT = 0x0300;
DevEmuRegs.L1RAMDFT = 0x0300;
DevEmuRegs.H0RAMDFT = 0x0300;
// 禁止看门狗模块
SysCtrlRegs.WDCR= 0x0068;
// 初始化PLL模块
SysCtrlRegs.PLLCR = 0xA;
//如果外部晶振为30M,则SYSCLKOUT=30*10/2=150MHz
// 延时,使得PLL模块能够完成初始化操作
for(i= 0; i< 5000; i++){}
// 高速时钟预定标器和低速时钟预定标器,产生高速外设时钟HSPCLK和低速外设时钟LSPCLK
SysCtrlRegs.HISPCP.all = 0x0001; // HSPCLK=150/2=75MHz
SysCtrlRegs.LOSPCP.all = 0x0002; // LSPCLK=150/4=37.5MHz
// 对工程中使用到的外设进行时钟使能
// SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
// SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
// SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;
// SysCtrlRegs.PCLKCR.bit.SCIENCLKB=1;
EDIS;
}
2.GPIO初始化函数
/**************************************************************************** *文件名:DSP28_Gpio.c
*功能:2812通用输入输出口GPIO的初始化函数
*作者: likyo from hellodsp
****************************************************************************/ #include "DSP28_Device.h"
/**************************************************************************** *名称:InitGpio()
*功能:初始化Gpio,使得Gpio的引脚处于已知的状态,例如确定其功能是特定功能还是通用I/O。
如果是通用I/O,是输入还是输出,等等。
*入口参数:无
*出口参数:无
****************************************************************************/ void InitGpio(void)
{
EALLOW;
GpioMuxRegs.GPFMUX.bit.XF_GPIOF14=0; //设置XF引脚为通用数字I/O口GpioMuxRegs.GPFDIR.bit.GPIOF14=1; //设置XF引脚为输出口
EDIS;
}
3.主函数
/************************************
*文件名:GpioLed.c
*功能:使用XF引脚作为通用的I/O口来控制LED灯的闪烁
**************************************/
#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"
void delay_loop(); //延时函数
/*************************************
*名称:main()
*功能:通过引脚XF_XPLLDIS作为I/O口来控制LED灯的亮和灭
*入口参数:
*出口参数:
***************************************/
void main()
{
int kk=0;
InitSysCtrl(); //初始化系统函数
DINT;
IER=0x0000; //禁止CPU中断
IFR=0x0000; //清除CPU中断标志
InitPieCtrl(); //初始化PIE控制寄存器
InitPieVectTable(); //初始化PIE中断向量表
InitGpio(); //初始化GPIO口
while(1)
{
GpioDataRegs.GPFCLEAR.bit.GPIOF14=1; //XF引脚输出低电平,D1灯亮
for(kk=0; kk<100; kk++)
delay_loop(); //延迟保持
GpioDataRegs.GPFSET.bit.GPIOF14=1; //XF引脚输出高电平,D1灯灭
for(kk=0; kk<100; kk++)
delay_loop(); //延迟保持
}
}
/*************************************
*名称:delay_loop()
*功能:延时函数,使得LED灯点亮或者熄灭的状态保持一定的时间*入口参数:无
*出口参数:无
***************************************/
void delay_loop()
{
short i;
for(i=0; i<30000; i++)
{}
}
CMD文件
MEMORY
{
PAGE 0 :
PRAMH0 : origin = 0x3f8000, length = 0x001000
PAGE 1 :
/* SARAM */
RAMM0 : origin = 0x000000, length = 0x000400
RAMM1 : origin = 0x000400, length = 0x000400
/* 外设帧0: */
DEV_EMU : origin = 0x000880, length = 0x000180
FLASH_REGS : origin = 0x000A80, length = 0x000060
CSM : origin = 0x000AE0, length = 0x000010
XINTF : origin = 0x000B20, length = 0x000020
CPU_TIMER0 : origin = 0x000C00, length = 0x000008
CPU_TIMER1 : origin = 0x000C08, length = 0x000008
CPU_TIMER2 : origin = 0x000C10, length = 0x000008
PIE_CTRL : origin = 0x000CE0, length = 0x000020
PIE_VECT : origin = 0x000D00, length = 0x000100
/* 外设帧1: */
ECAN_A : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100
/* 外设帧2: */
SYSTEM : origin = 0x007010, length = 0x000020 SPI_A : origin = 0x007040, length = 0x000010
SCI_A : origin = 0x007050, length = 0x000010
XINTRUPT : origin = 0x007070, length = 0x000010 GPIOMUX : origin = 0x0070C0, length = 0x000020 GPIODAT : origin = 0x0070E0, length = 0x000020 ADC : origin = 0x007100, length = 0x000020 EV_A : origin = 0x007400, length = 0x000040 EV_B : origin = 0x007500, length = 0x000040 SPI_B : origin = 0x007740, length = 0x000010
SCI_B : origin = 0x007750, length = 0x000010
MCBSP_A : origin = 0x007800, length = 0x000040
/* 代码安全模块密码区所在位置*/
CSM_PWL : origin = 0x3F7FF8, length = 0x000008
/* SARAM */
DRAMH0 : origin = 0x3f9000, length = 0x001000 }
SECTIONS
{
/* 存放程序: */
.reset : > PRAMH0, PAGE = 0
.text : > PRAMH0, PAGE = 0
.cinit : > PRAMH0, PAGE = 0
/* 存放数据区: */
.stack : > RAMM1, PAGE = 1
.bss : > DRAMH0, PAGE = 1
.ebss : > DRAMH0, PAGE = 1
.const : > DRAMH0, PAGE = 1
.econst : > DRAMH0, PAGE = 1
.sysmem : > DRAMH0, PAGE = 1
/* 存放外设0相关寄存器的结构: */
DevEmuRegsFile : > DEV_EMU, PAGE = 1
FlashRegsFile : > FLASH_REGS, PAGE = 1
CsmRegsFile : > CSM, PAGE = 1
XintfRegsFile : > XINTF, PAGE = 1
CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1
CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1
CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
PieV ectTable : > PIE_VECT, PAGE = 1
/* 存放外设2相关寄存器的结构: */
ECanaRegsFile : > ECAN_A, PAGE = 1
ECanaMboxesFile : > ECAN_AMBOX PAGE = 1
/* 存放外设1相关寄存器的结构: */
SysCtrlRegsFile : > SYSTEM, PAGE = 1
SpiaRegsFile : > SPI_A, PAGE = 1
SciaRegsFile : > SCI_A, PAGE = 1
XIntruptRegsFile : > XINTRUPT, PAGE = 1
GpioMuxRegsFile : > GPIOMUX, PAGE = 1
GpioDataRegsFile : > GPIODAT PAGE = 1
AdcRegsFile : > ADC, PAGE = 1
EvaRegsFile : > EV_A, PAGE = 1
EvbRegsFile : > EV_B, PAGE = 1
ScibRegsFile : > SCI_B, PAGE = 1
McbspaRegsFile : > MCBSP_A, PAGE = 1
/* 代码安全模块密码区所在的位置*/
CsmPwlFile : > CSM_PWL, PAGE = 1
}。