一种振荡器的频率校准电路及其频率校准方法与流程

文档序号:11146736阅读:970来源:国知局
一种振荡器的频率校准电路及其频率校准方法与制造工艺

本发明涉及集成电路设计技术领域,具体涉及一种振荡器的频率校准电路及其频率校准方法,基于锁相环二分法确定最佳电容控制字。



背景技术:

锁相环是射频通信系统中的一个关键模块,被用来为收发机提供稳定的频率。锁相环电路是一种反馈控制电路,利用外部晶振提供的输入参考时钟,来控制环路内部振荡信号的频率以及相位,从而得到需要的频率信号。经典的锁相环电路由鉴频鉴相器、电荷泵、环路滤波器、压控振荡器以及分频器组成,若要实现小数分频,还需要加入sigma-delta调制器。由于射频锁相环需要高的振荡频率,宽的调谐范围,以及好的相位噪声,所以通常采用电感电容压控振荡器(LCVCO)。在选定一个电感之后,LCVCO的振荡频率由电容决定。为了覆盖宽的调谐范围,以及工艺角变化,通常将振荡器的频率分为多个子带来控制,上电后采用自动频率校准技术,在电路开环状态下,篏位LCVCO控制电压值,利用开关电容阵列提供粗调,预先将LCVCO调谐到目标频率附近的子带,再利用连续可变的电容提供细调,从而将压控振荡器锁定到目标频率。

子带的选择,通常采用纯数字的自动频率校准方法来实现。传统的频率校准方法有遍历法和二分法等。遍历法,可以从高到低,或者从低到高,直到找到目标值,缺点是在状态很多时,用时会比较长。二分法是从中间值开始,先决定最高位的值,然后依次比较,最后定出最低位的值。二分法的优点是快速高效,但是结果具有方向性。例如,目标频率处于子带一和子带二之间,且子带一的频率大于子带二的频率,则具有向上性的二分法,无论目标频率是距离子带一近,还是距离子带二近,校准的结果都会选则子带一。



技术实现要素:

本发明的目的在于提供一种振荡器的频率校准电路及其频率校准方法,在不增加开关电容阵列的前提下,有效提高频率校准精度。

为了达到上述目的,本发明通过以下技术方案实现:一种振荡器的振荡频率校准电路,其特点是,包含:

状态机模块,用于接收校准开始信号后,输出计数开始信号,以及控制状态关系转移;

参考时钟计数器,用于接收计数开始信号后开始计数,并向状态机模块反馈振荡器延迟完成位信号;

分频时钟计数器,用于接收计数开始信号后开始计数;

电容字选择模块,用于存储参考时钟计数器和分频时钟计数器的计数值及采用预设算法确定最佳电容控制字。

一种振荡器的振荡频率校准方法,应用于上述的振荡频率校准电路中,其特点是,用于4位电容控制字校准,该振荡频率校准方法包含以下步骤:

步骤S102:状态机模块接收到校准开始信号后,向电容字选择模块发送控制信号,设置电容控制字的初始值、最佳电容控制字的初始值、最大计数值的初始值、当前计数值的初始值,并分别向参考时钟计数器和分频时钟计数器发送计数开始信号;

步骤S104:当参考时钟计数器与分频时钟计数器中的一个,其计数值达到第一预设阈值时,则电容字选择模块将未计数完成的计数器的计数值存储为当前计数值,并根据当前计数值与最大计数值之间的大小关系,对最佳电容控制字和最大计数值进行赋值;

步骤S106:状态机模块再次向参考时钟计数器和分频时钟计数器发送计数开始信号,参考时钟计数器和分频时钟计数器由零开始计数,重复步骤S104,依次确定4位电容控制字的bit3、bit2、bit1、bit0的值;

步骤S108:当参考时钟计数器与分频时钟计数器中的一个,其计数值达到第一预设阈值时,电容字选择模块将未计数完成的计数器的计数值存储为当前计数值,将当前计数值与最大计数值进行比较,若当前计数值大于最大计数值,则将当前计数值赋值给最大计数值,并将当前电容控制字赋值给最佳电容控制字;

步骤S110:振荡频率校准完成,将完成标志位置为高,电路开环标志设为零,控制电容阵列的电容字选择最佳电容控制字。

所述的电容控制字的初始值为1000;最佳电容控制字的初始值为1000;最大计数值的初始值为0当前计数值的初始值为0。

所述的第一预设阈值为512。

所述的步骤S102之后、步骤S104之前还包含一步骤S112,所述的步骤S112包含:

步骤S112:当参考时钟计数器的计数值达到第二预设阈值时,参考时钟计数器向状态机模块反馈振荡器延迟完成位信号,所述的状态机模块再次向参考时钟计数器和分频时钟计数器发送计数开始信号,参考时钟计数器和分频时钟计数器由零开始计数。

所述的第二预设阈值为16。

所述的步骤S104中包含:

若参考时钟计数器的计数值首先达到第一预设阈值,则对电容控制字进行重设,减小电容控制字,并将分频时钟计数器的计数值赋值给当前计数值;

