DSP 复习资料

  • 格式:docx
  • 大小:22.23 KB
  • 文档页数:3

DSP 复习资料:

1、 DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

2、 DSP芯片一般具有如下主要特点:在一个指令周期内可以完成一次乘法和一次加法;可以并行执行多个操作;快速的中断处理和硬件I/O支持;存储器采用哈佛结构;主要用于信号处理。

3、 一个典型的DSP系统应包括抗混叠滤波器、数据采集A/D转换器、数字信号处理器DSP、D/A转换器和低通滤波器等组成。

4、 按数据格式分为定点DSP和浮点DSP两类。按数据的定点格式工作的DSP芯片称为定点DSP;按数据的浮点格式工作的DSP芯片称为浮点DSP。其中C2x、C24x称为C2000系列,主要用于数字控制系统; C54x、C55x称为C5000系列,主要用于功耗低、便于携带的通信终端; C62x、C64x和C67x称为C6000系列,主要用于高性能复杂的通信系统,如移动通信基站。

5、 链接命令文件(·cmd文件)指定存储器的结构和段的定位,有MEMORY和SECTIONS两条指令。 MEMORY伪指令用来定义目标系统的存储器配置空间,包括对存储器各部分命名,以及规定它们的起始地址和长度。 SECTIONS伪指令用来指定链接器将输入段组合成输出段方式,以及输出段在存储器中的位置,也可用于指定子段。

6、 DSP系统中流水线操作是各指令以机器周期为单位相差一个时钟周期,连续并行工作的情况。其本质是DSP多条总线彼此独立地同时工作,使得同一条指令在不同机器周期内占用不同总线资源。同时,不同指令在同一机器周期内占用不同总线资源。 7、 一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和 CMD

文件(.CMD)组成,缺一不可。头文件的作用是定义了 DSP内部寄存器的数据结构。头文件一般情况下不需要修改,如果需要定义一些在整个工程内都具有作用域的全局变量的时候,可以在头文件中定义这些变量。CMD文件的作用是用来分配存储空间的。由于 DSP 编译器的编译结果是未定位的,DSP 也没有操作系统来定位执行代码,DSP

系统的配置需求也不尽相同,因此需要根据实际的需求,定义代码的存储位置。库文件包含了编译器提供的所有功能:①初始化C语言环境(入口地址是_c_int0),②设置堆栈,③提供标准的c语言函数库。源文件是实现DSP系统指定功能的主要代码部分。

8、 DSP系统的设计步骤分几个阶段: (1)明确设计任务,确定设计目标(2)算法模拟,确定性能指标 (3)选择DSP芯片和外围芯片 (4)设计实时的DSP应用系统 (5)硬件和软件调试 (6)系统集成和测试

9、 TMS320LF240x的基本结构分为中央处理单元(CPU)、存储器、片内外设与专用硬件电路三个组成部分。TI 的24系列DSP有两个状态寄存器,分别为ST0、ST1。192K字的可寻址存储器空间:64K字程序空间、64K字数据空间和64K字的I/O空间。

10、 24系列DSP支持软件和硬件两种中断。24系列采用两级中断管理方式。DSP的SCI接口是串行通讯接口模块。SPI是串行外设接口。数字输入输出模块都是功能复用引脚,这些引脚既可以作为通用双向IO引脚,也可以作为特殊功能引脚。

11、 存储器模型: DSP将存储器分成程序和数据两个线性块。程序存储器:包含可执行代码,初始化数据和开关量;数据存储器:包含外部变量、静态变量和系统堆栈。

12、 外设寄存器的定义:第一步:采用结构体、共用体、位域结构体定义寄存器变量。第二步:通过pragma伪指令将寄存器变量分配到数据段。第三步:通过MEMORY伪指令指示寄存器的实际硬件空间。第四步:通过SECTIONS伪指令将寄存器数据段分配到实际硬件空间。 13、 有如下程序:

/*点亮一个发光二极管*/

#include "DSP281x_Device.h"

void main(void)

{

InitSysCtrl(); // 系统初始化子程序,在DSP28_sysctrl.c中

EALLOW;

GpioMuxRegs.GPBDIR.bit.GPIOB0=1;

EDIS;

GpioDataRegs.GPBDAT.bit.GPIOB0=0;

GpioDataRegs.GPBDAT.bit.GPIOB0=1;

GpioDataRegs.GPBCLEAR.bit.GPIOB0=1;

GpioDataRegs.GPBSET.bit.GPIOB0=1;

GpioDataRegs.GPBTOGGLE.bit.GPIOB0=1;

GpioDataRegs.GPBTOGGLE.bit.GPIOB0=1;

while(1);

}