DSP知识总结.docx
- 文档编号:15357413
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:17
- 大小:27.92KB
DSP知识总结.docx
《DSP知识总结.docx》由会员分享,可在线阅读,更多相关《DSP知识总结.docx(17页珍藏版)》请在冰点文库上搜索。
DSP知识总结
DSP知识总结
一、*****2812的结构资源及性能
1、简单介绍*****2812
*****2812是TI公司推出的32位定点DSP芯片。
采用先进的哈佛总线结构(哈佛总线的主要特点:
是将程序和数据放在不同的存储空间内,每个存储空间都可以独立的访问,而且程序总线和数据总线分开,从而使数据的吞吐率提高了一倍。
冯・诺依曼结构是将程序、数据和地址存储在同一个空间中,统一进行编码。
)主频150M,指令周期6.67ns;内核电压1.8V,I/O电压3.3V;
采用流水线操作(8级流水线处理器),每条指令的执行分别划分为取指令、译码、取数、执行等若干步骤,由片内多个功能单元分别完成,支持任务的并行处理。
*****2812所有引脚输入电平均与TTL电平兼容,而输出电平位3.3V的CMOS电平(注:
引脚绝对不能输入5V电压,否则会烧毁芯片)
表1-1TTL电平标准引脚电气方向输入输出引脚电气方向输入输出
表1-3*****2812的硬件特点硬件特点指令周期(150MHz)内核电压(150MHz)I/O电压片上RAM片上Flash片上ROMBootROM掩膜ROM片内Flash/ROM/SRAM的密码保护外部存储接口看门狗定时器32位CPU定时器事件管理器12位ADC串行通信接口SCI串行外围接口SPI局域网控制器CAN通信复用的数字I/O引脚*****28126.67ns1.9V3.3V18K?
16位128K?
16位无有有有有有有EVA、EVB16通道SCIA、SCIB有有56个*****28126.67ns1.9V3.3v18K?
16位无128K?
16位有有有有有有EVA、EVB16通道SCIA、SCIB有有有56个高电平2.0V2.4V高电平0.7?
Vcc0.9?
Vcc低电平1.2V0.8V低电平0.3?
Vcc0.8V表1-2CMOS电平标准多通道缓冲串行接口McBSP有MADEBYBAOYILIU
外部中断源封装工作温度范围3个179针的BGA176针的LQFPA:
-40~+85℃S:
-40~+125℃3个179针的BGA176针的LQFPA:
-40~+85℃S:
-40~+125℃2、F系列和C系列的区别
C系列片内含有128K?
16的ROM,而F系列片内含有128K?
16的Flash。
3、DSP选型主要考虑哪些方面
答:
1、系统特点。
(C2000系列处理器提供多种控制系统使用外围设备,比较适合控制领域;C5000系列处理器具有处理速度快,功耗低,相对成本低等特点,比较适合便携设备及消费类电子设备使用;C6000系列处理器具有处理速度快、精度高等特点,更适合图像处理、通信设备等应用领域)
2、算法格式。
3、系统精度。
4、处理速度。
5、功耗。
6、性能价格比。
7、支持多处理器。
8、系统开发的难易程度。
二、*****2812的硬件设计
略
三、存储器的结构
表1-4总线名称位数PAB(ProgramAddressBus)DWAB(Data-WriteAddressBus)PRDB(Program-ReadDateBus)DRDB(Data-ReadDataBus)程序地址总线数据写地址总线程序读数据总线数据读地址总线22位32位32位32位32位32位DRAB(Data-ReadAddressBus)数据读地址总线DWDB(Data/Program-WriteData数据写地址总线Bus)四、时钟和系统控制
1、锁相环是什么?
有什么作用?
答:
锁相环是一种控制晶振使其相对于参考信号保持恒定相位的电路。
主要作用是通过软件实时的配置片上外设时钟,提高系统的灵活性和可靠性。
此外,由于使用软件可编程锁相环,所设计的系统处理器外部允许较低的工作频率,而片内经过锁相环电路为系统提供较高的系统时钟,可以有效地降低系统对外部时钟的依赖和电磁干扰,提高系统启动和运行的可靠性,降低系统对硬件的设计要求。
表4-1XCLKIN和送至CPU的时钟信号CLKIN之间的关系
PLL模式禁止说明上电复位时通过将XF_PLLDIS引脚置底来进入该模式,PLL模块完全不使能。
此时,MADEBYBAOYILIU
*****UT/CLKINXCLKIN
输入CPU的时钟由来自X1/XCLKIN引脚的时钟直接去驱动。
X2引脚不使用旁路XF_PLLDIS为高电平时,PLL被使能;若此时上电默的PLL配置(PLLCR中DIV的值为0),则PLL自身被旁路。
从X1/XCLKIN引脚输入的时钟信号除以2,然后送到CPUXCLKIN/2使能XF_PLLDIS为高电平时,PLL被使能;同时通过给PLLCR中位DIV写一个不为0的值来实现PLL的使能。
时钟信号需要进入PLL模式进行n倍频,然后除以2,最后送至CPU(XCLKIN?
n)/2注:
实际使用通常使用第3中方式,即PLL使能。
通常使用30MHz晶振为F2812提供时基,PLL控制寄存器PLLCR取最大值10的时候,送至CPU的时钟可以达到150MHz,这也是F2812所使能支持的最高时钟频率。
2、高速时钟和低速时钟
?
经低速外设时钟预定标寄存低速外设:
SCIA、?
?
器(LOSPCP0~7)变成LSPCLKSCIB、SPI、McBSP?
*****UT?
?
经高速外设时钟预定标寄存高速外设:
EVA、EVB?
?
?
器(HISPCP0~7)变成HSPCLK和ADC问:
低速外设时钟(LSPCLK)一定比高速外设时钟(HSPCLK)慢吗?
答:
不一定。
从LSPCLK和HSPCLK的计算公式可以看出,这两个时钟信号的频率是独立无关的,各自分别取决于LOSPCP或者HISPCP的值,与其他因素没有关系。
当给LOSPCP寄存器所附的值小于HISPCP寄存器所附的值时,LSPCLK的值就会大于HSPCLK的值。
3、看门狗(Watchdog)
F2812的看门狗电路有一个8位看门狗加法计数器WDCNTR,无论什么时候,如果WDCNTR计数达到最大值,看门狗模块就会产生一个输出脉冲,脉冲宽度为512个振荡器时钟宽度。
问:
F2812中看门狗的作用?
答:
其作用是为DSP的运行情况进行“把脉”,一旦发现程序跑飞或者状态不正常,便立即使DSP复位,提高系统的可靠性。
问:
防止看门狗计数器(WDCNTR)溢出的两种方法?
答:
1)、禁止看门狗,使得计数器WDCNTR无效。
向看门狗控制寄存器(WDCR)中写0x0068;例程:
1
voidDisableDog(void)//关闭看门狗{
EALLOW;
SysCtrlRegs.WDCR=0x0068;
MADEBYBAOYILIU
EDIS;}2)、定时“喂狗”。
通过软件向负责复位看门狗计数器的看门狗密钥寄存器(8位的WDKEY)周期性的写入0x55+0xAA,紧跟着0x55写入0xAA能够清除WDCNTR。
当向WDKEY写入0x55时,WDCNTR复位到使能的位置;只有在向WDKEY写0xAA后才能*****真正的被清除。
写任何其他的值都会使系统立即复位。
例程:
2
voidKickDog(void)//定时喂狗{
EALLOW;
SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}
4、时钟与系统控制模块的寄存器
表4-2看门狗与PLL寄存器
名称HISPCPLOSPCPPCLKCRPLLCRWDCNTRWDKEYWDCR15地址0x***-*****A0x***-*****B0x***-*****C0x***-*****0x***-*****0x***-*****0x***-*****地址空间1?
161?
161?
161?
161?
161?
161?
1611说明高速外设时钟预定标寄存器低速外设时钟预定标寄存器外设时钟控制寄存器PLL控制寄存器看门狗计数器寄存器看门狗复位密钥寄存器看门狗控制寄存器10981)、外设时钟控制寄存器(PCLKCR)141312|保*****LK保*****CLK*****LK*****LK保*****K留留留7432保留1*****K0*****KReserved*****K*****LK位14.该位置1,将使CAN外设的系统时钟有效。
*****CLK位12.该位置1,将使McBSP外设的低速时钟(LSPCLK)有效。
*****LK位11该位置1,将使SCIB外设的低速时钟(LSPCLK)有效*****LK位10该位置1,将使SCIA外设的低速时钟(LSPCLK)有效*****K位8该位置1,将使SPI外设的低速时钟(LSPCLK)有效*****K位3该位置1,将使ADC外设的高速时钟(HSPCLK)有效*****K位1该位置1,将使EVB外设的高速时钟(HSPCLK)有效*****K位0该位置1,将使EVA外设的高速时钟(HSPCLK)有效2)、高速外设时钟预定标寄存器(HISPCP)153|2保留0HSPCLKHSPCLK位2~0。
对于*****UT有关的高速外设时钟(HSPCLK)的速率进行配置。
如果HISPCP?
0,HSPCLK=*****UT/(HISPCP?
2)。
如果HISPCP=0,
MADEBYBAOYILIU
HSPCLK=*****UT。
000高速时钟=*****UT/1100高速时钟=*****UT/8001高速时钟=*****UT/2(复位默认值)101高速时钟=*****UT/10010高速时钟=*****UT/4110高速时钟=*****UT/12011高速时钟=*****UT/6111高速时钟=*****UT/143)、低速外设时钟预定标寄存器(LOSPCP)153|20保留LSPCLKLSPCLK位2~0。
对于*****UT有关的低速外设时钟(LSPCLK)的速率进行配置。
如果LOSPCP?
0,LSPCLK=*****UT/(LOSPCP?
2)。
如果LOSPCP=0,LSPCLK=*****UT。
000高速时钟=*****UT/1100高速时钟=*****UT/8001高速时钟=*****UT/2101高速时钟=*****UT/10010高速时钟=*****UT/4(复位默认值)110高速时钟=*****UT/12011高速时钟=*****UT/6111高速时钟=*****UT/144)、PLL控制寄存器(PLLCR)154|30保留DIVDIV位3~0.控制PLL被旁路或不被旁路,并且当不被旁路时,设置PLL时钟的比例0000CLKIN=OSCCLK/2(PLL旁路)1000CLKIN=(OSCCLK?
8.0)/20001CLKIN=(OSCCLK?
1.0)/21001CLKIN=(OSCCLK?
9.0)/20010CLKIN=(OSCCLK?
2.0)/21010CLKIN=(OSCCLK?
10.0)/20011CLKIN=(OSCCLK?
3.0)/21011CLKIN=保留0100CLKIN=(OSCCLK?
4.0)/21100CLKIN=保留0101CLKIN=(OSCCLK?
5.0)/21101CLKIN=保留0110CLKIN=(OSCCLK?
6.0)/21110CLKIN=保留0111CLKIN=(OSCCLK?
7.0)/21111CLKIN=保留5)、看门狗计数器寄存器(WDCNTR)158|70保留WDCNTRWDCNTR位7~0。
这些位包含WD计数器的当前值。
8位计数器以WDCLK速率连续增加、如果计数溢出,看门狗会初始化复位状态。
如果用一个有效地组合写WDKEY寄存器,那么计数器复位位0.6)、看门狗复位密钥寄存器(WDKEY)158|70保留WDKEYWDKEY位7~0。
紧跟着0x55写入0xAA将清除WDCNTR位(见例程2)。
写任何其他的值则会立即使看门狗复位。
从WDCR寄存器读取返回的值7)、看门狗控制寄存器(WDCR)158|76|53|20保留WDFLAGWDDISWDCNKWDPSWDFALG位7。
看门狗复位状态标志位,如果该位置1,表示一个看门狗复位(WDRST)产生了复位条件。
如果为0,则是一个外部器件或加电复位条件。
该位保持锁存状态直到用
MADEBYBAOYILIU
户写一个1,清除此条件。
写0无效
WDDIS位6。
向该位写1将使看门狗模块无效。
写0将使看门狗模块使能。
仅当SCSR2寄存器中的*****IDE位置1时,该位可以修改。
复位时看门狗模块使能
WDCNK位5~3。
无论何时执行写此寄存器的操作,用户必须总是将这些位写成101。
写其他值将使其立即复位(前提:
看门狗使能)
WDPS位2~0。
这些位相对于OSCCLK/512来配置看门狗计数器的时钟(WDCLK)速率:
000WDCLK=OSCCLK/512/1100WDCLK=OSCCLK/512/8001WDCLK=OSCCLK/512/1101WDCLK=OSCCLK/512/16010WDCLK=OSCCLK/512/2110WDCLK=OSCCLK/512/32011WDCLK=OSCCLK/512/4111WDCLK=OSCCLK/512/64例程3:
voidInitSysCtrl(void)//系统初始化函数{Uint16i;EALLOW;//仿真读取使能SysCtrlRegs.WDCR=0x0068;//禁止看门狗SysCtrlRegs.PLLCR=0xA;//如果外部晶振30MHz,则//*****UT=(30MHz*10)/2=150MHzfor(i=0;i5000;i++){;}//WaitforPLLtolockSysCtrlRegs.HISPCP.all=0x0001;//设置高速时钟HSPCLK=150MHz/2=75MHzSysCtrlRegs.LOPCP.all=0x0002;//设置低速时钟LSPCLK=150MHz/4=37.5MHzSysCtrlRegs.PCLKCR.bit.*****K=1;//使能EVA外设时钟SysCtrlRegs.PCLKCR.bit.*****K=1;//使能EVB外设时钟SysCtrlRegs.PCLKCR.bit.*****K=1;//使能SCI外设时钟EDIS;//与EALLOW相对}
五、通用I/O口(GPIO)
X281xDSP为用户提供了56个通用的数字I/O引脚,这些引脚基本上都是多功能复用引脚,并且将56个引脚分成6组进行管理,其中GPIOA和GPIOB个管理16个引脚,GPIOD管理14个引脚,GPIOE管理3个引脚,GPIOF管理15个引脚,GPIOG管理2个引脚
1、GPIO寄存器
表5-1GPIO的控制寄存器名称GPxMUX(x=A,B,D,E,F,G)GPxDIR(x=A,B,D,E,F,G)GPxQUAL(x=A,B,D,E)大小(?
16)寄存器说明111GPIO功能选择控制寄存器GPIO方向控制寄存器GPIO输入限定控制寄存器注:
1)、并不是所有的引脚的输入都支持输入信号限定功能,GPIOF和GPIOG没有输入信号限定的功能所以没有GPxQUAL寄存器2)、GPIO控制寄存器受EALLOW控制例程4:
功能选择寄存器(GPxMUX)的使用EALLOW;
GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=1;//将PWM1引脚设置为PWM波形输出GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=0;//将PWM1引脚设置为通用数字I/O口
MADEBYBAOYILIU
EDIS;
例程5:
GPIO设置输入输出功能EALLOW;
GpioMuxRegs.GPADIR.bit.GPIOA0=0;//将PWM1引脚设置为输入引脚GpioMuxRegs.GPADIR.bit.GPIOA0=1;//将PWM1引脚设置为输出引脚EDIS;
表5-2GPIO数据寄存器名称GPxDAT(x=A,B,D,E,F,G)GPxSET(x=A,B,D,E,F,G)GPxCLEAR(x=A,B,D,E,F,G)GPxTOGGLE(x=A,B,D,E,F,G)大小(?
16)1111寄存器说明GPIOx数据寄存器GPIOx置位寄存器GPIOx清除寄存器GPIOx取反寄存器注:
1)、GPIO数据寄存器不都EALLOW保护;
2)、置位寄存器(GPxSET)、清除寄存器(GPxCLEAR)、取反寄存器(GPxTOGGLE)只能写1,写0无效;
例程6:
GPIO设置输入时读取引脚高低电平
if(GpioDataRegs.GPADAT.bit.GPIOA0==1)//PWM1引脚输入电平是高电平{?
}
if(GpioDataRegs.GPADAT.bit.GPIOA0==0)//PWM1引脚输入电平是低电平{?
}
例程7:
GPIO设置为输出时,输出高电平或者低电平
GpioDataRegs.GPASET.bit.GPIOA0=1;//PWM1引脚输出高电平
GpioDataRegs.*****R.bit.GPIOA0=1;//PWM1引脚输出低电平六、CPU定时器
X281x芯片内部具有3个32位的CPU定时器――Timer0、Timer1、Timer2。
其中CPU定时器1和2被系统保留,用户只能用Timer0。
CPU定时器的几个寄存器:
32位的定时器周期寄存器PRDH:
PRD,32位的计数器寄存器TIMH:
TIM,16位的定时器分频器寄存器TDDRH:
TDDR,16位的预定标计数器寄存器PSCH:
PSC。
(XH:
H表示方法XH表示高位,X表示低位)1、CPU定时器寄存器
表6-1CPU定时器寄存器列表名称TIMERxTIM(x=0、1、2)TIMERxTIMH(x=0、1、2)TIMERxPRD(x=0、1、2)TIMERxPRDH(x=0、1、2)TIMERxTRC(x=0、1、2)TIMERxTPR(x=0、1、2)TIMERxTPRH(x=0、1、2)
大小(?
16)1111111说明CPU定时器计数器寄存器低位CPU定时器计数器寄存器高位CPU定时器周期寄存器低位CPU定时器周期寄存器高位CPU定时器控制寄存器CPU定时器预定标寄存器低位CPU定时器预定标寄存器高位1)、定时器计数器寄存器低位(TIMERxTIM)
MADEBYBAOYILIU
15TIM0TIM位15~0。
定时器计数寄存器(TIMH:
TIM):
TIM寄存器是当前32位定时器的低16位,2)、定时器计数器寄存器高位(TIMERxTIMH)150TIMHTIMH位15~0。
定时器计数寄存器(TIMH:
TIM):
TIMH寄存器是当前32位定时器的高16位,3)、定时器周期寄存器低位(TIMERxPRD)150PRDPRD位15~0.定时器周期寄存器(PRDH:
PRD):
PRD寄存器是32位周期寄存器的低16位。
4)、定时器周期寄存器高位(TIMERxPRDH)150PRDHPRDH位15~0.定时器周期寄存器(PRDH:
PRD):
PRDH寄存器是32位周期寄存器的高16位。
5)、定时器控制寄存器(TIMERxTCR)1514|1312|1110|98TIF7保留TIE6|5TRB保留TSSFREE4|3SOFT保留保留0TIF位15。
定时器中断标志位。
当定时器减到0时,标志位将置1,可以通过软件写1对该位清0;但是只有计数器递减到0,该位才会被置位。
对该位写1将清除该位,写0无效。
TIE位14。
定时器中断使能位。
如果定时器计数器递减到0,该位置1,定时器将会向CPU提出中断请求。
FREE位11。
定时器仿真方式。
SOFT位10。
FREESOFT定时器仿真方式。
TRB位5。
定时器重装位。
当向TRB写1时,PRDH:
PRD的值装入TIMH:
TIM,并且把定时器分频寄存器TDDRH:
TDDR中的值装入预定标计数器PSCH:
PSC。
TRB位一直读作0。
TSS位4。
定时器停止状态位。
TSS是停止或启动定时器的一个标志位。
要停止定时器,置TSS位1。
要启动或重启定时器,置TSS位0。
在复位时,TSS清0并且定时器立即启动。
6)、定时器预定标计数器低位(TIMERxTPR)158|70PSCTDDRPSC位15~8。
定时器预定标计数器。
PSC是预定标计数器的低8位。
TDDR位7~0。
定时器分频器。
TDDR是定时器分频器的低8位。
7)、定时器预定标计数器高位(TIMERxTPRH)158|7PSCHTDDRH0PSCH位15~8。
定时器预定标计数器。
PSCH是预定标计数器的高8位。
MADEBYBAOYILIU
TDDRH位7~0。
定时器分频器。
TDDRH是定时器分频器的高8位。
2、CPU定时器工作原理
每来一个*****UT时
中断信号钟信号预定标计数器
PRDH:
PRD(PSCH:
PSC)计数就会
YN减1,直到减位0时,就会
TIMH:
TIM=0?
产生一个TIMCLK同时把
装载定时器分频器(TDDRH:
TDDR)中的值重装到PSCH:
PSC中。
同理,每TIMH:
*****:
TIM计数减1产生一个TIMCLK计数器(TIMH:
TIM)中的值就TIMCLK会减1,直到减位0,产生TDDRH:
TDDR一个中断信号,同时把周期
YN寄存器(PRDH:
PRD)中
PSCH:
PSC=0?
的值装载到TIMH:
TIM中。
载装PSCH:
*****:
PSC计数减1
*****UT
由以上可知一个TIMCLK的时间为:
TIMCLK=定时时间为:
TDDRH:
TDDR+1?
10?
6(单位:
s)
XT=(PRDH:
PRDH+1)?
TDDRH:
TDDR+1?
10?
6(单位:
s)
X
其中X位系统的时钟频率(单位MHz)
实际应用中通常把TDDRH:
TDDR取为0;所以定时时间与时钟频率X和周期寄存器(PRDH:
PRD)的值有关。
时钟频率已知所以就可以很据想要定时时间用上式求出PRDH:
PRD的值。
例程8:
CPU定时器配置函数
ConfigCpuTimer(CpuTimer0,150,***-*****);
这个函数共有3个参数:
第1个参数表示使用的哪一个定时器,由于只有CPU定时器0可以使用,所以这个参数是固定的;第2个参数是表示系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 知识 总结