文档库 最新最全的文档下载
当前位置:文档库 › DSP(2)

DSP(2)

DSP(2)
DSP(2)

1.DSP芯片的主要结构特点:(1)哈佛结构;(2)专用的硬件乘法器;(3)流水线操作;(4)特殊的DSP指令;(5)快速的指令周期。

2.中央处理器的体系架构可以分为:冯?诺依曼结构和哈佛结构。

冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因此它们无法重叠执行,只有一个完成后再进行下一个。

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。可以减轻程序运行时的访存瓶颈。

3. DSP芯片的发展:美国AMI公司在1978年发布第一个单片DSP芯片;美国德州仪器公司(Texas Instruments,简称TI)的DSP芯片包含三大系列:TMS320C2000系列、TMS320C5000系列、TMS320C6000系列。

4.PSP系统的设计开发过程:需求分析、DSP体系结构设计、软硬件设计、软硬件调试、系统集成调试、系统集成测试。

DSP

5.’28系列DSP芯片的结构包括:中央处理器CPU、片内存储器、片内外设、时钟管理模块、中断管理(/扩展)模块。它们之间由芯片内部的数据总线和地址总线互相连接通信。

6.TMS320F2812芯片的封装方式有两大类:179引脚的GHH球形网格阵列BGA封装(Ball Grid Array);176引脚的LQFP封装(Low-profile Quad)。

所有输入引脚的电平均与TTL兼容,但输入不能够承受5V电压;所有输出引脚均为3.3V CMOS电平。上拉电流/下拉电流均为100μA;所有输出引脚的输出缓冲器驱动能力典型值是4mA。

7.DSP内部总线分为:地址总线和数据总线。任意时刻同时发生的两种操作不能使用同一条总线,因此,程序空间不能同时执行读写操作。

DSP外部总线:即DSP芯片与外扩存储器的总线接口,包括19根地址线和16根数据线。

8.TMS320F28x DSP处理器有两个独立的存储空间,即片内存储器和外部存储器,存储器的各个区块都统一映射到程序空间和数据空间,并且划分为如下几部分:1)程序/数据存储器:SARAM、ROM、Flash 2)CPU的中断向量:保留了64个地址作为CPU的32个中断向量;3)保留区:某些地址被保留作为CPU的仿真寄存器使用。

9.命令文件即CMD(Command)是DSP运行程序必不可少的文件,用于指定DSP存储器分配。CMD文件主要由两个伪指令构成,即MEMORY和SECTIONS。MEMORY指令定义目标存储器的配置,SECTIONS指令规定程序中各个段及其在存储器中的位置。MEMORY

{

PAGE 0:name 1 [attr]:origin=constant,length=constant;

PAGE n:name n [attr]:origin=constant,length=constant;

}

1)PAGE 0为程序存储器,PAGE 1以后为数据存储器;若不规定,则视为PAGE 0 。

2)不同PAGE上的存储区间可以取同样名字,相同PAGE上的名字不能相同;地址不许重叠。

attr为任选项,有四个属性可以选择,分别是R(可读)、W(可写)、X(可装入可执行代码)和I(可对存储器初始化)

3)origin规定存储区的起始地址,length规定存储区的长度

10.‘28x系列DSP时钟和系统控制电路包括振荡器、锁相环(PLL)、看门狗和工作模式选择等;锁相环和振荡器的作用是为DSP芯片中的CPU及相关外设提供可编程的时钟;芯片内部的外设分为高速外设和低速外设,可以设置不同的工作频率;看门狗模块用于监控程序的运行状态,它是提高系统可靠性的重要环节。

11.锁相环Phase-Locked Loop(PLL):通过软件程序实时地配置CPU系统时钟和片内外设时钟。PLL禁止,系统时钟等于XCLKIN;PLL旁路(上电时默认配置,PLLCR寄存器为零),系统时钟等于XCLKIN/2;PLL使能(PLLCR寄存器中有一个非零值n),系统时钟

等于XCLKIN的(n/2)倍。

12.‘28x DSP片上晶振电路模块允许采用内部振荡器或外部时钟源为CPU内核提供时钟; 在使用片上晶振模块的内部振荡器时,应当在X1/XCLKIN和X2两个引脚之间连上一个石英晶振,典型的晶振频率是30MHz。采用外部时钟应把时钟信号直接接到X1/XCLKIN引脚,X2引脚则必须悬空。

