SI信号仿真及软件 HyperLynx

article/2025/9/30 19:51:05

最近在布Blackfin视觉的板子,开始看了一些高速板的资料,感觉收获挺大的。贴些东西来。

我看了些资料,主要是一篇叫High-Speed Digital System Design的文章,PCBBBS(www.pcbbbs.com)的大侠们翻译的。可以从http://www.pcbbbs.com/dispbbs.asp?boardID=4&ID=122837&page=1下载到。如果这个链接失效了,请从PCBBBS首页进,分支路线为:“中国PCB论坛网 → 线路设计 → SI高速设计 → 帖子列表”,搜索High-Speed Digital System Design。

其实我也是刚入门,本文的作用仅仅是给大家提供入门级HOWTO:

什么样的板子需要考虑高速所造成的效应?用数字信号的上升时间来衡量,任何长度超过信号在其上升时间内走过距离的十分之一的导线都必须考虑所谓的“传输线效应”。说形象的,如果是133MHz的SDRAM(前几年最常见的PC133SDRAM内存条上的芯片,上升时间1ns),15mm以上距离,就必须考虑传输线效应。这个距离怎么计算出来的呢,如果你算算,实际上电磁波在100ps里能够走上30mm呢,怎么是15mm呢?实际上电信号在导体中的速度和导体周围的介质有关,公式为(BLOG没法写公式,我按照MATLAB符号数学格式写了)v=c/sqrt(Er),c是光速,Er是导线周围导体的介电常数,一般电路板使用一种叫FR4的玻璃纤维,Er=4.X。好的,当你知道你所要面对的情况之后请仔细阅读我上面提到的这个文章。

对于实际引用,我们会遇到以下3个问题:
1.布线问题,怎么在我们熟知的PCB设计软件中解决
2.阻抗匹配,这个词很经常听到啊,举例来说明吧。请你找一根杂牌的示波器探针线,测量数字电路管脚输出的波形,也许你会看到方波边沿出现了过冲,这有部分是因为探针的阻抗和芯片、示波器输入阻抗不匹配造成的。这个需要你阅读文章了,实际上完全匹配是不可能的,问题是怎样将阻抗不匹配造成的影响减少到最小。
3.仿真问题,怎么样验证自己对电路板进行的修改是正确的

问题2,我目前也没有整太明白,这个需要看的书更多。我上面提供的材料里就有一些简单的描述。

问题1,我用的是Altium Designer 6.5,就是大家所熟知的Protel,后来又叫DXP,再后来就叫了Altium Designer。打开菜单Design>Rules,里面的High Speed和Signal Integrity是管高速布线的,大家可以找相关的书解决。
这里我提个我用到的,SDRAM地址/控制和数据线分组等长问题的解决。以Altium Designer 6.5为例(其实Protel 99se也差不多,DXP就更不用说了)。首先Design>Netlist>Edit Nets,新建SDRAM_AC(地址和控制)和SDRAM_D(数据)两个Netclass,把相应的Net添加进来,Design>Rules,选择High Speed>Matched Net Length>新建两个规则SDRAM_AC和SDRAM_D,在Where the first object matches里选择Net Class,然后分别选中刚才建立的两个Net Class。下面的Constraints是最神奇的蛇形线规则设置(电脑主板上经常可以见到的那些弯弯曲曲的绕着走的线,目的就是让短的线绕着走,增加长度以和长线匹配),Tolerance是同组线长最大差距值,我设的是7.62mm,就是0.3inch,具体数值有的强人可以控制在正负50mil以内,由于我们同学有做10mm成功的例子,我放弃了50mil的想法。Style是蛇形线的风格,可以选着玩玩看看,其他的设置可以自己试,决定了蛇形线的形状。这些规则是为了自动生成蛇形线准备的,鉴于自动生成糟糕的结果,我不建议这么做。这些规则仅仅是用来进行DRC(Design Rule Check,在Tools菜单中的命令)的。另外告诉大家怎么自动生成,菜单Tools>Equalize Net Length,注意这个命令:1、仅仅对头尾都连接上的线起作用即针对Routed Nets,2、如果板子太密没有生成蛇形线的地方,执行后没有反应,你可以修改Rules来缩小蛇形线的尺寸看看,3、可以多次调用这个命令,使线长逐步趋于一致,4、如果同组线本身走线长度差距太大,或者你的要求太高(哈哈50mil),那么可能会存在永远也没有办法一致长度的线,这个在执行命令后生成报告中会告诉你。
说说手动怎么做(仅仅针对DXP以上版本),右下角的弹出菜单站里点PCB>PCB,你可以看到你刚才设置的Net Class,选中后可以看到每个Net(无论是Routed还是Unrouted的)长度,在布线时注意调整,如果出现了长度差距太大的线,可以在短线周围预留空间,手工用圆弧连接的方法画出蛇形线。
贴个图看看,你可以先画一个图中那样的波浪形状,然后Ctrl+C和Ctrl+V。当然PADs好像做这个更加专业,但是我看同学用的好像没有Altium Designer操作这么方便。

