找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 3602|回复: 32
打印 上一主题 下一主题

【原创】介绍AD另外一种奇葩的多通道复用的方法;

[复制链接]

22

主题

241

帖子

2185

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2185
跳转到指定楼层
1#
发表于 2015-7-9 23:41 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在设计多组相同模块的板子的时候,我们经常会用到AD的多通道复用功能,
那么很多人都会在设计的时候,就把这个模块的原理图做成一个整体,这个时候进行简单设置之后,就可以运用复用功能实现我们要的效果;
不过在这里介绍另外一种方法,这种方法比较繁琐,奇葩,我觉得应该没人会想到吧(不过我真希望有人站出来跟我说我也是用这种方法);
既然繁琐,那为什么,我还会想出这招呢,这要说回一个话题,PCB工程师这个职位并不是在所有的公司,都有地位的,硬件工程师也许会认为你只是摆摆器件,连连线,顶多佩服你有耐心而已,为什么说这么多坏话呢,其实也不是坏话,确实有的,正因为如此,所以有些时候你即使知道怎么在原理图做好模块,方便PCB的复用,但是人家硬件工程师也没这个闲工夫去学你的方法画原理图;
所以很多时候,你要进行复用,你还得乖乖先将每一个模块当中,起着相同作用
的器件分配给相同的ID(也就是Channel Offset),然后在复用设置的时候选择依据Channel Offset进行匹配,才能进行复用,这个时候最最蛋疼的事情出现了,就是如何准确为这些器件分配Channel Offset;
说到这里,我真的想吐槽AD为啥不学学Allegro,能自动识别每个模块中拥有相同作用的器件,手工分配ChannelOffset有时候真的不现实,一个模块里面有10个器件,还可以接受,如果几百个上千个器件呢?
于是通过一些试验,我自己摸索出这种方法,来实现半自动分配ChannelOffset的方法,方法比较繁琐,不过至少对于我以前的那份工作,还是能很明显提示效率的,因为我接触的模块,动不动都就是几百个器件在里面的。
*********************************************************************************
首先我简单介绍一下AD的复用的操作:
1.  按照模块,把器件都一堆堆放好;
2.  给每一个模块当中,给器件分配ID(Channel Offset),相同模块中的器件ID是唯一的,但是不同模块中都含有相同ID的器件,也就是说,ID相同,表明在模块中起着相同作用;
3.  为每个模块套上一个room,并做一个class,这样AD才能知道哪几个模块是相同的
4.  摆好其中一个模块,走线走好;
5. 启用复用命令,并设置好按照ID进行匹配,然后执行即可。
*********************************************************************************
好那么我现在开始一步一步介绍这种方法:
/ G9 j" l9 U2 E& s: d8 S
在原理图编辑界面,打开SCH list:

9 _+ [; G. P* a5 e  U8 N
让其显示器件信息,显示设置如图:
. c' ~( }6 H5 h9 k, |
右键选项栏,调出设置窗口:

/ T+ D, N9 K* B0 _+ E
我们来设置一下,让SCH list只显示我们需要的元器件详情,并且适当排序下:

: }* |1 s' T* }+ S9 M+ Q
好了,现在我们就把SCH list调出来了,并且依照我们的需要列出了几项元器件信息:
8 Y! ~' y3 ]/ c- P
接下来我们切换到PCB界面,用类似的方法,调出并设置PCB list窗口:
% N; s( l) \9 S5 [7 }& p, W
在PCB编辑界面,打开PCB list:
8 Y! b/ }5 Q+ @$ V0 m% j
让其显示器件信息,显示设置如图:

7 }3 e3 t4 B# ~3 J2 O0 n3 `
右键选项栏,调出设置窗口:

+ S5 K9 L% e1 C) z4 y0 T
我们来设置一下,让PCB list只显示我们需要的元器件详情,并且适当排序下:

* j* v* V& g/ }6 O3 G) V
好了,现在我们就把PCB list调出来了,并且依照我们的需要列出了几项元器件信息:
4 u3 _0 ~, K2 N$ D  n
好了,到了这一步,我们需要做的很简单,就是在SCH list和PCB list都按照位号把器件重新排序:

