AD19 PCB板完整绘制过程
1、原理图导入
一个项目的电路原理图完成后,我们需要在Design选项下Update PCB Document xxxx.PcbDoC。

Fig 1
在更新的过程中,当Report Changes…时会出现很多错误,需要我们进行改正(可以点击Only Show Errors,只显示错误),例如

Fig 2
Massage中的信息会告诉我们错误的原因,对于Unknown Pin这类错误,一般有下面几点原因:(1)原理图元件没有添加封装;(2)原理图和封装引脚数个数不一致;(3)原理图引脚和封装的引脚代表字符不匹配(原理图的引脚是数字1,2,3…,而封装是字母A,B,C…),因此我们需要查看我们的封装和原理图,问题解决后,在信息栏是没有显示错误的(导入之后存在报错,取消不常用的DRC检测选项,DRC检查选项过多导致PCB设计布局布线的时候存在卡顿现象,可以只剩下电气性能的检查选项)。

Fig 3
成功导入PCB后,可以在Tools中Component Placement选择适合自己的排列方式,在此次排版中选择Arrange Within Rectangle,最终的形式是这样的。

Fig 4
但是会出现图4这种情况(芯片引脚会有很多绿色的叉,标注引脚间距小于10mil),有些博主的解决办法是在Design中Rules做修改,将Design Rules中的Silk to Silk Clearance和Silk To Solder Mask Clearance取消勾选,但是问题并没有得到解决,最后通过查阅资料,发现在Electrical下Clearance中选择将Ignore pad to pad clearances within a footprint勾选,这种问题就会解决。

Fig 5
2、叠层设置
然后进行叠层设置,在Design中选择Layer Stack Manager…。点击Top Layer右键选择Plane,添加中间层,添加成功以后,命名是按照自己的习惯进行设置,为了降低平面边缘的辐射效应,在电源层和地层间要尽量满足20mil原则,因此点击Pullback distance,右键弹出Select columns,将里面的Pullback distance选项设置为可见并确定退出。继续在Properties中将自己命名的中间层的Pullback distance设置为2-3倍关系(电源层和地线层)。

Fig 6
设置完成后,我们可以看到会有自己命名的层。

Fig 7
3、封装间隙设置
有时候,导入的PCB会出现以下这种情况

Fig 8
对于这种情况是因为元件封装的间距小于10mil,但是在工程中设置的是10mil,因此需要在Design中的Rules做修改,如图所示。

Fig 9
将Minimum Clearance改成<10mil即可。
4、板框的设置和定位孔的放置
设置板框的绘制,具体方法在本人的其他文章中有介绍,大家可以参考,这里不做过多的介绍(这里做个说明:尺寸标注一般是在Mechanical中标注)。
5、交互式布局
交互式布局可以达到原理图和PCB两两交互,需要在原理图编辑界面和PCB设计交互界面都执行菜单命令(Tools-Cross Select Mode),激活交叉选择模式。
6、模块化布局
对于布局,一般都是按照一定的设计要求进行布局,可以根据信号飞线和先大后小的原则进行大致位置的放置,然后将小元件放置在大元器件的附近。
6.1、布局原则
(1)滤波电容靠近IC管脚放置,BGA滤波电容放置在BGA背面管脚处。
(2)元件布局要均匀,疏密得体。
(3)电源模块和其他的模块有一定的距离,放置干扰。
(4)布局考虑布线的就近原则,布线不能太长。
(5)PCB布局布线是一件雕刻艺术品的过程。
7、类创建和PCB规则设置
为了区分信号,通常将同一属性的网络或者元件或者层或者差分放置在一起构成一个类别。在Design-Classes(快捷键D+C)中设置类(十大类:常见的是网格类和差分类),可以在Net Classes下新建各种类。

Fig 10
在新建类可以命名,然后将Non-Members进行归类。

Fig 11
归的类可以设置不同的颜色,可以点击PCB框界面左下角的PCB选项设置。


Fig 12
类的颜色或者是点击右下角的Panels进行设置。选中类右键弹出的Change Net Color。
8、PCB规则设置
8.1间距设置
在Design下选择Rules,进入规则编辑框(快捷键D+R),在Design Rules-Electrical-Clearance下新建间距规则,命名自己可以设置,默认All,规则4.5mil,其中Copper和其他元素之间的距离要求为10mil。

Fig 13
8.2线宽规则设置
根据规定,4层板内电层添加的是负电层,负电层只是用来作为PWR或者GND层分割之用,,因此不需要显示这内层的走线线宽规则,仅仅是关注TOP和BOTTOM层的走线规则,最大值、最小值和最佳值都是5.5mil。

Fig 14
然后再创建一个PWR类的线宽规则,最小值、最大值和最佳值分别是10mil、60mil和12mil。

Fig 15
8.3过孔设置
通过了解BGA的Pitch间距来设置过孔的大小,根据核心板的实际大小进行设置,本次设计的是8/16mil。