13.看门狗单元,又称为看门狗定时器WatchDog Timer(WDT),其本质是一个定时器电路;若使能看门狗单元,则在系统运行时,看门狗定时器自动计数;如果不能定时清除看门狗计数器(俗称“喂狗”,或“踢狗”Kick Dog),那么看门狗定时器就会溢出从而引起看门狗中断,强行系统复位。看门狗单元可以防止系统程序发生死循环(俗称“程序跑飞”),监测软件和硬件的运行状态,从而提高系统的可靠性。

28XDSP芯片的看门狗计数器WDCNTR为8位,计数器达到最大值28-1=255 时,看门狗模块输出一个DSP系统复位脉冲。

喂狗操作:在看门狗计数器达到最大值之前向看门狗复位密钥寄存器WDKEY先后写入

0x55和0xAA,则看门狗计数器清零,并自动开始下一轮的递增计数;写入其他任何数据都会引起DSP系统复位。

14.CPU定时器用于精确定时控制。TMS320F2812内部有3个CPU定时器;均为32位的递减计数器;定时器以系统时钟SYSCLKOUT作为定时时钟;CPU-Timer 0、CPU-Ti 1 mer 可以在用户程序中使用;和CPU-Timer2留给实时操作系统使用。

15. 28x系列DSP的中断可以由软件触发或硬件触发

16.DSP处理器内核共有16根中断线,包括XRS(取非)和NMI两个不可屏蔽中断和INT1至INT14等14个可屏蔽中断(均为低电平有效)

17.PIE中断工作原理(以外设中断为例)1)当某外设产生中断时,该外设中断标志寄存器(IF)的相应位被置1;如果外设中断使能(IE)寄存器相应的使能位也被置1,则外设生成中断请求发送到PIE控制器。(外设中断标志寄存器内的中断标志位必须用软件进行清除。)2)相应的中断标志PIEIFRx.y被置1;若PIEIERx.y被使能,且PIE中断确认位PIEACKx被清零,则则PIE控制器生成中断请求发送到CPU。(PIE中断确认位PIEACKx则需要手工清除)3)一旦向CPU发出了中断请求,CPU级中断标志寄存器(IFR)中对应INTx的位将被置1 ;CPU级中断使能寄存器(IER)和全局中断屏蔽位(INTM)都被使能时,CPU响应该中断请求。

18.‘28x系列DSP芯片内包含两个事件管理器(EV A和EVB)。每个事件管理器包含通用定时器、全比较PWM单元、捕获单元以及正交编码脉冲电路(QEP)。全比较PWM单元产生脉宽调制信号可以控制直流电机或步进电机的转速;捕获单元对光电编码器的输出信号进行测量可以计算电机的转速;正交编码脉冲电路根据增量编码器信号计算电机的旋转方向等信息。

19.通用定时器的寄存器:控制寄存器TxCON:决定通用定时器的操作模式,例如选择计数模式、时钟、预分频系数、比较寄存器的重装载条件;全局控制寄存器GPTCONA/B:规定了通用定时器针对不同事件采取的动作,读取计数方向,定义ADC的启动信号;比较寄存器TxCMPR :与通用定时器的计数值不断比较,匹配时,相应引脚跳变,请求中断;周期寄存器TxPR:决定定时器的计数周期;比较寄存器和周期寄存器是双缓冲的,任意时刻,都可以修改映像寄存器

20.通用定时器的中断:上溢中断TxOFINT:当通用定时器的计数值达到FFFFH时,发生上溢事件;下溢中断TxUFINT:当计数值达到0000H时,发生下溢事件;比较匹配TxCINT:当计数值与比较寄存器中的值相等时,发生比较匹配事件;周期匹配TxPINT:当计数值与周期寄存器中的值相等时,发生周期匹配事件;发生以上事件会将相应中断标志置位,如果外设中断未被屏蔽,则会产生一个外设中断请求

21.通用定时器的计数模式:对TxCON寄存器中的TMODE1~TMODE0位进行设置,选择不同的计数模式;每个通用定时器都支持4种计数模式:停止/保持模式、连续递增计数模式、定向递增/递减计数模式和连续递增/递减计数模式。设置TxCON.6即TENABLE位可以使能或禁止定时器的计数操作;

22.使用通用定时器产生PWM波形的步骤如下:(1)根据PWM载波周期设置TxPR的值;(2)设置TxCON,选择计数模式、计数时钟源并启动操作;(3)将在线计算得到的PWM 脉冲宽度(占空比)装载入TxCMPR。

在连续递增计数模式下,将期望的PWM周期除以通用定时器时钟周期,并减去1,得到的结果装入TxPR;在连续递增/递减计数模式下,将期望的PWM周期除以2倍的定时器时钟周期,得到的值装入TxPR。