问题3,我没有做太深入的研究,随便找了个软件HyperLynx 7.5,哈哈原因很单纯,因为Altium Designer可以直接把PCB存成HyperLynx格式的,其实PADs里带的就是HyperLynx。随便说下,HyperLynx作PCB分析需要几个东西:1、PCB图(废话,哈哈);2、电路中用到的元件的仿真模型,这个可以在器件厂商的主页上面找到,如SDRAM的厂家Micron(www.micron.com),如果没有模型也可以根据器件的DATASHEET自己做,这个可是高级操作;器件模型里规定了器件的管脚输入输出阻抗等一系列的参数;3、电路板的参数,比如板厚、铜厚、多层板每层间距离、介电常数等,这个需要问你委托加工电路板的厂家。简单仿真步骤如下:1、PCB,Altium Designer可以生成,但是一些细节参数可能会错,需要修改下,一般HyperLynx也会自动修改,菜单Edit>Stackup可以修改并输入从电路板制造商那儿得到的数据,2、仿真模型,Edit菜单中的.Ref IC Automapping file等指令就是用来映射器件和模型的,可以尝试下就知道了,操作很简单,3、开始仿真,菜单Simulate>Run interactive simulation就可以看到电信号上升和下降时输入和输出管脚波形的变化了。另外,Report菜单里的Net Statistics可以看到选中Net的特征阻抗等数据。详细的操作请阅读相关书籍。

正如我开始说的,在SI(Signal Integrity)方面,我也是新手,希望有大虾看到后对我的文章予以斧正。

刚开始的时候我一直想知道,电路板仿真软件到底是什么样子的,能看到什么样的方针结果,为了给和我一样的菜鸟一个直观的印象,我再贴个仿真过程图解,本例使用HyperLynx 7.5,如图这样一个简单的PCB,用来转接直插的FPGA配置接头到FPC软线插座,顶层线路底层地。

  先将其另存为HyperLynx可以打开的文件,在Altium Designer中,菜单File>Save as,然后选择保存类型为Export HyperLynx,确认。在HyperLynx中,菜单File>Open Boardsim Board,选择刚才保存的文件,有Warning先OK,然后菜单Edit>Stackup,设定板厚,介电常数等基本参数,如图所示:1、修改底层为参考平面,事实上仿真需要一个参考平面,否则无法进行,很抱歉,我是新手不知道双层的没有地平面的板子该怎么仿真。2、修改板厚,此板1.0mm厚。3、按照电路板制造商给你的介电常数设置Er。

 

接下来设定Net的输入输出属性,选择一个Net,菜单Select>Net by Name,随便选择一个Net,点确定,如图所示

 然后菜单Select>Component Models or Edit Values,弹出的窗口里选Select,然后点EASY.MOD,再选CMOS,3.3V,FAST(这仅仅是个演示,实际要选择与Net相对应的器件,可以点Find Model按钮)

接下来Assign Models窗口中的内容变了,先将Pin J1.1配置为Output,然后再选择Pin J3.20做一次同样的选择过程,将J3.20配置为CMOS,3.3V,FAST(当然实际上不是),方向为Input,然后就可以进行仿真了。

