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

DCM使用详解

[复制链接]
  • TA的每日心情
    开心
    2025-12-19 15:13
  • 签到天数: 39 天

    [LV.5]常住居民I

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

    EDA365欢迎您登录!

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

    x
    本文翻译自Using Digital Clock Managers (DCMs) in Spartan-3 FPGAs
    & x# I9 q% j' Z" I9 F8 {DCM主要功能: r7 G4 x8 C# z6 ]. [. E# J' B
    1. 分频倍频:DCM可以将输入时钟进行multiply或者divide,从而得到新的输出时钟。
      A9 Z3 i6 b* q7 C- F2. 去skew:DCM还可以消除clock的skew,所谓skew就是由于传输引起的同一时钟到达不同地点的延迟差。" ~! k# W) W( d; a: Z  {
    3. 相移:DCM还可以实现对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。- l; {7 x) C0 k/ `. i5 O+ W
    4. 全局时钟:DCM和FPGA内部的全局时钟分配网络紧密结合,因此性能优异。' A( s- \& q9 H& L, M9 J) k2 ?
    5. 电平转换:通过DCM,可以输出不同电平标准的时钟。   C" O( U0 Y& i+ f, B' `
    DCM的特点与能力(Spartan-3系列为例)
    • 数量:4 DCM / FPGA(也有例外)
      ) n# f4 R" j: n  y-- 应该够用了
    • 数字频率综合器输入(CLKIN):1-280MHz
    • 延迟锁相环输入(CLKIN):18-280MHz
    • 时钟输入源(CLKIN):
      ( T* B6 U+ w% {# C8 e  Global buffer input pad
        U+ K- n+ g4 }  x( \  Global buffer output
      % s9 k8 P$ G9 j  General-purpose I/O (no deskew)
      5 Y# ?/ I! Y4 e, L( c" e  |  Internal logic (no deskew)2 E# G) l! z* l- a$ |, v
      -- 上面最后两个分别是外部的普通IO口和内部的逻辑,没有deskew,所以时钟质量不会很好。
    • 频率综合器输出(CLKFX、CLKFX180):是CLKIN的M/D倍,其中
      & G# D( v" S1 O M=2..32
      ; w1 l7 o3 S, o: \ D=1..32  L) D7 c3 {. I/ M* I
      -- 这样看来最大能倍频32倍,最小能16分频。
    • 时钟dividor输出(CLKDV):是CLKIN的下列分频/ _0 }8 _8 |7 `3 r7 ~* s
        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
      ( K: D3 G( r" K8 X9 T3 l-- 发现没有,最大的分频也是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个+ ?  ]3 f! L5 [- }7 ]
        到全局时钟网的时钟输出:最多9个中的4个; e! x) k9 |* w) S
        到General purpose互联:最多9个* A. @& k$ s4 T) b- @  M; Q# k
        到输出脚:最多9个
      * \% K3 P1 v. T' G9 C6 {-- 可见9个时钟输出可以随意链接内部信号或者外部输出,但是进入全局时钟网的路径最多只有4个。

      S- q* ~* m! Q6 x& S0 w! NDCM的位置在哪?
    & x" ?! J! x" N: ~) W/ t" c
    我们以Spartan3系列为例。# t) u% A, `" i$ y
    FPGA看上去就是一个四方形。最边缘是IO pad了。# U' `- B. `7 O9 b$ q, V
    除去IO pad,内部还是一个四方形。
    ; }0 \; K& G0 r% Y! G四个角上各趴着一个DCM。- c6 P+ ^) |4 R/ V" p4 {- P0 @
    上边缘和下边缘中间则各趴着一个全局Buffer的MUX。6 [+ X; K! Y4 H
    这样的好处是四个DCM的输出可以直接连接到全局Buffer的入口。
    1 _3 p1 g" X% L6 e1 N# |  ]4 U; h下面是手绘简图,很丑是吧,呵呵。* \1 F  K# F6 M; U
    ' ^) m; A, L) G, T( H* p

    , `- N' T- o! p% m# d$ d0 s( G, cDCM是全局时钟网络可选的一部分
    ' O/ \" u+ C! B: p
    一般,时钟通过一个“全局输入buffer”和“全局时钟buffer” 进入全局时钟网络。如下所示+ Z' w8 U" V. Z# x- P
    GCLK --->( IBUFG ---> BUFG) ---> low skew global clock network& t5 J0 A5 @3 |. }' ]2 @
    在需要的时候,DCM也成为全局时钟网络的一环。/ N5 F3 n0 F" e$ x0 Y# o

    ' x. {& d$ h; X+ g; P  J& C: ~
    # n: \: ]; c' P( f- u! zDCM 内部构成一览- K( k3 c( z2 m  T+ e1 m
    1. DLL 延迟锁定环) c* _8 m# Y0 l, q7 `
        说是延迟锁定环,但是我觉得叫做延迟补偿环更加贴切。因为DLL的主要功能是消除输入时钟和输出时钟之间的延迟,使得输入输出在外部看来是透明连接。
    ( s; E& L) q2 U- I9 D7 N' @- [: s    实现这种功能的原理是:DLL通过输出时钟CLK0或者CLK2X观察实际的线路延迟,然后在内部进行补偿。6 J8 g( g% E6 A0 v
        一句话,DLL的核心功能是无延迟。
    & I$ [  H  \" }# z. X1 g    DLL的输出是CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。3 t; y$ p) r2 `4 t# ]! v

    5 Z1 O* j1 Z& M  E/ P2. DFS 数字频率综合
    9 B  E' E# W- }# W    DFS的主要功能是利用CLKIN合成新的频率。
    : }  c7 @; m, |3 N$ k0 x    合成的参数是:M(multiplier)和 D(divisor)。通过MD的组合实现各种倍频和分频。
    ; k' p! d8 X2 @, `: g# l: R$ ]    如果不使用DLL,则DFS的合成频率和CLKIN就不具有相位关系,因为没有延迟补偿,相位就不再同步。6 D: I0 }& G8 F

    0 _7 Q! Z5 I% B3 \3. PS 相位偏移
    9 [' f9 ?/ V+ {) }: h    注意这个相位偏移不是DLL中输出CLK90/180/270用的。这个PS可以令DCM的所有9个输出信号都进行相位的偏移。偏移的单位是CLKIN的一个分数。
    " P  N# ?+ X) x0 Q    也可以在运行中进行动态偏移调整,调整的单位是时钟的1/256。* T8 V) {9 q+ O& N8 O" j+ y6 a
    这个功能我们平时不常用。
    . b1 {7 w$ i, {& w' I/ e' o& W/ A* F
    4. 状态逻辑
    % z: G: f+ f7 a( i, @6 n    这个部分由 LOCKED 信号和 STATUS[2:0] 构成。LOCKED信号指示输出是否和CLKIN同步(同相)。STATUS则指示DLL和PS的状态。 2 J# p7 s6 C1 A2 i) m! K  Q
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////# @7 X. m, s4 a% M
    6 {( o: D  L& h) ]' U# _1 [  z/ {
    DCM_BASE
    + Y" q: l0 o7 d- d: i6 W2 rDCM_BASE是基本数字时钟管理模块的缩写,是相位和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用DCM_ADV原语;如果需要相位动态偏移,可使用DCM_PS原语。DCM系列原语的RTL结构如图3-8所示。* h: Z( w3 q& [% K7 k) C/ n3 C! g6 l  t0 M
    模块接口信号的说明如表3-8所列。
    8 G8 j  d! D0 y4 g& N1 A: l, N* @2 Y ; H) \4 B; c/ ]' [" q1 N" Z( Y
    DCM_BASE组件可以通过Xilinx的IP Wizard向导产生,也可以直接通过下面的例化代码直接使用。其Verilog的例化代码模板为:
    - E5 d$ a- k. a4 V  }' F
    ' t! ^3 a9 @' [7 g// DCM_BASE: 基本数字时钟管理电路(Base Digital Clock Manager Circuit)
    ! R: O& t* {2 ^// 适用芯片:Virtex-4/5 ; r0 |' t0 N9 I' d  l3 o
    // Xilinx HDL库向导版本,ISE 9.1
    3 t" Q* b* H4 `5 PDCM_BASE #(
    , P$ l$ }/ N" a" j1 E& |/ j* C) _.CLKDV_DIVIDE(2.0),
    3 [7 p4 G% O$ B- R// CLKDV分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5 $ y$ t$ ?% n$ u& U+ b2 y
    // 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
      P4 I8 W+ L3 Y0 Q6 P) t.CLKFX_DIVIDE(1), // Can be any integer from 1 to 32
    ! }4 J, j. Q- n3 }* `8 Y// CLKFX信号的分频比,可为1到32之间的任意整数
    1 M9 H0 S  B8 D2 X3 C+ l.CLKFX_MULTIPLY(4),
    & n0 B8 H9 _1 \2 I: b3 k// CLKFX信号的倍频比,可为2到32之间的任意整数 3 ~2 T/ S( Y' N" |) b4 m( s) ^) v/ a
    .CLKIN_DIVIDE_BY_2("FALSE"), ) o% _  `& ^6 r) D
    // 输入信号2分频的使能信号,可设置为TRUE/FALSE
    ' H: V- E- B9 w  a) H, z.CLKIN_PERIOD(10.0), ( k4 v; N7 I  |- d$ _/ z
    // 指定输入时钟的周期,单位为ns,数值范围为1.25~1000.00。
      X1 C* ]* T, ^; M  z.CLKOUT_PHASE_SHIFT("NONE"),
    " N( @6 L& `# b// 指定移相模式,可设置为NONE或FIXED 1 w& v2 F+ N& E. a6 L9 l
    .CLK_FEEDBACK("1X"),
    8 P) ^& V* A* q5 j% }// 指定反馈时钟的频率,可设置为NONE、1X或2X。相应的频率关系都是针对CLK0而言的。
    ; B* k8 i0 n7 C7 f.DCM_PERFORMANCE_MODE("MAX_SPEED"), # [9 P1 c4 _6 d' Z8 V
    // DCM模块性能模式,可设置为 MAX_SPEED 或 MAX_RANGE - `& k/ r5 I3 u. o1 v; P) ^
    .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
    5 k% H3 n: @# z- x. R: g// 抖动调整,可设置为源同步、系统同步或0~15之间的任意整数
    : x) q) L. D0 I" K6 \" _+ b. j" h.DFS_FREQUENCY_MODE("LOW"),   ~1 M( {5 d/ q6 N& q' k( Q0 `
    // 数字频率合成模式,可设置为LOW或HIGH 两种频率模式
    # D4 y1 M4 N( O5 o" Y5 l& Z) I.DLL_FREQUENCY_MODE("LOW"),
    % E6 h  a( s  {/ l% p3 x. l. J// DLL的频率模式,可设置为LOW、HIGH或HIGH_SER
    ) q+ q2 Z* C7 g1 o  g.DUTY_CYCLE_CORRECTION("TRUE"), 6 G9 z! A" U4 z
    // 设置是否采用双周期校正,可设为TRUE或FALSE 3 J, w: Q9 D2 ~
    .FACTORY_JF(16'hf0f0), " F, t+ {. Z1 u1 S5 M- W* ~) G
    // 16比特的JF因子参数
    7 u( L9 N( B6 g% B8 a' K% j.PHASE_SHIFT(0), # x) H5 P  F( @' `2 w
    // 固定相移的数值,可设置为 -255 ~ 1023之间的任意整数
    $ }; e8 ?& M0 a5 m3 s.STARTUP_WAIT("FALSE")
    ' k& p' X0 b3 H8 T$ x// 等DCM锁相后再延迟配置DONE管脚,可设置为TRUE/FALSE # W: e  D1 E! d# `5 m6 p3 g
    ) DCM_BASE_inst ( / c5 b5 N/ F2 t0 l! r, D; X% v* n7 ^
    .CLK0(CLK0), // 0度移相的DCM时钟输出 4 d7 [5 U  m( x/ @. d7 g2 i
    .CLK180(CLK180), // 180度移相的DCM时钟输出 + x- U$ o/ O  i. o8 j: C. ~
    .CLK270(CLK270), // 270度移相的DCM时钟输出
    ' j& A3 ~. r9 c.CLK2X(CLK2X), // DCM模块的2倍频输出
    0 @1 F& ]& K& m" E4 Y, R.CLK2X180(CLK2X180), // 经过180度相移的DCM模块2倍频输出
    * C+ s( I3 x! U6 ^9 @! Y$ Y.CLK90(CLK90), // 90度移相的DCM时钟输出
    * k+ x( V! l5 S8 c.CLKDV(CLKDV), // DCM模块的分频输出,分频比为CLKDV_DIVIDE 8 F: x8 r( o; z# h; `/ o4 M
    .CLKFX(CLKFX), // DCM合成时钟输出,分频比为(M/D) 4 j, U; r. v) Z" a
    .CLKFX180(CLKFX180), // 180度移相的DCM合成时钟输出 ; q1 r: t8 W5 ?0 {1 V2 t
    .LOCKED(LOCKED), // DCM锁相状态输出信号 5 f2 ^" f+ L# X8 [2 q6 ^
    .CLKFB(CLKFB), // DCM模块的反馈时钟信号
    8 a0 r0 A7 I3 M$ d7 W.CLKIN(CLKIN), // DCM模块的时钟输入信号
    3 n2 a1 y  _1 w.RST(RST) // DCM 模块的异步复位信号 $ V. K7 c9 n0 V6 r1 ^. p/ \  x7 h/ K
    );
    % v6 B+ K' _$ x2 x// 结束DCM_BASE模块的例化过程 ( h9 {% w; M9 `) ~9 {& p7 Y; v4 u
    在综合结果分析时,DCM系列原语的RTL结构如图3-36所示。
    / g9 A3 [! c* N/ n
    , e3 p( ?: y, K! k8 _. ?$ X* L1 [图3-36 DCM模块的RTL级结构示意图
    % d; R& M$ ]3 Z7 y1 @' {0 V) ~0 K0 u/////////////////////////////////////////////////////////////////////////////////////////////////////////////+ e7 L  r7 k7 i
    Spartan-3 DCM的兼容性
    # o- p8 r) {% R/ }1 C# ?9 @! }
        S3 的DCM和 Virtex-II 以及pro的DCM 功能基本相同。但是S3 DCM的技术属于3代技术,因此在抗噪性能、相移能力方面有进一步提高。(客观的说,对我们的普通应用,不是特别重要。)+ ~" c) g" q' [9 }) u2 y, _& {
        但是和Spartan-2系列相比,有很大改进。S2系列不叫DCM叫DLL,可见DFS和PS等功能完全是新加入的,所以S2系列其实除了二倍频几乎没有倍频和分频能力。从这点来讲,S3真的是用起来很爽了。  
    6 k/ B, Z- E& ~! Q+ f/ F6 O* X( H% p$ ^( Y# G" d4 d" t8 k
    DCM 输入时钟的限制
    / F8 A% H" ~7 H  z6 ?1 P" b: Y% ^   
    和所有物理器件一样,DCM的工作范围也是受限的。由于DLL和DFS的要求各不相同,因此DCM的输入频率的限制也视乎是否同时使用DLL和DFS还是单独使用其中之一。如果同时使用,则取限制较严格者作为整个DCM系统的限制。我们来看两者的独立限制。
    / e* c2 T# E5 D$ Y: Q& z( L # t% O; s( m8 b- h5 B0 d: }% ]
        呵呵,这部分内容不用记哦,需要的时候查一下软件或者手册就可以了。只要明白“CLKIN输入频率有限制,而且DLL、DFS同时使用时取其严格者” 这些道理就可以了。+ W' s) ~; }9 p& j, {, a
        除了时钟限制之外,对于时钟的质量也有一定限制,主要有3个:) I) ?' \0 x- C9 F" B$ Q
    1. CLKIN cycle-to-cycle jitter:约束了前后两个CLKIN周期的差异;, m6 y7 Y1 i3 E8 D7 Q
    2. CLKIN period jitter:约束了100万个cycle中最大周期和最小周期之间的差异;$ O2 D0 K, A- a0 ^0 ^
    3. CLKFB path delay variation:约束了从外部进来的反馈回路的延迟波动,这种延迟波动在概念上其实和jitter如出一辙。0 O8 h0 ^) j! v( y4 S% D
    具体数值请查手册,知道有这么回事就可以了。
    ) C2 U, x! P' K3 d# TLOCKED信号的行为方式
    - I8 }6 Q+ y+ X
    LOCKED信号用于指示整个DCM系统已经和CLKIN同步,从LOCKED信号有效开始,输出时钟才可以使用,在此之前,输出时钟可能会处于各种复杂的不稳定状态。我们来看一下LOCKED信号的行为状态机。
    9 ]7 N+ G% b2 [FPGA配置:
    9 e$ Z' _; K/ P9 U9 L    if (CLKIN已经稳定) next_state = 判断同步;& F+ v# B& h" }5 f0 }
        else                         next_state = RST_DCM;
    ) ]9 U! n2 Z# `+ T6 O判断同步:: c$ T  H5 G. u
        if (已经同步)          next_state = 判断同步;  f  W* G1 A8 D  o* g; U# x! v
        else                         next_state = 同步失败;. Q6 j6 u- q) R8 U
    同步失败:                    next_state = RST_DCM;
    ) l0 v3 }% l$ T' U, v7 E, r) PRST_DCM:                  next_state = FPGA配置;1 Z: \1 w* W+ N$ [
    : g( N- M% A0 p4 h( q
    现在来看看各个状态下的输出。
    8 w  N! Z' D7 ?* _
    * Q# j4 g3 G/ J5 G3 z( X6 ncase (state)
    ! g. [& ~9 C& o1 m. q5 u. y    FPGA配置: LOCKED = 0;
      e& i0 S1 a& `% H    判断同步:   LOCKED = 1;
    / M6 _6 E& `( @/ Q2 T! F. Y    同步失败:   LOCKED = 0;$ O2 Q* v" ]- \) p' P2 R: Q  Q- r
        RST_DCM:LOCKED = 0;- w4 r# f% T1 Q) H
    endcase
    3 s5 L2 Y1 g% g8 R* z$ rRST 信号——重启锁定
    ' s5 q! ?5 B$ `% \4 y   
    RST信号用于在时钟不稳定或者失去锁定时,将DCM的相关功能重置,从而重新启动锁定追踪。. @, ]; f' _: }  k* j8 A2 L
        作为一个输入信号,RST无法被DCM自身置位,因此需要我们的应用设计来控制这个RST信号,否则需将其接地。# d  `: b% Y( x* K
        置位RST会将延迟tap的位置置0,因此可能会产生glitch或者是duty cycle 发生变化,另外相位偏移也会重置回到默认值。+ R5 E1 _' \/ t& X% J
    DCM 生成向导/ l1 x, {. I. c6 i1 M  b' D
    安装了ISE就能得到一系列accessories。利用其中的Architecture Wizard 我们可以生成DCM模块。生成的DCM将产生3种输出:  Y& V2 H' B1 Z( H2 [: W- [2 P
    1. 一个例化了DCM的逻辑综合文件(采用生产商特定格式的VHDL / Verilog)
    / }& |& E. q* c9 c: n. M/ D  ^2. 一个UCF文件控制特定实现
    , z* E: v+ i9 b) z3. 所有其他用户设置都保存到XAW(Xilinx Architecture Wizard)文件中。& ~  H, u" N; [! h. F1 k2 X
    , ]: U" q! N3 h2 A0 T7 n
    接下来描述一下向导使用步骤。
    / ^/ c% O$ m5 r7 G1. 从ISE或者Arch wizard中启动界面;9 ~( I; o& d) Q+ e3 ^$ C- F4 W
    2. 第一个页面做基本配置:路径、XAW文件名、VHDL / Verilog选择、综合工具、FPGA型号;- T9 m$ J" S' J1 W) f
    3. 进行General setup,一看就明白,不细说,注意一下几点:+ V1 u0 j' ~  \8 g1 s. i# B
        - CLKIN source 如果选 external 则 DCM 的 CLKIN 会自动连接到 IBUFG。
    + c7 H  @( c8 j    - Feedback如果选 internal 则反馈来自 BUFG。4 [( u4 \/ ]* G
    4. 高级设置' L/ f; \: n( l+ F" o
        - 选择FPGA的配置过程是否包含DCM的锁定,如果是,则配置完成信号DONE将在LOCKED信号有效后方能有效。: t; g; u/ l1 A: R! A1 k' k% j
        - 选择CLKIN是否要除2。由于DCM的输入频率有限,对于过高的输入时钟通过除2使之可用。6 S7 Q/ A* {! f0 _: y% T8 K7 @0 m& R( q
        - Deskew调整,这个选项建议在咨询xilinx工程师后再使用。  w: I$ M. c% J) u& ^5 T  [
    5. 时钟输出口 Buffer 设置+ i8 @2 C* ?/ m6 Y
        - 默认情况下所有输出口都链接 BUFG 全局时钟网络入口
    * b* r( j% a* R, x$ B) a    - 由于全局时钟网络的入口有限,用户可以定制时钟输出口连接到其他类型的Buffer
    8 W4 m. O- u5 L: w       - Global Buffer:进入全局时钟网络的入口Buffer,共有4个,简称BUFG0 @. k3 u$ f+ W. `: h
           - Enabled Buffer:还是上面的4个全局时钟Buffer,但是配置为有使能信号控制,简称BUFGCE
    ( V) ~$ y9 ^) x& w0 d3 K- P       - Clock MUX:还是上面的4个全局时钟Buffer,但是配置为 2-to-1 MUX类型,由S信号控制选出,简称BUFGMUX
    / W- Q' a" S  s4 h0 }       - Low skew line:没有buffer了,只能使用 skew 比较小的连线
    2 I4 p1 Z. [# M8 }. y$ l       - Local Routing:连到本地,skew的要求不是很严格/ t5 D" z! W/ i
           - None:禁止输出: A: ]7 W8 ]( E5 v
        - 对于Enabled Buffer类型和Clock Mux类型,需要指定En口的名字6 h% }% C$ u: V3 Y* }  Y
        - 需要为输出时钟信号指定名字或者使用默认
    ! f4 Z3 b. N! m( t1 f0 s6. 设置DFS
    * V( `5 c& a. K: E" f    - 设置目标输出频率,然后按calculate,自动生成 M/D 值和 Jitter 值
    : ^' d0 U2 Y$ o0 L8 k    - 或者手动设置 M/D 值,然后按calculate,自动生成频率和 Jitter 值# K" C3 ^- O- O! t
    7. 最后输出所需的3种文件。

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

    5#
    发表于 2015-7-21 17:55 | 只看该作者
    D=1..32,  
    9 }  D" O9 {! \3 f-- 这样看来最大能倍频32倍,最小能16分频。
    ; s5 A* b# D. q: S& d0 `这个16从哪来?

    该用户从未签到

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

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2026-4-19 00:38 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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