23.每个EV模块各有3个全比较器,每个比较器对应两路PWM输出;EV A模块中,全比较器的时钟由通用定时器1提供,EVB模块中,全比较器的时钟由通用定时器3提供;每个比较单元包括3个比较寄存器CMPRx,各带一个映像寄存器;1个比较控制寄存器COMCONA;1个动作控制寄存器ACTRA;6路带三态输出的PWM引脚以及控制和中断逻辑;

比较单元的输入包括来自控制寄存器的控制信号,通用定时器1的时钟信号及下溢信号、周期匹配信号和复位信号。比较单元的输出信号是一个比较匹配信号,如果比较操作被使能的话,比较匹配信号将中断标志置位,并在对应的PWM引脚上产生跳变。

24.中断包括比较中断、周期中断、上溢中断、下溢中断

25.ADC模块的工作原理:ADC排序器有两个独立的8状态排序器(SEQl和SEQ2),它们可以组成双排序器,也可以级联成一个16状态的单排序器(SEQ),即级联模式,将一系列的转换请求自动排序;每次收到启动转换信号(SOC)时,通过多路选择器选择任意一个通道进行转换。模数转换结果被存储到对应的结果寄存器内,第一个转换结果储存ADCRESULT0内,第二个转换结果储存在ADCRESULT1内……;可以对同一个通道进行多次采样,即“重复采样”,或“过采样”。“过采样”得到的结果比单次采样转换结果分辨率高;在双排序器顺序采样模式下,新的SOC信号只能在当前排序命令完成后才能得到响应;如果SEQ1和SEQ2启动转换命令同时发生,那么SEQ1启动转换命令拥有优先执行权。

26.ADC模块特点:12位模数转换内核,内置双采样/保持器;顺序采样模式或并行采样模式;模拟输入电压范围:0V~3V;快速的转换时间,最高采样率12.5MSPS;16通道模拟信号输入;自动排序功能支持16通道自动转换,转换通道由软件编程选择;排序器可以工作在启动/停止模式,允许AD转换与多个按时间排序的触发源同步;双排序器模式下,EV A 和EVB触发源可独立触发转换;采样保持器的时间窗口有独立的预分频控制;

27.顺序采样时,CONVxx的4位均用来定义输入引脚,最高位为0说明采样的是A组,1说明采样的是B组。低3位定义偏移量,决定了某一组内的特定引脚。例如,CONVxx的数值0101b说明选择的输入通道是ADCINA5引脚。CONVxx的数值1011b,说明选择的输入通道是ADCINB3引脚;

并行采样时,CONVxx的最高位被舍弃,只有低3位的数据有效,例如CONVxx的数值0101b,则对ADCINA5和ADCINB5同时进行采样,转换的结果被储存在相邻的两个结果储存器中。

28.AdcRegs.ADCTRL3.bit.SMODE_SEL=1;

//设置并行采样模式

AdcRegs.ADCTRL3.bit.SMODE_SEL=0;

//设置顺序采样模式

AdcRegs. ADCTRL1.bit.SEQ_CASC=0;

//设置双排序器模式

AdcRegs. ADCTRL1.bit.SEQ_CASC=1;

//设置级联排序模式

AdcRegs.ADCMAXCONV.all=0x000F;

//排序器最大采样通道数为16,16路

28.ADC的排序器(SEQ1、SEQ2或SEQ)可以工作连续模式和启动/停止模式;(ADCTRL1中的CONT_RUN)连续模式下,必须通过中断服务程序将A/D相关寄存器的内容(如SEQCNTRn、SEQ1等)进行复位操作后,才能使排序器再次启动转换;在启动/停止模式,当排序器完成第一个序列转换后,可以在没有复位到初始状态的情况下,由SOC触发源再次启动转换。

29.ADC模块支持3种供电模式,通过控制寄存器ADCTRL3进行设置:ADC上电模式、ADC掉电模式和ADC关闭模式。

30.ADC模块上电顺序:(1)先给参考电源上电。(2)给ADC内部参考电源电路供电至少5ms后,再给ADC模块的其他模拟电路供电。(3)ADC模块完全供电后,必须再等待20μs 之后,才能执行第一次模数转换。对ADC模块断电时,可以同时清除控制寄存器ADCTRL3

中的ADCRFDN 、ADCBGDN和ADCPWDN位。ADC的供电模式必须通过软件控制,且独立于器件的电源模式。