$ I' A# K# X" L0 j
怎么排序?例如在PCB list中,我点击这个Name这选项,这个时候会出现箭头所指的小三角,表示现在PCB list是按照Name的顺序升序排列,SCH list排序方式也是类似;
, S, d) S1 y9 B- C
然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;
% l+ n6 ]* Z% G+ F  R3 p2 A8 H
(因为别人在绘制原理图的时候,一般是先画好一个模块,然后复制出n个出来,这意味着其实原理图各个模块器件的摆放位置是一样的,而且原理图中器件是没有重叠的,也就是说器件的位置信息是唯一的,所以我们就能用利用器件位置唯一这个信息,给每个器件分配一个唯一的Channel Offset,我就是利用这种特点想出了这个方法,经过刚才的复制粘贴操作,PCB中每个模块的器件摆放情况应该是一样的了)

" W/ E- R# [$ g
5 X! i! v/ F7 b; R% `! U# U& s6 J
接下来我们需要重新设置一下PCB list窗口,让其只是显示选中的器件而不是PCB所有器件,方法很简单,可以看到,列表下面会提示你选中了多少个器件,我们可以每个模块都框选一遍,看看是不是各个模块都有同数量的器件;
) S& z6 u2 o7 w' M6 a* W
接下来就是为各个模块,起到相同作用的器件,分配相同的Channel Offset,之前已经说过,Channel Offset是软件完成复用的关键,问题来了,我们按照什么规则来分配呢,就是按照器件的位置信息来分配。
接下来我们要对所有的模块都做一遍这样的操作了:
, Y5 i1 c6 |0 a. f; s$ t  U
1.把原点移动到当前模块的一个特定位置,比如这次我们选模块中这个大电感的pin脚:
% v) Y- c5 q" W8 o2 j/ u  B2 P) @
2.创建一份EXCEL;

# _* S$ t* X9 N- h" B
3.确认已经选中模块中的所有器件:
4.在PCB list中按照位号排序,然后将前四列都复制到EXCEL中:
7 j! J9 ?) H* R2 E, b, ^
5. 在EXCEL的任意空列中,将目前的排序编一个号,如箭头显示,因为等下我们要打乱这个表的顺序,处理之后再还原排序:
: w6 i& y2 }! r) d  A
6.我们按照先B列,后C列的方式进行排序(其实先C后B都可以的),然后在D列中,重新填写Channel Offset数值,比如有37个器件,那我们就从1填写到37:
: a7 v# u, i9 }3 F5 e* _* c1 P7 J
7.完成之后,我们重新还原排序,并且复制Channel Offset数值所在的列,粘贴到PCB list中的Channel Offset列中,请注意,粘贴前需要确认PCB list是不是依然按照位号排序:

- r2 h4 A& z! z
好,接下来我们安装这7步,把其他模块这么操作:

& H3 g7 [3 I6 w/ Y- S, f* ?9 w
完成之后,我们可以检验一下,比如我们选中每个模块的相同的器件,
( I5 H: l  M; a( x. U
确认其ChannelOffset是不是一致的:
2 y7 k0 w$ M' ^. b- W" P2 x
完成之后就接近成功了,

1 I" t, K' K! j6 K
首先给每个模块添加一个room:
4 v! a8 v; x2 h( z2 S
然后双击每个room,把Name改为跟InComponentClass一样的名字:
/ e  H  c+ m9 h
完成之后,我们在Classer Explorer中,新建一个DesignChannel Class,并将这几个room设置为同属于相同的Design Channel Class:
/ A" I  V: Z- |# d1 a, y
接下来我们选择任意模块,布局布线好;

* q( P: O- o+ w
好戏上演:我们开始执行复用的命令,冰冻三尺非一日之寒啊,启用命令后点击摆好模块的room,然后再点击另外任意一个room:
% A* z# l) A- a6 `3 h6 P2 i' s

2 N$ f+ ]4 e* b
弹出了一个设置窗口,如下设置,看到左边下面的选项没有,因为我们在原理图没有把模块电路做成一个模块,所以我们只能选择按照Channel Offset进行匹配:
0 t* ?) Z" q' L& A; c
点击确定,我们看看效果:

