找回密码
 注册
关于网站域名变更的通知
查看: 5949|回复: 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
    # L2 o1 |% a  Z% H$ D# s2 JDCM主要功能
    1 q) D4 ~# a% F. B$ u8 q1. 分频倍频:DCM可以将输入时钟进行multiply或者divide,从而得到新的输出时钟。; c' Q/ C" g7 |" ~& r# b2 G5 i
    2. 去skew:DCM还可以消除clock的skew,所谓skew就是由于传输引起的同一时钟到达不同地点的延迟差。% z1 `7 ?4 M7 r0 y/ N3 M7 H
    3. 相移:DCM还可以实现对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。
    ) O" t& e" _$ r0 k5 d( \1 k4. 全局时钟:DCM和FPGA内部的全局时钟分配网络紧密结合,因此性能优异。
    % ^; {) l; }2 ?4 t% F& K2 [/ r5. 电平转换:通过DCM,可以输出不同电平标准的时钟。
    * Q- M5 ]  I1 O3 _/ {8 nDCM的特点与能力(Spartan-3系列为例)
    • 数量:4 DCM / FPGA(也有例外)5 F0 b; v- y, R4 z. G
      -- 应该够用了
    • 数字频率综合器输入(CLKIN):1-280MHz
    • 延迟锁相环输入(CLKIN):18-280MHz
    • 时钟输入源(CLKIN):$ S8 r) x3 P" U! |* a! b" w
        Global buffer input pad
      1 i" }/ T9 A0 o  Global buffer output  ]$ Z9 r' ]" W7 S! O4 s+ a4 d
        General-purpose I/O (no deskew)( A+ w9 z% D+ ]' i$ C
        Internal logic (no deskew)% g' x( F: j& E7 b! c# I- F
      -- 上面最后两个分别是外部的普通IO口和内部的逻辑,没有deskew,所以时钟质量不会很好。
    • 频率综合器输出(CLKFX、CLKFX180):是CLKIN的M/D倍,其中  w( ~* r& ~8 w
      M=2..32
      ! R0 |% |" V# c4 f D=1..32
      4 r3 N( ?7 i, C7 m' X-- 这样看来最大能倍频32倍,最小能16分频。
    • 时钟dividor输出(CLKDV):是CLKIN的下列分频
      3 L5 ^8 ?$ b3 J$ |/ x& b  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
      : h2 G' Z5 z: n2 [" M4 G: n6 ]-- 发现没有,最大的分频也是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个. r) W7 l+ Z1 n8 \2 T" L2 @
        到全局时钟网的时钟输出:最多9个中的4个' J8 R) B6 D" P8 _9 {) f( u
        到General purpose互联:最多9个- B* t+ n5 v3 v) F- a
        到输出脚:最多9个
      ( s* h- n# T' U5 Q1 ^6 ]-- 可见9个时钟输出可以随意链接内部信号或者外部输出,但是进入全局时钟网的路径最多只有4个。
    / ~5 D9 D4 B( G2 A; B2 f
    DCM的位置在哪?% [$ g' \4 S' E) A8 K& y* ~! [5 a
    我们以Spartan3系列为例。# }) w! z1 c. W4 J; s5 e* z- U
    FPGA看上去就是一个四方形。最边缘是IO pad了。
    , v& n' [, E  k, p- Z除去IO pad,内部还是一个四方形。
    & U5 t" L1 p4 m; O! d7 }+ ~# c( f四个角上各趴着一个DCM。  h4 j4 ]. ^$ I0 x, e
    上边缘和下边缘中间则各趴着一个全局Buffer的MUX。: E9 X- o3 z; p, B1 j7 J3 Z8 d
    这样的好处是四个DCM的输出可以直接连接到全局Buffer的入口。
    " e! L: a7 E4 \# h下面是手绘简图,很丑是吧,呵呵。# U1 s% [/ N3 A
    3 p2 D9 h/ m: W' Q5 w

    * A1 B; R) W" Z0 K  q. X2 D5 |DCM是全局时钟网络可选的一部分' x- r+ B0 c  _8 q( {
    一般,时钟通过一个“全局输入buffer”和“全局时钟buffer” 进入全局时钟网络。如下所示8 E% c2 `6 Y4 G; U! l
    GCLK --->( IBUFG ---> BUFG) ---> low skew global clock network3 D; K4 d( I3 h( B& P6 j; l, _
    在需要的时候,DCM也成为全局时钟网络的一环。
      U! n$ _3 d% E. p& S9 o
    8 T4 i' O, n/ m4 o. {! {& c
      `3 c3 n* e; _2 p5 Q3 N4 RDCM 内部构成一览4 ]; X' G* q. ^. n
    1. DLL 延迟锁定环: T$ u8 e, x: e
        说是延迟锁定环,但是我觉得叫做延迟补偿环更加贴切。因为DLL的主要功能是消除输入时钟和输出时钟之间的延迟,使得输入输出在外部看来是透明连接。" \0 G# L! t/ N# B" E
        实现这种功能的原理是:DLL通过输出时钟CLK0或者CLK2X观察实际的线路延迟,然后在内部进行补偿。$ {3 ?! X& z$ I' t5 ?4 c
        一句话,DLL的核心功能是无延迟。8 C2 s; a- n5 J, ^
        DLL的输出是CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。% y% U& _) y. U1 m( L6 B
      r3 G4 `: e8 I2 S: q, [
    2. DFS 数字频率综合
    * b  C  X( g% T% C    DFS的主要功能是利用CLKIN合成新的频率。8 Z5 V; |) w  B0 R
        合成的参数是:M(multiplier)和 D(divisor)。通过MD的组合实现各种倍频和分频。) ?" w; j  E5 C0 F" @
        如果不使用DLL,则DFS的合成频率和CLKIN就不具有相位关系,因为没有延迟补偿,相位就不再同步。
    & G- K1 Y1 p$ Q, U
    , Y8 O4 p$ h" N. B) [  g3. PS 相位偏移( K; U  n. C3 n" _8 }1 n
        注意这个相位偏移不是DLL中输出CLK90/180/270用的。这个PS可以令DCM的所有9个输出信号都进行相位的偏移。偏移的单位是CLKIN的一个分数。! N- n: Z) Q4 e% Y# \, k. [, L- z
        也可以在运行中进行动态偏移调整,调整的单位是时钟的1/256。
    % P" m- `4 c5 Z7 Q# a& [& r这个功能我们平时不常用。% }8 ]3 p# V8 B8 l% C! G

    & s2 r- D) z7 @. t4. 状态逻辑( e$ R, O! A1 g+ B5 G& S
        这个部分由 LOCKED 信号和 STATUS[2:0] 构成。LOCKED信号指示输出是否和CLKIN同步(同相)。STATUS则指示DLL和PS的状态。
    ) {9 c7 `7 F$ b7 r0 _' B, J///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    & J" W. O% M) m7 b  d
    / m+ r+ U3 j* ~- E7 e8 _* vDCM_BASE
    0 q! \" c. w- @8 }& ADCM_BASE是基本数字时钟管理模块的缩写,是相位和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用DCM_ADV原语;如果需要相位动态偏移,可使用DCM_PS原语。DCM系列原语的RTL结构如图3-8所示。
    3 a" t7 v1 \% n2 Q模块接口信号的说明如表3-8所列。 ; A$ f, e. c/ j2 V

    0 M3 W! q! |9 n" b1 ?DCM_BASE组件可以通过Xilinx的IP Wizard向导产生,也可以直接通过下面的例化代码直接使用。其Verilog的例化代码模板为:
    7 F) G- t2 V8 m9 ~! \& C# ?0 X! D& x
    // DCM_BASE: 基本数字时钟管理电路(Base Digital Clock Manager Circuit) 5 X' [- o  g8 H" s+ c7 [
    // 适用芯片:Virtex-4/5 8 x$ ], p$ p. T
    // Xilinx HDL库向导版本,ISE 9.1
    1 I* D# W) }6 f4 FDCM_BASE #(
    * `5 [$ u9 ?5 e.CLKDV_DIVIDE(2.0),
    " C+ R- a1 E9 x4 @// CLKDV分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
    " F/ C% B) y% F( S4 v" ]// 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
    * K+ M. D! a- {. n" B.CLKFX_DIVIDE(1), // Can be any integer from 1 to 32
    ! e) v% p0 C* n' ~( x; L' O+ Z% w- R// CLKFX信号的分频比,可为1到32之间的任意整数 % m$ G" c3 N+ s$ i4 b
    .CLKFX_MULTIPLY(4), / w. Z7 C& B0 f/ h
    // CLKFX信号的倍频比,可为2到32之间的任意整数
    * h  X& ]' W5 `$ N1 `.CLKIN_DIVIDE_BY_2("FALSE"), ; f! @5 e7 m+ v' [
    // 输入信号2分频的使能信号,可设置为TRUE/FALSE
    " l8 _* w  s$ t' k.CLKIN_PERIOD(10.0),
      U) v9 t; E( U8 m& B7 R7 ]+ ~' X// 指定输入时钟的周期,单位为ns,数值范围为1.25~1000.00。
    # @" M! E  j) R$ }6 h& X) b.CLKOUT_PHASE_SHIFT("NONE"), 5 I0 P/ B" N( u& W) `
    // 指定移相模式,可设置为NONE或FIXED + R4 ~. f3 ?: J" Q, V  J
    .CLK_FEEDBACK("1X"),
    . ]& T* b; T' I# |// 指定反馈时钟的频率,可设置为NONE、1X或2X。相应的频率关系都是针对CLK0而言的。 7 U9 H$ a( U( \* X7 t8 C. `( R
    .DCM_PERFORMANCE_MODE("MAX_SPEED"), ' g: U2 ~0 c! L( H0 R9 x8 w
    // DCM模块性能模式,可设置为 MAX_SPEED 或 MAX_RANGE
    4 ~1 ^! ]$ o6 }" X.DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
    " Y5 y. e. q, B% B6 c0 j// 抖动调整,可设置为源同步、系统同步或0~15之间的任意整数
    ) \8 h2 z0 ^8 d5 |( n/ O.DFS_FREQUENCY_MODE("LOW"), . s. H' J+ A4 z6 i4 }$ \
    // 数字频率合成模式,可设置为LOW或HIGH 两种频率模式
    ! u% x0 z6 l2 e.DLL_FREQUENCY_MODE("LOW"),   ?9 ?4 R. V7 B, I& |
    // DLL的频率模式,可设置为LOW、HIGH或HIGH_SER
    6 y: u: T( e! P+ ?.DUTY_CYCLE_CORRECTION("TRUE"), + Z6 S: @4 E' R( Y) s0 m, T5 j1 N
    // 设置是否采用双周期校正,可设为TRUE或FALSE 6 q! d3 c9 v$ L; [+ E. Z- e
    .FACTORY_JF(16'hf0f0),
    ! v! h9 P+ ^8 G9 B( W// 16比特的JF因子参数 6 ^* l% D, p( S. @
    .PHASE_SHIFT(0),
    ! i" I% s3 f* t+ R// 固定相移的数值,可设置为 -255 ~ 1023之间的任意整数 ) X" L  |5 D5 {: W) R9 K$ o$ o8 m! F, `
    .STARTUP_WAIT("FALSE")
    # ]  W2 v  X3 _9 j// 等DCM锁相后再延迟配置DONE管脚,可设置为TRUE/FALSE
    / L0 y3 Y2 Z1 j3 d% r9 z) DCM_BASE_inst (
    2 i# k0 R4 t8 z+ _+ v.CLK0(CLK0), // 0度移相的DCM时钟输出
    ' U* M) T* R1 d" N9 b4 O: g$ L.CLK180(CLK180), // 180度移相的DCM时钟输出 3 S  t& p9 w' M# b9 k. K) _2 j8 L
    .CLK270(CLK270), // 270度移相的DCM时钟输出
    " s+ ~- e: J7 C6 F0 S( `/ t. P5 i.CLK2X(CLK2X), // DCM模块的2倍频输出 ' f3 S8 E! x) g- Z5 [% k
    .CLK2X180(CLK2X180), // 经过180度相移的DCM模块2倍频输出
    0 j5 a/ K! s# Q6 _! z.CLK90(CLK90), // 90度移相的DCM时钟输出 , f5 ]" ?0 ?8 @5 A: Z9 O
    .CLKDV(CLKDV), // DCM模块的分频输出,分频比为CLKDV_DIVIDE
    ) Z9 t2 |+ a$ i( \  ^.CLKFX(CLKFX), // DCM合成时钟输出,分频比为(M/D)
    . k: I0 I% k; P: T/ u( ]& P5 U/ J.CLKFX180(CLKFX180), // 180度移相的DCM合成时钟输出
    : K1 Y& P$ y& L& q.LOCKED(LOCKED), // DCM锁相状态输出信号 ; y8 T7 P1 g" e' \2 \
    .CLKFB(CLKFB), // DCM模块的反馈时钟信号 , K  _" _9 D+ h3 W% \
    .CLKIN(CLKIN), // DCM模块的时钟输入信号 " E2 K7 @# Y# G$ @/ O% ?% m) x9 Z
    .RST(RST) // DCM 模块的异步复位信号
    ! a8 h) d' M: A& b: n' k);
    ! B. N& k0 v/ h+ G, m// 结束DCM_BASE模块的例化过程 - A. Z! A, J0 s. `+ x
    在综合结果分析时,DCM系列原语的RTL结构如图3-36所示。 & x- `! |7 f9 |4 f

    9 Z: ^9 g9 f0 c# a% x/ {图3-36 DCM模块的RTL级结构示意图 $ _& L5 m  i4 t
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////" e8 n3 M6 ]5 E  z8 t8 G3 r) d8 t$ m8 g: W
    Spartan-3 DCM的兼容性
    5 u0 O) u6 j' n8 l4 N
        S3 的DCM和 Virtex-II 以及pro的DCM 功能基本相同。但是S3 DCM的技术属于3代技术,因此在抗噪性能、相移能力方面有进一步提高。(客观的说,对我们的普通应用,不是特别重要。)
    9 i* x' g; o3 L" _1 t; h    但是和Spartan-2系列相比,有很大改进。S2系列不叫DCM叫DLL,可见DFS和PS等功能完全是新加入的,所以S2系列其实除了二倍频几乎没有倍频和分频能力。从这点来讲,S3真的是用起来很爽了。  
    + w" [1 T) K0 n5 }3 ?* N8 ^/ Y
    + Z. E& z- U. S$ x$ F5 Q4 j- S( {, K3 KDCM 输入时钟的限制
    2 R5 _0 N7 @/ c7 |   
    和所有物理器件一样,DCM的工作范围也是受限的。由于DLL和DFS的要求各不相同,因此DCM的输入频率的限制也视乎是否同时使用DLL和DFS还是单独使用其中之一。如果同时使用,则取限制较严格者作为整个DCM系统的限制。我们来看两者的独立限制。
    + `, ~. W7 s2 c- L- v- p( J0 T  \
    . W" t6 Z% ^8 p: n& d0 S6 u    呵呵,这部分内容不用记哦,需要的时候查一下软件或者手册就可以了。只要明白“CLKIN输入频率有限制,而且DLL、DFS同时使用时取其严格者” 这些道理就可以了。
    1 H4 h7 X% N; W! B- ?8 ^& |! \    除了时钟限制之外,对于时钟的质量也有一定限制,主要有3个:( x7 |" y/ A# `$ ~
    1. CLKIN cycle-to-cycle jitter:约束了前后两个CLKIN周期的差异;
    + y$ s: ?) j! T; K1 x/ ?4 V2. CLKIN period jitter:约束了100万个cycle中最大周期和最小周期之间的差异;
    5 g( S2 M' X/ h7 ]$ _3. CLKFB path delay variation:约束了从外部进来的反馈回路的延迟波动,这种延迟波动在概念上其实和jitter如出一辙。
    - J/ E) r5 }. L8 C( y具体数值请查手册,知道有这么回事就可以了。1 Q1 M" s: P2 U0 Y
    LOCKED信号的行为方式
    1 p% M8 t! U7 V. w  W
    LOCKED信号用于指示整个DCM系统已经和CLKIN同步,从LOCKED信号有效开始,输出时钟才可以使用,在此之前,输出时钟可能会处于各种复杂的不稳定状态。我们来看一下LOCKED信号的行为状态机。% ~% W  ^1 [6 E1 \
    FPGA配置:3 U" g( w; {2 u! s& o6 @2 `" B- j
        if (CLKIN已经稳定) next_state = 判断同步;
    7 r# f& S0 F9 N5 x7 Z+ a    else                         next_state = RST_DCM;
    + [* a; S' k  ?& y& N% F4 u) ~5 n判断同步:( x# A8 e9 _+ q; S6 A9 D" \! i3 b
        if (已经同步)          next_state = 判断同步;
      z# B6 P1 h. r- J# c    else                         next_state = 同步失败;: N7 x. ^/ G1 P1 U5 t
    同步失败:                    next_state = RST_DCM;  ?& M# F8 Q8 L% ~8 }( P2 z& @
    RST_DCM:                  next_state = FPGA配置;  }$ k2 k; r1 ~" A4 D
    # a( o  n$ [  B) r/ Y8 h# j
    现在来看看各个状态下的输出。5 @) T2 [& P0 Y/ f1 t) ]- S

    6 p8 N; v$ {% |) a+ acase (state)
      K' W$ h8 t# g- f3 J8 ^2 `    FPGA配置: LOCKED = 0;
    * m& {7 f" z& g. T    判断同步:   LOCKED = 1;
    $ k; \( [' O/ I    同步失败:   LOCKED = 0;3 [8 E' \" N7 h; [, Q4 D
        RST_DCM:LOCKED = 0;* [+ M& [8 W; W  I
    endcase
    - \2 {8 U# c9 F0 h8 Z1 cRST 信号——重启锁定  f/ M8 a! E# S1 `1 P/ w: ~' G1 o  k
       
    RST信号用于在时钟不稳定或者失去锁定时,将DCM的相关功能重置,从而重新启动锁定追踪。& ?, x/ n. r( q4 \8 j4 D1 o
        作为一个输入信号,RST无法被DCM自身置位,因此需要我们的应用设计来控制这个RST信号,否则需将其接地。
    7 {6 C# F( K7 r: w' u3 E    置位RST会将延迟tap的位置置0,因此可能会产生glitch或者是duty cycle 发生变化,另外相位偏移也会重置回到默认值。; m9 G" ?# |, j+ a$ ?$ g4 s# |/ U
    DCM 生成向导2 p: u* t* G4 v3 \
    安装了ISE就能得到一系列accessories。利用其中的Architecture Wizard 我们可以生成DCM模块。生成的DCM将产生3种输出:/ ]' V9 l: m- n: \; d" l* o4 @; R+ L
    1. 一个例化了DCM的逻辑综合文件(采用生产商特定格式的VHDL / Verilog)
    / M0 D0 G+ i4 u1 y" R2 n2. 一个UCF文件控制特定实现
    - ~! c5 X7 N5 k6 G/ H; `" _1 M  {3. 所有其他用户设置都保存到XAW(Xilinx Architecture Wizard)文件中。
    ( J4 W8 M: O; I
    $ I% D0 v( F- _: q* L( v接下来描述一下向导使用步骤。
    . @. P- m( A* Q- K7 G" V1. 从ISE或者Arch wizard中启动界面;) _' o! T* W1 n8 X6 F9 z
    2. 第一个页面做基本配置:路径、XAW文件名、VHDL / Verilog选择、综合工具、FPGA型号;
    # _2 l& n8 n) V! S. J3. 进行General setup,一看就明白,不细说,注意一下几点:% k6 D( o5 @9 F: j2 h
        - CLKIN source 如果选 external 则 DCM 的 CLKIN 会自动连接到 IBUFG。$ f: p; m. Z$ v
        - Feedback如果选 internal 则反馈来自 BUFG。
    ! K2 s: @. e* j/ k# D0 k4. 高级设置( V; @1 L1 j+ d" d) _$ f
        - 选择FPGA的配置过程是否包含DCM的锁定,如果是,则配置完成信号DONE将在LOCKED信号有效后方能有效。9 k$ z$ O9 A2 I* B3 M/ ^- f. M( ?
        - 选择CLKIN是否要除2。由于DCM的输入频率有限,对于过高的输入时钟通过除2使之可用。1 S# ^# k& L, O5 c+ J  W
        - Deskew调整,这个选项建议在咨询xilinx工程师后再使用。
    ; f. }' {- B: Q' A6 b6 C9 J% `5. 时钟输出口 Buffer 设置
    2 w: E, W% M. H4 m$ G5 b    - 默认情况下所有输出口都链接 BUFG 全局时钟网络入口) C) D5 c7 E: }; l) L5 E
        - 由于全局时钟网络的入口有限,用户可以定制时钟输出口连接到其他类型的Buffer6 w& ?8 D) t8 A- H
           - Global Buffer:进入全局时钟网络的入口Buffer,共有4个,简称BUFG
    8 C2 l; W7 @# J3 C( W- I       - Enabled Buffer:还是上面的4个全局时钟Buffer,但是配置为有使能信号控制,简称BUFGCE( E% c5 g! Q2 ]6 b7 R
           - Clock MUX:还是上面的4个全局时钟Buffer,但是配置为 2-to-1 MUX类型,由S信号控制选出,简称BUFGMUX
    5 l4 g/ s+ z9 \8 I" `8 ?       - Low skew line:没有buffer了,只能使用 skew 比较小的连线/ f) F, [0 {0 ^* c& L/ K9 U4 q
           - Local Routing:连到本地,skew的要求不是很严格7 `4 i% ?  }6 V+ u0 e6 V  z
           - None:禁止输出4 @8 c2 F4 I4 i) \
        - 对于Enabled Buffer类型和Clock Mux类型,需要指定En口的名字
    & \+ d4 ]9 R+ y. D* A$ E9 _    - 需要为输出时钟信号指定名字或者使用默认  K9 |+ ~2 f) e
    6. 设置DFS
    ) M* z1 n0 g0 ?$ |$ S8 N% q& R' `    - 设置目标输出频率,然后按calculate,自动生成 M/D 值和 Jitter 值
    ( w2 J: i7 ^4 B  k" [$ A+ t    - 或者手动设置 M/D 值,然后按calculate,自动生成频率和 Jitter 值1 H% }# u/ v3 H/ Q8 r' ?
    7. 最后输出所需的3种文件。

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

    5#
    发表于 2015-7-21 17:55 | 只看该作者
    D=1..32,  7 e0 _% Z9 a( j- m. H
    -- 这样看来最大能倍频32倍,最小能16分频。& P5 p6 _/ k0 X% y, U
    这个16从哪来?

    该用户从未签到

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

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-19 19:42 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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