EDA365电子工程师网

标题: 电路设计漫谈之 - 总线设计 [打印本页]

作者: admin    时间: 2019-9-27 15:10
标题: 电路设计漫谈之 - 总线设计
(来源:EETOP BBS,作者:sun_ic)
0 K) F9 ?! l9 r  s) W6 N" R& _( `% j
这里的总线设计是针对网络设备尤其是大型的通信设备,交换机,或者其它大容量的插卡式电子设备。对于中小型的电子设备或者某些成本是主要考量的产品,以下讨论的一些内容可能不适合。) W5 |  _% M1 y4 A  S$ |

: |% y. z0 N. D/ ~' F1 m对于大型的电子设备,在设计中主要要实现以下几点
" J  Y* \  I, y" n8 n3 H1)高容量无阻塞的数据总线
6 H+ M6 k1 @% m, g2)高速灵活的控制总线
; ~3 Q/ ]" z+ I- O% V- h, u3)可靠性的支持(redundancy,hotwap,reliability,etc)
9 j1 f" H2 a6 Z' M% f1 x* T8 R
3 D" z9 ^( O; X& x2 e一个总线系统一般是由系统的背板支持的。背板的设计决定了一个系统最基本的架构。一般的需求是设计一个可扩充的大容量总线系统,即满足目前的指标和功能,还要考虑到几年以后的扩充。因为使用者购买一个系统,开始只是装备一部分容量。随着他们的客户对容量的需求,未来再进行扩容。比如一个交换机,10年前一个卡上可能只支持10个百兆口。几年后客户需要一张卡支持10个千兆口。现在可能需要支持若干10G的口。客户显然希望保护自己的投资,系统厂家能在既有的系统架构上提供高容量的接口板。所以在一开始设计时,总线系统就要考虑未来的容量增长。% C$ R+ R$ V6 N; s/ }) ~" H5 }

/ {8 T: z& {1 C2 W5 y* `一个总线板可以分为对以下几个平台的支持
- V6 U$ j  D0 R( l# b* i' z1)数据总线, O6 b' n- Y* A7 @6 ?+ z
2)控制总线(包括状态,冗余,对板卡的控制通信等)2 c2 \1 r$ e4 E' T" n0 F
3)电源系统
  L: o  ^; G0 {) f, H
# ?& F; ]4 Z# ^6 }/ C; E总线系统早期的采用TDM共享的方式多。一根总线连接所用的板卡。每个板卡在特定的时间间隙传送数据。这种方式由于容量低,信号完整性等问题,已经被无阻塞的点对点总线取代。比如每个板卡有若干条到交换板(或者TRUNK卡)的高速点对点双向串行总线。这样的好处是对大容量的支持,无阻塞,很好的SI特性。总线的速度一般2.5Gbit以上。以前是用专门的SERDES把并行数据转换为高速的串行接口。现在好多ASIC或者FPGA已经集成了高速的SERDES。对于数据交换机,这种SERDES比较简单。对于需要同步的SONET/SDH系统,一般还要有个buffer做timing domain的转换,或者phase delay的补偿等。: l; ?& C5 c% h! m  y- a& k* {
! y2 q' h0 y; j7 J1 u( M' t7 q
控制总线分为高速和低速控制总线。高速控制总线现在一般都用点对点的数据总线,比如Ethernet。在中心控制板上有个多端口的交换芯片。整个系统内各板卡的控制器,控制板的总控制器,都连接在一个LAN上。还见有公司使用ATM协议的。除了LAN总线外,还要有用于调试和制造的一些低速数据总线。比如用RS232作为调试用,I2C或者SPI作为制造用。这些总线一般也是点对点。尤其注意I2C之类的低速总线,虽然它们理论上讲支持共享,但尽量别这么用。即使在一个板卡内,尽量用一个I2C的bridge或者switch来连接不同器件。一般一个系统高速总线反而不怎么出问题(因为一般这是重点,一开始就花了大量时间设计仿真等),那些不怎么注意的低速总线却总不断的出状况。本人设计过2个高速总线系统。每个都是最后的I2C闹出来点事来。
# |2 q- \) a/ b% x% j; m, q! k! _' B0 S
[attach]377555[/attach]
  Y' _: a  Y# J
9 a2 U5 r* ~; K4 P3 ~: N# M- g+ I控制总线还包括对冗余状态等的支持。一般每个子卡都有以下专门信号发给控制卡:hardware_ready, software_ready, card_healthiness, card_in,slot_ID等。接受来在主控卡的primary/secondary指示 (用于识别哪个控制卡是active的),switch_over控制(用于控制一个子卡是处于active还是standby)等。这些状态/控制信号也最好是点对点的。
+ A( a) s0 f7 q4 [* D/ q& r电源系统。采用48V/AC电源分配,还是采用5V等低压分配,各有利弊。一般如果容量大并且功耗高时应采用48V/AC(星型)分配。这样各个板卡的电源隔离(注意48V的电源是不接地的!)。一个板卡出了问题不至于影响其它的。电源可以用几个PCB平面,或者为了节省面积采用buss bar的方式。每个板卡的48V系统都要用hot swap的控制。即电流是逐渐加到板卡上(对板卡的电容充电)。否则电流的突变会引起大的冲击.& O& W' e, `9 S8 b- D
% \2 ~6 E5 J. }( F5 T3 m
最后提几点需要注意的 1)SI  2)冗余  3)连接顺序(mating sequence)$ ]1 a" G; n+ G2 [: H

