一个基于MCU内核的时钟系统设计
的执行时间称为一个机器周期,并进一步划分为2~6个状态(高速MCU到标准MCU),每一状态有两相时钟,即为两个节拍,每个节拍持续一个振荡周期。如何向芯片内部提供一个两节拍的时钟信号呢?这就需要二分频电路对外部振荡信号进行分频,使得在每个时钟的前半周期,节拍1信号有效;后半周期,节拍2信号有效。 二分频电路是由两个静态锁存器组成的触发器,如图4所示。其中CK1和CK2是两相不重叠时钟,当CK1=0,CK2=1时,静态锁存器b的输出经过一个反相器提供CK3和CK4,使得CK3=0,CK4=1;经过半个周期后,CK1=1,CK2=0,M4断开,低电平信号存储在静态锁存器a中,使CK3的值不变,这样CK3延续了一个周期的低电平(高电平),就形成了两分频,如此形成的时钟信号周期增加一倍。CK4由CK3经过一个反相器形成,两者相位相反。
3.3 时钟驱动器及分配
影响时钟偏差主要有以下几个因素: %26;#183;连接时钟数的连线; %26;#183;时钟数的拓扑结构; %26;#183;时钟的驱动; %26;#183;时钟线的负载; %26;#183;时钟的上升及下降时间。 在MCU内部,时钟信号要驱动大的负载,是负载最重的信号,有可能导致电路延时和时钟偏差。消除的方法之一是增强驱动能力。设计的驱动器如图4(二分频电路除外)所示。最初的时钟信号由二分频电路输出的CK3和CK4提供。值得注意的是,为了提高翻转速度增加了旁路管,即PMOS晶体管M5、M7和NMOS晶体管M6、M8,而且它们的W/L比要取得足够大如设计的为350/1,这样就不需要外部附加自举电容。当然为了防止导通电流过激(di/dt),可以加入电阻起稳定作用。该时钟驱动器的一个重要特点,就是所产生的两相不重叠时钟的相位与时钟负载无关,输出Clk3和Clk4能高到VDD电平和低到地电平。 图6 IDL控制通生CPU内部的时钟信号 在MCU内部合理分配时钟网络。通常有两种方法:线形缓冲和树形缓冲。考虑到MCU内部时钟负载比较大,采用图5所示的树形缓冲将时钟电路分成若干分支。时钟分配的各个分支在各级之间具有相同的相对扇出,同时每个分支所带负载数目基本相同,因为不平衡的分支是时钟歪斜的主要原因。
3.4 低功耗设计 低功耗设计要求时钟网络尽量简单,晶体管尺寸尽量小,并且应尽量减少不必要的电路节点翻转,所以设计的MCU一方面要大量采用只有三个元件组成的静态锁存器,参见图3;另一方面要有三种工作功率管理模式,即正常、空闲、掉电三种方式,以满足低功耗方式的应用。因此,内部所使用的时钟分三类,第一类送入部分控制器和数据通道(CPU核),在低功耗方式(空闲)下时钟关闭,如图6中的Clk5和Clk6;第二类用于控制定时器,如Clk1和Clk2;第三类则用于控制中断电路和串行口的时钟,如Clk3和Clk4。后两类不受低功耗方式的限制。 (1)在掉电方式(PD=1)下,时钟信号发生器及内部所有的功能部件都停止工作。如图3所示,PD=1时,封锁一个“与非”门和一个“或非”门,使V一直为低电平,输给R-S触发器的单相时钟的状态被固定,或为低电平或为高电平,这样整个芯片的时钟信号被冻结。 (2)在空闲方式(IDL=1)下,时钟信号继续提供给中断逻辑、串行口、定时器,但CPU 的时钟被切断了。如图6所示,IDL=1时,“或非”门输出为低电平,“与非”门输出为高电平,通过时钟驱动器使得Clk5=1、Clk6=0,这样通往CPU的信号就被冻结了。 图7 用CSMC 0.6um工艺库对时钟电路的逻辑仿真
4 设计验证与总结
综合图3、图4、图6就构成了整个时钟系统。为了对电路进行逻辑仿真,首先在CADENCE 的 Composer-schematic中调用CSMC 0.6μm标准单元工艺库,设置好管子参数,画出电路图。然后进入Analog Artist Simulation环境进行参数较理想化的电路仿真。其中clk的脉宽为0.5μs,周期为1μs,将各种信号(如PD、IDL)的上升时间和下降时间设置为0.002μs整个仿真时间取16μs,参考电压为5V,得到的仿真结果如图7所示。可以看到I1=1时,通往内部的各时钟信号被封锁;PD=1时,所有时钟(Clk1~Clk6)被冻结;而IDL=1时只有通往CPU的Clk5和Clk6被冻结,因此各信号满足设计要求。
- 如何将DSP和MCU两者完美结合(08-10)
- 基于MCU+DSP的运动控制硬件平台设计(10-01)
- 微控制器省电管理方法(05-04)
- 利用低成本的MCU的UART驱动智能卡(05-04)
- DSP结构特点和运算性能(07-19)
- 基于DSP+MCU的列车滚动轴承故障诊断系统设计与应用(10-08)