摘要:介绍了一个基于MCU内核的时钟系统的设计,给出了其电路结构并详细地分析了系统的工作原理。该系统能生成两相不重叠时钟,利用静态锁存器保存动态信息,提供三种电源管理方式以适应低功耗应用。在上华(CSMC)0.6μm工艺库下,利用Cadence EDA工具对电路进行了仿真,仿真结果验证了设计的准确性。 关键词:微控制器 时钟系统 两相不重叠时钟 时钟系统是微控制器(MCU)的一个重要部分,它产生的时钟信号要贯穿整个芯片。时钟系统设计得好坏关系到芯片能否正常工作。
在工作频率较低的情况下,时钟系统可以通过综合产生,即用Verilog/VHDL语言描述电路,并用EDA工具进行综合。然而,用工具综合存在电路性能低、优化率不高的问题,不适合应用在各种高性能微处理器芯片上。而采用人工设计逻辑并手工输入电路图甚至物理版图的方式,能使设计的电路灵活,性能更好。基于这些考虑,设计了一个MCU时钟系统。 1 基本时钟输入的选择 CPU核分微处理器(MPU)和微控制器(MCU),两者的基本时钟一般都以单频方波的形式提供。时钟有三种产生方式: (1)用晶体振荡器产生精确而稳定的时钟信号; (2)用压控振荡器产生可调频率范围较宽的时钟信号; (3)结合以上两种技术,用压控振荡器生成时钟信号。 基本时钟信号的产生可以有芯片外和芯片内两种方法。但是时钟信号必须是稳定的信号,对于稳定度要求特别高的场合(如MPU和MCU),采用芯片外提供是必不可少的。故本设计采用外接晶振的方法。
2 两相时钟方案 时钟技术是决定和影响电路功耗的主要因素,时钟偏差是引起电路竞争冒险的主要原因。为了消除竞争、提高频率、降低功耗,在基本时钟方案方面,MPU和MCU一般有三种选择:单相时钟、多相时钟和沿触发方案。在当前的设计中,沿触发方案由于在数据传递方面有一定困难已很少被使用。单相时钟方案因为在时序和传输上比较简单可靠,在所有的方案中使用的晶体管也是最少,所以被一些高性能芯片使用,如DEC公司?现被HP公司并购的Alpha21664微处理器。但是,对CMOS电路来说,采用单相时钟就无法使用动态电路,而且因组合逻辑块中逻辑元件的速度高低都受到限制而呈现困难。 图1是一个单相有限状态机,圆圈内为组合逻辑块CL。
设TL+TH=TP,其中TP为时钟周期,TH和TL分别为时钟高电平和低电平时间。如果要使时钟定时与数据无关,则最长的传播延迟必须小于TP,信号(甚至可能是由于内部竞争冒险产生的尖峰所造成的假信号)到达CL输出端可能取的最短时间必须大于TH。令τCL代表CL延迟范围,则: TH < τCL < TP (1) (1)式表明,信号通过CL的每一个延迟都必须介于TH和TP之间。正是这种双边约束特性使单相时钟难以实现。对于多相时钟,则可以消除这种双边约束,而使其转化为单边约束。图2(a)所示为采用两相非重叠时钟Φ1和Φ2(Φ1%26;#215;Φ2=0),对应时钟波形示于图2(b),T1和T3分别是 Φ1和Φ2为高电平时的时间,T2是Φ1到Φ2之间电平为低的时间,T4则是Φ2到Φ1之间电平为低的时间。当Φ2电平变高时信号开始通过CL传输,并且必须在Φ1电平变低之前结束。于是得: τCL<T1+T3+T4 或 τCL<Tp-T2 (2) 其中,Tp=T1+T2+T3+T4 图4 二分频电路及时钟驱动器 这样就可把双边约束(1)式简化为单边约束(2)式了。无论是有效信号或是无效信号,都可以以任意快的速度通过CL而不会造成竞争。 当然,相数过多又会使设计复杂度提高,因此这里选择了两相不重叠时钟。 3 时钟系统逻辑电路设计 3.1 两相不重叠时钟产生的方法 两相不重叠时钟产生电路如图3所示。clk为外部晶振产生的送入MCU的单相时钟,I1是MCU内部产生的保护信号,正常工作时I1为低电平,发生故障时?如由于噪声干扰导致PSEN和RD、WR同时有效的错误发生时I1变成高电平而关闭时钟;当系统复位时,会使得图3中I1为低电平,恢复clk的输入。由于正常情况下PD为低电平,所以clk等同于经过三个非门变成图中的单相输入信号,加到用“或非”门交叉而构成的R-S触发器,单相时钟从左边加到一个“或非”门上,反相后加到另一个“或非”门上,这样得到的CK1和CK2是不重叠的。单相时钟与双相时钟的对应关系如图3所示。 当信号V变成高电平时(因为正常工作时PD一直保持为0),M1管关断,信号就一直保存在静态锁存器中。每当时钟信号变高时,就把静态锁存器的输出传给W,使得W一直处于低电平而不影响“或非”门A1,故图3中A1可以简化为二输入。 在时钟受到一个逻辑信号(也就是门控时钟)控制的情况下,可能会有一些动态节点不被刷新。为了避免这种错误,采用由一个NMOS控制管M2加两个交叉耦合反相器组成静态锁存器。其中反馈管采用的倒比W/L很小(<1),可以作为电平恢复器件,这样有利于保存信息。
3.2 二分频电路 通常把一周期指令的执行时间称为一个机器周期,并进一步划分为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被冻结,因此各信号满足设计要求。