9 a4 G# I3 u& T: \) i4 B$ RSI的重要性自不必说。PCB的参数应该事先跟厂家拿到。连接器的spice model可以从连接器厂家得到,一般是S参数。实在拿不到自己测试一下建立个模型。其它的器件接口的模型也一般能得到。如果仿真步骤和model正确的话,实际测试的结果应该接近。如果差别较大,除了分析仿真和测试的各个步骤外,首先怀疑的就是模型的可靠性。曾经有一次本人反复检查后怀疑一个ASIC的接受端的model有问题。厂家给的是等效于2pF//50ohm。结果我用一个2pF的电容和50ohm的电阻取代厂家的ASIC,示波器测试的波形眼图跟仿真很接近。但换上ASIC后就差了很大。联系厂家后跟他们讨论要么model不准,要么ASIC制造有问题。最后厂家review后发现是packaing有问题,寄生电容增加了几个pF。后来他们换了foundry厂家。3 ~7 Y: V$ y2 G$ N  Z  I: o
' V' n5 _/ |% o! X- l# p$ U
冗余是比较难支持的一个功能,尤其是database的synchronization。具体到在硬件的总线设计上,要把主备两套系统从总线上完全分开设计。各自一套,尽量不要有公用的信号。有时为了省事,主备两个卡同时驱动一条信号,往往后来会出问题,尤其在开关电和插拔板子的时候。听俺一句劝,尽量用独立的点对点的信号和控制/状态线。不管是高速的还是低速的I2C。1 o0 K  y6 \8 ]* v% w7 ?7 _7 ?

- ?1 r; U. g5 }最后是mating sequence。一个板卡的接插件要有几组长度不一的信号管脚。一般连接顺序从先到后是 1)地 2)电源 3)信号。有时再加上板卡的在位信号(最短)。就靠这点距离,板卡可以在系统的参考地面和电源供给都稳定了以后,再启动某些逻辑功能。这对实现无冲击切换(hitless switch),数据完整性保护等很有作用。这时细节决定成败,虽然俺好多情况下不赞成这句话。  
4 v6 P8 {0 o) n- v& P1 X- q3 t7 b
+ d  B* m  J8 p3 C  X(待续)& |" V& J; n- `# q- T5 n* \

! b+ P8 R& w' s2 o/ i2 b% F& F电路设计漫谈之1-17
& U" W$ M4 l" p/ {http://bbs.eetop.cn/thread-296106-1-1.html




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2