找回密码
 注册
关于网站域名变更的通知
查看: 220|回复: 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代码如下:
    1 _# K/ r2 e( N: M1 c3 K" v; rmodule d_ff (
    3 y' t/ l' i5 J% L3 H0 b" l        clk,+ C9 Y# A3 Y8 d, Q8 `
            rst_n,' i. y  t! ?, T, C: a) j# n8 o, F
            datain,2 k) G+ x; ]# c! |
            dataout
    : q  K( G2 ?! z* m8 V9 N" C; I# C! C9 n    );
    " s0 `$ ]1 b0 f    input        clk;( y' O% Q& n* U7 U# Z
        input        rst_n;; [7 q& h% {' ^4 m
        input        datain;9 H; ]# [6 h" R
        ouput        dataout;
    8 e$ D! [1 L" }1 w0 ?6 ^7 P  \    reg            dataout;
    4 r0 F, k9 e- ^  {# |* f/ {    always @ (posedge clk)
    ; f# k' W1 ^3 d* _2 g* e    begin
    % T! ?, }" L1 A6 ^" |8 \  m1 }        if (!rst_n)
    / A1 S# F! r6 m7 }) [8 q  I! M" M: _            dataout    <= 1'b0;
    5 u1 Q- k; b$ K; |2 v3 z9 V        else
    1 o# d- Q4 {$ R9 P1 N, a+ }            dataout    <= datain;5 Q& x$ T" c# d' \; q  _2 G
        end# k' T7 t3 G; A
    endmodule( S+ m, d5 J6 o6 `& [( d9 h& K
    综合后的RTL图表如下:
    ; w8 T5 M  v6 S9 p
    7 q  V6 _4 Z* g2 kAltera的MAXII系列的cpld中,register没有同步复位资源,所以同步复位信号需要通过额外的逻辑电路实现,上面的例子,QuartusII软件自带的综合工具使用选择器实现了同步功能,但是这不是确定的,有的综合工具综合成与门,如下图:6 h  Z7 y9 \8 u! _9 X: d2 S
    2 S' R9 ~3 M1 L6 Y: b
    同步复位的优点:
    / z. R5 u6 D$ t# H1). 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;, h$ L0 I$ ^% J# }$ Y# @/ P
    2). 有利于静态时序分析工具的分析;; H& M3 ~4 i4 H0 w
    3). 有利于基于周期的仿真工具的仿真。! H( x5 B7 S9 O2 M% D* f
    同步复位缺点:9 C: G8 B4 X6 j% L2 K2 n4 s7 X3 ~$ ^
    1). 占用更多的逻辑资源;
    ' g3 V% p, k( E2 A2). 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序;0 S$ f$ C5 Q2 h5 t
    3). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。7 K! [0 m% y. D4 Y1 K- o. U
    2. 异步复位(Asynchronous Reset)来看一个简单的异步复位的D触发器,Verilog代码如下:
    1 Y& q, i- y- P( F7 ~6 O4 y+ b7 E; qmodule prac (
      y1 v2 A$ ~7 d  b        clk,
    ! w+ e% _% z. n7 y' g        rst_n,% |" J4 R" D. C0 R: p* F
            datain,6 t, u# P* o7 w, K, ^- C
            dataout9 T: T) N, A% {( F4 ?
        );5 j9 B8 u/ Z$ M( p! t
        input        clk;
    & k" N6 Z/ }$ u+ x6 O4 g# c) e    input        rst_n;
    - i# x3 r7 \5 r5 z( T    input        datain;
    9 S, f! M% O) j0 N! ~    output        dataout;
    . o5 X7 s" |' c% i    reg            dataout;
    1 |2 g9 k3 }1 n+ O: j' }8 t    always @ (posedge clk or negedge rst_n)1 D0 U# ]3 r: y
        begin
    : o7 O+ w% I: W3 t        if (!rst_n)
    / o; E7 |( Y: L  b& [  ]7 T% }* m3 s            dataout    <= 1'b0;
    , V& B; _. R: W  A# u$ O, m6 \1 j        else3 m; t4 A( b% N, p
                dataout    <= datain;
    - G) k5 R6 y: _3 r    end
    1 w: U& U8 ~5 t2 s# x0 Yendmodule; z4 O. v. |" L1 K4 @
    综合后的RTL图表如下:  w/ i# I; i8 r
    7 C, s  b: z! ~/ c
    异步复位的优点:
    , e; m' a% U* x/ h1). 无需额外的逻辑资源,实现简单,而且CPLD有针对复位信号的全局不限资源,可以保证复位管脚到各个寄存器的clock skew最小(注意不是到各个寄存器的延迟最小);
    - E9 x' r5 `: u* B* e2). 复位信号不依赖于时钟。
    9 l, C5 ?- t2 [/ ~9 I同步复位缺点:2 [5 L3 c! C3 s0 e# _1 V
    1). 复位信号容易受到外界的干扰;
    ' s) L+ r7 ^8 v2). 复位信号释放的随机性,可能导致时序违规,使电路处于亚稳态,如下图。
      K3 R2 U6 Q9 u3 M7 l  A' a8 l- e9 r4 L6 B/ u9 l6 e8 l! }
    3. 异步复位同步释放(Asynchronous Reset Synchronous Release)这种复位方式在文献中还有一种称谓:Synchronized Asynchronous Reset,这种称谓应该在国外的技术人员中比较流行,与Altera的工程师交流过程中,他们一直使用Synchronized Asynchronous Reset这种称谓(当然也可能是个人的习惯)。: I3 A& {  W, g+ t
    来看一个Synchronized Asynchronous Reset例子,Verilog代码如下:
    . z! v: _& M6 D; Cmodule prac (: o6 P  ?) J1 E7 p
            clk,8 C" Y1 o, X. a, u8 |
            reset_n,
    2 x% `' C# \8 c) q1 Q        dataa,
    + `0 X& A% I9 T5 e        datab,
    5 q. O/ K3 s9 M( j/ v9 m        outa,1 D* K- V) F* j! p: B( F( T
            outb: r2 ~0 C# b- I
        );" j; Z% i7 p7 k, B, {/ r: h
        input        clk;
    1 {. g; B6 c6 G    input        reset_n;
    ) D% z: h, c/ {( e" R' e    input        dataa;
    - b. E0 }3 L% z& {4 h    input        datab;/ W# o& N! E5 N) r- V$ d
        output        outa;
    $ Y4 A, O. C1 [" A0 U) h    output        outb;+ ^" }* ]$ j: \5 k; R" t
        reg            reg1;
    2 o0 J' f& z( D  [; N    reg            reg2;- M7 r  a1 N2 s4 K: I& M  Z+ b! A
        reg            reg3;
    5 T& P* o! u/ `  ^    reg            reg4;
    $ Y3 l, Y1 p9 _( Y4 m( x    assign    outa    = reg1;  \% H' Z/ n9 R3 }8 H) D
        assign    outb    = reg2;0 `8 L8 X. l. G% X6 I
        assign    rst_n    = reg4;
      H8 |, Y( W! `- s. i    always @ (posedge clk or negedge reset_n)* p$ G& j  W/ ]
        begin
    ) X- r- R7 t9 C- s        if (!reset_n)9 \% M0 v3 U( r3 p+ q* O4 M) @8 ^
                begin2 [; Y6 R" j9 B( a, q4 ^
                    reg3    <= 1'b0;3 \5 }1 w3 f8 w; \( J# t2 t3 V! P
                    reg4    <= 1'b0;2 o9 P: G8 j; B) p- f
                end& h0 j" |' P4 i; I- z( n- k0 K
            else$ A  `% ^4 ]! h) P" i2 V
                begin
      }6 v5 [* q; k" i* ^6 N$ {% e, j                reg3    <= 1'b1;1 K( |2 m: D, \2 x4 Q5 i
                    reg4    <= reg3;+ m, l( H7 H- W# ~+ ^
                end% x, _0 ^4 I/ a: z2 R( i! q
        end3 n4 O: r. S; n# r! @
        always @ (posedge clk or negedge rst_n)
    1 ^5 X0 k2 X/ o  W2 g6 |& K+ z, R& K    begin
    - B5 }9 W' [/ m5 ^2 u+ O        if (!rst_n)6 }' v) f# a$ J1 a+ d" H7 c2 C
                begin6 ?" C6 [& E/ R1 W  I) |( L, n: b
                    reg1    <= 1'b0;# S# j$ D5 [% y4 n8 }$ n  P
                    reg2    <= 1'b0;3 G( F' o9 i/ j4 K6 {5 G" [
                end, X& J3 H+ E6 \5 G" r) ]) k3 L
            else
    / J% H# z" g0 b: c& r. I2 K/ @4 x            begin
    : k* v4 E! f9 Z& j: H                reg1    <= dataa;7 |: |& x/ C: `
                    reg2    <= datab;
    # S. [% a9 S% b) K0 H            end
    ( B! [0 L( a- ?) k' B    end
    - @' T7 c/ Q* Mendmodule4 _! A; D1 e8 T( P* J4 d
    综合后的RTL图表如下:
    ! ^$ O9 l( J1 A/ e* q2 d5 e6 b, D8 R0 x
    此文来源于《Implementation and Timing of Reset Circuits in Altera FPGAs》,例子程序可能代码与源代码略有出入,RTL图是用QuartusII 8.1综合的,与原文也有出入。
    ; W9 z& U) S/ y- r, K, ~' \4 L- L( u

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-3 15:06 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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