找回密码
 注册
关于网站域名变更的通知
查看: 5900|回复: 6
打印 上一主题 下一主题

DCM使用详解

[复制链接]
  • TA的每日心情
    开心
    2024-12-19 15:41
  • 签到天数: 36 天

    [LV.5]常住居民I

    跳转到指定楼层
    1#
    发表于 2010-3-11 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    本文翻译自Using Digital Clock Managers (DCMs) in Spartan-3 FPGAs
    " t2 {' G! {- o. h( p0 `4 jDCM主要功能; A1 U3 c# O* u" V* c
    1. 分频倍频:DCM可以将输入时钟进行multiply或者divide,从而得到新的输出时钟。
    . w8 s2 C5 q" K7 V; l- ^5 D2. 去skew:DCM还可以消除clock的skew,所谓skew就是由于传输引起的同一时钟到达不同地点的延迟差。' T. S! f, F( k) s: A
    3. 相移:DCM还可以实现对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。+ A0 M) T) M% A; j, |% {+ j( S- J
    4. 全局时钟:DCM和FPGA内部的全局时钟分配网络紧密结合,因此性能优异。
    / e: f( X2 @. d. x  J5. 电平转换:通过DCM,可以输出不同电平标准的时钟。
    7 n; K; ]" [) UDCM的特点与能力(Spartan-3系列为例)
    • 数量:4 DCM / FPGA(也有例外)6 @& x3 v8 O4 F( p6 ~
      -- 应该够用了
    • 数字频率综合器输入(CLKIN):1-280MHz
    • 延迟锁相环输入(CLKIN):18-280MHz
    • 时钟输入源(CLKIN):
      9 a% x8 P2 W8 F  Global buffer input pad
      ' Z$ |9 j+ p# }" T  Global buffer output
      0 m/ _  Y/ G) i" T- m! Y; b  General-purpose I/O (no deskew)' n9 \1 W$ ~, K8 c
        Internal logic (no deskew)/ Q" m- g, T4 w) ?
      -- 上面最后两个分别是外部的普通IO口和内部的逻辑,没有deskew,所以时钟质量不会很好。
    • 频率综合器输出(CLKFX、CLKFX180):是CLKIN的M/D倍,其中
      3 y& h  g# @2 |: A( J9 ]8 P M=2..321 L" Z, }% u3 I. E& v8 q
      D=1..32" P/ }# x" ^6 R' q
      -- 这样看来最大能倍频32倍,最小能16分频。
    • 时钟dividor输出(CLKDV):是CLKIN的下列分频
      & u6 r5 l( }3 E  1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 9, 10, 11, 12, 13, 14, 15, or 16
      + E" d, {; W7 _5 V-- 发现没有,最大的分频也是16。不过能支持半分频,比用频率综合器方便。
    • 倍频输出(CLK2X、CLK2X180):CLKIN的2倍频
    • 时钟conditioning、占空比调整:这个对所有时钟输出都施加,占空比为50%。
    • 1/4周期相移输出(CLK0/90/180/270):是CLKIN的1/4周期相移输出。
    • 半周期相移输出(CLK0/180、CLK2X/180、CLKFX/180):相差为180度的成对时钟输出。
    • 相移精度:最高精度为时钟周期的1/256。
    • 时钟输出:9个
      . g7 i# o( M& n  ?' O5 U* S& c) ]  到全局时钟网的时钟输出:最多9个中的4个* E& |& l, }' _& Y( W/ D" A" Z
        到General purpose互联:最多9个& @) \2 q: i5 [9 a) H9 P
        到输出脚:最多9个
      & Q7 [9 {: s& T# z2 ~/ t-- 可见9个时钟输出可以随意链接内部信号或者外部输出,但是进入全局时钟网的路径最多只有4个。

    % F% y3 ~% g7 N& X8 hDCM的位置在哪?
    * B3 f" u- N; n8 A* C/ _& y
    我们以Spartan3系列为例。8 S5 j, G2 k$ w; i6 ?* Z5 @- u
    FPGA看上去就是一个四方形。最边缘是IO pad了。
    0 ]5 G. F1 q" t) z: I# m除去IO pad,内部还是一个四方形。5 Y! R# `7 |9 L" T' p/ w
    四个角上各趴着一个DCM。
    6 ?$ o1 x# M  K9 }$ I* n4 J上边缘和下边缘中间则各趴着一个全局Buffer的MUX。, [' @7 u6 t' ]( f+ ?; G+ [+ X1 g
    这样的好处是四个DCM的输出可以直接连接到全局Buffer的入口。
    ! |. @$ m% n, z1 t7 v8 Q5 f下面是手绘简图,很丑是吧,呵呵。* i) C* `  I* |" g

    ; G8 L$ M; |, d1 Y- Y2 f
    ! F) R+ G- X: c+ q! u  wDCM是全局时钟网络可选的一部分1 i4 K- U9 g3 F7 x* ]6 l
    一般,时钟通过一个“全局输入buffer”和“全局时钟buffer” 进入全局时钟网络。如下所示
    ' R) }- T) }7 B3 Z+ m% A8 h6 n; yGCLK --->( IBUFG ---> BUFG) ---> low skew global clock network
    ) d) e4 N; U. M7 i在需要的时候,DCM也成为全局时钟网络的一环。
    & x# I  {2 t  I, L9 J) g; ? 5 A$ }9 q1 q7 z, ?5 b

    0 p8 `0 ~$ a; gDCM 内部构成一览
    2 p5 |7 E5 J8 l4 p/ t1. DLL 延迟锁定环
    - i2 @( C: i" Z7 Q    说是延迟锁定环,但是我觉得叫做延迟补偿环更加贴切。因为DLL的主要功能是消除输入时钟和输出时钟之间的延迟,使得输入输出在外部看来是透明连接。
    * C" u/ D' z3 f1 V6 ?6 ~& ]- ^    实现这种功能的原理是:DLL通过输出时钟CLK0或者CLK2X观察实际的线路延迟,然后在内部进行补偿。
    3 i: B. R/ b! E, H5 ?# E    一句话,DLL的核心功能是无延迟。
    , R+ s+ j, k& s* U: }' {! j    DLL的输出是CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。
    ! @" X  x( ]8 R8 h7 R. q" Q) }0 S: s7 q  }* V6 a
    2. DFS 数字频率综合
    ) E  k1 U* F; G: L6 h    DFS的主要功能是利用CLKIN合成新的频率。6 B7 P8 t5 `% A  _* p. Y* _
        合成的参数是:M(multiplier)和 D(divisor)。通过MD的组合实现各种倍频和分频。
    ! P- `3 n" F3 l( c) A4 A, n    如果不使用DLL,则DFS的合成频率和CLKIN就不具有相位关系,因为没有延迟补偿,相位就不再同步。
    ) _, F0 P% O- S( M
    6 J9 k1 m/ N' E# @9 T9 M# ]: N6 ]7 ?3. PS 相位偏移6 A: R: R: }, ?9 ~2 r
        注意这个相位偏移不是DLL中输出CLK90/180/270用的。这个PS可以令DCM的所有9个输出信号都进行相位的偏移。偏移的单位是CLKIN的一个分数。
    " t+ f  H, S7 K1 k7 y    也可以在运行中进行动态偏移调整,调整的单位是时钟的1/256。% z' Y0 o; Z8 K' t7 F% F1 }, |
    这个功能我们平时不常用。
    " X) m; m4 d4 Q# R! q
    % A1 p1 k0 F, I4 L" r! t4. 状态逻辑' i2 Q& z; e8 E8 T( t7 c( p3 w
        这个部分由 LOCKED 信号和 STATUS[2:0] 构成。LOCKED信号指示输出是否和CLKIN同步(同相)。STATUS则指示DLL和PS的状态。
    % m5 A9 t' Z- B3 D///////////////////////////////////////////////////////////////////////////////////////////////////////////////( @5 c8 w1 P5 g# j  W- L
    0 M, _: R7 C; q$ V" _
    DCM_BASE
    1 d+ F, o6 a8 B+ W: D+ IDCM_BASE是基本数字时钟管理模块的缩写,是相位和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用DCM_ADV原语;如果需要相位动态偏移,可使用DCM_PS原语。DCM系列原语的RTL结构如图3-8所示。
    % ?/ A2 d  Z: C( H7 o5 Q! W, c模块接口信号的说明如表3-8所列。
    + k2 q. u' L# Y. X/ L 5 o8 b" i$ O- Q: D
    DCM_BASE组件可以通过Xilinx的IP Wizard向导产生,也可以直接通过下面的例化代码直接使用。其Verilog的例化代码模板为: * p( B# N9 V* H& D, k. ~( q8 }
    , b" V; S1 H- p1 Q
    // DCM_BASE: 基本数字时钟管理电路(Base Digital Clock Manager Circuit)
    ' K. E6 @; h/ Z/ M' i+ d( a0 D( D// 适用芯片:Virtex-4/5 3 _% Y0 Z, `& p
    // Xilinx HDL库向导版本,ISE 9.1 - q, E& D6 K9 e' M1 I
    DCM_BASE #( ; Y) h) u. C: N5 }& |, o
    .CLKDV_DIVIDE(2.0), 6 O/ ^% a/ h- _" V
    // CLKDV分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
    - e  J1 x* p5 ~4 ^1 x/ y' }" _// 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0 ( P6 b4 s( _1 v+ Z: z+ f* l5 r+ _
    .CLKFX_DIVIDE(1), // Can be any integer from 1 to 32
    8 E" W/ s' G; [1 q% P- [// CLKFX信号的分频比,可为1到32之间的任意整数 ; B/ ~  y7 W4 _* [
    .CLKFX_MULTIPLY(4),
    / c% t- F. D( F5 U; M// CLKFX信号的倍频比,可为2到32之间的任意整数 ' A/ Z  ?+ k/ l+ c) x* j9 d+ C
    .CLKIN_DIVIDE_BY_2("FALSE"),
    + v* g$ D+ E8 T) X! j! X$ n// 输入信号2分频的使能信号,可设置为TRUE/FALSE 6 C& k& x& D7 O) n% }( P: K5 |
    .CLKIN_PERIOD(10.0),
    5 F' d. w& I# p+ Z// 指定输入时钟的周期,单位为ns,数值范围为1.25~1000.00。
    $ F/ ?0 R$ I! J# ^4 J  R.CLKOUT_PHASE_SHIFT("NONE"),
    1 Y* d3 x0 b- M, t& R$ K/ z! V2 M// 指定移相模式,可设置为NONE或FIXED
    6 e7 I" M7 F. I1 `.CLK_FEEDBACK("1X"),
    # e% S9 Q8 e* y9 T3 `  \// 指定反馈时钟的频率,可设置为NONE、1X或2X。相应的频率关系都是针对CLK0而言的。
    # U2 s" ^* P' h6 v.DCM_PERFORMANCE_MODE("MAX_SPEED"),
    6 L% N" Z+ U! F1 ^// DCM模块性能模式,可设置为 MAX_SPEED 或 MAX_RANGE & f. i2 b6 H/ E( }7 L9 G$ _
    .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), $ d8 s, `/ q) U6 T& z( s
    // 抖动调整,可设置为源同步、系统同步或0~15之间的任意整数
    9 q" ?- t8 S( e2 T- Z0 a# o.DFS_FREQUENCY_MODE("LOW"), * b; }( |, a" m8 N0 K! r7 y
    // 数字频率合成模式,可设置为LOW或HIGH 两种频率模式 0 n4 o0 k4 W6 c3 T
    .DLL_FREQUENCY_MODE("LOW"), ! T. j' D; ^2 w) t! `
    // DLL的频率模式,可设置为LOW、HIGH或HIGH_SER
    3 Y1 I5 ^: n" u4 ~0 j/ [% u.DUTY_CYCLE_CORRECTION("TRUE"), 0 U/ |8 a0 p4 {0 d1 h/ ?2 ^
    // 设置是否采用双周期校正,可设为TRUE或FALSE
    " M4 A! ^) N6 H* a" r+ A# R' p, ^.FACTORY_JF(16'hf0f0),
    0 ?0 M% a; s" x/ Q: w// 16比特的JF因子参数
    4 [/ `7 B6 {' [.PHASE_SHIFT(0),
    ) F0 W# Z5 ^& B, Z0 U! d// 固定相移的数值,可设置为 -255 ~ 1023之间的任意整数
    ) |5 L- S7 q7 c  t) p, z.STARTUP_WAIT("FALSE")
    7 |7 o" c5 m+ b2 H2 L5 j% M1 |6 @// 等DCM锁相后再延迟配置DONE管脚,可设置为TRUE/FALSE
    * K$ E( l7 }/ Y- A& C2 k7 v7 n. b  W) DCM_BASE_inst (
    5 s9 U( I/ @. Z. U' j.CLK0(CLK0), // 0度移相的DCM时钟输出
    - Y) `' B4 d8 a0 j8 w  x+ U.CLK180(CLK180), // 180度移相的DCM时钟输出
    ; O6 _& J- m4 N. r.CLK270(CLK270), // 270度移相的DCM时钟输出 $ u/ I5 [2 u( n' e0 h7 V( V
    .CLK2X(CLK2X), // DCM模块的2倍频输出 8 P1 f- o2 t* T: y0 ~- R4 R
    .CLK2X180(CLK2X180), // 经过180度相移的DCM模块2倍频输出 1 Z( u1 V( A% x
    .CLK90(CLK90), // 90度移相的DCM时钟输出 6 Z6 F. c' [/ e7 P
    .CLKDV(CLKDV), // DCM模块的分频输出,分频比为CLKDV_DIVIDE $ \) U& G  \) F2 |" J3 A- X0 A% j2 F
    .CLKFX(CLKFX), // DCM合成时钟输出,分频比为(M/D)
    # G3 u  o0 P4 f.CLKFX180(CLKFX180), // 180度移相的DCM合成时钟输出 6 k" x6 x1 A& t; T  f
    .LOCKED(LOCKED), // DCM锁相状态输出信号
    , R  s4 Y) H% f* {5 L.CLKFB(CLKFB), // DCM模块的反馈时钟信号 5 i; q% t7 t6 @9 U9 I
    .CLKIN(CLKIN), // DCM模块的时钟输入信号
    * a3 v. E; ^  ~( w( T; Q# _.RST(RST) // DCM 模块的异步复位信号 0 B0 A" j# W, ?/ r
    );
    ' q/ c% m: `0 S& c// 结束DCM_BASE模块的例化过程
    & M/ E8 {+ s- r7 f1 i& h在综合结果分析时,DCM系列原语的RTL结构如图3-36所示。
    3 h! f: n( W; M6 w; _+ O; f
    : n% S5 ]+ Y& X6 d. V7 ]0 k6 K图3-36 DCM模块的RTL级结构示意图 / n2 m. g9 t2 @6 t1 g* E
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////: a( ?) ?. ?5 r
    Spartan-3 DCM的兼容性+ G- p" Z/ @5 \6 c$ o
        S3 的DCM和 Virtex-II 以及pro的DCM 功能基本相同。但是S3 DCM的技术属于3代技术,因此在抗噪性能、相移能力方面有进一步提高。(客观的说,对我们的普通应用,不是特别重要。)0 z2 N$ _! c; A9 g$ K# F
        但是和Spartan-2系列相比,有很大改进。S2系列不叫DCM叫DLL,可见DFS和PS等功能完全是新加入的,所以S2系列其实除了二倍频几乎没有倍频和分频能力。从这点来讲,S3真的是用起来很爽了。  5 a- a- v7 r4 B$ R4 i2 b  N8 F* |7 X

    : `$ f! R* d1 z3 rDCM 输入时钟的限制
    # B  c( T/ E! e  j2 r. ^7 i# @* b   
    和所有物理器件一样,DCM的工作范围也是受限的。由于DLL和DFS的要求各不相同,因此DCM的输入频率的限制也视乎是否同时使用DLL和DFS还是单独使用其中之一。如果同时使用,则取限制较严格者作为整个DCM系统的限制。我们来看两者的独立限制。/ J  D! l9 E: j" E  V. P& k

    2 S  B" r9 ^, d' K7 |  n& h    呵呵,这部分内容不用记哦,需要的时候查一下软件或者手册就可以了。只要明白“CLKIN输入频率有限制,而且DLL、DFS同时使用时取其严格者” 这些道理就可以了。
    9 m3 y) \( ^* X8 @    除了时钟限制之外,对于时钟的质量也有一定限制,主要有3个:0 M9 s  g: B* Z6 S
    1. CLKIN cycle-to-cycle jitter:约束了前后两个CLKIN周期的差异;+ h3 F+ f; z& Q0 m1 f! f5 ]. {6 H
    2. CLKIN period jitter:约束了100万个cycle中最大周期和最小周期之间的差异;
      D8 i0 d1 E# ]3 y' @7 Y+ V3. CLKFB path delay variation:约束了从外部进来的反馈回路的延迟波动,这种延迟波动在概念上其实和jitter如出一辙。/ }. D! T9 p# l. \
    具体数值请查手册,知道有这么回事就可以了。
    ) |. e3 m$ \; p, l! _. X3 FLOCKED信号的行为方式( H+ L' a; R* U. ?% P' ~3 b
    LOCKED信号用于指示整个DCM系统已经和CLKIN同步,从LOCKED信号有效开始,输出时钟才可以使用,在此之前,输出时钟可能会处于各种复杂的不稳定状态。我们来看一下LOCKED信号的行为状态机。
    9 g9 B4 T7 x- B/ F3 u3 EFPGA配置:
    1 s3 `- `# B5 c9 L4 T* s    if (CLKIN已经稳定) next_state = 判断同步;6 ?2 \, q( x! ~6 t4 s+ A
        else                         next_state = RST_DCM;5 A3 y8 A/ n; J
    判断同步:
    9 W* L& F4 M, D/ ?    if (已经同步)          next_state = 判断同步;8 r2 h  T* O$ x! j! \
        else                         next_state = 同步失败;9 e! U7 L3 y7 O2 z' u+ i
    同步失败:                    next_state = RST_DCM;
    $ F% \9 V! Q+ ~/ M/ T" u; kRST_DCM:                  next_state = FPGA配置;
    6 l& _1 V1 F3 S9 W8 e  s. G$ @" ?8 x; D
    现在来看看各个状态下的输出。
    # o6 C! R% g* q! I
    / \* T7 O& W% z( |& Xcase (state)
    # D6 q/ k" k; _    FPGA配置: LOCKED = 0;/ [8 M6 W# D, a- W. a$ R3 I4 [
        判断同步:   LOCKED = 1;* ^" w. w8 c1 N7 {" X, \' R
        同步失败:   LOCKED = 0;
    9 m" M7 \/ ~' L4 P1 W1 `    RST_DCM:LOCKED = 0;1 m+ b% X6 Z6 V9 z/ I! e
    endcase$ f% I0 l6 ?, ]) p
    RST 信号——重启锁定
      P7 U- F, o( d5 }2 p   
    RST信号用于在时钟不稳定或者失去锁定时,将DCM的相关功能重置,从而重新启动锁定追踪。) w4 }2 h& [" E7 z0 z  N
        作为一个输入信号,RST无法被DCM自身置位,因此需要我们的应用设计来控制这个RST信号,否则需将其接地。
    $ o4 a- J4 O- g1 k3 i: Y; r( d+ I    置位RST会将延迟tap的位置置0,因此可能会产生glitch或者是duty cycle 发生变化,另外相位偏移也会重置回到默认值。
    : R; Q8 W4 M  Z  ?* {DCM 生成向导( m# o& `! K' {* [1 s
    安装了ISE就能得到一系列accessories。利用其中的Architecture Wizard 我们可以生成DCM模块。生成的DCM将产生3种输出:+ Q; K1 ?2 ]% l5 T3 P* s2 n
    1. 一个例化了DCM的逻辑综合文件(采用生产商特定格式的VHDL / Verilog)$ i( [* c6 Y  [$ x) c6 Q
    2. 一个UCF文件控制特定实现
    + D0 \' e7 v; a# u: F9 R3. 所有其他用户设置都保存到XAW(Xilinx Architecture Wizard)文件中。
    6 r* r; _6 e3 u  |3 b! E1 U6 R8 G; \. K3 f/ O/ i! o5 ^& t' }  d/ p
    接下来描述一下向导使用步骤。% S- N( W) Z; J, a: F. B+ I
    1. 从ISE或者Arch wizard中启动界面;
    2 f$ D+ n% n$ {% V3 M* z2. 第一个页面做基本配置:路径、XAW文件名、VHDL / Verilog选择、综合工具、FPGA型号;; h0 }4 x4 S- r# \+ o: f' `8 s
    3. 进行General setup,一看就明白,不细说,注意一下几点:
    , O( {4 N! f0 V0 {9 L- X; H    - CLKIN source 如果选 external 则 DCM 的 CLKIN 会自动连接到 IBUFG。5 k  ]7 p6 B5 F
        - Feedback如果选 internal 则反馈来自 BUFG。
    ; c: A# r- `7 ~6 a7 m" Q4. 高级设置
    ; w0 l3 O3 N# `8 U9 `8 \+ W    - 选择FPGA的配置过程是否包含DCM的锁定,如果是,则配置完成信号DONE将在LOCKED信号有效后方能有效。
    ' n9 b  T5 Q; d8 N% A3 o    - 选择CLKIN是否要除2。由于DCM的输入频率有限,对于过高的输入时钟通过除2使之可用。$ N8 G2 ~/ N+ P' V# W2 m
        - Deskew调整,这个选项建议在咨询xilinx工程师后再使用。& O  ^# y1 V- @. k) \, e* J& T: e: g
    5. 时钟输出口 Buffer 设置
    6 f% G* B* B, j3 N- n! }& k- ?    - 默认情况下所有输出口都链接 BUFG 全局时钟网络入口+ c: Y) k- X) T  `) C
        - 由于全局时钟网络的入口有限,用户可以定制时钟输出口连接到其他类型的Buffer
    4 `7 v/ r9 @' R" E5 O6 Z0 b       - Global Buffer:进入全局时钟网络的入口Buffer,共有4个,简称BUFG6 T, H( J' [# V* S) N: x
           - Enabled Buffer:还是上面的4个全局时钟Buffer,但是配置为有使能信号控制,简称BUFGCE
    ; x+ z( {1 ~  @5 E5 k' n8 L8 n& E       - Clock MUX:还是上面的4个全局时钟Buffer,但是配置为 2-to-1 MUX类型,由S信号控制选出,简称BUFGMUX
    ; e( l* J2 |, ?" f" F/ R& c       - Low skew line:没有buffer了,只能使用 skew 比较小的连线
    0 J5 L) V9 i( s. l& H' a       - Local Routing:连到本地,skew的要求不是很严格, z6 z1 q9 M. j1 n0 d7 T" ?& s
           - None:禁止输出% y7 _' }. x& u9 l
        - 对于Enabled Buffer类型和Clock Mux类型,需要指定En口的名字
    # X2 r* ^& j: y) {: k0 _0 y    - 需要为输出时钟信号指定名字或者使用默认
    * C7 A5 |+ p3 W, X- q6. 设置DFS
      D: \" j! p7 I' Z+ P% V    - 设置目标输出频率,然后按calculate,自动生成 M/D 值和 Jitter 值
    ' l7 i& p9 s0 K    - 或者手动设置 M/D 值,然后按calculate,自动生成频率和 Jitter 值
    ) m- I  z  r/ c" q; U1 B1 `; C+ N4 K7. 最后输出所需的3种文件。

    该用户从未签到

    2#
    发表于 2014-7-22 19:20 | 只看该作者
    太棒了,感谢分享

    该用户从未签到

    4#
    发表于 2015-7-21 17:45 | 只看该作者
    感謝分享~~这么好的东西没人气,太没天理了

    该用户从未签到

    5#
    发表于 2015-7-21 17:55 | 只看该作者
    D=1..32,  / j. ]" D$ e. a
    -- 这样看来最大能倍频32倍,最小能16分频。
    9 P. b7 r; d6 ?6 V& I4 e; A1 i这个16从哪来?

    该用户从未签到

    6#
    发表于 2015-7-31 09:11 | 只看该作者
    感谢分享哦。

    该用户从未签到

    7#
    发表于 2015-8-14 19:13 | 只看该作者
    多谢楼主的无私分享
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-16 12:54 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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