具体实施方式
在接下来的论述中,陈述了许多特定细节,以便提供对本发明的全面理解。然而本领域技术人员将理解,可以在没有这些特定细节的情况下实践本发明。在其它例子中,已经将公知部件图解为示意图或者框图形式,以便不使本发明遮蔽在不必要的细节中。此外,对于大多数部分,已经省略了有关网络通信、电磁信令技术等的细节,因为认为这样的细节对获得对本发明的全面理解不是必须的,并认为其在本领域的普通技术人员的理解范围之内。
在这个说明书的剩余部分,处理单元(PU)可以是装置中仅有的计算处理器。在这样的情况下,通常将PU称为MPU(主处理单元)。该处理器单元也可以是根据某些方法学或者为给定的计算装置而开发的算法来共享计算负载的许多处理单元中的一个。对于这个说明书的剩余部分,除非另外指示,对处理器的所有引用将使用术语MPU,而不管MPU是装置中仅有的计算部件还是与其它MPU共享的计算元件。
还要注意的是,除非另外指示,可以以硬件或者软件、或者其某些组合来执行这里描述的所有功能。然而,在优选实施例中,除非另外指示,由诸如计算机或者电子数据处理器之类的处理器根据诸如计算机程序代码之类的代码、软件来执行这些功能,和/或由被编码以执行这些功能的集成电路来执行这些功能。
转向图1A,公开了具有允许的和不允许的状态的8分频状态流图。在图1A中,在特别定义的状态或者一组状态出现之后,不允许的状态流转换到允许的状态流。通常,参考图1A,检测到特别定义的非允许的状态,如00110011或者00110000,并且在高频分频器电路内出现值的内部改变,从而将内部D锁存器的状态突跳到期望的状态,如00000001或者10000000,而不是传统技术中的结果00011001或者10011000。
例如,在图1A中,如果在加电时出现不希望有的状态01100111将会怎样?通过电路的内部逻辑(右移,然后将从最右边的位移位并绕回到最左边位的值反相),这将变成第二不允许状态00110011。然后,通过类似的逻辑,这将转换到00011001。然而,图1A的转换解决了这个问题。
现在转向图1B,图解了6分频状态流。在特别定义的状态出现之后,不允许的状态流转换到允许状态流。通常,参考图1B,检测特别定义的不允许状态为001100,电路转换到允许的状态100000,而不是不允许的状态100110。
现在转向图2,图解了8分频状态电路200。D型触发器(DFF)1215具有从时钟源235输入到其C输入的时钟信号。DFF1 215的Q输出(q1信号状态)耦接到DFF2 220的D输入。DFF1 220的Q输出(q2信号状态)耦接到DFF3 225的D输入。DFF3 225的Q输出(q3信号状态)耦接到DFF4 230的D输入。DFF4 230的Q反相输出(q4信号状态)反馈到并耦接至DFF1 215的D输入。
DFF1 215及DFF3 225的Q状态、及DFF2 220的QB状态耦接到逻辑操作器210。逻辑操作器210耦接到DFF2 220的门(gate)。在其它实施例中,仅使用触发器215、220、以及225。门存储器205可用于引入时间延迟。否则,将存在基本上同时反馈的问题,并且逻辑状态可能不集中,这是错误条件。这个配置使状态能够从不希望有的状态转换到图1A的期望状态。
现在转向图3,图解了诸如DFF1 215、DFF3 225、以及DFF4 230之类的传统D触发器的内部工作300。如关于触发器图解的,有两个输入:输入1(D,用于数据输入)和输入2(C,用于时钟输入)。触发器具有作为存储装置的适用性。触发器DFF3 225实际上包括2个不同的锁存器310和320。
本领域的技术人员将理解,如果通过时钟信号使能触发器,则触发器将把信号数据状态从输入传递到关于数据的输出,或者Q线。然而,如果通过时钟信号使触发器无效,则将不会把输入的D值传播到输出,作为替代,先前存储的D值将是D输入的输出。
在关于DFF1 215的图3中,例如,有两个串联耦接的D锁存器,锁存器310和锁存器320。如果D的输入值是1,并且使能了时钟值,则qint1值也与D值相同,并且qintb值是qint1的反相值。然而,由于逻辑“非”操作器330,使第二D锁存器320无效。这意味着,无论qint值在这个电路中是什么,先前的qint值都是作为Q值而输出的。换言之,当时钟为“高”时,DFF1 215的输出不能改变,因为其“记忆”并输出该先前状态。
然而,例如,在下一个时钟脉冲中,输入时钟脉冲变“低”。因此,输入数据没有从数据输入传播到这个触发器中的Q或者qint输出,并且这个第一D锁存器310保留了先前时钟周期的qint值。然而,因为输入时钟值被反相到“高”,所以第二触发器将qint值传播到输出Q,即值“3”。因此,对于DFF1 215要改变输出状态,至少花费一个完全时钟周期,并且它仅接受来自交替时钟周期的状态作为输入数据。
转回到图2,这意味着在该系统中可使用例如值00000011。在下一个时钟周期,值变为00000001。如上面已说明,存在被图解为无下划线的内部状态(qiht1、qint2、qint3)等、和图解为有下划线的状态q1、q2、q3等。因为在DFF4230的输出上出现的反相,所以状态改变,其中DFF4230的输出作为数据反馈到DFF1215的D端口。如通过图1A图解的期望状态转换所看出的,状态步进通过该系统,最后的触发器反相,并将反相的值传输到输入。
然而,如果出现不希望有的状态,则系统200可以如下工作。例如,如果传统的8分频系统以01100111作为其开始状态将会怎样?然后,传统的系统将转换到也为无效状态的00110011,在没有纠正的情况下这将进一步转换到00011001。
然而,将图2的逻辑配置为转换到00000001而不是00011001,这是允许的状态。在图2中,状态00xxxxxx的第二位用于重写这个状态中的接下来的3位,从而变成00000xxx。类似地,无效状态00110000转换到10000000而不是10011000。换言之,第一输出状态(q1)变成q2内部状态(qint2)、q2输出状态(q2)、q3内部状态(qint3),如将在图1A中图解这一点。
系统200检测无效状态可以如下。将输出q1、q2(已反相的)和q3输入到“或”210。当xxxxxxxx(“x”可变)的值为x0x1x0xx时,“或”门输出变为负,输出无效b(invalidb)状态变低,并且使能从不允许状态到允许状态的转换。暂时转向图1A,如图1A所示,这个转换在00110011和00110000二者上都发生,并且只有在这些状态下,才发生到期望状态的转换。
现在转向图4,图解了DFF 220的锁存器410、420的内部工作400,其中DFF 220为逻辑操作器210检测到特定的错误状态条件时出现状态转换的触发器。用“异或”430代替图3的“非”逻辑操作器(反相器)330。如本领域的技术人员所理解的,如果两个值不同,则“异或”给出真值,如果两个输入值相同,则为假值(零值)。在图2的上下文内,这意味着“或”输出对于允许特定的预定义的非允许状态为0,而对于允许的状态或者非特定的非允许状态为1。然后,这将“门”值变为DFF2 220触发器。
在图4中,对于“异或”逻辑操作器430,当“或”门210输出的门值是“1”,而C值输入是“1”时,输出值是“0”,这意味着触发器220如现有技术的触发器一样工作,而“异或”如反相器一样工作。类似地,如果门值是“1”,且C值输入是“0”,则输出值是“1”,这意味着“异或”逻辑操作器430所起的作用如对C值的反相器。
在图4中,当门值是“0”,且C值输入是“1”时,“异或”输出值是“1”,这意味着触发器220不象现有技术触发器一样工作,并且将相同的D值通过D1锁存器1和D锁存器2二者传播。类似地,如果门值是“0”,且C值输入是“0”,则“异或”输出值是“0”,将其作为C输入发送到D触发器2420,并且将先前状态存储在D1锁存器1和D2锁存器2中。
换言之,当“或”210的输出、到“异或”430的门输入是0时,D锁存器1410和D锁存器2420二者都具有DFF2220内的相同时钟值。在图2的上下文中,这意味着当图4的门3为0时,对于负时钟脉冲,qint值仍旧没有改变。然而,与现有技术不同,Q输出值也没有改变。因此,qint和q值都被“锁定”了,这与图3不同,而Q输出值没有改变。
此外,如果输入时钟脉冲为正,且门输入是零,则输入D值传播通过D锁存器410、420二者,通过qint2,并然后通过Q输出。此外,因为时钟状态在输入到DFF3 225时为正,所以第三触发器q3int的qint也等于q2。换言之,D值变为Q,这在现有技术中不是这样。
换言之,对于门值0,和正时钟周期,将q 1值传播到qint2值和q2输出值,以及q3int值。在图1A的上下文中,这意味着代替00110000变成不允许状态10011000,其变成10000000,从而从不希望有的状态强制进入到期望的状态。同样,因为q1值得到传播并被复制到q3int,所以在00110011之后本应该为00011001的状态被代替为00000001。
现在转向到图5,图解了分频器电路500的替换实施例。D型触发器(DFF)1 510具有输入到其C输入的时钟信号。DFF1 510的Q输出(q1信号状态)耦接到DFF2 520的D输入。DFF2 520的Q输出(q2b信号状态)耦接到电路550。电路550的输出耦接到DFF3 530的D输入。DFF3 530的Q输出(q3信号状态)耦接到DFF4 540的D输入。可以通过选择器512、522、532、542来选择输出q1、q2、q3和q4,从而将电路500配置为2、4、6、或者8分频纠正电路。
分频器纠正电路550耦接在DFF2520的反相器输出(qb2)与到DFF3530的数据输入之间。本邻域的技术人员将理解,跨CMOS电路的漏极和源极的电压是耦接到源极和漏极的节点之间的电压差、以及CMOS是接通还是关断的函数。纠正电路550是与接下来的真值表对应的逻辑的一个实施例。
表:CMOS逻辑
Q1b |
Q2b |
Q3b |
D3new |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
在上面的真值表中,采用q1b(DFF1 510的反相输出),采用Q2b(DFF2520的反相输出),以及采用q3b(DFF3 530的反相输出)。在图5中,将电路550耦接在Q2b的反相输出和到D3的数据输入之间,从而产生D3new值。电路550可以基本上如下工作。
在系统500中,将q1B(已反相)值、q2b(已反相)值、以及q3b(已反相)值输入到电路550。如果q1b是零,则D3new等于q2B取反。q3或q3b的状态不是上面真值表中的因子。
然而,如果q1b等于1,并且如果q2b等于0,并且如果q3b等于0,则将D3new设置为等于1。因此,错误纠正出现。
此外,在期望的状态中没有将产生到不希望有的状态的“跳跃”的状态。例如,如果q1和q3等于期望状态0,则这将是x0xxx0xx。通过图5的真值表的定义,这将变成x0x0x0xx或者x0x1x0xx。换言之,如果q1和q3为0,则然后q2自动为0,因此换言之,不存在将产生问题的状态。
本领域的技术人员将理解,跨CMOS电路的漏极和源极的电压是电路的全体功能、以及该电路是接通还是关断的函数。在550中,这是与接下来的真值表对应的逻辑的一个实施例。该真值表表示Q1不等于D2new的两个条件。
在系统500中,我们使用q 1b(已反相)值、以及q3b(已反相)值,因此当q1b等于D3new时,存在状态的实际改变。这发生在q1为0且q3为0时。因此,在这也为零之后输入到下一个触发器的下一个值也为零,而q3和qint3都变成0而不是1,即Q1的值。在图1中,00011001的相关数变成00000001,而10011000变成10000000。换言之,对于值为0的q1和q3输出值,q3 int变成0。
此外,在期望的状态中没有将产生到不希望有的状态的“跳跃”的状态。例如,如果q1和q3等于期望状态中的0,则这将是x0xxx0xx。通过图5的真值表的定义,然后,这将变成x0x0x0xx。通过在这个图中进行的这种分频,在期望的状态中,如果q1和q3为0,则q2不得不为0。因此,没有会产生问题的状态。
现在转向图6,图解了图的操作的仿真波形图。如图所示,即使q1至q4波形开始于不正确的状态,其在几个时钟转换之后也转换到正确的1和0序列中。
可以理解,本发明可以采取许多形式和实施例。因此,在不脱离本发明的精神和范围的情况下,可以在前面进行几种变化。这里概述的能力允许各种编程模型的可能性。不应该将这个公开理解为优选任何具体编程模型,而是代替指向在其上可以建立这些编程模型的基础机制。
已经通过参考本发明的某些优选实施例而如此描述了本发明,要注意,所公开的实施例是说明性的,而不是对本质的限制,并且,在前述公开中构思了宽范围的变更、调整、改变、以及替换,在一些例子中,本发明的一些特征可以在没有其它特征的对应使用的情况下采用。基于优选实施例的前面描述的回顾,本领域的技术人员可考虑到许多这样的变更和调整是可取的。因此,宽广地、且以与本发明的范围一致的方式解释所附权利要求是适当的。