news 2026/8/14 11:29:23

基于smic55nm工艺的高频锁相环电路设计教程:设计800MHz或1GHz输出频率的Ring...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于smic55nm工艺的高频锁相环电路设计教程:设计800MHz或1GHz输出频率的Ring...

锁相环电路,有教程 输出频率800MHz或者1GHz, 采用Ring_VCO的结构,输入参考频率20MHz,分频器是40-50分频,电荷泵电流20uA,工艺是smic55nm 每个模块都有单独的testbench 可送一些仿真,设计参考资料 还有matlab,verilog-a建模推导。 呈现最完整的project 前仿真,无版图

先来聊聊咱们折腾的这个Ring_VCO锁相环项目吧。这玩意儿就像个精密时钟管家,要把20MHz的参考信号硬生生提到800MHz甚至1GHz,中间要过五关斩六将。别急着上代码,先看架构图心里才有谱:

整个PLL链条长这样:参考时钟→分频器→相位检测器→电荷泵→环路滤波器→Ring_VCO→分频器闭环。核心指标是输出频率=参考频率×分频比,所以当分频器在40-50之间蹦跶时,输出正好卡在800MHz-1GHz的区间。

先看分频器模块,Verilog代码得能动态切分频比:

module Divider_N40to50( input clk_in, input [5:0] N_sel, //40~50 output reg clk_out ); reg [5:0] counter; always @(posedge clk_in) begin if(counter >= N_sel-1) begin clk_out <= ~clk_out; counter <= 0; end else begin counter <= counter + 1; end end endmodule

这个计数器的精髓在N_sel的动态加载,仿真时要注意分频切换瞬间的毛刺问题。测试时先固定N值跑眼图,再突然切分频比看锁相环的跟踪速度。

电荷泵是电流搬运工,Verilog-A模型得体现充放电特性:

`include "constants.vams" module CP(up, dn, out); input up, dn; inout out; electrical out; parameter real I=20u from [0:inf); //泵电流20uA analog begin if (up && !dn) I(out) <+ I; else if (!up && dn) I(out) <+ -I; else I(out) <+ 0; end endmodule

重点在死区时间控制——当up和dn同时有效时电流为零,这个状态处理不好会导致锁相环卡在亚稳态。仿真时给互补脉冲看电流积分线性度。

Ring_VCO是频率发生器,用五级反相器环实现:

`include "disciplines.vams" module VCO_Ring(ctrl, out); input ctrl; output out; electrical ctrl, out; parameter real Kvco=300e6; //300MHz/V parameter real Vmin=0.4, Vmax=1.8; //控制电压范围 real freq, phase; integer x; analog begin freq = V(ctrl)*Kvco; phase = idtmod(freq, 0, 1); V(out) <+ 1.8*(phase < 0.5); //生成方波 end endmodule

这个模型的关键是Kvco参数校准,实际要跑DC扫描看freq-vctrl曲线斜率。在Matlab里先建模推导:Δf = Kvco·ΔV,结合工艺角做蒙特卡洛分析。

环路滤波器用二阶无源结构,计算元件值有讲究:

Icp = 20e-6; % 电荷泵电流 Kvco = 300e6; % VCO增益 N = 50; % 分频比 omega_c = 2*pi*200e3; % 环路带宽200kHz zeta = 0.7; % 阻尼系数 C1 = Icp*Kvco/(N*omega_c^2)*(4*zeta^2/(1+1/(4*zeta^2)))); C2 = C1/10; Rz = 2*zeta/(omega_c*sqrt(C1*C2*Icp*Kvco/N));

这组方程解出来的RC值要取E24系列标称值,同时留margin给工艺偏差。仿真时看控制电压的过冲和稳定时间,锁定过程像坐过山车似的。

最后上顶层测试:

testbench pll_tb; reg ref_clk; wire vco_out; initial begin ref_clk = 0; forever #25 ref_clk = ~ref_clk; //20MHz参考 end PLL_top dut( .ref_clk(ref_clk), .vco_out(vco_out) ); initial begin $dumpfile("pll.vcd"); $dumpvars; #1000us $finish; end endmodule

跑瞬态仿真起码要等几百微秒才能锁定。看眼图时用测量游标卡相位误差,相位噪声用spectre的pnoise分析,1GHz时1MHz偏移至少-100dBc/Hz才算合格。

整个项目最坑的地方在环路稳定性——改个滤波电容就能让系统震荡。建议边调参边看Bode图,相关资料推荐Behzad Razavi的《Phase Locking in High-Performance Systems》,里面对Ring振荡器的相位建模特别实用。代码和模型扔GitHub仓库时记得带Makefile,不然别人复现时路径问题能折腾半天。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 4:10:10

水下机器人控制与路径跟踪仿真

增量PID轨迹跟踪 MATLAB仿真 水下机器人控制 无人船无人艇 USV路径跟随大家好&#xff01;今天我将和大家分享一个有趣的主题&#xff1a;增量PID轨迹跟踪在水下机器人中的应用。这个主题结合了控制理论、算法优化和实际工程应用&#xff0c;非常值得探讨。首先&#xff0c;我想…

作者头像 李华
网站建设 2026/8/12 13:08:40

Pr加转场总生硬又耗时?怎么才能1键做出丝滑高级转场?

转场是视频镜头衔接的 “润滑剂”—— 自然的转场能让叙事更流畅&#xff0c;还能靠创意动效强化视频风格&#xff0c;比如 vlog 的柔和过渡、电商视频的产品聚焦转场、综艺的趣味转场。但很多新手在 Pr 里加转场时&#xff0c;总陷入 “瞎翻效果半小时、调参数越调越生硬、批量…

作者头像 李华
网站建设 2026/8/13 21:26:07

智能工厂的效率密码:为何物流集成是关键变量?

随着制造业的不断发展&#xff0c;智慧物流系统集成成为提升制造效率的重要手段。它将智能制造解决方案与智能工厂解决方案紧密结合&#xff0c;有效推动生产流程的优化。结合智能包装流水线&#xff0c;企业能够创新包装模式&#xff0c;提升包装效率。从数据实时共享到资源优…

作者头像 李华
网站建设 2026/8/13 19:57:07

隐藏Gemini脚本

油猴脚本&#xff1a;// UserScript // name 强力隐藏 Gemini Logo // namespace http://tampermonkey.net/ // version 2.0 // description 通过多种特征&#xff08;链接、标签、位置&#xff09;强力隐藏左上角的 Gemini Logo&#xff0c;包含自动检测机制…

作者头像 李华
网站建设 2026/8/14 5:05:48

【计算机毕设】基于深度学习的人体摔倒识别方法与实现

&#x1f49f;博主&#xff1a;程序员&#xff1a;小俊SDN作者、博客专家、全栈领域优质创作者 &#x1f49f;专注于计算机毕业设计&#xff0c;大数据、深度学习、Java、小程序、python、安卓等技术领域 &#x1f4f2;文章末尾获取源码数据库 &#x1f308;还有大家在毕设选题…

作者头像 李华
网站建设 2026/8/11 0:10:16

一种“看起来很稳”,却暗藏坑点的恒流 PWM 驱动电路

最近看到有“电工猴”分享了一个恒流 PWM 驱动电路&#xff0c;第一眼看上去相当规整&#xff0c;功能也很诱人&#xff1a; 恒流 PWM&#xff0c;一步到位。 考虑到这种方案在实际项目中很可能会被用到&#xff0c;这里干脆系统拆一遍&#xff0c;顺便把其中的坑也挖出来给大…

作者头像 李华