比较当前计数值与最大计数值;

若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;

若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。

所述的步骤S104中包含:

若分频时钟计数器的计数值首先达到第一预设阈值,则对电容控制字进行重设,增大电容控制字,并将分频时钟计数器的计数值赋值给当前计数值;

比较当前计数值与最大计数值;

若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;

若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。

所述的步骤S110中还包含:

状态机模块等待接收新的校准开始信号;

若无新的校准开始信号,则将振荡器锁定;

若有新的校准开始信号,则初始化振荡频率校准电路,继续执行步骤S102~步骤S110。

本发明一种振荡器的频率校准电路及其频率校准方法与现有技术相比具有以下优点:在相同电容阵列的条件下,有效提高频率校准精度,从而使得振荡器能够在不同的工艺角,不同温度变化下,都能够锁定。

附图说明

图1为本发明一种振荡器的频率校准电路的结构框图;

图2为本发明一种振荡器的频率校准方法的流程图;

图3为二分法频率校准状态转移图;

图4为最佳电容控制字的选择流程图。

具体实施方式

以下结合附图,通过详细说明一个较佳的具体实施例,对本发明做进一步阐述。

一种振荡器的振荡频率校准电路10,如图1所示,包含:状态机模块101,用于接收校准开始信号后,输出计数开始信号,以及控制状态关系转移;参考时钟计数器102,用于接收计数开始信号后开始计数,并向状态机模块101反馈振荡器延迟完成位(stDelBit)信号;分频时钟计数器103,用于接收计数开始信号后开始计数;电容字选择模块104,用于存储参考时钟计数器102和分频时钟计数器103的计数值及采用预设算法确定最佳电容控制字。

本发明还公开了一种振荡器的振荡频率校准方法,应用于振荡频率校准电路中,用于4位电容控制字校准,如图2所示,该振荡频率校准方法包含以下步骤:

步骤S102:状态机模块接收到校准开始信号后,向电容字选择模块发送控制信号,设置电容控制字的初始值、最佳电容控制字的初始值、最大计数值的初始值、当前计数值的初始值,并分别向参考时钟计数器和分频时钟计数器发送计数开始信号。

步骤S112:当参考时钟计数器的计数值达到第二预设阈值时,参考时钟计数器向状态机模块反馈振荡器延迟完成位信号,所述的状态机模块再次向参考时钟计数器和分频时钟计数器发送计数开始信号,参考时钟计数器和分频时钟计数器由零开始计数。

步骤S104:当参考时钟计数器与分频时钟计数器中的一个,其计数值达到第一预设阈值时,则电容字选择模块将未计数完成的计数器的计数值存储为当前计数值,并根据当前计数值与最大计数值之间的大小关系,对最佳电容控制字和最大计数值进行赋值。

若参考时钟计数器的计数值首先达到第一预设阈值,则对电容控制字进行重设,减小电容控制字,并将分频时钟计数器的计数值赋值给当前计数值;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。

若分频时钟计数器的计数值首先达到第一预设阈值,则对电容控制字进行重设,增大电容控制字,并将分频时钟计数器的计数值赋值给当前计数值;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。

步骤S106:状态机模块再次向参考时钟计数器和分频时钟计数器发送计数开始信号,参考时钟计数器和分频时钟计数器由零开始计数,重复步骤S104,依次确定4位电容控制字的bit3、bit2、bit1、bit0的值。

步骤S108:当参考时钟计数器与分频时钟计数器中的一个,其计数值达到第一预设阈值时,电容字选择模块将未计数完成的计数器的计数值存储为当前计数值,将当前计数值与最大计数值进行比较,若当前计数值大于最大计数值,则将当前计数值赋值给最大计数值,并将当前电容控制字赋值给最佳电容控制字。

步骤S110:振荡频率校准完成,将完成标志位置为高,电路开环标志设为零,控制电容阵列的电容字选择最佳电容控制字。状态机模块等待接收新的校准开始信号;若无新的校准开始信号,则将振荡器锁定;若有新的校准开始信号,则初始化振荡频率校准电路,继续执行步骤S102~步骤S110。

具体地,结合图1、图3和图4通过具体实施例对本发明的振荡器的振荡频率校准方法作进一步详细说明,将频率校准状态从0~11,分为12个状态。需要说明的是,附图均采用非常简化的形式、使用非精确的比例,且仅用以方便、明晰地达到辅助说明本发明实施例的目的。

状态0,又称之为空闲状态:当状态机模块接收到校准开始信号calStartIn时,状态机模块进入状态1,同时将电容控制字的初始值置为1000,产生计数开始信号CountStart,参考时钟计数器和分频时钟计数器同时开始计数。电容字选择模块将最大计数值和当前计数值设为0,当前电容字和最佳电容字设为1000。状态0中的电容控制字输出capArrayOut=1000。

