13823761625

¼¼Êõ·ÖÏí

ͬ²½¸´Î»ºÍÒì²½¸´Î»µÄ±È½Ï
·¢²¼Ê±¼ä£º2024-05-06 17:55:00    ä¯ÀÀ£º344´Î
 ÎÞÂÛͬ²½»¹ÊÇÒì²½¸´Î»£¬ÔÚ¶Ô´¥·¢Æ÷ʱÐò½øÐзÖÎöµÄʱºò£¬¶¼Òª¿¼ÂǸ´Î»¶ËÓëʱÖÓµÄÏàλ¹Øϵ¡£
    ¶ÔÓÚͬ²½¸´Î»£¬¸´Î»ÐźſÉÒÔÀí½âΪһ¸öÆÕͨµÄÊý¾ÝÐźţ¬ËüÖ»ÓÐÔÚʱÖÓµÄÌø±äÑزŻáÆä×÷Óã¬Ò»°ãÖ»Òª¸´Î»ÐźųÖÐøʱ¼ä´óÓÚÒ»¸öʱÖÓÖÜÆÚ£¬¾Í¿ÉÒÔ±£Ö¤ÕýÈ·¸´Î»¡£
    ¶ÔÓÚÒì²½¸´Î»£¬¸´Î»¿ÉÒÔÔÚÈκÎʱºò·¢Éú£¬±íÃæÉÏ¿´¸úʱÖÓûÓйØϵ£¬µ«ÕæʵÇé¿öÊÇÒì²½¸´Î»Ò²Ð迼ÂÇʱÖÓÌø±äÑØ£¬ÒòΪʱÖÓÑر仯ºÍÒì²½¸´Î»¶¼¿ÉÒÔÒýÆð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
















ÃâÔðÉùÃ÷£º ±¾ÎÄÕÂת×ÔÆäËüƽ̨£¬²¢²»´ú±í±¾Õ¾¹Ûµã¼°Á¢³¡¡£ÈôÓÐÇÖȨ»òÒìÒ飬ÇëÁªÏµÎÒÃÇɾ³ý¡£Ð»Ð»£¡
    leyu¡¤ÀÖÓã(Öйú)ÌåÓý¹Ù·½ÍøÕ¾ChipSourceTek

°æȨËùÓÐ ? 2025 leyu¡¤ÀÖÓã(Öйú)ÌåÓý¹Ù·½ÍøÕ¾All Rights Reserved ÔÁICP±¸1202579ºÅ
¡¾ÍøÕ¾µØͼ¡¿¡¾sitemap¡¿