news 2026/7/3 5:08:36

手把手拆解10/100M以太网PHY设计:从PLL到均衡器的实战代码分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手拆解10/100M以太网PHY设计:从PLL到均衡器的实战代码分析

模拟ic设计,亲测好用的,一个完整的以太网项目,系统级电路10/100Mbps 10BASE-T ETHERENT-PHY 适合有几年工作经验的或者博士研究生 有两个版本,一份是工艺是Gpdk90nm(主要),一份是Gpdk180nm,都是有版图(TOP,cell都有),Cadence自己家的电路 有两个锁相环,模拟均衡器eq,pi相位差值,flash ADC,带triming bg,LDO,比较器,电平移位,译码电路,数字电路,偏置电流源,运放,trans,DAC,滤波器 有很多仿真tb,非常的详细,两个子模块PLL仿真,ADC仿真,bg ldo 模块仿真,TOP整体ams仿真,有版图,不是反向电路。 只适合学习用。

搞模拟IC的兄弟们应该都懂,完整的系统级项目就像盲盒——你永远不知道哪个模块会在流片时爆炸。最近折腾了个GPdk90nm工艺的10BASE-T物理层设计,从BG到ADC全链路打通的感觉,比连续通过五个工艺角还爽。

先看时钟部分这对双胞胎PLL。主PLL用经典的charge pump结构,但有个骚操作:在VCO控制端并联了20个带binary开关的varactor阵列。仿真脚本里这个骚操作对应的代码是这样的:

parameters vctrl=0.6 varactor_array (vctrl 0) cap_cell[19:0] w=2u l=0.12u \ binary_sw=$DESIGN_PLL/binary_control[19:0]

跑个蒙特卡洛就会发现,这种结构让VCO增益从1.2GHz/V降到200MHz/V,相位噪声直接压了6dB。配合数字校准模块,在ss_125c工艺角下也能锁住100Mbps时钟。

均衡器模块才是真正的战场。模拟EQ用了3-tap FIR结构,代码里用gm-C实现可调系数:

module analog_eq(in, out); electrical in, out; parameter real coeff0=0.6, coeff1=-0.3, coeff2=0.1; real delay1, delay2; analog begin delay2 = delay1; delay1 = V(in); V(out) <+ coeff0*V(in) + coeff1*delay1 + coeff2*delay2; end endmodule

但实际调参时发现,当信道损耗达到24dB时,需要把coeff1拉到-0.45才能睁开眼图。这时候就得祭出自动适应算法,用peak detect电路动态调整系数。

ADC部分这个8位flash结构藏着魔鬼细节。比较器阵列的偏置电路用了自校准技术,上电时自动检测工艺偏差:

foreach(cell cv('("/ComparatorBias")) when(cvId(cell)=="biasGen" doCalibrate(cell "vth_offset" 0.05) ) )

实测在tt/ff/ss三个工艺角下,INL都能控制在±0.7LSB以内。不过要注意,当温度从-40飙到125时,得重新trim一次偏置电流。

电源管理是暗线战场。这个BG电路用曲率补偿玩出了新花样,核心代码里能看到温度系数的神奇操作:

Iptat = (VGS2 - VGS1)/R1 Ictat = delta_VBE/R2 Ibias = 3*Iptat + 2.5*Ictat + 0.3*Iptat^2/Ictat

配合LDO的运放结构,在1.2V输出时PSRR在100kHz还有42dB。实测给ADC供电时,电源噪声被干到200uVrms以下。

跑整体AMS仿真那天,实验室的服务器差点冒烟。数字部分用Verilog-AMS建模,模拟部分带寄生参数。关键是这样的配置:

simulator lang=ams ahdl_include "eth_phy.va" digital_include "mac_controller.v" save V(CDR.clk) V(EQ.out) V(ADC.dout[7:0])

当眼图在1e-8误码率下睁开的瞬间,感觉就像打通了任督二脉。不过要提醒新手,版图布局时记得把Rx和Tx的电源域彻底分开,否则数字噪声会从地线爬进来捣乱。

这个项目最值钱的是那些工艺角仿真脚本,比如ss0p9v125c下的ADC动态测试:

set corners {tt ff ss} foreach corner $corners { cmdmirror $corner \ -parameters vdd=0.9 temp=125 \ -analysis tran -stop 10u \ -measure enob=getENOB(V(adc_out)) }

跑完这些脚本,你会深刻理解为什么老工程师总说“仿真通过的电路才是好电路”——特别是当看到ff工艺角下PLL锁定时间突然翻倍时。

说到底,这种全链路项目就像模拟电路的大阅兵。每个模块单独看可能平平无奇,但当ADC的采样时钟来自PLL,EQ的系数由数字模块配置,BG要给所有模块供电时,那种环环相扣的设计感,才是模拟工程师真正的快乐源泉。

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

终极指南:Qwen3-30B-A3B多GPU分布式推理完整解决方案

终极指南&#xff1a;Qwen3-30B-A3B多GPU分布式推理完整解决方案 【免费下载链接】Qwen3-30B-A3B Qwen3-30B-A3B具有以下特点&#xff1a; 类型&#xff1a;因果语言模型 训练阶段&#xff1a;预训练和后训练 参数数量&#xff1a;总计 305 亿&#xff0c;其中已激活 33 亿 参数…

作者头像 李华
网站建设 2026/7/3 4:10:21

腾讯混元语音驱动数字人技术:重塑动态视频生成新范式

腾讯混元语音驱动数字人技术&#xff1a;重塑动态视频生成新范式 【免费下载链接】HunyuanVideo-Avatar HunyuanVideo-Avatar&#xff1a;基于多模态扩散Transformer的音频驱动人像动画模型&#xff0c;支持生成高动态、情感可控的多角色对话视频。输入任意风格头像图片与音频&…

作者头像 李华
网站建设 2026/6/25 21:10:55

【MicroPython编程-ESP32篇】-Web页面显示DHT11传感器数据

Web页面显示DHT11传感器数据 文章目录 Web页面显示DHT11传感器数据 1、DHT11介绍 2、软件准备 3、硬件准备与接线 4、代码实现 4.1 连接WiFi 4.2 Web服务器实现 在本文中,将介绍在ESP32开发板中,通过MicroPython创建一个简单的 Web 服务器,以显示来自 DHT11 或 DHT22 温度和…

作者头像 李华
网站建设 2026/6/25 14:42:16

DCDC电池模型:基于Matlab 2018b及以上的应用

DCDC电池模型&#xff0c;matlab2018b及以上&#xff08;可改版&#xff09;咱们今天来点硬核的玩转DCDC电池模型。别被那些公式吓到&#xff0c;直接上Matlab实操才是王道&#xff08;2018b以上版本都行&#xff09;。打开Simulink先建个空白模型&#xff0c;咱们从电源到负载…

作者头像 李华
网站建设 2026/7/2 3:04:50

Day 38 - Dataset 和 DataLoader

在深度学习任务中&#xff0c;数据处理是至关重要的一环。面对大规模数据集&#xff0c;显存往往无法一次性存储所有数据&#xff0c;因此需要采用分批训练&#xff08;Batch Training&#xff09;的策略。PyTorch 提供了两个核心工具类来解决数据加载和预处理的问题&#xff1…

作者头像 李华
网站建设 2026/6/29 1:39:41

[C#][winform]基于yolov11的打架行为检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】在社会治安管理朝着智能化、精细化方向加速推进的重要阶段&#xff0c;及时且精准地监测公共场所中的打架行为&#xff0c;已然成为维护社会秩序稳定、保障公民人身安全以及提升城市治理水平的核心任务之一。公共场所作为人员密集且流动频繁的区域&#xff0c;其环…

作者头像 李华