pll制作分频器_应用于PLL的可编程分频器divider

大家好,设计一个PLL,其中需要一个可编程的分频器,2bit的,选择信号为00,01,10,11时,分频数分别为4,10,20,40。

那么这个分频器一般是怎么设计的呢?能不能用verilog代码写一个,然后综合成电路图,抄过来,但是综合后有的模块没有门级电路图。

或者有没有其他办法?

不需要频率综合里面的什么双模多模之类的这么复杂吧。

分频数分别为4,10,20,40的话可以自己搭建组合逻辑的阿

4=2×2

10=2×5

20=2×2×5

40=2×2×2×5

做一个选通组合逻辑

根据楼上的分析,关键是需要一个5分频器

看看这个电路

good

学习了

没有完全理解,能解释下图中的 4/5 3/4 2/3 分别都是什么样信号吗?谢谢。

你好,谢谢回复!

这个可编程分频器的最高输入要达到600MHz,可以用普通逻辑电路实现吗?还是得用到什么预分频之类的特殊电路呢?

要用高速逻辑分频的,200MHz以上

用TSPC,动态d flip flop

领教了

看你是什么工艺,130LG可能需要TSPC在2G以上,如果是90G,65LL,跑个3G分频不需要TSPC的。

是多模分频器,你说的是几个选通信号,为“0”是/2,/4,/4操作,为“1”是/3,/3,/5操作。

谢谢,可我画出来的波形图怎么不是简单的几分之一啊?

申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是PLL的各个模块的Verilog-A建模实例: 1. _PFD(相位频率检测器): ```verilog `include "disciplines.vams" module pfd(vin_p, vin_n, vref_p, vref_n, ipfd, vco, kpd); // 定义参数 parameter real kpd = 1.0; parameter real kvco = 1.0; // 定义端口 inout vin_p, vin_n, vref_p, vref_n; output ipfd; inout vco; // 定义内部变量 real vpd, vref, error; real ipfd_int, vco_int; // 定义正常的 Verilog-A 表达式 analog begin // 计算差分输入电压 vpd = vin_p - vin_n; vref = vref_p - vref_n; // 计算误差信号 error = vpd * vref; // 计算 PFD 输出电流 ipfd_int += error * kpd * dt; ipfd = ipfd_int; // 计算 VCO 输入电压 vco_int += ipfd * kvco * dt; vco = vco_int; end endmodule ``` 2. 电荷泵: ```verilog `include "disciplines.vams" module charge_pump(ipfd, iup, idn, kcp); // 定义参数 parameter real kcp = 1.0; // 定义端口 input ipfd; output iup, idn; // 定义内部变量 real ipfd_int, iup_int, idn_int; // 定义正常的 Verilog-A 表达式 analog begin // 计算 PFD 输入电流 ipfd_int += ipfd * dt; // 根据 PFD 输入电流计算输出电流 if (ipfd_int > 0) begin iup_int += kcp * ipfd_int * dt; idn_int = 0; end else begin iup_int = 0; idn_int -= kcp * ipfd_int * dt; end // 输出电流 iup = iup_int; idn = idn_int; end endmodule ``` 3. LPF(低通滤波器): ```verilog `include "disciplines.vams" module lpf(vin, vout, r, c); // 定义参数 parameter real r = 1.0; parameter real c = 1.0; // 定义端口 input vin; output vout; // 定义内部变量 real vout_int; // 定义正常的 Verilog-A 表达式 analog begin // 计算输出电压 vout_int += (vin - vout_int) / (r * c * dt); vout = vout_int; end endmodule ``` 4. VCO(电压控制振荡器): ```verilog `include "disciplines.vams" module vco(vctrl, vout, f0, kvc); // 定义参数 parameter real f0 = 1.0; parameter real kvc = 1.0; // 定义端口 input vctrl; output vout; // 定义内部变量 real phase, vout_int; // 定义正常的 Verilog-A 表达式 analog begin // 计算相位 phase += 2 * $pi * f0 * (vctrl - vout) * kvc * dt; // 计算输出电压 vout_int = sin(phase); vout = vout_int; end endmodule ``` 5. 分频器: ```verilog `include "disciplines.vams" module divider(vin, vout, n); // 定义参数 parameter integer n = 1; // 定义端口 input vin; output vout; // 定义内部变量 integer count; // 定义正常的 Verilog-A 表达式 analog begin // 计算输出电压 if (count == n-1) begin vout = vin; count = 0; end else begin vout = 0; count++; end end endmodule ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值