Fig 16
8.4阻焊规则设置
一般而言,阻焊规则单边开窗为2.5mil。

Fig 17
8.5负片连接规则设置
对于负片连接,通过焊盘,采用花焊盘的连接方式;对于过孔,采用全连接方式;因此,Pad Connection选择Relief Connect;Via Connection选择Direct Connect。

Fig 18
8.6负片反焊盘规则设置
反焊盘一般设置范围是8~12mil,自行设置参数大小,但是一般而言不宜过大或者过小。

Fig 19
8.7正片敷铜连线规则设置
正片敷铜连线规则设置和负片连接规则设置是类似的,对于通孔和表贴焊盘,主要是以花焊盘连接方式,对于过孔,采用全连接方式。

Fig 20
9、PCB扇孔
对于扇孔一般都是BGA自动扇出,通过Route-Fanout-Component设置。

Fig 21
IC类、阻容类元件,实行手工元件扇出,尽量满足以下要求:
10、布线操作
(1)满足阻抗要求进行布线。
(2)满足走线拓扑结构。
(3)满足3W原则,有效防止串扰。
(4)电源线和地线需要加粗处理,满足载流。
(5)晶振表层走线不能打孔,高速线打孔换层处尽量增加回流地过孔。
(6)电源线和其他信号线留一定的间距,防止纹波干扰。
11、手工布线
在元器件相对复杂,电路信号线等较多时,需要手工布线,自动布线可能无法满足EMC等要求(地线一般推荐宽度是15~30mil)。有时候在连接芯片之间的引脚时,会出现以下的错误。

Fig 22
本人也是遇到这个问题,后来发现这是环境变量问题。
解决方法:Win+R,弹出注册表运行框,输入%AltiumSystemLibrary%运行,是否存在文件库的路径,如果没有弹出来就需要添加环境变量。

Fig 23
对于环境变量的添加是这样的,在DOCK栏搜索控制面板打开,在控制面板里面搜索高级系统设置。

Fig 24
打开后,点击环境变量。

Fig 25
新建环境变量。

Fig 26
变量名输入%AltiumSystemLibrary%,变量值输入封装库的所在位置,确定以后,重新运行AD就可以正常操作了。
完成布局以后,可以参照规则在此进行一个优化。
12、泪滴设置和敷铜
12.1泪滴的设置
在Tools菜单栏下选择Teardrops…,设置完成即可。

Fig 27
添加泪滴的作用:
12.2敷铜设置
因为本次敷铜已经在前面的内容中对敷铜参数进行了设定,这里就直接开始敷铜,在菜单栏选择多边形敷铜(Place Polygon Pour…),快捷键P+G,在PCB中敷铜完成后,进行敷铜基本属性的设置,在Properties中选择Hatched(Tracks/Arcs),Net选择GND,layer框选择Top Layer和Bottom Layer,在下面的Fill Mode中,Grid Size选择4mil,Track Width选择5mil,Min Prim Length选择3mil,Hatch Mode选择90 Degree,下面的选择Pour Over All Same Net Objects,死铜移除勾选(Remove Dead Copper)。

Fig 28
当敷铜是区域全部敷铜后,然后我在属性中需改为网格敷铜的时候,会出现不显示敷铜的铜,这时我们就需要进行设置,点击右上角的设置标示,然后左键打开,在PCB Editor中选择General,然后勾选此页面中的Repour Polygons After Modification和Repour all dependent polygons after editing。重新设置一下就可以敷铜成功。

Fig 29

Fig 30
然后就完成了敷铜设置。

Fig 31
13、Logo及版权设置
首先将自己的Logo图片用电脑自带的画图软件打开,可以自行设置大小,并将其另存为单位色图格式,放置于合适的位置。

Fig 32
AD的导入需要一个助手才能辅助我们完成设置,就是需要有一个AD脚本文件(百度网盘 请输入提取码 提取码:wngq)。下载完成后,就需要在AD中安装这个脚本,首先打开右上角的设置按钮,选择scripting system下的Global Projects,点击右下角install按钮,选择Install from file…,找到我们下载的脚本文件PCBLogoCreator,点击Apply-OK。

Fig 33
脚本添加成功后,就是加载脚本,将Logo载入,首先在File菜单下选择run script,出现如下界面。

Fig 34
选中converter并打开,然后点击Load,找到自己刚刚设置的Logo版权添加。

Fig 35

Fig 36
点击Convert即可添加成功,最后的效果是这样的。

然后就是调整我们的Logo,Ctrl+A全部选中Logo,然后右键选择Unions-Create Unions from selected objects进行调整,可以选择Resize…调整大小,当知道这个Logo的大小时,可以直接右键cut,然后在自己的工程中点击左键放置在合适的位置即可。