. A/ D+ T8 E' ^+ Y- b1 b' \/ s
搞定了啊啊。。。
****************************************************************
$ L- S& J, N. r
我们再把方法回顾一下:
首先是将PCB里面的器件,按照原理图的器件位置进行摆放;
其次利用每个模块中器件相对位置是一样这个规律,分配Channel Offset;
第三,进行必要的复用前设置,然后执行复用;
第四,顶帖啊!哈
****************************************************************

) w; e; m. d( L  z% ]  h4 Y6 s6 q
其实就这么简单,只要你理解了每一步操作的意图之后,你会把这种繁琐的操作牢牢记住,我已经快三年没用到了,想起为大家写这份东西的时候,还是能够准确的进行操作并且一次成功;
当遇见每个模块里面有几百上千个器件,你们就会知道这方法能在Channel Offset分配这一关键步骤剩下非常多的时间,而且又准确;
; x9 P0 I% e7 T  b% [5 [
谨以此帖,献给广大EDA365 的小伙伴特别是仍然奋斗在PCB设计前线的人们。
- K; {. T8 v! }7 R! S+ ]7 T: d! s

: i  _7 A' C; J

! T3 U, n# L' s% X7 v
5 V; R' C' x7 f2 Q1 |

8 \/ z3 e6 O/ w0 D: r) f
( f& Z, {7 [/ ?1 i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏8 支持!支持! 反对!反对!

22

主题

241

帖子

2185

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2185
推荐
 楼主| 发表于 2015-8-31 19:33 | 只看该作者
xyz133355555 发表于 2015-8-30 10:473 A) t2 q1 s1 S; n* o( f7 o. U
再多看了几遍你的截图,发现答案就在里面,是我开始没留意到那点 现在已搞定。另外好像只要按照标号顺序/位 ...

, w1 d' Y9 e1 i2 P4 B步骤5是刚从AD复制出来的数据,AD6是在EXCEL里面,按照先X坐标,后Y坐标的顺序进行排列后的截图;
8 S# q& y, J5 T4 {0 X( A. v按照坐标完成排序后,就从上到下给每个器件编一个数字,比如从1编到37;
* S; R$ S- X$ u: b6 h+ o  K* U% P) z( B4 k: I
然后就按照同样的办法,处理第二个模块了,关键是,在处理新模块之前,要把原点设置在该模块的同一个位置,我的文章里面有强调的。7 c; Y' F$ K& i; `

0

主题

2

帖子

6

积分

初级新手(9)

Rank: 1

积分
6
推荐
发表于 2015-11-9 15:31 | 只看该作者
楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;”这一步中我从sch list复制了到PCB list这里粘贴不上去(就是粘贴功能是灰色不可用的),这怎么办?

0

主题

2

帖子

6

积分

初级新手(9)

Rank: 1

积分
6
推荐
发表于 2015-11-9 15:30 | 只看该作者
楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB list中X与Y列中(注意,PCB 编辑界面的单位应该选择mil),这个操作很容易理解,就是然后PCB器件的摆放与原理图器件的摆放相一致,虽然看起来好像是堆在一起,这没关系;”这一步中我从sch list复制了到PCB list这里粘贴不上去(就是粘贴功能是灰色不可用的),这怎么办?

0

主题

4

帖子

175

积分

二级会员(20)

Rank: 2Rank: 2

积分
175
33#
发表于 2018-7-1 17:35 | 只看该作者
himonika 发表于 2015-7-10 08:59
8 B9 B% R& n- E* v  P0 q7 j1 k确实如此,allegro会分析网络与器件信息,自动匹配,无法匹配,才进行手动匹配。
; m" |+ `; r9 ]6 O
是啊,搞得如此复杂,实在是不太智能
! A( R) G/ |$ g( i) Z0 z

0

主题

1

帖子

30

积分

二级会员(20)

Rank: 2Rank: 2

积分
30
32#
发表于 2018-6-21 23:17 | 只看该作者
本帖最后由 619105617 于 2018-6-22 07:22 编辑 5 d) D% p/ U! I3 H( X8 k( r8 b! W0 Y

; t- o4 G: {$ i感谢楼主的点拔+ o) E# I# K8 l; \' }( P
" F7 I4 R* D- F" p. t& X# b

8 M( N9 e0 A0 k, t" I补充内容 (2018-7-3 22:38):% U8 d1 |3 O5 X$ D2 a
经过测试,在excel中操作的那几个步骤可以省略,设置了参考原点后,只对X座标排序后就直接复制每个模块的offset为一致即可,没必要再去排序再回填,因为此时X座标已经是唯一的了,可以直接操作。

0

主题

149

帖子

190

积分

二级会员(20)

Rank: 2Rank: 2

积分
190
31#
发表于 2018-5-16 23:21 | 只看该作者
今天用到了,来找资料,谢谢楼主耐心解答,辛苦了

0

主题

309

帖子

5216

积分

五级会员(50)

Rank: 5

积分
5216
30#
发表于 2018-1-17 20:52 | 只看该作者
# i, m4 b$ |$ S6 s: A$ J! z9 d! y
谢谢分享,用心了

2

主题

20

帖子

552

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
552
29#
发表于 2016-4-1 15:05 | 只看该作者
一段时间没用AD了,又重新试了下 现在操作熟练些 好像有些步骤可以稍微精简下?
# S* f. `+ B* w9 p0 v3 s! y

QQ图片20160401150934.png (15.02 KB, 下载次数: 0)

QQ图片20160401150934.png

22

主题

241

帖子

2185

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2185
28#
 楼主| 发表于 2015-11-9 20:20 | 只看该作者
dwylin 发表于 2015-11-9 15:31# U- Q% Z; w0 ~& Q2 A1 A, h- B8 {. h
楼主,我遇到问题了“然后把SCH list中器件的位置信息(也就是X与Y列),全选之后复制下来,并且粘贴到PCB  ...
  J' q" ]! r. M
你试试用Ctrl c然后Ctrl V,记得在Pcb list里面要切换成edit状态,否则无法进行参数更改的。
( z' E; q& `0 b& n) X: ]$ X

4

主题

88

帖子

223

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
223
25#
发表于 2015-11-4 21:19 | 只看该作者
写的真好!

20

主题

121

帖子

541

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
541
24#
发表于 2015-9-1 16:43 | 只看该作者
ernest.yy 发表于 2015-8-26 17:03$ Q, J* Y1 u2 v: K6 Z% ]) ^$ x
楼主用的是ad多少?
. H% E# R( F& V7 F: y
我好想说,好麻烦。我用你的方法没有成功,估计我哪里操作没到位' J* O, _  [1 w& c9 Z

22

主题

241

帖子

2185

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2185
23#
 楼主| 发表于 2015-8-31 19:33 | 只看该作者
jch120610661 发表于 2015-8-26 17:11
4 ]5 {+ R& s/ T1 c终于解决了我的问题
6 P: A1 ]5 K2 t! @  F, M6 @
很好,看来不只是我觉得实用。

22

主题

241

帖子

2185

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2185
21#
 楼主| 发表于 2015-8-31 19:28 | 只看该作者
ernest.yy 发表于 2015-8-26 17:03
" c8 s, n+ i( w# J: d楼主用的是ad多少?

' k; F: n% F. z0 I. jAD winter09,很老了,相对稳定。

2

主题

20

帖子

552

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
552
20#
发表于 2015-8-30 10:47 | 只看该作者
再多看了几遍你的截图,发现答案就在里面,是我开始没留意到那点 现在已搞定。另外好像只要按照标号顺序/位置排列好一次CHANNEL OFFSET,其他相同模块的CHANNEL OFFSET应该是一样的,排列好元件编号,复制第一次重新设置排列好的CHANNEL OFFSET就好了?谢谢7 h. g5 M$ Y7 }6 @3 g' p! _( |! E

点评

步骤5是刚从AD复制出来的数据,AD6是在EXCEL里面,按照先X坐标,后Y坐标的顺序进行排列后的截图; 按照坐标完成排序后,就从上到下给每个器件编一个数字,比如从1编到37; 然后就按照同样的办法,处理第二个模块  详情 回复 发表于 2015-8-31 19:33
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-5-22 02:13 , Processed in 0.084662 second(s), 42 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表