找回密码
 注册
查看: 5871|回复: 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
    . Z7 \) J  c1 R: QDCM主要功能
    4 v2 S* X* G% l+ f7 o1. 分频倍频:DCM可以将输入时钟进行multiply或者divide,从而得到新的输出时钟。' f& C; s% F+ ]4 h; z
    2. 去skew:DCM还可以消除clock的skew,所谓skew就是由于传输引起的同一时钟到达不同地点的延迟差。
    : n0 Y2 p2 C/ w  L% ?9 r% k, s3. 相移:DCM还可以实现对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。
    % o4 H8 V3 x7 z' m1 Q) i4. 全局时钟:DCM和FPGA内部的全局时钟分配网络紧密结合,因此性能优异。
    , u0 d* c, O7 ]- s' [3 D5 n: P1 o+ Q5. 电平转换:通过DCM,可以输出不同电平标准的时钟。
    2 W& W" |0 q; Z& eDCM的特点与能力(Spartan-3系列为例)
    • 数量:4 DCM / FPGA(也有例外)/ k, G1 N+ q( \
      -- 应该够用了
    • 数字频率综合器输入(CLKIN):1-280MHz
    • 延迟锁相环输入(CLKIN):18-280MHz
    • 时钟输入源(CLKIN):+ F5 G/ C1 e" F2 C( f7 s
        Global buffer input pad
      ; g% F7 A, c  ^  Global buffer output7 E: x/ a) }4 n. A- Y! p. n
        General-purpose I/O (no deskew)
      3 H2 @& y; e; w6 w0 h  Internal logic (no deskew)* _* Q: w7 Z; C* t* |
      -- 上面最后两个分别是外部的普通IO口和内部的逻辑,没有deskew,所以时钟质量不会很好。
    • 频率综合器输出(CLKFX、CLKFX180):是CLKIN的M/D倍,其中) i+ V8 f! ^  l0 `4 M: N2 T- m( }
      M=2..32! |' S# I6 t" K. T
      D=1..327 N) o, _/ V. C2 M" I8 y) R  D
      -- 这样看来最大能倍频32倍,最小能16分频。
    • 时钟dividor输出(CLKDV):是CLKIN的下列分频
      9 V0 e8 z+ e7 Q- \4 U& o% c( t/ D. 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
      ( F4 e. i2 H& S1 G2 K/ W-- 发现没有,最大的分频也是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个
      ! Q. L" u; Z; d  o  到全局时钟网的时钟输出:最多9个中的4个
      $ r, g, j2 Y& K7 p# g  到General purpose互联:最多9个
      ; i4 f7 V2 Z% M4 Z8 M  c5 [. t  到输出脚:最多9个
        C5 o7 [$ E1 q# j$ U- }! W3 ]-- 可见9个时钟输出可以随意链接内部信号或者外部输出,但是进入全局时钟网的路径最多只有4个。

    7 ]1 ?( V/ p. }+ U/ @/ p* {5 _DCM的位置在哪?+ T  V* R3 b/ v# a' m5 Q
    我们以Spartan3系列为例。0 v: V. u/ m4 C
    FPGA看上去就是一个四方形。最边缘是IO pad了。0 G; T+ I  h( I: e& o, [+ `# o' ~
    除去IO pad,内部还是一个四方形。1 U$ g; R6 _5 X' _% W4 x4 Y' p
    四个角上各趴着一个DCM。) b# p" W' I2 ^3 h
    上边缘和下边缘中间则各趴着一个全局Buffer的MUX。
    ! P- j. c& f; o  [1 Y+ ?这样的好处是四个DCM的输出可以直接连接到全局Buffer的入口。
    4 n: p* `- G, @' [$ F, ^5 r下面是手绘简图,很丑是吧,呵呵。' J3 C3 L" ^" I" s/ i
    # D: C" \1 S5 I  g* e! }; D
    3 k  L9 @0 e" }0 e( {; S* B
    DCM是全局时钟网络可选的一部分" B5 i4 L* t9 {" m6 l8 ]/ I
    一般,时钟通过一个“全局输入buffer”和“全局时钟buffer” 进入全局时钟网络。如下所示) F& S8 j' P0 j5 D! k- X+ _4 U
    GCLK --->( IBUFG ---> BUFG) ---> low skew global clock network
    % L* t. s% b! D3 D9 Z在需要的时候,DCM也成为全局时钟网络的一环。+ E3 ]7 \; k, V1 n1 g& S
    % f& m8 ~4 o8 R  n7 I8 `' v0 I$ R6 X# n

    ; ~- n# m- a& |0 k/ V6 E- y1 G8 J* lDCM 内部构成一览" A4 c7 {' b8 L6 J" j/ z0 ?3 }
    1. DLL 延迟锁定环
    3 G. X2 h% W) y' q8 y8 H    说是延迟锁定环,但是我觉得叫做延迟补偿环更加贴切。因为DLL的主要功能是消除输入时钟和输出时钟之间的延迟,使得输入输出在外部看来是透明连接。: S% P+ s4 L# [+ I; T
        实现这种功能的原理是:DLL通过输出时钟CLK0或者CLK2X观察实际的线路延迟,然后在内部进行补偿。# f: @( b* a  {+ R4 ?- Q6 B
        一句话,DLL的核心功能是无延迟。- z  X, {! u4 l9 Z+ m
        DLL的输出是CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。% k- g* J+ n: D1 O

    & l9 m% i2 F. I2. DFS 数字频率综合/ t" _0 O6 e9 w
        DFS的主要功能是利用CLKIN合成新的频率。' |% w* a* ?6 Z0 N# @
        合成的参数是:M(multiplier)和 D(divisor)。通过MD的组合实现各种倍频和分频。
    * k4 M) |$ l9 I) b4 P1 @) T    如果不使用DLL,则DFS的合成频率和CLKIN就不具有相位关系,因为没有延迟补偿,相位就不再同步。
    # _) m$ T" b! U# G6 j( k9 `6 d) [% T; ]7 [: H
    3. PS 相位偏移7 V2 V& g7 ~2 _. _% V8 g
        注意这个相位偏移不是DLL中输出CLK90/180/270用的。这个PS可以令DCM的所有9个输出信号都进行相位的偏移。偏移的单位是CLKIN的一个分数。9 L  y; D$ f: }: v
        也可以在运行中进行动态偏移调整,调整的单位是时钟的1/256。! W& W0 p: T) r; r- j& z" K6 I
    这个功能我们平时不常用。
    7 Y# @  `2 f2 y
    % O& n2 X0 K/ |/ W( A( D4. 状态逻辑" m& L, y4 d4 N8 g7 {1 P
        这个部分由 LOCKED 信号和 STATUS[2:0] 构成。LOCKED信号指示输出是否和CLKIN同步(同相)。STATUS则指示DLL和PS的状态。
    ) m: t4 |0 X# B- g///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    / m- N/ D7 n& }) {! c1 B
    5 M# U/ |/ L8 Q8 g. J7 Y; iDCM_BASE
    * C5 z( h- Q* YDCM_BASE是基本数字时钟管理模块的缩写,是相位和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用DCM_ADV原语;如果需要相位动态偏移,可使用DCM_PS原语。DCM系列原语的RTL结构如图3-8所示。
    % U! i7 z3 a- m5 ^8 D模块接口信号的说明如表3-8所列。
    1 \. B9 @8 W0 X/ o * {/ A' t1 e* X, V
    DCM_BASE组件可以通过Xilinx的IP Wizard向导产生,也可以直接通过下面的例化代码直接使用。其Verilog的例化代码模板为:
    9 G! s- x" F) f7 [
    6 n* k5 s) g3 H6 J3 y% k. D9 T8 V// DCM_BASE: 基本数字时钟管理电路(Base Digital Clock Manager Circuit)   p$ w% Z& t6 {6 }
    // 适用芯片:Virtex-4/5 ) \- a5 V# t, n/ R- q, P) s
    // Xilinx HDL库向导版本,ISE 9.1
    2 Q7 z0 o; R4 x8 v6 g+ B6 L% Z$ [6 ?DCM_BASE #( + A* Z2 T6 N! _. w3 W* t! u8 S
    .CLKDV_DIVIDE(2.0),
    3 [. a6 Z6 S2 F: `! v// CLKDV分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5 ( W8 q! ~1 \4 w; E0 c9 i
    // 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
    - L7 p2 u/ Y  t) K% a, v- s.CLKFX_DIVIDE(1), // Can be any integer from 1 to 32
    8 t1 Z# }% u" \// CLKFX信号的分频比,可为1到32之间的任意整数 # a$ F# v9 q- ?& c1 [& d2 k
    .CLKFX_MULTIPLY(4), , ]" c3 D7 ^- y) E/ z4 i: Q
    // CLKFX信号的倍频比,可为2到32之间的任意整数 # _5 U3 ^$ z, y0 ]
    .CLKIN_DIVIDE_BY_2("FALSE"),
    8 |1 a( c2 H1 O// 输入信号2分频的使能信号,可设置为TRUE/FALSE
      B1 x9 Z. f) L8 O* Z.CLKIN_PERIOD(10.0), & ]! W" M' }4 D! q& ~
    // 指定输入时钟的周期,单位为ns,数值范围为1.25~1000.00。
    ) T" V, u& Y8 l0 I- t; k/ H$ Z3 l.CLKOUT_PHASE_SHIFT("NONE"),
    % X" u3 q" G/ \$ }" b) C; h// 指定移相模式,可设置为NONE或FIXED . D8 k$ E: h" Z
    .CLK_FEEDBACK("1X"), # M# _% p, G" l3 d3 \
    // 指定反馈时钟的频率,可设置为NONE、1X或2X。相应的频率关系都是针对CLK0而言的。 4 }; z* F) z/ ?. D* k
    .DCM_PERFORMANCE_MODE("MAX_SPEED"),
    + q& h1 l5 r7 M% o! s/ T* i& G// DCM模块性能模式,可设置为 MAX_SPEED 或 MAX_RANGE 3 G; h, s/ J5 y7 z: `. u7 t
    .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
    ( O8 o0 a2 s, ^( \// 抖动调整,可设置为源同步、系统同步或0~15之间的任意整数
    ; {% a7 t- B7 N4 u, B6 ?.DFS_FREQUENCY_MODE("LOW"),
    6 e+ N5 \1 d# m0 q! D- A// 数字频率合成模式,可设置为LOW或HIGH 两种频率模式 8 Q5 {6 J  n! D+ C& D
    .DLL_FREQUENCY_MODE("LOW"), ( O' O: I" |7 M$ B0 k
    // DLL的频率模式,可设置为LOW、HIGH或HIGH_SER ( Y, @' [1 S  P0 f& N. o. j6 b8 I- K7 c
    .DUTY_CYCLE_CORRECTION("TRUE"),
    ' B0 T0 k+ O' x! }. _// 设置是否采用双周期校正,可设为TRUE或FALSE
    : l+ X2 F9 G! U- t.FACTORY_JF(16'hf0f0), ' ]: V& a) J  x0 G) r5 b- X
    // 16比特的JF因子参数 & Z/ k& d+ e# J- _. Z* ]5 {6 L' x
    .PHASE_SHIFT(0), ) ?# N8 [/ N5 v$ D: ]
    // 固定相移的数值,可设置为 -255 ~ 1023之间的任意整数
    ) h" M& `& r1 \: S4 i4 C.STARTUP_WAIT("FALSE") . S4 f6 F  ^4 z% Z9 |0 P
    // 等DCM锁相后再延迟配置DONE管脚,可设置为TRUE/FALSE
    ' i9 H4 S/ l3 Q4 K2 N. }4 A' ]) DCM_BASE_inst (
    ( I4 c9 K* N! r6 T.CLK0(CLK0), // 0度移相的DCM时钟输出 - X9 c. W& q7 R" H
    .CLK180(CLK180), // 180度移相的DCM时钟输出
    8 L5 O: I7 Q7 J$ Y. j0 x. [* W.CLK270(CLK270), // 270度移相的DCM时钟输出
    1 R7 g$ J3 u& }/ ~( _7 N, j8 _; n.CLK2X(CLK2X), // DCM模块的2倍频输出
    * U+ q# G0 v9 A$ q1 q.CLK2X180(CLK2X180), // 经过180度相移的DCM模块2倍频输出
    , i. Y- j5 ]( ~9 n7 i$ S7 Y" G# Q.CLK90(CLK90), // 90度移相的DCM时钟输出 2 p. W7 E8 }! w* Z# s& r+ |
    .CLKDV(CLKDV), // DCM模块的分频输出,分频比为CLKDV_DIVIDE
    1 l8 z" P6 V. G.CLKFX(CLKFX), // DCM合成时钟输出,分频比为(M/D) ( ^# |% k* w8 n* O+ m: e
    .CLKFX180(CLKFX180), // 180度移相的DCM合成时钟输出 & Q( ^5 ^9 n" K. {1 {
    .LOCKED(LOCKED), // DCM锁相状态输出信号 % h, g5 o) Z2 ]) W3 x0 w$ E% R
    .CLKFB(CLKFB), // DCM模块的反馈时钟信号
    6 j% _& e; c& c  o+ {.CLKIN(CLKIN), // DCM模块的时钟输入信号
    * I" D/ z6 `) m+ W.RST(RST) // DCM 模块的异步复位信号 ) y6 t, _- J3 [( n7 I
    ); ! F9 N3 o0 ^2 a7 }
    // 结束DCM_BASE模块的例化过程
    ! j+ \, o. d2 i. d/ l8 R0 C在综合结果分析时,DCM系列原语的RTL结构如图3-36所示。 6 g2 b* t' D( W, O6 j

    7 u; T3 ~- e. D$ k. E0 X1 u" R图3-36 DCM模块的RTL级结构示意图
    , [5 U3 q  Z8 c/////////////////////////////////////////////////////////////////////////////////////////////////////////////
      Z. M3 r! O- S& K- `Spartan-3 DCM的兼容性
      w: E$ y; N0 R) E
        S3 的DCM和 Virtex-II 以及pro的DCM 功能基本相同。但是S3 DCM的技术属于3代技术,因此在抗噪性能、相移能力方面有进一步提高。(客观的说,对我们的普通应用,不是特别重要。)
    , d3 I# f+ S2 [  |    但是和Spartan-2系列相比,有很大改进。S2系列不叫DCM叫DLL,可见DFS和PS等功能完全是新加入的,所以S2系列其实除了二倍频几乎没有倍频和分频能力。从这点来讲,S3真的是用起来很爽了。  5 E( [9 L6 U' N  q; t* O* S" `' c2 t

    0 E. _. k) {1 F  `2 [' N. Q/ ADCM 输入时钟的限制
    0 M" ^$ X5 m6 ]) R- h   
    和所有物理器件一样,DCM的工作范围也是受限的。由于DLL和DFS的要求各不相同,因此DCM的输入频率的限制也视乎是否同时使用DLL和DFS还是单独使用其中之一。如果同时使用,则取限制较严格者作为整个DCM系统的限制。我们来看两者的独立限制。1 N8 H0 N: d  p9 `  u6 A

    0 d* h8 Q- q. A- ?% O    呵呵,这部分内容不用记哦,需要的时候查一下软件或者手册就可以了。只要明白“CLKIN输入频率有限制,而且DLL、DFS同时使用时取其严格者” 这些道理就可以了。7 A% I" P  j- z8 V6 o
        除了时钟限制之外,对于时钟的质量也有一定限制,主要有3个:) \, k! l5 w7 u9 G$ W
    1. CLKIN cycle-to-cycle jitter:约束了前后两个CLKIN周期的差异;& @2 W- E' s- T
    2. CLKIN period jitter:约束了100万个cycle中最大周期和最小周期之间的差异;
    . O! k, ^' t9 W9 y+ O3. CLKFB path delay variation:约束了从外部进来的反馈回路的延迟波动,这种延迟波动在概念上其实和jitter如出一辙。
    1 _4 e) p7 ^$ y具体数值请查手册,知道有这么回事就可以了。8 C5 O" _% z" d- S7 p+ m
    LOCKED信号的行为方式
    2 F9 _0 b+ y9 d" j" k. M7 T
    LOCKED信号用于指示整个DCM系统已经和CLKIN同步,从LOCKED信号有效开始,输出时钟才可以使用,在此之前,输出时钟可能会处于各种复杂的不稳定状态。我们来看一下LOCKED信号的行为状态机。7 i- h+ G$ D8 y$ d2 N4 B
    FPGA配置:
    * l2 k/ L2 p9 x5 d- t  X    if (CLKIN已经稳定) next_state = 判断同步;) Z" }( C  k; m% g9 s
        else                         next_state = RST_DCM;
    # c# Y: W% ~- F! l: f7 G判断同步:
    7 C$ U2 _% ^9 G+ a    if (已经同步)          next_state = 判断同步;7 `$ {: j/ g+ X* P  u
        else                         next_state = 同步失败;. f% v. v3 i0 `  ^% j* L
    同步失败:                    next_state = RST_DCM;, b1 _' v7 x( D% y5 h
    RST_DCM:                  next_state = FPGA配置;# |; Q8 n5 P8 ^4 a: \
    . U8 N4 P2 R- Y6 F' j; J+ g$ U
    现在来看看各个状态下的输出。
    / S, S% s" T! {/ M0 B
    : v* s6 N5 T, O9 G0 f2 X* q( z, `case (state)) o' n+ l' l( s5 R& C
        FPGA配置: LOCKED = 0;. o8 s  y: C  b2 }& P
        判断同步:   LOCKED = 1;
    7 b. v7 l1 }, H& y* L- Y    同步失败:   LOCKED = 0;# S- i! H) C, W7 `$ T
        RST_DCM:LOCKED = 0;: _& P3 @4 s: D  d" ]
    endcase
    ! u% t- f( E* N* Z+ Z" PRST 信号——重启锁定
    ! x& q5 j7 ^3 }! ~' y2 z0 I   
    RST信号用于在时钟不稳定或者失去锁定时,将DCM的相关功能重置,从而重新启动锁定追踪。. _. U  S) W  K1 t$ j* B
        作为一个输入信号,RST无法被DCM自身置位,因此需要我们的应用设计来控制这个RST信号,否则需将其接地。0 K5 K5 ^" Z! j
        置位RST会将延迟tap的位置置0,因此可能会产生glitch或者是duty cycle 发生变化,另外相位偏移也会重置回到默认值。
    , q8 u8 @$ k* k8 K* NDCM 生成向导
      i  _% C1 {1 m1 Y
    安装了ISE就能得到一系列accessories。利用其中的Architecture Wizard 我们可以生成DCM模块。生成的DCM将产生3种输出:
    0 n) L% M: v2 T3 U- E1 [' l1. 一个例化了DCM的逻辑综合文件(采用生产商特定格式的VHDL / Verilog)
    1 s8 o5 i& f7 K6 E( O2. 一个UCF文件控制特定实现
    . U/ _/ g; H5 s' Z% `! q1 _3. 所有其他用户设置都保存到XAW(Xilinx Architecture Wizard)文件中。
    6 h: ]( C+ u% `; {! t% _7 _: Q2 j5 P, t4 J
    接下来描述一下向导使用步骤。
    4 t6 C' N3 S3 D1 E1. 从ISE或者Arch wizard中启动界面;
    . _; f* G  T/ c/ N% U( i; V2. 第一个页面做基本配置:路径、XAW文件名、VHDL / Verilog选择、综合工具、FPGA型号;# [, P9 ?8 A& y* s- X
    3. 进行General setup,一看就明白,不细说,注意一下几点:
    ! J/ }4 Q/ W1 c1 S: ^- m    - CLKIN source 如果选 external 则 DCM 的 CLKIN 会自动连接到 IBUFG。! Z( h7 L1 g0 S* Z
        - Feedback如果选 internal 则反馈来自 BUFG。7 ~9 T, B' l8 c. a3 p% \% c
    4. 高级设置
    5 T2 O& [( i( O9 b4 n" e$ T) N    - 选择FPGA的配置过程是否包含DCM的锁定,如果是,则配置完成信号DONE将在LOCKED信号有效后方能有效。6 `4 b! Y+ g  T, K9 O6 y7 r
        - 选择CLKIN是否要除2。由于DCM的输入频率有限,对于过高的输入时钟通过除2使之可用。
    / c6 e; a/ z9 `# }9 d, p; [- A    - Deskew调整,这个选项建议在咨询xilinx工程师后再使用。4 D8 ]5 Z: g7 W$ l& M! R% H
    5. 时钟输出口 Buffer 设置' ^' g& g" y( c! q( x. n
        - 默认情况下所有输出口都链接 BUFG 全局时钟网络入口
    $ v6 r& g& I; d( {7 z4 J) L    - 由于全局时钟网络的入口有限,用户可以定制时钟输出口连接到其他类型的Buffer! c1 r3 v' ?# O# {4 I) Y) k
           - Global Buffer:进入全局时钟网络的入口Buffer,共有4个,简称BUFG( j" j5 [7 K% J% f$ L
           - Enabled Buffer:还是上面的4个全局时钟Buffer,但是配置为有使能信号控制,简称BUFGCE5 ~$ t) c" U  O2 a
           - Clock MUX:还是上面的4个全局时钟Buffer,但是配置为 2-to-1 MUX类型,由S信号控制选出,简称BUFGMUX8 U6 i* g. }- _. [8 x7 r
           - Low skew line:没有buffer了,只能使用 skew 比较小的连线( {) `! p5 U5 t# [2 l
           - Local Routing:连到本地,skew的要求不是很严格
    5 K4 P7 l8 K/ K  p4 I       - None:禁止输出
    9 E0 W0 l* w$ p1 E6 A& h    - 对于Enabled Buffer类型和Clock Mux类型,需要指定En口的名字# f- W( b; [/ S/ b" W+ h
        - 需要为输出时钟信号指定名字或者使用默认
    / t: P. W0 g4 z$ k' S8 T9 u7 R6. 设置DFS4 L: C8 q0 j8 N. }0 a8 @# z! [# X7 H( ?
        - 设置目标输出频率,然后按calculate,自动生成 M/D 值和 Jitter 值
    3 p! r) b" _" E8 ?2 }' L$ m    - 或者手动设置 M/D 值,然后按calculate,自动生成频率和 Jitter 值
    * k  i% i) K6 V* o7 a7. 最后输出所需的3种文件。

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

    5#
    发表于 2015-7-21 17:55 | 只看该作者
    D=1..32,  
    $ s2 t# w* [" D-- 这样看来最大能倍频32倍,最小能16分频。  q, r6 d' K- m+ t( f0 J3 q- p
    这个16从哪来?

    该用户从未签到

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

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-23 10:04 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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