31.不允许有电源引脚悬空;为了减少电源噪声和相互干扰,数字电路和模拟电路一般要单独供电,数字地和模拟地也要分开,并最终通过一个磁珠在单点连接。

32.C语言程序代码的特点:具有很好的可读性和可移植性,开发效率高,通常用C语言构成程序主框架;汇编语言程序代码的特点:具有很高的运行效率,常用于对时间要求比较苛刻的地方,比如中断服务子程序等。

33.头文件(扩展名为.h)的本质:头文件本身不含程序代码,只是起描述性作用,是一种包含功能函数、数据接口声明的载体文件;

头文件的内容:TI公司提供的头文件中定义了DSP系统用到的寄存器映射地址,寄存器位定义和寄存器结构等内容; ‘28x头文件主要包含DSP28-Device.h和各个外设头文件。

头文件的作用:是C语言不可缺少的组成部分,是用户程序和函数库之间的纽带;

头文件的使用:用户程序只要按照头文件中的接口声明来调用库功能,编译器就会从库中提取相应的代码;

34.完整的DSP程序应该包括必要的头文件包含、函数声明、宏定义、主函数main( )和中断服务子程序。其中,主函数的编程步骤为:第一步:初始化系统控制,包括PLL、WatchDog、外设时钟的设置与使能,通过调用InitSysCtrl( )实现;第二步:清除所有中断并初始化PIE 向量表,需要对外设级、PIE级、CPU级的中断都清除;第三步:初始化所有用到的外设,通过调用相应的初始化子程序来完成,例如:InitGpio( );第四步:开中断,即使能所有需要用到中断及全局中断INTM、全局实时中断DBGM;第五步:编写用户代码,完成用户所需功能。

#include "DSP281x_Device.h"

// DSP281x Headerfile Include File 包含头文件

#include "DSP281x_Examples.h"

// DSP281x Examples Include File

interrupt void cpu_timer0_isr(void);

// 函数的声明

void main(void) // 主函数

{

InitSysCtrl();

// 第一步:初始化系统控制,包括

//PLL,WatchDog,使能外设时钟

//第二步:清除所有中断,初始化PIE中断向量表

DINT;// 禁止CPU中断

InitPieCtrl();

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表

EALLOW;// 允许修改受EALLOW保护的寄存器

PieV ectTable.TINT0 = &cpu_timer0_isr;

EDIS;// 禁止修改受EALLOW保护的寄存器

//第三步:初始化外设,例如Cpu Timers

InitGpio();//初始化输入输出端口GPIO:

InitCpuTimers();

// 设置CPU-Timer 0 每秒都中断,CPU频率为100MHz,周期为1秒

ConfigCpuTimer(&CpuTimer0,100,1000000);

StartCpuTimer0();

// 第四步,开中断

IER |= M_INT1;

// 使能中断CPU INT1,对应于CPU-Timer 0:

PieCtrlRegs.PIEIER1.bit.INTx7 = 1;//使能PIE中的TINT0

EINT;//使能全局中断INTM ERTM;//使能全局实时中断DBGM

// 第五步,用户代码

……

}

interrupt void cpu_timer0_isr(void) //中断服务程序

{

CpuTimer0.InterruptCount++;

PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

//允许接收更多的中断

}

35.一个典型的dsp系统通常有哪些部分组成?

主要由d's'p芯片、电源管理电路、模拟输入电信号管理电路、时钟电路、复位电路、各类通信接口电路、数字信号输出接口电路、外部存储扩展电路、PWM输出驱动电路以及与系统相关的外部电路。

36.dsp系统时钟频率与所选晶振频率有怎样的的关系?

内部振荡器产生的基本输入时钟频率范围在20-35MHZ,片内的锁相环PLL对这个输入时钟进行倍频,提供更大范围的系统时钟,晶振的负载电容由外部电容C1,C2构成,负载电容的值过大或过小都不能使电路可靠工作。

37.一个完整的工程项目必须包含哪些类型的文件?如何向新的工程项目添加这些文件?

一个完整的工程项目包含源程序、库文件、命令文件、和头文件等。

38.如何将GPIO定义为外设I/O,请对相应的寄存器进行设置

复位时所有GPIOA配置为数字量I/O;方向寄存器GPADIR配置数字量I/O的输入/输出方向,当GPADIR的某一位为0时,相应的GPIOA设定为输入,当GPADIR的某一位为1时,相应的GPIOA引脚设定为输出复位时所有GPIO引脚均设置为输入。

