Verilog筆記.5.同步、異步


在數字電路中經常有同步synchronism、異步asynchronism的概念。異步指輸入信號和時鍾無關;同步指輸入信號和時鍾信號有關,實際上就是輸入信號和時鍾信號進行了與運算或者與非運算。實際開發中,經常有同步清零、異步清零、同步復位、異步復位等概念,下面就給與相關代碼演示。

 

簡單的異步復位

1 always @ (posedge clk or negedge rst_n)
2          if(!rst_n) b <= 1'b0;
3          else b <= a;

簡單的同步復位

1 always @ (posedge clk)
2          if(!rst_n) b <= 1'b0;
3          else b <= a;

PS:同步復位信號RST必須至少長於一個時鍾周期CLK,否則,這個復位信號引起的變化是不會被檢測到的!

 

異步復位、同步釋放

 1 always @ (posedge clk)
 2          rst_nr <= rst_n;                 //現將異步復位信號用同步時鍾打一拍
 3 
 4 always @ (posedge clk or negedge rst_nr)
 5          if(!rst_nr) b <= 1'b0;
 6          else b <= a;
 7 
 8 always @ (posedge clk or negedge rst_nr)
 9          if(!rst_nr) c <= 1'b0;
10          else c <= b;

 

同步復位和異步復位的區別就在於 前者的復何信號不能出現在always語句的敏感信號表中,無論是同步復位還是異步
復位,always語句的結構都是if(Reset)...else... ,否則,綜合工具將不能正確的綜合

所有always語句中的賦值最好采用非阻塞賦值語 ,否則,可能會導致仿真與綜合的不一致”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM