DSP芯片硬件系统的基本设计中时钟电路的设计Word文档下载推荐.docx
《DSP芯片硬件系统的基本设计中时钟电路的设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP芯片硬件系统的基本设计中时钟电路的设计Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
表中时钟方式的选择方案是针对不同C54x芯片的。
对于同样的CLKMD引脚状态,使用芯片不同,所对应的选择方案就不同,其选定的工作频率也不同。
因此,在使用硬件配置的PLL时,应根据所选用的芯片型号来选择正确的引脚状态。
由表可见,进行硬件配置时,其工作频率是固定的。
当不用PLL时,CPU的时钟频率等于内部振荡器频率或外部时钟频率的一半;
若用PLL,CPU的时钟频率等于内部振荡器频率或外部时钟频率乘以系数N,即对内部或外部时钟倍频,其频率为PLL×
N。
在DSP正常工作时,时钟模式不能重新改变和配置。
但DSP进入IDLE3省电模式后,其CLKOUT输出高电平时,时钟模式便可以重新进行配置。
表2.1 时钟方式配置
引脚状态
时钟方式
CLKMD1
CLKMD2
CLKMD3
选择方案1
选择方案2
用外部时钟源,PLL×
3
5
1
2
4
用内部振荡器,PLL×
用外部时钟源,频率除以2
用外部时钟源,频率除以2
用内部振荡器,频率除以2
停止方式
软件可编程PLL
2.2.1软件可编程PLL的工作方式
软件可编程PLL的特点是具有高度的灵活性。
它利用编程方式对时钟方式寄存器CLKMD的设定,来定义PLL时钟模块中的时钟配置。
它包括一个用来提供时钟乘法器系数的时钟定标器,并能直接接通和关断PLL的功能。
一个PLL锁定定时器,它可以用于延迟器件PLL时钟模式的切换,直到锁定操作完成为止。
通过软件编程,可以实现以下两种工作方式:
(
)PLL方式。
即倍频方式,芯片的工作频率等于输入时钟CLKIN乘以PLL的比例系数。
其比例系数共31种,取值范围为—15,靠锁相环电路获得。
)DIV方式。
即分频方式,对输入时钟进行2分频或4分频,在此方式下,所有的模拟电路,包括PLL电路将关断,以使芯片功耗最小。
2.2.2复位后时钟模式的设置
复位操作之后,时钟方式寄存器是由3个外部引脚CLKMD1、CLKMD2和CLKMD3的值来设定的。
3个CLKMD引脚对应的模式由表列出。
表 复位时设置的时钟模式(C5402)
CLKMD3
CLKMD的复位值
E007H
PLL×
15
9007H
10
4007H
5
1007H
F007H
1
0000H
2分频(PLL无效)
F000H
4分频(PLL无效)
─
保留
从表可以看出,不同的外部引脚状态对应不同的时钟方式。
通常,DSP系统的程序需要从外部低速EPROM中调入,可以采用较低工作频率的复位时钟方式,待程序全部调入内部快速RAM后,再用软件重新设置DSP寄存器的值,使DSP芯片工作在较高的频率上。
复位后软件可编程PLL可以被编程设置为任意所需的模式。
下列时钟模式的引脚的组合可以在复位时开放PLL:
C5402中是CLKMD(3—1)=000B—>110B,其它器件中是CLKMD(3—1)=000B—>101B。
当这些时钟模式引脚组合被使用时,内部的锁存定时器不再激活。
因此,系统必须延迟释放复位以保PLL锁存时间的延迟得到满足。
2.2.3时钟工作方式寄存器CLKMD的应用说明
对PLL的编程就是对16位的存储器映射寄存器——时钟工作方式寄存器CLKMD的编程,其地址为0058H。
其各位的定义如下表所示:
位
15—12
11
10—3
位定义
PLLMUL
PLLDIV
PLLCOUNT
PLLON/OFF
PLLNDIV
PLLSTATUS
位操作
R/W
R
表 时钟模式寄存CLKMD的格式
时钟方式寄存器CLKMD各位段的功能见下表:
表CLKMD寄存器各位段的功能表
符号
名称
功能
15~12
PLL乘法
(读/写位)
与PLLDIV以及PLLNDIV一起定义PLL的乘系数,见表5
PLL除法位
与PLLMUL以及PLLNDIV一起定义PLL的乘系数,见表5
10~3
PLL计数器值
PLL计数器是一个减法计数器,每16个输入时钟脉冲CLKIN到来后减1。
对PLL开始工作之后到PLL成为CPU时钟之前的一段时间进行计数定时。
PLL计数器能够确保在PLL锁定之后以正确的时钟信号加到CPU。
PLL通/关位
与PLLNDIV位一起决定PLL部件的通和断。
见下表
PLL状态
断开
工作
PLL时钟电路选择位(读/写位)
与PLLMUL和PLLNDIV一起定义PLL的乘系数,并决定时钟电路的工作方式。
PLLNDIV=0,采用DIV方式,即分频
PLLNDIV=1,采用PLL方式,即倍频
PLL的状态位(只读位)
用来指示时钟电路的工作方式:
PLLSTATUS=0,时钟电路为DIV方式
PLLSTATUS=1,时钟电路为PLL方式
PLL的系数的选择见下表:
表 PLL分频倍频系数配置表
PLL乘系数
0~14
15
0或偶数
奇数
PLLMUL+1
(PLLMUL+1)÷
PLLMUL÷
DSP内部时钟信号CLKOUT=CLKIN×
系数。
3.可编程PLL时钟工作模式的切换编程
下面将详细说明软件可编程PLL的编程思想,以及PLL在启动设置时、在不同时钟模式之间转换时以及在IDLE1/IDLE2/IDLE3指令运行前后的正确使用。
从分频模式切换向倍频模式的切换编程
在进行从分频模式向倍频模式的转换时,应当注意如果从DIV模式切换到PLL模式时PLL没有被锁定,那么在模式转换发生之前一定要有PLL锁定时间延迟,以保证只有合适的时钟信号才会被提供给器件。
因此,在从DIV模式切换到PLL模式时了解PLL是否被锁定很重要。
在上电时、在PLLMUL或PLLDIV的值修改后、在PLL关闭后(即PLLON/OFF=0)或在输入参照时钟丢失之后,PLL是不锁定的。
一旦被锁定,它将保持锁定状态,甚至在DIV模式下也保持。
只要PLL前面已被锁定,而且自PLL锁定以来,PLL一直没有被关闭过(PLLON/OFF位保持为1),PLLMUL和PLLDIV的值也没有被改变,那么PLL将一直保持锁定状态。
从DIV模式到PLL模式的切换(把PLLNDIV设置为1)激活了PLLCOUNT可编程锁存定时器(在PLLCOUNT被预先装载了一个非零值时),并且这个特点可以用于提供一个实现定时时间延迟的便捷方法。
PLLCOUNT锁存定时器的特性应当用在前面描述过的PLL没有被锁定的情况下,除非用一个复位延时来实现锁定时间延迟,或者PLL不使用。
从DIV模式到PLL模式的切换是通过对CLKMD的装载来完成的。
后面将说明在PLL未锁定时从DIV模式切换到PLL模式的过程如果在PLL被锁定的条件下进行这个模式转换,效果与从PLL模式切换到DIV时相同,但是顺序相反。
在这种情况下,新时钟模式生效的延迟时间是相同的。
在PLL没有锁定或模式改变后工作在没有锁定的状态下,从DIV模式切换到PLL模式可以同过设置PLLMUL、PLLDIV和PLLNDIV位来选择频率的倍频。
并且PLLCOUNT位将被设置,以选择所需要的锁定时间延迟。
注意,只有在DIV模式中才能改变PLLMUL、PLLCOUNT和PLLON/DOFF位。
一旦PLLDIV置位,PLLCOUNT锁定定时器就从预设值开始递减。
当PLLCOUNT锁定定时器减到0后,需要6个CLKIN周期加上个PLL周期(CLKOUT频率)切换到PLL模式。
完成切换后,CLKMD中的PLLSTATUS位读出为1.。
注意,在PLL锁定期间,C54xDSP仍工作在DIV模式。
下面的指令可以实现从DIV模式切换到PLL×
3模式,其中CLKIN频率为13MHz,PLLCOUNT=(18)10,该值包含了一定的安全冗余量。
STM#0010000010010111B,CLKMD
从倍频模式向分频模式的切换编程
从PLL模式切换到DIV模式是,没有PLLCOUNT延时,这种切换经过短暂的延时后即可实现。
从PLL模式切换到DIV模式时也要装载CLKMD寄存器。
将PLLDNIV位清零,选择DIV模式而且PLLMUL位被设置以选择所需要的频率乘数因子。
对所有的PLLMUL值(除了1111B)而言,切换到DIV模式需要6个CLKIN周期加上个PLL周期(CLKOUT频率)。
当PLLMUL的值为1111B,切换过程需要12个CLKIN周期加上个PLL周期。
在完成切换到DIV模式后,CLKMD中的PLLSTATUS位的读出值为0。
下面的程序可以实现从PLL×
3(3倍频)模式到二分频模式的切换。
在程序中,通过检测PLLSTATUS位来确定是否已切换到DIV模式,在确认完成切换后,用STM指令关闭PLL。
STM#0B,CLKMD ;
转换到DIV模式
Testb:
LDMCLKMD,A
AND#01B,A ;
查询STATUS位
BCTstStatu,ANEQ
STM#0B,CLKMD
;
若STATUS是DIV模式时,复位PLLON/OFF
从倍频模式向倍频模式的切换编程
要改变PLL的倍率,必须先把时钟模式从PLL模式切换到DIV模式,然后在切换到新的PLL模式。
不允许从一种PLL倍率直接切换到另一种PLL倍率。
为了从一种PLL倍率切换到另一种PLL倍率,必须遵从以下步骤:
(1)将PLLNDIV位清0,选择DIV模式。
(2)查询PLLSTATUS位,该标志位为0说明已切换到DIV模式。
(3)按照所要求的倍率,修改CLKMD寄存器中的PLLMUL、OLLDIV和PLLNDIV。
一旦PLLDIV位被置位,PLLCOUNT锁定定时器就从预设值开始递减。
当PLLCOUNT锁定定时器减到0时,在经过6个CLKIN周期加上个PLL周期(CLKOUT频率)的时间后,切换到PLL模式。
下面一段指令可以完成从PLL×
(X)模式切换到PLL1的模式
STM#0b,CLKMD ;
先转换到DIV模式
LDMCLKMD,A
AND#01B,A ;
BCTstStatu,ANEQ
STM#0000001111101111B,CLKMD
;
转换到PLL×
1模式
从分频模式向分频模式的切换编程
与从PLL模式到PLL模式切换的情况一样,直接在2分频和4分频之间的切换也是不允许的。
若要在这两个模式之间切换,则必须先切换到PLL的整数(非分数)倍频模式,然后在切换到所要求的分频模式。
下面的程序可实现从DIV÷
2模式切换到DIV÷
4模式:
STM#0000000010010111B,CLKMD
;
先从2分频模式切换到PLL×
STM#0B,CLKMD;
再转换到DIV模式
LDMCLKMD,A
AND#01B,A;
STM#000110000000010B,CLKMD
若STATUS=0,则转换到DIV模式,设置相关位,从PLL×
1模式—>
DIV÷
4模式
紧跟在复位之后的PLL操作
在复位之后,时钟模式立即由3个外部引脚CLKMD1、CLKMD2和CLKMD3的值决定。
从初始时钟模式切换到任意其他模式的转换可以很容易地通过改变CLKMD的内容来完成。
如果内部振荡器的使用需要一个外部晶振,那么器件的CLKMD引脚必须在复位时被设置,一启动内部振荡器。
参考表和表中列出的每种器件的外部引脚值和可用模式。
(在C5420中内部振荡器是无效的)
下面的指令可实现从÷
2模式到PLL×
3的转换:
STM#0010000101001111B,CLKMD
使用IDLE指令时PLL的编程方法
在使用一条IDLE指令来减少能量需求时,对PLL的正确管理是很重要的。
时钟产生器在禁止PLL的DIV模式下消耗的能量是最少的。
因此,如果功耗是一个很重要的考虑时,在执行IDLE1IDLE2或IDLE3指令之前,希望从PLL模式转换到DIV模式并禁止PLL。
在“从PLL模式到DIV模式转换”一节中,已经解释了这个过程。
在器件从IDLE1/IDLE2/IDLE3模式唤醒之后,时钟产生器可以被重新编程到PLL模式,这个过程在“从DIV模式到PLL模式转换”一节中进行了解释。
注意,当PLL在模式IDLE状态下停止,并且C54x器件重新启动且时钟产生器切换回到PLL模式时,PLL锁定延迟会出现,其方式和一般器件启动时的情况一样。
因此,在这种情况下,必须考虑锁定延迟,可以是外部延迟或是用PLL锁存定时器延迟。
下面一段代码序列使时钟产生器从PLL×
3模式切换到÷
2模式,并关闭PLL,进入IDLE3状态。
当器件从IDLE3模式唤醒后,用一条STM指令将时钟产生器从DIV模式转换到PLL×
3模式,此时,为锁存定时器PLLCOUNT所设的初值为(64)10。
STM#0B,CLKMD;
转换到DIV模式
LDMCLKMD,A;
(CLKMD)—>
(A)
AND#01B,A;
BCTstStatu,ANEQ
若STATUS=1,未转换到DIV模式,跳转到Testb处继续检测
STM#0B,CLKMD
当STATUS=0,转换到DIV模式时复位PLLON/OFF
IDLE3
(在IDLE3唤醒之后,将PLL从DIV模式切换到PLL×
3模式)
STM#0010001000000111B,CLKMD;
PLLCOUNT=64(十进制)
5参考文献
1.DSP原理及应用电子工业出版社邹彦主
2.C54xApplications
3.C54xMnemonicInstruction
4.TMS320C54x系列DSP的CPU与外设[美]TexasInstrumentsIncorporated著梁晓雯裴小平李玉虎编译