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

FPGA:同步复位,异步复位以及异步复位同步释放

[复制链接]
  • TA的每日心情
    开心
    2019-11-19 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2019-5-23 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    FPGA:同步复位,异步复位以及异步复位同步释放1.同步复位(Synchronous Reset)来看一个简单的同步复位的D触发器,Verilog代码如下:# U  ?# Z$ c2 M- X( b' h
    module d_ff (1 h! T" ]: g4 X4 v
            clk,- a0 Y+ Q0 y" ]; W+ a
            rst_n,
    2 a* E/ l# ^( d        datain,, Z. D# E- d! X5 _  n) x0 p0 K
            dataout
    - l. s' @" P0 ^+ p5 S3 J! [" u$ w% x    );
    3 Y0 X' v. q0 j2 ^' \    input        clk;0 I8 ~& W$ N4 D/ B
        input        rst_n;7 g3 q9 `2 f7 l4 H8 I4 i
        input        datain;0 f6 Z0 H5 E0 X$ m2 Z
        ouput        dataout;
    ! f" I0 Q0 x5 g    reg            dataout;
    ) ^' Q. C( d  X$ l    always @ (posedge clk)& M" q& p# p7 b0 u6 Q8 p7 N
        begin: W2 H; L# b  s& L# m0 `
            if (!rst_n)$ w. W6 p5 @5 ^, ]
                dataout    <= 1'b0;
    ! M) J: }) g& ^: c        else
    ( ]3 V) X. Z+ s5 i            dataout    <= datain;. A0 ]# r6 x! I  a0 A
        end% n# {/ f. `; q! t
    endmodule, T' j5 v' S# F) u7 `. {! \
    综合后的RTL图表如下:
    % u% b( u7 ]( U0 @# d
    " ?" R+ S7 d* w6 cAltera的MAXII系列的cpld中,register没有同步复位资源,所以同步复位信号需要通过额外的逻辑电路实现,上面的例子,QuartusII软件自带的综合工具使用选择器实现了同步功能,但是这不是确定的,有的综合工具综合成与门,如下图:
    - U+ j% D5 t* k2 G4 n. R: C, e3 T* ^$ I. u8 C; ?7 C+ }
    同步复位的优点:9 `* n  i' W2 b, i
    1). 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;8 }' l' U% g) a9 q8 z( Z! X/ j* w4 ?' I
    2). 有利于静态时序分析工具的分析;0 j  \2 |* p: y- u
    3). 有利于基于周期的仿真工具的仿真。
    7 l5 c$ h* I2 a同步复位缺点:
    - \4 S& W2 d2 E1). 占用更多的逻辑资源;
    " ~+ X8 x+ w  p1 _2). 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序;
    , }1 J) w/ M4 F3). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。
    * g/ c5 b' \0 g8 N2. 异步复位(Asynchronous Reset)来看一个简单的异步复位的D触发器,Verilog代码如下:
    ! d0 C8 v/ e4 ^module prac (6 r( y! l) s* g/ r5 {3 J& L
            clk,
    ) c8 E+ @% ?. X/ `: A9 v        rst_n,$ v0 w4 g' M9 Z8 O% T
            datain,2 p; F  E& n0 d" p7 ^4 e$ r
            dataout
    5 e' ]; s$ I; S6 S    );6 x  U0 M6 L% g
        input        clk;
    ' }' u6 v- [% j* p+ \* r" N9 Q    input        rst_n;- E$ s3 f9 F1 ]# ?0 T
        input        datain;
    % ]' ~  e. E& `# S% ?* E, N" Z    output        dataout;0 \* y; f0 O3 _) F( K
        reg            dataout;8 G$ E0 l/ ]" J) j8 i7 e6 L- ~
        always @ (posedge clk or negedge rst_n)
    * |3 ]) \- P  S    begin
    5 i! W2 Q# ]8 r8 X4 }2 l        if (!rst_n)$ Z, v: f! ]2 f) m2 t5 m9 F
                dataout    <= 1'b0;. |' G9 w6 B: M+ t4 J( m
            else+ t  Y" u. M3 ~; {9 A- K, r+ N
                dataout    <= datain;
    9 S8 E& p7 j1 G; j1 V    end. S# ^0 m, f) s# B0 l9 {
    endmodule
    + ~) M& r9 H' u% j综合后的RTL图表如下:* l0 l1 z, e. l' r6 m/ @; B

    8 }  P' D8 W( t9 o异步复位的优点:
    2 M$ Q3 S  v* h1). 无需额外的逻辑资源,实现简单,而且CPLD有针对复位信号的全局不限资源,可以保证复位管脚到各个寄存器的clock skew最小(注意不是到各个寄存器的延迟最小);& U1 z0 p4 G. v
    2). 复位信号不依赖于时钟。
    - ]$ s! v0 o9 c3 y/ ?8 @7 x8 j同步复位缺点:
    ' ^* X% l) X( _1). 复位信号容易受到外界的干扰;
    + t  @: X7 l  c& F" R; y2). 复位信号释放的随机性,可能导致时序违规,使电路处于亚稳态,如下图。- X$ n0 `( l+ }* {" T2 b

    ) _/ N3 i7 E  G' ~$ @3. 异步复位同步释放(Asynchronous Reset Synchronous Release)这种复位方式在文献中还有一种称谓:Synchronized Asynchronous Reset,这种称谓应该在国外的技术人员中比较流行,与Altera的工程师交流过程中,他们一直使用Synchronized Asynchronous Reset这种称谓(当然也可能是个人的习惯)。
    1 N1 o5 f) S+ G4 |/ B5 F2 x来看一个Synchronized Asynchronous Reset例子,Verilog代码如下:
    : m5 ]0 s  q4 g1 \9 X9 E5 emodule prac (
    9 E/ ]( F4 D4 X7 E/ R. t5 _" Z& O        clk,  S7 v; j" n. O8 p9 H. p9 s* ]
            reset_n,
    $ Y8 U8 O) T+ W( \) Z) \6 S        dataa,' n* W2 C- P" N3 M: ^' G8 n
            datab,
    # |$ u. \; G. K. L1 Q4 @3 M& o% L        outa,4 m: A$ B5 W; [2 T
            outb# a: L8 k2 L: k. f7 ]  r7 S
        );. U8 z# {8 u* q
        input        clk;
    * B' g+ H' v, k! \    input        reset_n;8 u( O0 ~( w- c9 ~4 y2 n- m
        input        dataa;
    0 @; ?9 R: Z3 U5 I+ ?/ D/ S    input        datab;0 m; c! {+ G3 }3 c& p
        output        outa;: x% E; r+ ]" t* Q/ I, W# i+ L! ^2 M
        output        outb;6 S& }  R1 e+ @9 [
        reg            reg1;
    ! S6 w$ \# i; i5 E    reg            reg2;7 v; j, V2 Q. T2 x8 p# @1 O! i
        reg            reg3;
    0 A! M7 V0 {: V% i    reg            reg4;
    7 ?$ F  o! u8 a$ ?1 N& L1 a3 x    assign    outa    = reg1;. K) G' o& t( z# W8 A  O& E
        assign    outb    = reg2;
    0 p0 y. w5 \& b6 `$ b& u    assign    rst_n    = reg4;
    6 V9 t4 Z8 D% N4 r' v& A; r3 j    always @ (posedge clk or negedge reset_n)$ e8 I' |  ]8 s2 F% N+ c
        begin
    6 M; M$ o& B6 o" Q. G        if (!reset_n)+ v' q! y9 R4 h4 M+ [- g
                begin
    * E! a8 x" |& y. t                reg3    <= 1'b0;! [' W  z& @7 ^8 o
                    reg4    <= 1'b0;
    6 A, b! m, r( _" A; M/ X& @" B            end
    , m1 f" Y: F3 _0 G: y$ `+ e        else+ _5 G0 t0 m( s5 g
                begin* C) l  k8 K! @
                    reg3    <= 1'b1;
    * g2 g* I, g0 E  l# a                reg4    <= reg3;: E% s7 s- W/ Z4 b' _9 o  B/ b. h; H
                end
    , Q  k/ s& z  a$ y! g    end
    % _* L% ?& G! l" E! W    always @ (posedge clk or negedge rst_n)
    2 x3 V$ ?% u5 {2 x" w$ _    begin
    5 G/ W& w3 \/ J0 k1 ?& _        if (!rst_n)% ]. n. A+ V5 z/ J  F1 ~3 N- o2 S( o
                begin  b: @/ [3 m$ c  K7 J/ @
                    reg1    <= 1'b0;( E5 v0 f2 \, b  J- ]3 `3 Z/ Z
                    reg2    <= 1'b0;
    5 x) S' _6 ?! i5 d            end3 \- i4 @: D0 v6 P' @
            else9 N1 P8 Y- o7 b' w
                begin. X* u4 P+ \" v6 V1 m# K# b
                    reg1    <= dataa;) `; }: X, b! K; V. z% e/ c
                    reg2    <= datab;
    3 `4 z: ]# G& D; ~            end6 \) p0 D# l! Q" J8 {' G
        end# P% w3 m$ l% R0 _, H
    endmodule" P  q# ~; s) w, w  f
    综合后的RTL图表如下:4 j- a- ^" b+ V4 Q5 A2 B

    * q, S- X- K$ G9 C0 a7 v此文来源于《Implementation and Timing of Reset Circuits in Altera FPGAs》,例子程序可能代码与源代码略有出入,RTL图是用QuartusII 8.1综合的,与原文也有出入。+ ~* `2 ~2 C0 g" g. `
      s. g5 g( N; ?  U4 P8 L

    该用户从未签到

    2#
    发表于 2019-5-23 16:35 | 只看该作者
    谢谢楼主分享
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-11 21:16 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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