PFD 鉴相器设计

鉴相器一般用两个D触发器,一个与非门和一个延迟单元

 假设两个D触发器脉冲信号完全相同,查看D触发器输出端可以看到,在脉冲信号到来之后,D触发器输出端电压随脉冲信号升高,两个DFF输出同时为高时,与非门输出低电平。再经过一定的延时之后,reset将D触发器置0,D触发器输出端电压随之降低

 通过增加延迟单元反相器的数量来增加延迟时间,延时时间的选择主要在于要使得D触发器的输出脉冲能将下一级的开关驱动即可。开关开启的时间过短会导致开关不能完全驱动,开启时间过长会把一些phase noise引入。一般200ps-500ps。

如图可以看出四个反相器时delay为132ps

 将反相器个数增加至8个后,可以看出delay时间增加至245ps 

假设两个DFF时钟信号有1ns的差值,DFF输出结果如图所示。

理论上D触发器的输出经过两个反相器的延迟时间和经过一个反相器和一个传输门的延迟时间是相同的。但是实际上这两个延迟时间很难达到,所以需要做匹配。可以通过做两个支路的延迟,一个支路是3个反相器,一个支路是一个反相器,两条支路的延时叠加就能做一个较好的匹配。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
鉴频鉴相器(Phase Frequency Detector, PFD)是一种常用于数字锁相环(Digital Phase Locked Loop, DPLL)中的电路,用于比较两个输入信号的相位和频率差异,并产生一个输出信号,该输出信号可以用于控制DPLL中的VCO(Voltage Controlled Oscillator)的频率和相位。 下面是一个简单的PFD的Verilog-A实现: ``` `include "constants.vams" module pfd (in1, in2, out); // 输入信号 electrical in1, in2; // 输出信号 electrical out; // 内部变量 real phi1, phi2, delta_phi, freq_diff; // 定义常数 parameter real PI = 3.14159265358979323846; parameter real K = 2 * PI; // 定义行为 analog begin // 计算输入信号的相位差 phi1 = atan2(imag(in1), real(in1)); phi2 = atan2(imag(in2), real(in2)); delta_phi = phi1 - phi2; // 将相位差限制在 -PI 到 PI 之间 if (delta_phi > PI) delta_phi = delta_phi - 2 * PI; if (delta_phi < -PI) delta_phi = delta_phi + 2 * PI; // 计算输入信号的频率差异 freq_diff = K * delta_phi / (2 * DELTA_T); // 产生输出信号 out = freq_diff; end endmodule ``` 在上述代码中,我们首先定义了输入信号和输出信号,并且定义了一些内部变量和常数。然后,在analog begin/end块中,我们使用atan2函数计算输入信号的相位差,并使用该值计算输入信号的频率差异。最后,我们将频率差异作为输出信号输出。 需要注意的是,上述代码中使用了constants.vams文件,该文件定义了一些常量,例如DELTA_T,它表示仿真的时间步长。您需要根据您的仿真环境来设置这些常量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值