菜单Simulate>Run Interactive Simulation,例如要看一个上升沿在这个线上传输的效果,在Driver waveform里选择Rising edge,然后点Start Simulation,在左边的示波窗口里就可以看见波形了。黄线是经过传输后的波形,由于阻抗不匹配出现了振铃现象。

那么传输线阻抗匹配的怎么实现呢,波形又是什么样的呢?我们可以用菜单Reports>Net Statistics找到传输线的特性阻抗Z0,此时Z0是120.3欧姆。而通过查找Pin J1.1的模型可以发现输出阻抗为5欧姆(操作命令为Select>Component Models or Edit Values,在弹出窗口中选择Edit Model File按钮,就可以看见输出阻抗),根据传输线原理要消除振铃,可以进行源匹配、负载匹配等,简单点说就是在导线上串联或者并联电阻,阻止信号反弹的发生,具体细节请看我上面推荐的文章。为了看看匹配的效果,这里我来个变态的,直接修改传输线本身的属性——这在实际中是不可选的操作。菜单Edit>Stackup,将板厚修改为0.27mil,此时计算出的传输线特征阻抗恰好是5欧姆,再来看仿真

哈哈,这回的结果不错了吧,这就是阻抗匹配的作用。其实你可以仔细观察电脑主板的内存条边上,有很多的贴片阻排,就是用来匹配传输线阻抗的。今天就到这里。


http://chatgpt.dhexx.cn/article/OfFvuZOw.shtml

相关文章

Hyperlynx使用心得

首先以Linesim为初步入手点,对自己学习Hyperlynx过程中遇到的问题进行记录。希望可以帮助到跟我遇到相同问题的朋友。 从开始使用这个仿真软件,我们得先明白其所拥有的功能。Hyperlynx解决的是板级信号仿真,这就包括SI,PI,EMC等方面。而信号完…

HyperLynx(十五)多板仿真

1.多板仿真概述 2.建立多板仿真项目 3.运行多板仿真 4.多板仿真练习 1.多板仿真概述 在现代设计里,一个设计往往由几个PCB组成,典型的主板与内存条就是一个多板互连的应用。BoardSim 现在具有了加载多板、连接器及对其进行仿真的能力。每一块板子或是由…

HyperLynx(三)传输线类型及相关设置

传输线是传输链路上非常重要的一环,高速电路和信号完整性中很多问题都与传输线有关联。传输线主要分为微带线和带状线,这其中包含单端传输线和差分传输线(在PCB设计中,共面波导是一种比较特殊的传输线)。 在HyperLynx中…

HyperLynx仿真(一)LineSim简单介绍

1.LineSim仿真 LineSim用于PCB前仿真分析,主要是为在PCB布局布线之前对原理图中的高速信号进行假设性的仿真分析。主要考察信号在假设的叠层结构和布线参数条件下的传输效果,如过冲、下冲、输入高/低电平、串扰、眼图等指标,依次验证电路设计…

提高代码质量!详解在Gradle项目中使用PMD的正确姿势

当今的软件开发需要使用许多不同的工具和技术来确保代码质量和稳定性。PMD是一个流行的静态代码分析工具,可以帮助开发者在编译代码之前发现潜在的问题。在本文中,我们将讨论如何在Gradle中使用PMD,并介绍一些最佳实践。 什么是PMD&#xff…

PMD 自定义规则实践入门样例

原文:https://testerhome.com/topics/4918 准备工作 首先在PMD官网下载最新版本的文件,目前最新版本是5.4.1。 下载pmd-bin-5.4.1.zip和pmd-src-5.4.1.zip之后解压备用。 pmd-src-5.4.1是PMD源码包,是无法直接执行的。 pmd-bin-5.4.1是PM…

java pmd 插件下载_sonar-pmd插件集成p3c-pmd

基于官方插件项目sonar-pmd进行改造,这篇文章有详细说明,这个工程有低版本的实现。 每条规则对应的3个配置文件: src\main\resources\org\sonar\l10n\pmd.properties src\main\resources\org\sonar\plugins\pmd\rules.xml src\main\resources…