然后就完成这个项目了。
总结
通过一个小小的项目,完成了整体四层板的布线过程,其中包括参数设置、线宽、主要事项、错误解决办法等,希望对大家有帮助。
我已经开始学习Ruby,我已经阅读了一些教程,甚至还买了一本书(“ProgrammingRuby1.9-ThePragmaticProgrammers'Guide”),我遇到了一些以前从未见过的新东西使用我知道的任何其他语言(我是一名PHP网络开发人员)。block和过程。我想我明白它们是什么,但我不明白的是为什么它们如此伟大,以及我应该在何时何地使用它们。我到处都看到他们说block和过程是Ruby中的一个很棒的特性,但我不理解它们。这里有人能给像我这样的Ruby新手一些解释吗? 最佳答案 block有很多好处。电梯演讲:bloc
rails中View的解析过程是怎样的?我对View中erb标记中原始html与ruby代码的解析顺序部分感兴趣。我认为这是View代码被解析并最终发送给请求者的顺序:Controller调用ViewView代码从上到下解析当Rails在解析过程中遇到erb标记时:rails解析它并将结果附加到解析的html(这包括erb标签引用助手)一旦整个View被解析,整体结果将发送给请求者这似乎并非如此。看来View代码会扫描任何erb片段并首先解析那些片段(包括对助手的引用)。之后,rails然后从上到下解析所有View代码并将结果发送给请求者。以这个View为例:#_form.html
在我的应用程序中我有classUserincludeUser::FooendUser::Foo定义在app/models/user/foo.rb现在我正在使用一个定义了自己的Foo类的库。我收到此错误:warning:toplevelconstantFooreferencedbyUser::FooUser仅引用具有完整路径的Foo,User::Foo,而Foo实际上从来没有指的是Foo。这是怎么回事?更新:才想起我之前遇到过同样的问题,在问题1中看到这里:HowdoIrefertoasubmodule's"fullpath"inruby? 最佳答案
我正在尝试将ruby-debug19与Ruby1.9.1p376一起使用,但出现以下错误:test.rb:2:in`require':nosuchfiletoload--ruby-debug19(LoadError)fromtest.rb:2:in`'这是测试.rb:require'rubygems'require'ruby-debug19'这是“gemlist”的输出:***LOCALGEMS***ruby-debug19(0.11.6)(etc.)因此运行“rubytest.rb”会产生上述错误。我做错了吗?我认为这是运行ruby-debug19的正确方法(通过包含gem并
快速导航(持续更新中…)Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)Cesium源码解析二(metadataAvailability的含义)Cesium源码解析三(metadata元数据拓展中行列号的分块规则解析)Cesium源码解析四(Quantized-Mesh(.terrain)格式文件在CesiumJS和UE中加载情况的对比)目录1.前言2.本篇的由来3.terrain文件的加载3.1更新环境3.2更新和执行渲染命令3.3数据优化3.4结束当前帧4.总结1.前言 目前市场上三维比较火的实现方案主要有两种,b/s的方案主要是Cesium,c/s的方案主要是u
TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报
如何生成指向javascript文件的绝对链接。我想应该有类似下面的东西(不幸的是它似乎不可用):javascript_url'main'#->'http://localhost:3000/javascripts/main.js'代替:javascript_path'main'#->'/javascripts/main.js'我需要绝对URL,因为该javascript文件将用于书签。另外我需要相同的css文件。谢谢,德米特里。 最佳答案 javascript和css文件的绝对URL现在在Rails4中可用ActionView::H
听说PostgreSQL的可以用Ruby写存储过程但我一直没能找到更多关于它的信息,教人们如何实际去做。有人可以为此推荐好的资源。谢谢 最佳答案 显然,您需要安装PL/Ruby。之后,你可以写:CREATEFUNCTIONruby_max(int4,int4)RETURNSint4AS'ifargs[0].to_i>args[1].to_ireturnargs[0]elsereturnargs[1]end'LANGUAGE'plruby';查看其GitHubrepository安装说明。
假设我在一个非常长的模块路径中有一个类:sux=Really::Long::Module::Path::Sucks.new我能否以某种方式“导入”这个模块,这样我就可以直接使用这个类,而不必担心每次使用它时都要写这个路径?编辑:我知道在同一个模块中会让事情变得更容易。但在这种情况下,我不能在同一个模块中。 最佳答案 模块是ruby中的对象,因此您可以只引用较短的模块。Sux=Really::Long::Module::Path::SucksSux.new 关于ruby-如何不在rub
我是Ruby新手。我正在学习ruby中的抽象原则。据我了解,过程抽象是对用户隐藏实现细节,或者只是专注于要点而忽略细节。我关心的是如何实现它1)是不是一个简单的函数调用就这样#functiontosortarray#@paramsarray[Array]tobesortdefmy_sort(array)returnarrayifarray.sizearray[i+1]array[i],array[i+1]=array[i+1],array[i]swapped=trueendendendarrayend然后这样调用sorted_array=my_sort([12,34,123,43,