发明内容
本发明的目的在于提供一种时钟与数据恢复电路和模拟电路的行为级建模方法,可以采用Verilog硬件描述语言对时钟与数据恢复电路进行行为级建模,将所有的模拟电路建模在一个模块中,克服了Verilog语言不支持对模拟电压、电流建模和仿真的困难,可以供逻辑验证工程师用数字仿真器做顶层验证,提高了模型验证的效率。
为解决以上技术问题,本发明提供一种时钟与数据恢复电路的行为级建模方法,包括:
步骤1、将时钟与数据恢复电路中的电路模块划分为数字电路模块和模拟电路模块;
步骤2、根据上述划分好的电路模块,分别采用Verilog语言进行描述。
进一步地,所述步骤2中,具体包括:对于数字电路,构建相应的逻辑框图,根据逻辑框图用Verilog语言加以描述。
进一步地,所述步骤2中,具体包括:对于模拟电路,采用虚拟高速采样时钟对连续变化的电压和/或电流进行采样离散化操作;采用Verilog语言对离散化操作后的电压和/或电流进行描述。
进一步地,所述采用虚拟高速采样时钟对连续变化的电压和/或电流进行采样离散化操作,具体包括:
在时钟与数据恢复电路外部引入虚拟高速采样时钟;
在虚拟时钟的上升沿或下降沿对连续变化的电压和/或电流进行采样离散化操作;
对离散化后的电压和/或电流累加求和。
进一步地,所述方法进一步包括:得到离散化后的电压和/或电流后,计算电压控制振荡器输出信号的周期,得到输出方波的电平翻转时间,实现频率输出。
进一步地,所述方法进一步包括:针对每一个离散化后的电压都计算出相应的电压控制振荡器输出信号的周期,得到输出方波的电平翻转时间,然后在initial模块中调用forever函数实现电平翻转和频率输出。
为解决以上技术问题,本发明还提供一种模拟电路的行为级建模方法,包括:
采用虚拟高速采样时钟对连续变化的电压和/或电流进行采样离散化操作;
采用Verilog语言对离散化操作后的电压和/或电流进行描述。
进一步地,所述采用虚拟高速采样时钟对连续变化的电压和/或电流进行采样离散化操作,具体包括:
在时钟与数据恢复电路外部引入虚拟高速采样时钟;
在虚拟时钟的上升沿或下降沿对连续变化的电压和/或电流进行采样离散化操作;
对离散化后的电压和/或电流累加求和。
与现有技术相比,本发明提供一种时钟与数据恢复电路的行为级建模方法,采用Verilog硬件描述语言,在建模过程中引入了虚拟高速采样时钟,对连续变化的电压和/或电流进行采样离散化操作,离散化操作后,环路滤波器中存在的对电流的时域积分就变为时域分段再累加求和,积分的结果即滤波器输出的电压也是离散化的,克服了Verilog语言不支持对模拟电压、电流建模和仿真的困难,从而可以用Verilog语言进行描述。本发明采用Verilog硬件描述语言对时钟与数据恢复电路进行行为级建模,将所有模拟电路建模在一个模块中,供逻辑验证工程师用数字仿真器做顶层验证,提高了模型验证的效率。
A)采用Verilog硬件描述语言对时钟与数据恢复电路进行行为级建模,提高了模型验证的效率,可以用数字仿真器做顶层验证;
B)在对模拟电压和电流建模的过程中引入了虚拟的高速采样时钟,对连续变化的电压和电流进行离散化操作。这样,数字仿真器就可以将所有的电压、电流作为Verilog支持的数据类型对待;
C)引入了虚拟的高速采样时钟后,环路滤波器内的时域积分变为时域分段再累加求和,克服了Verilog语言不支持积分函数的困难;
D)二阶环路滤波器简化为一阶比例积分滤波器,使得滤波器的运算变得简单,容易实现;
E)所有的模拟电路建模在一个模块中,避免了Verilog语言不支持输出real数据类型的缺陷。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种时钟与数据恢复电路的行为级建模方法,采用Verilog硬件描述语言,在建模过程中引入了虚拟高速采样时钟,对连续变化的电压和电流进行采样、离散化操作;然后对离散化操作后电流电压采用Verilog语言进行描述;本发明在得到环路滤波器上的电压后,计算电压控制振荡器输出信号的周期,从而得到输出方波的电平翻转时间,实现频率输出。即针对每一个滤波器输出的电压值都计算出相应的电压控制振荡器输出信号的周期,从而得到输出方波的电平翻转时间,然后在一个initial模块中调用forever函数实现电平翻转和频率输出。
为了克服Verilog语言本身不支持对模拟电压、电流的建模和仿真这一困难,本发明提供一种采用Verilog硬件描述语言对时钟与数据恢复电路进行行为级建模方法,如图5所示,所述方法包括:
步骤1、将时钟与数据恢复电路中的电路模块划分为数字电路模块和模拟电路模块;
步骤2、根据上述划分好的电路模块,分别采用Verilog语言进行描述:对于数字电路,构建相应的逻辑框图,根据逻辑框图用Verilog语言进行描述;对于模拟电路,在对连续变化的电压和/或电流建模的过程中,在电路外部引入虚拟高速采样时钟,在虚拟时钟的上升沿(或下降沿)对连续变化的电压和/或电流进行采样离散化操作,然后,采用Verilog语言对离散化操作后的电压和/或电流进行描述。
如图1所示,本发明提供一种时钟与数据恢复电路的结构示意图,包括:鉴频鉴相器10、鉴相器20、复接器40、锁定检测器30、电荷泵50、由Rp、C1和C2构成的环路滤波器60、电压控制振荡器70和分频器80。其中,该时钟与数据恢复电路采用双环路结构:一环路是相位跟踪锁定环路(简称锁相环路),由鉴相器20、复接器40、电荷泵50、由Rp、C1和C2构成的环路滤波器60和电压控制振荡器70模块构成;另一环路是频率锁定环路(简称锁频环路),由鉴频鉴相器10、复接器40、电荷泵50、由Rp、C1和C2构成的环路滤波器60、电压控制振荡器70和分频器80模块构成。
鉴频鉴相器10,用于检测输入信号之间的相位差,并产生对应于该相位差的误差信号,用于控制电荷泵50对环路滤波器60进行充、放电。
复接器40,用于将鉴频鉴相器10和鉴相器20的输出信号合成单路信号在电路中进行传输。
电荷泵50,用于利用鉴频鉴相器10的输出控制对环路滤波器60进行充、放电。
环路滤波器60,由Rp、C1和C2构成,用于将电荷泵50充、放电电流转化为电压,同时进行低通滤波,滤除电流中的高频分量,其输出电压控制电压控制振荡器70的输出频率。
电压控制振荡器70,用于根据环路滤波器60的输出电压,计算输出信号的周期,得到输出方波的电平翻转时间,恢复出的时钟频率。
分频器80,用于分频电压控制振荡器70输出的时钟频率。
锁定检测器30,用于检测电压控制振荡器70输出时钟与参考时钟Ref的频差范围,发出使能信号,完成锁频环路与锁相环路之间的切换。
鉴相器20,用于根据电压控制振荡器70恢复出的时钟,对输入数据Din进行采样,得到输出数据Dataout。
该时钟与数据恢复电路上电后,锁频环路开始工作,使电压控制振荡器70的工作频率锁定在数据速率附近,当经过分频器80的电压控制振荡器70输出的恢复时钟Clkout与外界输入的低频参考时钟Ref的频差小于预定范围时,锁定检测器30发出环路切换使能信号,完成环路切换,锁相环路开始工作。
鉴频鉴相器10的输出控制电荷泵50对环路滤波器60进行充、放电,环路滤波器60将充、放电电流转化为电压,同时进行低通滤波,滤除电流中的高频分量,其输出电压控制电压控制振荡器70的输出频率时钟,该恢复出的时钟返回到鉴相器20,对外界输入的伪随机数据Din进行采样,得到输出数据Dataout。
依据本发明的技术方案,将图1的时钟与数据恢复电路中的电路模块划分为数字电路模块和模拟电路模块。具体划分如下:
在图1的时钟与数据恢复电路中,将电荷泵50、环路滤波器60、电压控制振荡器70划分到模拟电路模块,其余模块划分到数字电路模块。
对于数字电路模块,构建相应的逻辑框图,根据逻辑框图用Verilog语言加以描述。
如图2所示,是鉴频鉴相器的逻辑框图与实现方法。该鉴频鉴相器10,用于检测两个输入信号之间的相位差,并产生对应于该相位差的误差信号。根据输出UP和DN信号的电平不同,将鉴频鉴相器10的输出分为四种状态。设初始状态为状态0,若Ref的相位超前分频器80,则从状态0转为状态1,在分频器80的上升沿fDIV↑到来前,输出一直维持在状态1。当分频器80的上升沿fDIV↑到来时,则DN由0变为1,则进入状态3。而UP和DN同时为1会立刻触发复位信号,转换到状态0。当fDIV<fRef时,在两个分频器的上升沿fDIV↑之间总会有一个Ref的上升沿fRef↑,所以状态就会在0、1和3之间转换,不会到状态2。同样道理,可以分析状态0、2和3之间的转换。
对于模拟电路模块,图1的时钟与数据恢复电路中,划分到模拟电路的模块有电荷泵50、环路滤波器60、电压控制振荡器70。鉴频鉴相器10的输出控制电荷泵50对环路滤波器60充、放电,环路滤波器60将充、放电电流转化为电压,同时进行低通滤波,滤除电流中的高频分量,其输出电压控制电压控制振荡器70的输出频率。
如图1所示的环路滤波器60中,由于C2的数值通常小于C1的十分之一,C2的数值不影响稳态响应,所以可以将C2简化、忽略,这样,可以将图1所示的环路滤波器60简化为如图3所示比例积分滤波器。
图3中,由于简化后的比例积分滤波器中存在对电流的时域积分,所以,本发明引入虚拟高速采样时钟Sample_clk对电荷泵电流进行采样,离散化操作后,这样,电流在电容上的时域积分就变为时域分段再累加求和。这样,积分的结果即滤波器输出的电压也是离散化的,从而可以用Verilog语言进行描述。具体过程如下所述:
由于比例积分滤波器中存在对电流的时域积分,所以,本发明对积分函数作近似处理,采用分段求和的方法拟合逼近。首先,对被积函数进行分段。本发明在电路外部引入一个虚拟高速采样时钟Sample_clk信号,在该时钟信号的每个上升沿对被积函数进行一次采样操作,即将被积函数进行分段。分段间隔与采样时钟信号的频率有关。为尽可能地逼近连续时域积分,分段间隔越小越好,即采样时钟的频率越高越好。但考虑到仿真时间与仿真器的资源占用情况,该采样频率需要折中选取。本发明中,被积函数为电荷泵的充、放电电流CHARGEPUMP_I*((UP<DN)?(-1.0):(UP-DN)),而虚拟的高速采样时钟为Sample_clk,执行操作如下:
其中,CHARGEPUMP_I为电荷泵电流的设定数值。
在Sample_clk的上升沿到来时,触发一次采样:将CHARGEPUMP_I*((UP<DN)?(-1.0):(UP-DN))赋值给电荷泵的输出Iout,其中CHARGEPUMP_I为电荷泵电流的设定数值。这样,电荷泵的输出电流Iout便是被Sample_clk分段后的离散值。
对被积函数进行采样分段操作后,时域积分就变为时域分段再累加求和。滤波器中电容两端的积分电压便可以用Verilog语言以累加求和的方式描述。滤波器的输出电压为电容电压和电阻电压之和,由于流入滤波器的电流是分段离散化的,滤波器输出的电压也是分段离散化的,从而也克服了Verilog语言不支持连续电压描述的缺陷,从而可以用Verilog语言进行描述:
其中,Vc为电容上的电压,SAMPLE_FREQ为虚拟高速采样时钟的频率。
在Sample_clk的上升沿到来时,更新一次滤波器上的电压:总输出电压为电容电压Vc和电阻电压Iout*`Rp之和;电阻电压为电阻的阻值Rp与流过电阻电流Iout的乘积;电容电压Vc为电容两端分段电压的累加之和,每一个分段电压的数值为电流Iout与容抗(1/(2*`PI*`SAMPLE_FREQ*`C1))的乘积,而容抗与电流的采样频率SAMPLE_FREQ有关。
如图4所示,是产生电压控制振荡器输出的流程图。产生电压控制振荡器输出的方法,包括:
步骤41、得到环路滤波器60上的分段离散化电压后,针对每一个电压值都计算出相应的电压控制振荡器输出信号的周期;
步骤42、根据电压控制振荡器输出信号的周期,得到输出方波的电平翻转时间;
步骤43、在initial模块中调用forever函数实现电平翻转和频率输出。
本发明提供一种时钟与数据恢复电路的行为级建模方法,采用Verilog硬件描述语言,在建模过程中引入了虚拟高速采样时钟,对连续变化的电压和/或电流进行采样离散化操作,离散化操作后,环路滤波器中存在的对电流的时域积分就变为时域分段再累加求和,积分的结果即滤波器输出的电压也是离散化的,克服了Verilog语言不支持对模拟电压、电流建模和仿真的困难,从而可以用Verilog语言进行描述。针对每一个滤波器输出的电压值都计算出相应的电压控制振荡器输出信号的周期,从而得到输出方波的电平翻转时间,然后在一个initial模块中调用forever函数实现电平翻转和频率输出。本发明采用Verilog硬件描述语言对时钟与数据恢复电路进行行为级建模,将所有的模拟电路建模在一个模块中,避免了Verilog语言不支持输出real数据类型的缺陷,可以供逻辑验证工程师用数字仿真器做顶层验证,提高了模型验证的效率。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。