状态1,又称之为电容控制字bit3的等待状态:当参考时钟计数器的计数值到16时,产生stDelBit信号,状态机模块进入状态2,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数,此步骤是为了使得校准结果比较准确,在每次电容控制字发生改变后,都加入了16个参考时钟长度的等待时间,从而使得振荡时钟稳定才开始计数。状态1中的电容控制字输出capArrayOut=1000。

状态2,又称之为电容控制字bit3的决定状态:当任一个计数器的计数值达到512时,状态机模块进入状态3,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数,如果是参考时钟计数器计数先完成,说明分频时钟慢,需要减小电容字,则减小电容控制字,bit3的值设为0,bit2的值置为1,bit1的值及bit0的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值,当前计数值存入计数寄存器;比较当前计数值与最大计数值;若当前计数值大于最大计数值,说明当前的电容控制字对应的频率子带更接近目标频率,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变;如果是分频时钟计数器先完成计数,说明分频时钟快,需要加大电容字,则增大电容字,bit3保持1,bit2同时置为1,bit1的值及bit0的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。状态2中的参考计数完成时的电容控制字输出capArrayOut=(capArrayOut&4'b0111)|4'b0100;分频计数完成时的电容控制字输出capArrayOut=capArrayOut|4'b0100。

状态3,又称之为电容控制字bit2的等待状态:当参考时钟计数器的计数值到16时,产生stDelBit信号,状态机模块进入状态4,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数。

状态4,又称之为电容控制字bit2的决定状态:当任一个计数器的计数值达到512时,状态机模块进入状态3,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数,如果是参考时钟计数器计数先完成,则减小电容控制字,bit2的值设为0,bit1的值置为1,bit3的值及bit0的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值,当前计数值存入计数寄存器;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变;如果是分频时钟计数器先完成计数,则增大电容字,bit1的值置为1,bit3的值、bit2的值及bit0的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。状态4中的参考计数完成时的电容控制字输出capArrayOut=(capArrayOut&4'b1011)|4'b0010;分频计数完成时的电容控制字输出capArrayOut=capArrayOut|4'b0010。

状态5,又称之为电容控制字bit1的等待状态:当参考时钟计数器的计数值到16时,产生stDelBit信号,状态机模块进入状态6,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数。

状态6,又称之为电容控制字bit1的决定状态:当任一个计数器的计数值达到512时,状态机模块进入状态7,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数,如果是参考时钟计数器计数先完成,则减小电容控制字,bit1的值设为0,bit0的值置为1,bit3的值及bit2的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值,当前计数值存入计数寄存器;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变;如果是分频时钟计数器先完成计数,则增大电容字,bit0的值置为1,bit3的值、bit2的值及bit1的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。状态6中的参考计数完成时的电容控制字输出capArrayOut=(capArrayOut&4'b1101)|4'b0001;分频计数完成时的电容控制字输出capArrayOut=capArrayOut|4'b0001。

状态7,又称之为电容控制字bit0的等待状态:当参考时钟计数器的计数值到16时,产生stDelBit信号,状态机模块进入状态8,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数。

状态8,又称之为电容控制字bit0的决定状态:当任一个计数器的计数值达到512时,状态机模块进入状态9,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数,如果是参考时钟计数器计数先完成,则减小电容控制字,bit0的值设为0,bit3的值、bit2的值及bit1的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值,当前计数值存入计数寄存器;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变;如果是分频时钟计数器先完成计数,则bit3的值、bit2的值、bit1的值及bit0的值保持不变,将电容控制字存入当前电容控制字寄存器,并将分频时钟计数器的计数值赋值给当前计数值;比较当前计数值与最大计数值;若当前计数值大于最大计数值,则将重设前的电容控制字赋值给最佳电容控制字,将当前计数值赋值给最大计数值;若当前计数值小于最大计数值,则最佳电容控制字和最佳电容控制字均保持不变。状态8中的参考计数完成时的电容控制字输出capArrayOut=(capArrayOut&4'b1110)|4'b0000;分频计数完成时的电容控制字输出capArrayOut=capArrayOut|4'b0000。

状态9,又称之为等待电容控制字的稳定状态:当参考时钟计数器的计数值到16时,产生stDelBit信号,状态机模块进入状态10,同时产生计数开始信号CountStart,使得参考时钟计数器和分频时钟计数器同时开始从零计数。

状态10:当任一个计数器的计数值达到512时,状态机模块进入状态11。电容字选择模块将未计数完成的计数值存入当前计数寄存器,电容控制字存入当前电容控制字寄存器;然后比较当前的计数值与最大计数值的大小,如过当前计数值大于最大计数值,则将当前计数值赋值给最大计数值,当前的电容值为最佳电容控制字。

状态11,又称之为校准完成状态:自此振荡频率校准完成,将完成标志位calComp置为高,电路开环标志openLoopOut设为零,控制电容阵列的电容字选择最佳电容字。当有新的校准开始信号calStartIn时,将状态机模块相关参数初始化,状态机模块将进入状态1,重新开始校准;否则电路则处于锁定状态。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1