ÔÆ¶¥¹ó±ö»á(ÖйúÓÎ)¹Ù·½ÍøÕ¾_App Store

    ·þÎñÈÈÏß: 13823761625

    ·½°¸Éè¼Æ¼¼Êõ·ÖÏí

    ÁªÏµÎÒÃÇ

    µ±Ç°Î»ÖãºÔƶ¥¹ó±ö»á >> ·½°¸Éè¼Æ¼¼Êõ·Ö... >> ¼¼Êõ·ÖÏí

    ¼¼Êõ·ÖÏí

    ͬ²½¸´Î»ºÍÒì²½¸´Î»µÄ±È½Ï

    ·¢²¼ÈÕÆÚ:2024-05-06 µã»÷´ÎÊý:144
        ÎÞÂÛͬ²½»¹ÊÇÒì²½¸´Î»£¬ÔÚ¶Ô´¥·¢Æ÷ʱÐò½øÐзÖÎöµÄʱºò£¬¶¼Òª¿¼ÂǸ´Î»¶ËÓëʱÖÓµÄÏàλ¹ØÏµ¡£
        ¶ÔÓÚͬ²½¸´Î»£¬¸´Î»ÐźſÉÒÔÀí½âΪһ¸öÆÕͨµÄÊý¾ÝÐźţ¬ËüÖ»ÓÐÔÚʱÖÓµÄÌø±äÑØ²Å»áÆä×÷Óã¬Ò»°ãÖ»Òª¸´Î»ÐźųÖÐøÊ±¼ä´óÓÚÒ»¸öʱÖÓÖÜÆÚ£¬¾Í¿ÉÒÔ±£Ö¤ÕýÈ·¸´Î»¡£
        ¶ÔÓÚÒì²½¸´Î»£¬¸´Î»¿ÉÒÔÔÚÈκÎʱºò·¢Éú£¬±íÃæÉÏ¿´¸úʱÖÓûÓйØÏµ£¬µ«ÕæÊµÇé¿öÊÇÒì²½¸´Î»Ò²Ð迼ÂÇʱÖÓÌø±äÑØ£¬ÒòΪʱÖÓÑØ±ä»¯ºÍÒì²½¸´Î»¶¼¿ÉÒÔÒýÆðQ¶ËÊý¾Ý±ä»¯£¬Èç¹ûÒì²½¸´Î»ÐźŸúʱÖÓÔÚÒ»¶¨Ê±¼ä¼ä¸ôÄÚ·¢Éú±ä»¯£¬QÖµ½«ÎÞ·¨È·¶¨£¬¼´ÑÇÎÈ̬ÏÖÏó¡£Õâ¸öʱºò¼ÈÊÇÒì²½¸´Î»ÐźųÖÐøÊ±¼äÔÙ³¤¶¼Ã»Óа취£¬ÒòΪ²»¶¨Ì¬ÒѾ­´«µÝÏÂÈ¥¡£
        Ò»ÏÂ×ÊÁÏÀ´×ÔÍøÂç-±ùÁèÏö×¢
    1.
    Ò»¡¢Ìص㣺
        ͬ²½¸´Î»£º¹ËÃû˼Ò壬ͬ²½¸´Î»¾ÍÊÇÖ¸¸´Î»ÐźÅÖ»ÓÐÔÚʱÖÓÉÏÉýÑØµ½À´Ê±£¬²ÅÄÜÓÐЧ¡£·ñÔò£¬ÎÞ·¨Íê³É¶ÔϵͳµÄ¸´Î»¹¤×÷¡£ÓÃVerilogÃèÊöÈçÏ£º
               always @ (posedge clk) begin
                     if (!Rst_n)
                       ...
                    end
       Òì²½¸´Î»£ºËüÊÇÖ¸ÎÞÂÛʱÖÓÑØÊÇ·ñµ½À´£¬Ö»Òª¸´Î»ÐźÅÓÐЧ£¬¾Í¶Ôϵͳ½øÐи´Î»¡£ÓÃVerilogÃèÊöÈçÏ£º
                always @ (posedge clk or negedge Rst_n) begin
                       if (!Rst_n)
                      ...
                      end
    ¶þ¡¢¸÷×ÔµÄÓÅȱµã£º
    1¡¢×ܵÄÀ´Ëµ£¬Í¬²½¸´Î»µÄÓŵã´ó¸ÅÓÐ3Ìõ£º
     a¡¢ÓÐÀûÓÚ·ÂÕæÆ÷µÄ·ÂÕæ¡£
    b¡¢¿ÉÒÔʹËùÉè¼ÆµÄϵͳ³ÉΪ100%µÄͬ²½Ê±Ðòµç·£¬Õâ±ã´ó´óÓÐÀûÓÚʱÐò·ÖÎö£¬¶øÇÒ×ۺϳöÀ´µÄfmaxÒ»°ã½Ï¸ß¡£
    c¡¢ÒòΪËûÖ»ÓÐÔÚʱÖÓÓÐЧµçƽµ½À´Ê±²ÅÓÐЧ£¬ËùÒÔ¿ÉÒÔÂ˳ý¸ßÓÚʱÖÓÆµÂʵÄë´Ì¡£ËûµÄȱµãÒ²Óв»ÉÙ£¬Ö÷ÒªÓÐÒÔϼ¸Ìõ£º
    a¡¢¸´Î»ÐźŵÄÓÐЧʱ³¤±ØÐë´óÓÚʱÖÓÖÜÆÚ£¬²ÅÄÜÕæÕý±»ÏµÍ³Ê¶±ð²¢Íê³É¸´Î»ÈÎÎñ¡£Í¬Ê±»¹Òª¿¼ÂÇ£¬ÖîÈ磺clk skew,×éºÏÂß¼­Â·¾¶ÑÓʱ,¸´Î»ÑÓʱµÈÒòËØ¡£
    b¡¢ÓÉÓÚ´ó¶àÊýµÄÂß¼­Æ÷¼þµÄÄ¿±ê¿âÄÚµÄDFF¶¼Ö»ÓÐÒì²½¸´Î»¶Ë¿Ú£¬ËùÒÔ£¬ÌÈÈô²ÉÓÃͬ²½¸´Î»µÄ»°£¬×ÛºÏÆ÷¾Í»áÔڼĴæÆ÷µÄÊý¾ÝÊäÈë¶Ë¿Ú²åÈë×éºÏÂß¼­£¬ÕâÑù¾Í»áºÄ·Ñ½Ï¶àµÄÂß¼­×ÊÔ´¡£
        2¡¢¶ÔÓÚÒì²½¸´Î»À´Ëµ£¬ËûµÄÓŵãÒ²ÓÐÈýÌõ£¬¶¼ÊÇÏà¶ÔÓ¦µÄ
           a¡¢´ó¶àÊýÄ¿±êÆ÷¼þ¿âµÄdff¶¼ÓÐÒì²½¸´Î»¶Ë¿Ú£¬Òò´Ë²ÉÓÃÒì²½¸´Î»¿ÉÒÔ½ÚÊ¡×ÊÔ´¡£
      b¡¢Éè¼ÆÏà¶Ô¼òµ¥¡£
      c¡¢Òì²½¸´Î»ÐźÅʶ±ð·½±ã£¬¶øÇÒ¿ÉÒԺܷ½±ãµÄʹÓÃFPGAµÄÈ«¾Ö¸´Î»¶Ë¿ÚGSR¡£
     È±µã£º
           a¡¢ÔÚ¸´Î»ÐźÅÊÍ·Å(release)µÄʱºòÈÝÒ׳öÏÖÎÊÌâ¡£¾ßÌå¾ÍÊÇ˵£ºÌÈÈô¸´Î»ÊÍ·ÅʱǡǡÔÚʱÖÓÓÐÐ§ÑØ¸½½ü£¬¾ÍºÜÈÝÒ×ʹ¼Ä´æÆ÷Êä³ö³öÏÖÑÇÎÈ̬£¬´Ó¶øµ¼ÖÂÑÇÎÈ̬¡£
           b¡¢¸´Î»ÐźÅÈÝÒ×Êܵ½Ã«´ÌµÄÓ°Ïì¡£
    Èý¡¢×ܽ᣺
        ËùÒÔ˵£¬Ò»°ã¶¼ÍƼöʹÓÃÒì²½¸´Î»£¬Í¬²½Êͷŵķ½Ê½£¬¶øÇÒ¸´Î»ÐÅºÅµÍµçÆ½ÓÐЧ¡£ÕâÑù¾Í¿ÉÒÔÁ½È«ÆäÃÀÁË¡£
     
    2£ºÍƼöµÄ¸´Î»·½Ê½
     
    ËùÎ½ÍÆ¼öµÄ¸´Î»·½Ê½¾ÍÊÇÉÏÎÄÖÐËù˵µÄ£º“Òì²½¸´Î»£¬Í¬²½ÊÍ·Å”¡£Õâ¾Í½áºÏÁËË«·½ÃæµÄÓŵ㣬ºÜºÃµÄ¿Ë·þÁËÒì²½¸´Î»µÄȱµã£¨ÒòΪÒì²½¸´Î»µÄÎÊÌâÖ÷Òª³öÏÖÔÚ¸´Î»ÐźÅÊͷŵÄʱºò£¬¾ßÌåÔ­Òò¿É¼ûÉÏÎÄ£©¡£
    Æäʵ×öÆðÀ´Ò²²¢²»ÄÑ£¬ÎÒÍÆ¼öÒ»ÖÖÎÒ¾­³£Ê¹Óõķ½Ê½°É£ºÄǾÍÊÇÔÚÒì²½¸´Î»¼üºó¼ÓÉÏÒ»¸öËùνµÄ“reset synchronizer”,ÕâÑù¾Í¿ÉÒÔʹÒì²½¸´Î»ÐźÅͬ²½»¯£¬È»ºó£¬ÔÙÓþ­¹ý´¦ÀíµÄ¸´Î»ÐźÅÈ¥×÷ÓÃϵͳ£¬¾Í¿ÉÒÔ±£Ö¤±È½ÏÎȶ¨ÁË¡£reset sychronizerµÄVerilog´úÂëÈçÏ£º
    module Reset_Synchronizer
    (output reg rst_n,
      input  clk, asyncrst_n);
      reg rff1;
    always @ (posedge clk , negedge asyncrst_n) begin
        if (!asyncrst_n) {rst_n,rff1} <= 2‘b0;
    else {rst_n,rff1} <= {rff1,1‘b1};
    end
    endmodule
       ´ó¼Ò¿ÉÒÔ¿´µ½£¬Õâ¾ÍÊÇÒ»¸ödff£¬Òì²½¸´Î»ÐźÅÖ±½Ó½ÓÔÚËüµÄÒì²½¸´Î»¶Ë¿ÚÉÏ£¨µÍµçƽÓÐЧ£©£¬È»ºóÊý¾ÝÊäÈë¶Ërff1һֱΪ¸ßµçƽ‘1’¡£ÌÈÈôÒì²½¸´Î»ÐźÅÓÐЧµÄ»°£¬´¥·¢Æ÷¾Í»á¸´Î»£¬Êä³öΪµÍ£¬´Ó¶ø¸´Î»ºó¼Ìϵͳ¡£µ«ÊÇ£¬ÓÖÓÉÓÚÕâÊôÓÚʱÖÓÑØ´¥·¢£¬µ±¸´Î»ÐźÅÊÍ·Åʱ£¬´¥·¢Æ÷µÄÊä³öÒªÑÓ³ÙÒ»¸öʱÖÓÖÜÆÚ²ÅÄָܻ´³É‘1’£¬Òò´ËʹµÃ¸´Î»ÐźŵÄÊÍ·ÅÓëʱÖÓÑØÍ¬²½»¯¡£   ´ËÍ⣬»¹ÓÐÒ»ÖÖ·½·¨¸üΪֱ½Ó£¬¾ÍÊÇÖ±½ÓÔÚÒì²½¸´Î»Ðźźó¼ÓÒ»¸öD´¥·¢Æ÷£¬È»ºóÓÃD´¥·¢Æ÷µÄÊä³ö×÷Ϊºó¼¶ÏµÍ³µÄ¸´Î»Ðźţ¬Ò²ÄÜ´ïµ½ÏàͬµÄЧ¹û¡£ÕâÀï¾Í²»¶à˵ÁË¡£
     
    3£º¶àʱÖÓϵͳÖи´Î»µÄ´¦Àí·½·¨£©
     
     ÕâÊÇÒ»¸öºÜʵ¼ÊµÄÎÊÌ⣬ÒòΪÔڽϴóÐ͵ÄϵͳÖУ¬Ò»¸öʱÖÓÇý¶¯ÐźÅÏÔÈ»²»ÄÜÂú×ãÒªÇó£¬Ò»¶¨»á¸ù¾ÝϵͳµÄÒªÇóÓöà¸öͬԴʱÖÓ£¨µ±È»Ò²¿ÉÒÔÊÇ·ÇͬԴÁË£©È¥Çý¶¯ÏµÍ³µÄ²»Í¬²¿·Ö¡£ÄÇôÔÚÕâÑùµÄ¶àʱÖÓϵͳÖУ¬¸´Î»¼üÔõôÉèÖã¿ËüµÄÎȶ¨Óë·ñÖ±½Ó¹ØÏµµ½ÁËÕû¸öϵͳµÄÎȶ¨ÐÔ£¬Òò´ËÒª¸ñÍâ×¢Ò⣨ÔÚÎÒ¿´À´£¬¸´Î»ÐźÅÔÚͬ²½Ê±ÐòϵͳÖеĵØÎ»ºÍʱÖÓÐźÅÒ»ÑùÖØÒª£©¡£ÏÂÃæ¾Í˵һϾßÌåµÄ´¦Àí·½·¨£¬µ±È»Ëù×ñÑ­µÄÔ­Ôò¾ÍÈÔÓ¦¸ÃÊÇÉÏÎĵēÒì²½¸´Î»£¬Í¬²½ÊÍ·Å”£º
       1.non-coordinated reset removal£º¹ËÃû˼Ò壬¾ÍÊÇͬһ¸öϵͳÖеĶà¸öͬԴʱÖÓÓòµÄ¸´Î»Ðźţ¬Óɱ˴˶ÀÁ¢µÄ“reset synchronizer”Çý¶¯¡£µ±Òì²½¸´Î»ÐźÅÓÐЧʱ£¬¸÷ʱÖÓÓòͬʱ¸´Î»£¬µ«ÊǸ´Î»ÊͷŵÄʱ¼äÓɸ÷×ÔµÄÇý¶¯Ê±ÖÓ¾ö¶¨£¬Ò²ÊǾÍ˵£ºÊ±ÖÓ¿ìµÄÏÈÊÍ·Å£¬Ê±ÖÓÂýµÄºóÊÍ·Å£¬µ«ÊǸ÷¸´Î»ÐźÅÖ®¼äûÓÐÏȺó¹ØÏµ¡£
     
    2.sequence coordinated reset removal:ÕâÊÇÏà¶ÔÓÚÉÏÊö·½Ê½À´ËµµÄ£¬Ò²¾ÍÊÇ˵¸÷ʱÖÓÓòµÄ¸´Î»Ðźű˴ËÏà¹Ø£¬¸÷¸ö²¿·ÖϵͳËäȻҲͬʱ¸´Î»£¬µ«ÊÇÈ´·Ö¼¶ÊÍ·Å¡£¶ø·Ö¼¶µÄ˳Ðò¿ÉÓɸ÷¸ö“reset synchronizer”µÄ¼¶Áª·½Ê½¾ö¶¨¡£¿ÉÒÔÏȸ´Î»Ç°¼¶£¬ÔÙ¸´Î»ºó¼¶£¬Ò²¿ÉÒÔ·´¹ýÀ´¡£·´Õý·½Ê½ºÜÁé»î£¬ÐèÒª¸ù¾Ýʵ¼ÊÐèÒª¶ø¶¨¡£ÓÉÓÚͼƬÉÏ´«ÎÊÌ⣬ÎÒÖ»ÄÜÓóÌÐò±íʾÁË£¬´ó¼Ò´Õ»ò¿´°É£¬¹þ¹þ
    Àý×Ó£ºÈý¼¶¸´Î»ÏµÍ³,ϵͳÖеÄʱÖÓ·Ö±ðΪ1M,2M,11M:
    µÚÒ»¼¶Reset_Sychronizer³ÌÐò:
    module Reset_Synchronizer
     (output reg rst_n,
    input  clk, asyncrst_n);
      reg rff1;
    always @ (posedge clk , negedge asyncrst_n)
    begin
        if (!asyncrst_n) {rst_n,rff1} <= 2‘b0;
     else {rst_n,rff1} <= {rff1,1‘b1};
    end
    endmodule
     
    µÚ2£¬3¼¶µÄReset_Sychronizer³ÌÐò£º
    module Reset_Synchronizer2
    (output reg rst_n,
    input  clk, asyncrst_n,d);
      reg rff1;
     
    always @ (posedge clk , negedge asyncrst_n) begin
     if (!asyncrst_n) {rst_n,rff1} <= 2‘b0;
        else {rst_n,rff1} <= {rff1,d};
    end
    endmodule
    ¶¥²ãÄ£¿éµÄÔ´³ÌÐò£º
    include "Reset_Synchronizer.v"
    include "Reset_Synchronizer2.v"
    module AsynRstTree_Trans
    ( input  Clk1M,Clk2M,Clk11M,SysRst_n,
      output SysRst1M_n,SysRst2M_n,SysRst11M_n
    );
      Reset_Synchronizer Rst1M(.clk(Clk1M),. asyncrst_n(SysRst_n),.rst_n(SysRst1M_n));
      Reset_Synchronizer2Rst2M(.clk(Clk2M),.d(SysRst1M_n),. asyncrst_n(SysRst_n),.rst_n(SysRst2M_n));
      Reset_Synchronizer2Rst11M(.clk(Clk11M),.d(SysRst2M_n),. asyncrst_n(SysRst_n),.rst_n(SysRst11M_n));
    endmodule
















    ÃâÔðÉùÃ÷£º ±¾ÎÄÕÂת×ÔÆäËüƽ̨£¬²¢²»´ú±í±¾Õ¾¹Ûµã¼°Á¢³¡¡£ÈôÓÐÇÖȨ»òÒìÒ飬ÇëÁªÏµÎÒÃÇɾ³ý¡£Ð»Ð»£¡
        Ôƶ¥¹ó±ö»á¿Æ¼¼ChipSourceTek

    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