找回密码
 注册
关于网站域名变更的通知
查看: 227|回复: 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代码如下:, |( G+ [1 K, U2 ^6 z+ T0 C0 N
    module d_ff (% t; j+ K2 P6 K+ l
            clk,  n' F% r! o$ |% g& v3 L" J
            rst_n,
    ' B' n3 o3 S* T        datain,
    * l/ T( V# \7 X3 d- H# i# k        dataout
    6 }7 [5 c  |5 o4 [7 \6 y' G4 R0 m    );: C" S5 c# z1 k0 a8 @- n# \
        input        clk;& C+ @% w: M$ i' v5 T
        input        rst_n;. ^$ L" M& |0 B5 B" q
        input        datain;
    % k; o  J, O. i! y    ouput        dataout;6 y+ p6 C% s, f8 u
        reg            dataout;( O7 G+ w) D: [) S0 x- |
        always @ (posedge clk)4 \0 ~+ q( y# D5 @( ~/ P( [
        begin& N# r  ]# L! b7 g6 o5 s
            if (!rst_n)
    ' U2 P! [8 o1 P            dataout    <= 1'b0;$ W" r0 J' Y% ]
            else
    $ v3 E" W. e" H2 F/ q            dataout    <= datain;4 Y- t  c& Z' L& d
        end8 C1 Y+ `. L. q
    endmodule
      R8 X! Q- R5 n% O综合后的RTL图表如下:! [8 J6 |0 E7 L3 N8 \
    , {5 \! c' `* f- @$ J2 M. T2 S
    Altera的MAXII系列的cpld中,register没有同步复位资源,所以同步复位信号需要通过额外的逻辑电路实现,上面的例子,QuartusII软件自带的综合工具使用选择器实现了同步功能,但是这不是确定的,有的综合工具综合成与门,如下图:; _5 e- C  H0 b6 O

    + W1 I( E" [' K$ C- d$ u1 `同步复位的优点:/ [/ |0 X# z# G: F2 D
    1). 抗干扰性高,可以剔除复位信号中周期短于时钟周期的毛刺;
    ! K4 Z) X/ N; A6 j/ W2). 有利于静态时序分析工具的分析;
    / t0 \) y; D) t4 d  v0 @3). 有利于基于周期的仿真工具的仿真。
    4 V6 c- h/ X2 e' y$ U) e+ v8 v同步复位缺点:5 @! i; [0 A) s& y9 n2 Q
    1). 占用更多的逻辑资源;0 {/ D$ [3 }  L6 p$ |. u
    2). 对复位信号的脉冲宽度有要求,必须大于指定的时钟周期,由于线路上的延迟,可能需要多个时钟周期的复位脉冲宽度,且很难保证复位信号到达各个寄存器的时序;6 x, G5 s7 f  O+ p$ ^' u/ g/ j( P+ b& C
    3). 同步复位依赖于时钟,如果电路中的时钟信号出现问题,无法完成复位。5 N$ n! i. \; c9 n0 f; \6 t5 ^
    2. 异步复位(Asynchronous Reset)来看一个简单的异步复位的D触发器,Verilog代码如下:/ h& h; ~% |3 F% k
    module prac (* X7 V5 m% J1 L6 i! U9 k; V
            clk,
    6 z, {+ @& h) F- a. n7 t( f        rst_n,4 |/ L* w" a6 b* T5 e9 E+ A
            datain,, w' ]9 ^: m( W0 f6 ~% u- Z
            dataout; h: L/ K; u0 c& l& I0 J
        );
    4 I! p# R% E/ V: y6 ^    input        clk;. @# l- C4 I# V
        input        rst_n;7 w/ |9 f2 {( F! M$ p
        input        datain;2 u- ^( W9 o6 ~4 r
        output        dataout;; H: k5 T5 @# N4 x
        reg            dataout;/ \( q. `$ }* L9 P" E3 S
        always @ (posedge clk or negedge rst_n)) U# u0 ?6 _' f3 e
        begin
    / ?7 d. m! r2 W  m: n; t! E' }4 G        if (!rst_n)4 P% L" t* ^3 P. L# U. v! l% M
                dataout    <= 1'b0;
    2 H$ v2 S$ E0 ], @' H7 I  q8 z3 ^        else$ R  ]( Z* ^# |; N3 }" F4 ]
                dataout    <= datain;
    0 `2 H7 p9 C0 }: Q    end
    $ Z. U9 |  D$ T9 A7 G+ s- U/ Jendmodule. d' _( v0 I" \. B! G
    综合后的RTL图表如下:
    5 Y. \# c1 m' W" C/ b
    8 L- g, G0 B5 T6 \+ h. Q0 m异步复位的优点:$ N- B1 C( t2 v+ v' x
    1). 无需额外的逻辑资源,实现简单,而且CPLD有针对复位信号的全局不限资源,可以保证复位管脚到各个寄存器的clock skew最小(注意不是到各个寄存器的延迟最小);. K  z% k2 t% P
    2). 复位信号不依赖于时钟。
    * _- C' p# l; |1 d% P; I0 b* T同步复位缺点:
    % P" A: {$ r: S* ]% W3 a1). 复位信号容易受到外界的干扰;+ p5 E7 Z# B& s
    2). 复位信号释放的随机性,可能导致时序违规,使电路处于亚稳态,如下图。
    ) N! t3 \. D, R3 i6 J: ^$ X% E' Q7 }, O" O6 ~0 n9 P
    3. 异步复位同步释放(Asynchronous Reset Synchronous Release)这种复位方式在文献中还有一种称谓:Synchronized Asynchronous Reset,这种称谓应该在国外的技术人员中比较流行,与Altera的工程师交流过程中,他们一直使用Synchronized Asynchronous Reset这种称谓(当然也可能是个人的习惯)。8 j' Z% a5 S# D. J( S7 @
    来看一个Synchronized Asynchronous Reset例子,Verilog代码如下:3 F) q3 L1 @! [
    module prac (0 o) c3 A3 |  ^/ Z+ u" S6 T
            clk,' A" t, ~' d4 f7 d6 Q# ?
            reset_n,  B. u  q2 v+ {( a% ^
            dataa,
    7 z5 a) n( C& j8 Q! C( A        datab,+ M% m5 @. r! O) F, k: L; i- g: f
            outa,! z4 _4 F& O' k. \
            outb; c; R- s4 |7 @: p
        );
    1 r# q9 p- u/ m7 L% _% J    input        clk;, y4 r- V  j% Q, }
        input        reset_n;: W9 A. Z5 x* F$ L
        input        dataa;
    : e+ s3 M2 z  O* d: h1 ]. n    input        datab;- |3 ?5 l1 [: f+ y9 B
        output        outa;4 a. M  D+ D# `! W# U
        output        outb;) ?& }) C! q/ X5 m1 U3 ~
        reg            reg1;
    4 e) a! \: Q4 z' O3 ~    reg            reg2;
    ! H1 T! l! R# p4 i9 D! B0 d    reg            reg3;! _5 P% H; J* H- ~
        reg            reg4;, n8 O7 T( G. K* @+ T6 F, b+ z
        assign    outa    = reg1;
    ( y, e& r+ B8 z    assign    outb    = reg2;
    3 p6 P0 w9 ~2 p: ]    assign    rst_n    = reg4;  a/ U" V1 }* E, x6 t! X
        always @ (posedge clk or negedge reset_n)! o2 ~1 n8 f6 J" I3 D. D
        begin; N$ l) r* Z; t
            if (!reset_n)3 n  {0 u, C7 }7 s& |3 V
                begin9 ]: C& K0 W7 D  V
                    reg3    <= 1'b0;
    * Z( y/ A) b0 M0 n( ?                reg4    <= 1'b0;4 Y( g4 |/ S1 l; @/ X% r
                end
    & I+ m6 c2 a$ F+ A5 S3 x        else
    ; k- C; f! x4 L  `$ U/ d0 M            begin
    * {0 y3 g9 @) M9 u                reg3    <= 1'b1;
    1 g4 P/ L+ k5 g2 A, ]                reg4    <= reg3;
    " s% k) P- T- Z/ y" H- l9 U; e            end' @4 b. q4 j, C* \3 g
        end7 N0 n' ~( Y; ~2 C0 N
        always @ (posedge clk or negedge rst_n)
    & p/ y: r6 _, w6 X    begin
    7 y. J- B' f' p! u) q8 ~. Q7 ]7 a7 L        if (!rst_n)
    & D" @! W2 J1 `* P; X. A9 [1 `            begin( M, d; l! g9 Z6 x& A) m2 U1 c
                    reg1    <= 1'b0;' H" y' O% J: r# [2 n7 x$ x
                    reg2    <= 1'b0;
    2 D0 O. J2 u$ w            end6 B0 `: R- }; @4 T
            else
    ' e2 X$ W6 Y! ^" H! z2 A- Y+ M            begin
    & |' I& A7 r4 E  }& u                reg1    <= dataa;
    ! s. V  I. r% g! N                reg2    <= datab;6 I, x- P5 q& I+ x$ j8 V/ `
                end1 }4 v) G: J  v3 P; C5 H
        end
    ) R* l7 y" r& g* s- zendmodule7 @8 E6 s. I; A/ G
    综合后的RTL图表如下:
    * ^. ~" {0 ~8 ?* X% S' P5 I
    ' Y0 @8 J, [. |% Z0 G$ b此文来源于《Implementation and Timing of Reset Circuits in Altera FPGAs》,例子程序可能代码与源代码略有出入,RTL图是用QuartusII 8.1综合的,与原文也有出入。
    $ C) h) n" `  T7 i! w
    9 l- B  I9 `% a# x: X6 M

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-9 15:54 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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