java pmd eclipse_eclipse插件之Findbugs、Checkstyle、PMD安装及使用

eclipse插件之Findbugs、Checkstyle、PMD安装及使用 一、什么是Findbugs、checkstyle、PMD Findbugs、checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用。 三者的功能…

pmd 相机 系统标定

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数…

DPDK — Userspace PMD 源码分析

目录 文章目录 目录PMD driver 通过 IGB_UIO 与 UIO 进行交互注册一个 UIO 设备PMD 的应用层实现Interrupt DPDK(中断模式) PMD driver 通过 IGB_UIO 与 UIO 进行交互 IGB_UIO 内核模块的另一个主要功能就是让用于态的 PMD 网卡驱动程序得以与 UIO 进行…

java pmd 安装_PMD-Java代码静态分析工具使用

如今,使用代码分析工具来代替人工进行代码审查,已经是大势所趋了。用于Java代码检测的工具中,不乏许许多多的佼佼者,其中PMD就是其中一款。PMD既可以独立运行,也可以以命令行的形式运行,还可以作为插件在ID…

java pmd 安装_PMD的安装及使用

PMD是一种开源分析Java代码错误的工具。 与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。此外,…

java pmd 安装_4. PMD 使用,编译和自定义规则

一 PMD简介 PMD是一款代码静态检查工具,可以检查出很多代码中潜在的bug以及让人感到疑惑的代码,具体大家可以百度下。 二 PMD源代码下载 下载地址: 需要注意的是注意选择branch,一般选择最新的branch;然后可以用git clone下来,或者直接下载zip压缩包。 如下: 从上图也可…

java pmd 插件下载_pmd eclipse插件

PMD是Eclipse上的一款源代码分析插件,与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,它可以在不运行Java程序的情况下报告错误。pmd 支持Java、JavaScript、XML、XSL等,欢迎下载! Eclipse PMD插件更新…

java pmd checkstyle_提高代码质量 CheckStyle FindBugs PMD

注:这是一篇翻译文章,原文:How to improve quality and syntax of your Android code,为了理解连贯,翻译过程中我修改了一些陈述逻辑和顺序,同时也加了一些自己的补充。 在这片文章中,我将从工具…

【C语言】 C语言图形编程 俄罗斯方块 课程设计

程序简介 由纯C语言实现的俄罗斯方块小程序,代码长度700行,使用Turbo C图形库美化了界面,并具俄罗斯方块游戏的所有基本功能。玩家可以通过键盘的“上下左右”键移动“方块”,“空格”去翻转方块,每当方块可以将一行“…

简单c语言图形程序设计,c语言实现一些简单图形的打印

1 #define _CRT_SECURE_NO_WARNINGS 1 因为笔者采用的是VS的编译环境所以有了上面的这一句话 我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印 1 //打印自定义长度的线段 2 #include 3 intmain() 4 {5 int i = 0; 6 intn; 7 while (~scanf("%d",&…

C语言图形化编程 【二】

C语言图形编程 二 3 基本贴图3.1 声明一个存储图片的变量3.2 图片的路径3.3 显示图片3.4 透明贴图 4 鼠标操作4.1 声明一个存储鼠标信息的变量4.2 获取鼠标4.3 分类讨论鼠标消息的来源 3 基本贴图 3.1 声明一个存储图片的变量 格式: IMAGE img; //类型 变量名(你要贴的图片的…

基于C语言的图形化编程软件,图形化编程工具

原标题:图形化编程工具 1.产品介绍 唯众图形化编程工具是一款基于拖拽式图形化设计的可视化编程工具库,通过拖拽式图形化编程完成程序设计。作为一种易于掌握的图像化编程环境,是编程初学者学习和掌握程序设计方法的有力工具。用图形化编程方式去理解程序语言,可以让学生更…

C语言:编程打印图形

题目 编程打印以下图形: 代码 #include "stdio.h"void main() {char ch = A;int i,j;for(i=