数据寄存器GPADA T是可读可写寄存器。毒刺寄存器将返回相应的引脚上限定后的输入信号值,写此寄存器吧值从相应的I/O引脚暑促设置寄存器GPASET是只写寄存器,若将某一位写1,将是相应的I/O引脚输出高电平,写0无效。

39,比较CPU定时器与通用定时器的异同

CPU定时器只能用T0,通用定时器是EV中的都可以使用,CPU定时器只有周期中断,而EV中的通用定时器可以上溢中断,下溢中断,周期中断和比较中断四种。CPU定时器只用来定时计数,而通用定时器用来产生PWM波形,计算周期不同,cpu定时器是32位递减计数器,而通用有多种计数模式。

40.通用定时器产生PWM信号时,输入输出信号如何配置?寄存器的值如何修改?

每个通用定时器都提供一个独立的PWM 输出通道,当选择连续递增计数模式时,可产生不对称的PWM波形,当选择连续递增/递减计数模式时,可以产生对称PWM波形步骤如下:1、根据PWM载波周期设置TXPR(周期寄存器)的值;2设置TXCON(控制寄存器)选择计数模式、计数时钟源并启动操作;3、将在线计算得到的PWM脉冲宽度装载入TXCMPR(比较寄存器)

41.PWM单元由对称/不对称波形发生器、可编程死区单元DBU、PWM输出逻辑和空间向量SVPWM状态机组成;对称/不对称波形发生器与通用定时器中的波形发生器是相同的;

42.用比较单元和PWM电路产生PWM波形:设置和装载ACTRx;若要使能死区功能,需要设置和装载DBTCONx;初始化CMPRx;设置和装载COMCONx;设置和装载T1CON (对EV A)/T3CON(对EVB)、T1PR,启动操作;用在线计算得到的新值装载CMPRx。

43.当EV模块中有中断产生时,EV中断标志寄存器相应事件的中断标志位置为1;如果标志位未被屏蔽,则外设中断扩展控制器PIE将产生一个外设中断申请;当CPU响应外设中断申请时,所有被置位且使能的中断中具有最高优先级的外设中断向量将被装载入PIVR 外设寄存器中的中断标志必须在中断服务子程序中用软件写“1”将其清除。如果不能够成功地清除该位,将不能响应当前外设的下一个中断。

37.44.并行采样双排序器模式初始化:

AdcRegs.ADCTRL3.bit.SMODE_SEL=1;

//设置并行采样模式AdcRegs. ADCTRL1.bit.SEQ_CASC=0;

//设置双排序器模式AdcRegs.ADCMAXCONV.all=0x0033;

//每个排序器最大采样通道数为4,共8个序列,16路AdcRegs.ADCCHSELSEQl.bit.CONV00=0x0;

//采样ADCINA0和ADCINB0

……

AdcRegs.ADCCHSELSEQ3.bit.CONV11=0x7;

//采样ADCINA7和ADCINB7 AdcRegs.ADCTRL3.bit.SMODE_SEL=1;

//设置并行采样模式AdcRegs. ADCTRL1.bit.SEQ_CASC=1;

//设置级联排序模式AdcRegs.ADCMAXCONV.all=0x0007;

//每个排序器最大采样通道数为8,16路AdcRegs.ADCCHSELSEQl.bit.CONV00=0x0;

//采样ADCINA0和ADCINB0

……

AdcRegs.ADCCHSELSEQ3.bit.CONV11=0x7;

//采样ADCINA7和ADCINB7 AdcRegs.ADCTRL3.bit.SMODE_SEL=0;

//设置顺序采样模式

AdcRegs. ADCTRL1.bit.SEQ_CASC=0;

//设置双排序器模式AdcRegs.ADCMAXCONV.all=0x0077;

//每个排序器最大采样通道数为8,共16路AdcRegs.ADCCHSELSEQl.bit.CONV00=0x0;

//采样ADCINA0

……

AdcRegs.ADCCHSELSEQ3.bit.CONV11=0xF;

//采样ADCINB7 AdcRegs.ADCTRL3.bit.SMODE_SEL=0;

//设置顺序采样模式AdcRegs. ADCTRL1.bit.SEQ_CASC=1;

//设置级联排序模式AdcRegs.ADCMAXCONV.all=0x000F;

//排序器最大采样通道数为16,16路AdcRegs.ADCCHSELSEQl.bit.CONV00=0x0;

//采样ADCINA0

……

AdcRegs.ADCCHSELSEQ3.bit.CONV11=0xF;

//采样ADCINB7

相关文档